[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: the small stuff



On 13-okt-2005, at 7:49, Erik Nordmark wrote:

Forking

[...]

It might be useful to add a shim exchange that can support selecting the right ULIDs in this case, though: that would be fairly light-weight.

That would be an option.

My understanding is that the request to be able to do forking (which we've interpreted as different ULP traffic being able to use different locator pairs to get to the same destination host),

My understanding is that it is having different locators for different contexts that use the SAME ULIDs...

was requested by some transport folks.

I don't know if we have a mechanism to ask them (whoever they were) whether it is acceptable to do this using a ULID selection mechanism, or whether the ULIDs should be the same but the locators different.

It's hard to have a discussion with an unknown discussion partner.

I think we should certainly take their requirement for this functionality very serious, but not necessarily forking as the best way to achieve it. But it would be interesting to see feedback from transportation folk here, because the mess that this will result in is mostly in their back yard: they'll have to color different packets such that the application ToS requirements are communicated to the shim.

In either case, the ULP needs to be updated to be capable to make the shim setup forked context, so I assume there is some flexibility on their end.

If we make this a function of the ULID selection then the applications can handle it with a new API without any/much involvement from the transports.

If we only need longer fields for a very small number of variables, it's easier to redefine these variables so that they are broken in 255-byte chunks and put in two or more fields.

This is an issue for the shim control messages. They need to be able to carry
 - lists of locators
 - CGA parameter data structure
 - CGA public key signature
and I think we concluded that at least the last one might be larger than 256 bytes. But I don't know how large the PDS might be.

I'm not sure how many locators you want, but those are only 16 bytes so you can have 15 in a max-255-byte option. Yes, crypto will be longer but if that's the only thing or pretty much the only thing it makes more sense to push the problem to the crypto option, like this for a 768 byte piece of crypto data:

type=crypto
len=255
seq=0
<data bytes 0 - 251>
type=crypto
len=255
seq=252
<data bytes 252 - 503>
type=crypto
len=255
seq=504
<data bytes 504 - 755>
type=crypto
len=12
seq=756
<data bytes 756 - 768>

But I guess I can live with 16 bit unaligned length fields...

As long as we avoid mixing alignments, i.e. stuff that is variable length in bytes and then something that is n-byte aligned: this needs variable length padding and becomes very messy.

I'm not personally concerned with saving a few bytes in a control message that might be a few hundred bytes.

Me neither, control messages are fair game.

Checksums
We didn't get a chance to discuss the issues surrounding the upper layer checksum. As I've said before, I think we're best off rewriting the TCP/UDP checksums along with the addresses. If we don't do this, transport checksum calculation offloading will be a big problem in IPv6. The potential for harmful actions from firewalls and such that don't see a valid checksum is also significant. Howevever, this is somewhat related to the suppressing of the shim header issue.

And as I've said before, I think this is a very bad idea.
In some cases, such as ESP, the shim might not be able to rewrite the TCP checksum.

Yes, but as long as this situation is apparent at both ends (the fact that you can't see it's TCP because the next header field is encrypted is a good clue, but the presence of any AH or ESP header too, IMO) this shouldn't be problematic.

So if we were to do this, then we'd end up with the semantics of the checksum field being different depending on what extension headers are in place.

Yes, that's true.

I don't understand the statement which ends win "big problem in IPv6".
Are you assuming that a lot of packets will be sent with a locator pair that is different than the ULID pair?

Well, yes, if we define this as 0 < a lot < all. I don't think the actual number makes a difference.

I think failures are and will be infrequent, so the fraction of shim capable traffic which will be sent with a locator pair that is different than the ULID pair will be vanishingly small.

So? If these packets are filtered out because of an apparently invalid checksum we don't have multihoming.

Demux on source with shim header

[...]

I think that *if* we want to keep the door open to routers rewriting the source address field, then we should seriously consider 1) expanding the context tag to 47 bits and 2) look at the security impact of not using the source address as part of the lookup of the context on the receiver.

Yes, that makes sense. (Well, 40 - 44 bits would probably be enough too and leave a small number of bits for future use.)

But I don't get the feeling that the WG has come to consensus on whether we want to consider having routers rewriting the source address.

That's probably because we really haven't solved the ingress filtering problem...