The MPLS WG Archive

Cell Relay Retreat>MPLS WG Archive>month:2002-Jan> msg00135



[Date Prev][Date Next][Thread Prev][Thread Next]  
  [Date Index][Thread Index][Author Index][Subject Index]

[Fwd: LDP protocol problem?]

  • From: Abhijit Gadgil <gabhijit@ee.iitb.ac.in>
  • Date: Sun, 20 Jan 2002 23:17:59 +0530 (IST)
  • cc: <mpls@UU.NET>


Jack,

Yes I agree to you, a simple solution to this problem could be as follows

Label Release message will carry mesg-id (mandatory)to indicate exactly
this is an ack for which message, this can work for withdraw messages as
well. So there is no need to change the semantics of original mappings and
updates.

The LSR which receives this release, can check the message-id and take a
decision on to what can be done with it. If the mesg-id is older than the
most recently used message-id (to the peer, for that fec), it may ignore
the Release message, silently.

If the Release is as a result of some internal event at LSR, it may use
the message-id field of all zero's to indicate the internal event. (If the
release is being propagated, it can still be interpreted by downstream LSR
as internal event at upstream LSR). In such case, the downstream LSR
should not silently ignore this.

I tried working this scheme for two or three scenario's which you have
specified, it works correctly.

Also as Eric has pointed out on this thread a label release is an ack to
label withdraw message, its not quite unreasonable to send it as nack for
"a specific mapping" message. It doe not complicate the processing of
label mapping message and any LSR does not have to do extra work to check
whether a mapping received is updated mapping or not. An LSR when it needs
to do so, can simply release with proper mesg-id.

Does this sound alright?

-abhijit

Jack Brennen wrote :

>> > But the problem has nothing to do with DoD mode.  It occurs in DU mode as well:
>> >
>> >   Router A                          Router B
>> >   --------                          --------
>> >
>> >   Sends Label Mapping
>> >    (Path Vector=<B,C,D,A>)
>> >                                     Receives Label Mapping
>> >   Router A gets a new next hop
>> >    for the FEC
>> >   Sends Label Mapping
>> >    (Path Vector=<E,F,G,A>)
>> >                                     Sends Label Release
>> >                                      (loop detected)
>> >   Receives Label Release
>> >                                     Receives Label Mapping
>> >
>> > At the end of this scenario, Router B holds a label which he believes was
>> > validly advertised by Router A.  Router A believes that Router B released
>> > the label.
>>
>> This is a smallish sort of window, which may be sorted by simply
>> having Router A send a Label Withdraw when it receives packets
>> that are labeled with the labels that Router B mistakenly thinks
>> are valid.  I think that a robust LSR implementation will do
>> that in any case.
>>
>
>But Router A believes Router B to have released the label, so he may
>reuse it for another purpose.  When Router B eventually puts traffic
>onto the label (which may occur hours later), there is no reason to
>believe that the label will still be unassigned.
>
>And it is a smallish sort of window, but I'm not bringing this to the WG's
>attention because of a theoretical concern.  This problem is being observed
>in our lab under stress conditions.  It really happens in the real world.  :-(
>
>Another way to look at this, which I hope *clearly* demonstrates the
>intractable nature of this problem.  Consider these three protocol
>conversations:
>
>   Conversation 1                           Conversation 2
>   --------------                           --------------
>
>   Router A            Router B             Router A        Router B
>   --------            --------             --------        --------
>   Send LMap                                Send LMap
>                       Recv LMap                            Recv LMap
>                       Send LRel                            Send LRel
>   NHOP Changes                             Recv LRel
>   Send LMap                                NHOP Changes
>   Recv LRel                                Send LMap
>                       Recv LMap                            Recv LMap
>
>
>   Conversation 3
>   --------------
>
>   Router A            Router B
>   --------            --------
>   Send LMap
>                       Recv LMap
>   NHOP Changes
>   Send LMap
>                       Recv LMap
>                       Send LRel
>   Recv LRel
>
>These conversations are all legal according to the LDP spec,
>and all are reasonably likely to happen.  Note that Router B can't
>tell the difference between Conversations 1 & 2, and Router A can't
>tell the difference between Conversations 1 & 3.
>
>  Conversation 1:  A ends up with no label allocated, B has a label
>  Conversation 2:  A and B both end up with a label allocated
>  Conversation 3:  A and B both end up with no label allocated
>
>Clearly, Conversation 1 leads to problems, but neither Router A nor
>Router B can distinguish this from the valid Conversations 2 & 3.
>
>This is a deficiency in the protocol, and we can brainstorm any number
>of methods to work around the problem, but the problem is there,
>and should be addressed.
>
>   Jack
>

-- 
-abhijit

Abhijit Gadgil
Graduate Student,
Dept. of Electrical Engineering,
IIT, Bombay.