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

Re: Detailed approaches for demux



On Sat, 2005-04-30 at 11:09 +0200, marcelo bagnulo braun wrote:

[snip]

> Demux at the receiver side is performed based on (flow label, src, dst)
> 
> The problem is what happens when a host run out of available flow label 
> values and need to start repeating. Note well that this happens when 
> the host has 1.048.576 (2^20) simultaneous communications.
> 
> If a repeated value is used in a communication with a different node, 
> then no problem, since the addresses will never collide.
> 
> So, the first measure to avoid problems is to avoid re-using flow label 
> values for communications with the same host whenever is possible.
> However, this is not always possible because the initiator may not be 
> aware that two communications are established with the same node.

Ignoring shim6 for a moment: a host that may have more than 2^20 active
connections can generate additional addresses (e.g., by synthesizing
additional IIDs) on an interface, and avoid ever having two or more
active flows sharing the same <S, Fl> tuple.

> So, the problem occurs when the same value is used for the same host.
> This may occur because the initiator may not be aware that two 
> different addresses belong to the same receiver.
> For example, consider the following case:
> I establishes a communication with R1 using S1 as source address and 
> assigns the flow label value f1.
> Next, I runs out of flow label values, and need to start repeating 
> values.
> At this point, I establishes a communication with R2 using S2.
> Since the Destination address R2 has not been previously used, I has no 
> means to know that is the same host, so I assigns the flow label value 
> f1.
> When the SHIM contexts are established for each of the communications, 
> the resulting contexts are:
> 
> SHIM context for the first communication:
> ULIDs: I1,R1
> Flow Label: f1
> Locator set for I1: I1,...,In (or a subset)
> Locator set for R1: R1,...,Rj (or a subset)
> 
> SHIM context for the second communication:
> ULIDs: I2,R2
> Flow Label: f1
> Locator set for I2: I1,...,In (or a subset)
> Locator set for R2: R1,...,Rj (or a subset)
> 
> The problem is that the tuple (flow label, src, dst) does not provide 
> enough information for proper demux
> 
> The possible solution for this is not to allow overlapping locator sets 
> when the same flow label value is being used in the two contexts.
> This means that in the previous case, when the context are established, 
> the nodes avoid adding locators to the locator sets that would result 
> in overlapping src,dst address pair combinations.
> 
> So, if we apply this to the previous example, the result is:
> 
> First communication: I1,R1
> 
> Second communication: I2,R2
> 
> At some point, I decides to create a SHIM context for the first 
> communication, so it proposes through SHIM signaling, the following 
> context parameter:
> 
> ULIDs: I1,R1
> Flow Label: f1
> Locator set for I1: I1,...,In
> 
> Upon reception of such information, the receiver R replies proposing 
> the following locator set for the context:
> 
> Locator set for R1: R1,R3...,Rj  (R2 is not included so that I2, R2 is 
> not valid combination for this context)
> 
> Next, the initiator establishes the SHIM context for the second 
> communication, proposing the following parameters:
> 
> ULIDs: I2,R2
> Flow Label: f1
> Locator set for I2: I1,...,In (or a subset)
> 
> At this point the receiver replies proposing the following locator set:
> 
> Locator set for R2: only R2 because all the remaining combinations are 
> included in the SHIM context of the first communication.
> 
> Through these means, proper demux can be guaranteed.
> 
> I think this provides proper demux functions.
> The problems that i see with this approach are:
> - Complexity
> - In some corner cases, some communications will end up with limited 
> fault tolerance because of a reduced set of locators.

I believe that this analysis is correct.  But if a host always generates a
complete (in terms of available prefixes) set of locators for every 2^20
active connections, and never reuses flow label values across these sets 
(i.e., keeps <IID(S), Fl> always unique) , then the complexity is tractable
and fault tolerance is not impacted, because the number of usable locators in
a shim6 context is not reduced.


Regards,

// Steve