[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Flow label versus Extension header
Hi Erik,
El 24/04/2005, a las 5:19, Erik Nordmark escribió:
marcelo bagnulo braun wrote:
Any additional considerations?
I think there are some considerations related to when and by whom the
value is allocated.
good point
The flow label value would be allocated by the sender before sending
the first packet to the peer.
i think i agree but i would like to confirm why is that so.
This would be so because once the communication is initiated, the flow
label value cannot be changed. And this is so because other usages
related to the flow label (i.e. not becuase the usage of the flow label
by the shim) Is this correct? I mean, if the only consider the usage of
the flow id in the shim context, the flow id label could be changed
during the context establsihement so we would be in a similar situation
than in the context tag, right?
A context tag carried separately doesn't need to be allocated until
the context is established. This allows the receiver of the packet
(carrying the tag) to do the allocation (and pass it to the peer as
part of the context establishment).
The receiver-based allocation has the benefit that the receiver can
make sure that the tag (either by itself or in combination with the
destination locator) will uniquely identify the context even if the
receivers set of locators change in the future.
Not sure why is that...
I mean, first of all, the receiver based allocation can allow the
receiver to make sure that the tag by itself will uniquely identify the
context _for the receiver_... i mean how the receiver can be sure that
the context tag was not already in use by the initator in another
context?
Second, are you assuming that at this point the receiver know all the
locator set of the initiator? are you assuming the the locator sets are
static? Becuase if the locator sets are dynamic then i think that no
one can be sure that the locator sets won't overlap in the future...
Actually, for me, the benefit of a context tag carried separately is
that it will probably have more bits, and we won't ran out of them
One additional thing we haven't discussed much yet is that there can
be a different flow label or context tag for each direction, and that
each end needs to be able to uniquely find the shim state based on
both the flow label/tag and locators the *peer sent* (for normal
reception), and the flow label and locators *it sent* itself (to be
able to demux an ICMP error to the right context).
I haven't figured out how this can be handled, nor whether the flow
label (and sender-based allocation) or a context tag (with potential
for receiver or sender-based allocation) makes any difference.
Well, imho, the context tag is used to demux incoming packets. So, it
must uniquely identify packets to the receiver. I guess that the
context tag of outgoing packets can be set to any value by the
transmitter i.e. it doesn't affect the transmitter.
So, i guess that the best option from this p.o.v. (and also probably
the most complex one) is to perform receiver-based context tag
allocation independet for each direction of the communication. This
means that each side of the communication informs the other side which
context tag must be used to send packets.
i.e. Host a informs host b the context tag that host b must use when
sending packets to host a
and Host b informs host a the context tag that host a must use when
sending packets to host b
There are then two context tags, one per direction and each one is sure
that this context tag is not used for any other incoming communication.
The problem occurs when we ran out of context tag values. This can be
the case if using flow id, while i don't think this is an issue for an
alternative context tag.
Regards, marcelo
Erik