The MPLS WG Archive

Cell Relay Retreat>MPLS WG Archive>month:2004-Oct> msg00093



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

[mpls] Some question about LDP

  • From: Eric Gray <ewgray2k@netscape.net>
  • Date: Fri, 22 Oct 2004 13:07:24 -0400
  • Cc: mpls@ietf.org
  • User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax)
  • X-AOL-IP: 24.61.197.198

Title:
Leonardo,

    Thanks for being persistent.  :-)

    See below...

--
Eric

Leonardo Balliache wrote:
Eric,

... SNIP ...


   The reason why the procedure is not meant to be pseudo code is that
it describes what it is that the implementation is supposed to do. There is
no strict ordering or contextual mapping of the things your implementation
has to do to the way in which your implementation does them.  If you take
a broad look at how many ways there are to do the rest of the things that
any label switching implementation might do, you will quickly realize how
pointless it would be to try to cover all the ways in which this particular
set of "steps" might be done.

I agree, but perhaps the specification shouldn't be so specific. Working and revising
the spec and coding it I have realized that you are right. Many questions are answered
when one understand better the LDP logic.

Talking about "Recognize New FECs", I insist that:

1.- In "unsolicited independent control" function "prepare_label_mapping_attribute" is
called. This function requires the argument "propagating_" which is set (before calling
the function) to true if the LSR has received previously a label mapping for fec from
nexthop. It is set to false otherwise.

2.- In "unsolicited ordered control" the function "prepare_label_mapping" is also called.
But this time the argument it needs (propagating_) is not previously set. Can I suppose
that it should be false if the LSR is the egress for that fec and true if the LSR has received
previously a label mapping for fec from nexthop?
Okay, good question. In the Label Request case (LRq.9), careful reading will show that the
value passed to a prepare label mapping attributes function is the "constant" isPropagating
in the Ordered Control mode (sub-step 2). This step is not reached if  the local LSR is
not either the egress, or in receipt of a previous label from its next hop for the FEC.

The wording difference is subtle, and easy to miss - but once you catch the difference,
it is clear.

The same applies in processing a Label Mapping (LMp.20, LMp.24 and LMp.29). You
would only reach one of these steps if A) you are currently in the process of processing a
Label Mapping (in which case you are - by definition - propagating).

However, in the "Recognize New FEC" case - specifically FEC.1, Downstream Unsolicited
Ordered Control, substep 2 - the value of the "variable" Propagating is not set (as it was in
Downstream Unsolicited Independent Control).  This is a good catch on your part, and may
be an indication that either nobody has run into this mode (as is true for me), or they were
able to figure it out (as is the case for you).

In fact, the setting of "Propagating" should not be part of the iteration, since the local LSR
has only one next hop for the given FEC, no matter how many upstream peers it may have.
That being the case, it is silly to set this "variable" at each iteration.  Also, as a result of that
consideration, it is clear that all of the steps in FEC.1, Downstream Unsolicited Ordered
Control, should be skipped if the local LSR is neither the egress nor in receipt of a Label
Mapping from its next hop.

Ina should fix this either by removing part of this section, or by changing it to read -

      FEC.1   Perform LSR Label Distribution procedure:

            For Downstream Unsolicited Independent Control

               1. Has LSR previously received and retained a label
                  mapping for FEC from Next Hop?
                  If so, set Propagating to IsPropagating.
                  If not, set Propagating to NotPropagating.

               2. Iterate through 5 for each Peer.

               3. Execute procedure Prepare_Label_Mapping_Attributes
                  (Peer, FEC, InitAttributes, SAttributes, Propagating,
                  Unknown hop count(0)).

               4. Execute procedure Send_Label (Peer, FEC, SAttributes)

               5. End iteration from 1.
                  Goto FEC.2.

            For Downstream Unsolicited Ordered Control

               1. Has LSR previously received and retained a label
                  mapping for FEC from Next Hop?
                  If so, set Propagating to IsPropagating and Goto 3.
                  If not, set Propagating to NotPropagating.

               2. Is LSR egress for the FEC?
                  If not, Goto 6.

               3. Iterate through 5 for each Peer.

               4. Execute procedure Prepare_Label_Mapping_Attributes
                  (Peer, FEC, InitAttributes, SAttributes, Propagating,
                  StoredHopCount).

               5. Execute procedure Send_Label (Peer, FEC, SAttributes)

               6. End iteration from 1.
                  Goto FEC.2.

            For Downstream On Demand Independent Control OR
            For Downstream On Demand Ordered Control

               1. Goto FEC.2.  (See Note 2.)


...  SNIP ...

--
Eric

Best regards,

Leonardo Balliache






_______________________________________________
mpls mailing list
mpls@lists.ietf.org
https://www1.ietf.org/mailman/listinfo/mpls