Subject: Identifying targeted adjacencies

From: "Philip Matthews" <[email-masked]>
Date: Wed, 17 Oct 2001 16:40:53 -0400

How do we decide whether a received targeted hello is creating a new adjacency
or is refreshing an existing adjacency? Is the decision based solely on the LdpId
in the Hello, or is it also based on the source IP address of the message?

For example, LSR A is sending targeted hellos to LSR B. At 0, 20, and 40 seconds
past each minute, it sends an Hello out interface X and stamps it with the source
address of X. At 10, 30, and 50 seconds past each minute, it sends an Hello out
interface Y and stamps it with a source address of Y. All hellos use an LdpId of R:0.0,
where R is the router id of A. Do the Hellos create one or two adjacencies on B?
Look at another way, assuming both A and B are proposing a hold time of 15 seconds,
does the hold timer for the adjacency(s) on B expire?

(And yes, I know that A is sending hellos slower than the recommended rate in the spec,
but assume it is for some reason).

- Philip

---

From: Jack Brennen <[email-masked]>
Date: Wed, 17 Oct 2001 17:36:29 -0400

Philip Matthews wrote:
> interface Y and stamps it with a source address of Y. All hellos use an LdpId of
> R:0.0, where R is the router id of A. Do the Hellos create one or two adjacencies
> on B?  Look at another way, assuming both A and B are proposing a hold time of
> 15 seconds, does the hold timer for the adjacency(s) on B expire?
> 

The receiving LSR should only use the LDP ID in the Hello message; in fact, if the
optional "Transport Address TLV" is present, the receiving LSR should not use the
source address of the Hello message in any way.  RFC 3036 clearly gives maximal
latitude to the sender to use any source IP address it wishes; notably, the source
IP address need not correspond to the physical interface.  From section 2.5.2:

  "Note that when an LSR sends a Hello it selects the transport address
   for its end of the session connection and uses the Hello to advertise
   the address, either explicitly by including it in an optional
   Transport Address TLV or implicitly by omitting the TLV and using it
   as the Hello source address."

Also note that given your example above, LSR A *must* include the
"Transport Address TLV" in either the "X Hello" messages or the "Y Hello"
messages (preferably in both).  Otherwise, LSR A is violating the last
paragraph of 2.5.2:

  "An LSR MUST advertise the same transport address in all Hellos that
   advertise the same label space.  This requirement ensures that two
   LSRs linked by multiple Hello adjacencies using the same label spaces
   play the same connection establishment role for each adjacency."

Finally, given your example, the number of adjacencies created depends upon the
topology of the network and the configuration of LSR B.  If all of the Hello
messages from LSR A arrive at LSR B over the same link, or if they arrive on
different links in the same common label space, then one (1) hello adjacency
is created.

On the other hand, if the Hello messages from LSR A arrive at LSR B over
different links which are in disjoint label spaces, then two (2) label
adjacencies are created (both of which will have expiration problems).

   Jack