[Olsr-users] Question on multiple interfaces

Thijs van Veen (spam-protected)
Thu Aug 1 12:56:40 CEST 2013


Hello,

I have a small question (based on the RFC
http://tools.ietf.org/html/rfc3626) regarding multiple interface nodes.

Given the following network with node A having 3 interfaces, 2 of which
are connected to B (single interface) and the other connected to C. B
and C are connected and all links are symmetric.

+----------------+
|       A         |
|  if.0 if.1 if.2 |
+----------------+
   \   /     / 
     B -- C  

Paths from A to B are:
A.if.0 -> B
A.if.1 -> B
A.if.2 -> C -> B

When considering the link A <-> B, will OLSR distinguish between the
links if.0 <-> B and if.1 <-> B?

To me the RFC suggests it only considers the faster link (judging from
HELLO processing on A): 

>From the RFC 3.4. Packet Processing and Message Flooding:
"3.1  if there exists a tuple in the duplicate set, where:

                             D_addr    == Originator Address, AND

                             D_seq_num == Message Sequence Number

               then the message has already been completely processed
               and MUST not be processed again.
"
So only the first link is considered, because while received on
different interfaces, both messages have the same originator address and
sequence number causing the latter to be ignored;

Or, if the message is not ignored.

>From the RFC, 7.1. Populating the Link Set:
"1    Upon receiving a HELLO message, if there exists no link tuple
          with

               L_neighbor_iface_addr == Source Address

          a new tuple is created with 

               L_neighbor_iface_addr = Source Address

               L_local_iface_addr    = Address of the interface
                                       which received the
                                       HELLO message

               L_SYM_time            = current time - 1 (expired)

               L_time                = current time + validity time

2   The tuple (existing or new) with:

               L_neighbor_iface_addr == Source Address

          is then modified as follows:

          2.1  L_ASYM_time = current time + validity time;

          2.2  if the node finds the address of the interface which
               received the HELLO message among the addresses listed in
               the link message then the tuple is modified as follows:

           2.2.1
                    if Link Type is equal to LOST_LINK then

                         L_SYM_time = current time - 1 (i.e., expired)

          2.2.2
                    else if Link Type is equal to SYM_LINK or ASYM_LINK
                    then

                         L_SYM_time = current time + validity time,

                         L_time     = L_SYM_time + NEIGHB_HOLD_TIME

          2.3  L_time = max(L_time, L_ASYM_time)
[...]
"
Only the first link is considered and for longer, because the latter
message (sent from same interface) has not been ignored and modifies the
time-outs of the first. This would cause the slower interface to be
added in the event the first interface had already been removed, but
this only reverses the problem. 

The other way around (processing on B), would work because the message
got sent from different interfaces.

-- 
  Thijs van Veen
  (spam-protected)

-- 
http://www.fastmail.fm - One of many happy users:
  http://www.fastmail.fm/help/overview_quotes.html





More information about the Olsr-users mailing list