[Olsr-dev] [RFC] problems with multiple interfaces on the same medium + proposed solution

Ferry Huberts (spam-protected)
Fri Jan 6 21:21:50 CET 2017


'best' shall become clear from the patch once it is cleaned up.


On 06/01/17 19:43, Teco Boot wrote:
>
>> Op 6 jan. 2017, om 11:23 heeft Ferry Huberts <(spam-protected)> het volgende geschreven:
>>
>> Below we describe a problem we encountered with olsrd and we explicitly
>> ask any interested party to read this and provide feedback. Especially so
>> because we will also propose a solution which will make changes to the
>> way HELLO messages are generated and sent.
>>
>> Ok, now into it...
>>
>> A while ago we noticed that neighbours of nodes with multiple interfaces
>> on the same medium report infinite costs on their links to those nodes.
>>
>> Below is the setup in which we noticed the problem, which is 100%
>> reproducible.
>>
>>       wlan0                                                 wlan0
>>       172.31.175.97/16                           172.31.175.61/16
>>    (((*))) ------------------------------------------------- (((*)))
>>       |                                                         |
>>       |                                                         |
>>       |                                                         |
>>   ____|___   172.29.175.97/15   ________  172.29.175.61/15  ____|____
>>  |         |-eth1.2580---------|        |--------eth1.2580-|         |
>>  | Node 97 |                   | Switch |                  | Node 61 |
>>  |_________|-eth2.2580---------|________|                  |_________|
>>              172.28.175.97/15
>>
>>
>> In this setup node 97 will report normal link costs for its (wired) links
>> to node 61 (see the first table below), while node 61 will report infinite
>> link costs for both its (wired) links to node 97 (see the second table
>> below).
>>
>>  Table: Links (node 97)
>>  Local IP       Remote IP       Hyst.   LQ      NLQ     Cost
>>  172.29.175.97  172.29.175.61   0.000   1.000   1.000   0.100
>>  172.28.175.97  172.29.175.61   0.000   1.000   1.000   0.100
>>  172.31.175.97  172.31.175.61   0.000   1.000   1.000   1.000
>>
>>  Table: Links (node 61)
>>  Local IP       Remote IP       Hyst.   LQ      NLQ     Cost
>>  172.29.175.61  172.29.175.97   0.000   1.000   0.000   INFINITE
>>  172.29.175.61  172.28.175.97   0.000   1.000   0.000   INFINITE
>>  172.31.175.61  172.31.175.97   0.000   1.000   1.000   1.000
>>
>>
>> Checking the HELLO messages on node 61 that are received from node 97
>> we see the following:
>>
>>  [node 61] # tcpdump -vni eth1.2580 udp port 698
>>  tcpdump: listening on eth1.2580, link-type EN10MB (Ethernet), capture size 262144 bytes
>>  06:21:23.528204 IP (tos 0xc0, ttl 1, id 42455, offset 0, flags [DF], proto UDP (17), length 80)
>>      172.28.175.97.698 > 255.255.255.255.698: OLSRv4, seq 0xf7c0, length 52
>>     Hello-LQ Message (0xc9), originator 172.31.175.97, ttl 1, hop 0
>>       vtime 3.000s, msg-seq 0x533d, length 48
>>       hello-time 1.000s, MPR willingness 3
>>         link-type Symmetric, neighbor-type Symmetric, len 12
>>           neighbor 172.29.175.61, link-quality 0.00%, neighbor-link-quality 0.00%
>>         link-type Unspecified, neighbor-type Symmetric, len 20
>>           neighbor 172.31.175.61, link-quality 0.00%, neighbor-link-quality 0.00%
>>           neighbor 172.29.175.61, link-quality 0.00%, neighbor-link-quality 0.00%
>>
>>
>> Node 61 receives HELLO messages from node 97 that report (among others):
>> 1- a  SYMMETRIC   link-type to node 61 (172.29.175.61)
>> 2- an UNSPECIFIED link-type to node 61 (172.29.175.61)
>>
>> Clearly, this is 'confusing' and the root cause of why node 61 reports
>> infinite costs for the links, as show above.
>>
>> We pose that in a HELLO message the same neighbour should NEVER be reported
>> with conflicting information.
>>
>>
>> Proposed solution:
>>
>> 1- NEVER report a neighbour more than once in a HELLO message
>
> This needs some rewording. 'neighbor' could be a node (e.g. main address)
> or be an 'interface address of a neighbor'. Here, the latter is meant.
>
>
>> 2- Use the 'best' values for a neighbour that is reported in a HELLO
>>   message
>
> This 'best' needs some explanation: it is 'best fits', or 'neighbor state for this
> interface'. The neighbor with link-type UNSPECIFIED could in reality be quite good
> link, ETX=1 or ETHER. But this is learned via another interface. Such is not the
> simple scenario as above, where cables are used and link is up or down, and
> interfaces would have the same type (e.g. ETHER).
>
>
>>
>> 1- Requires that we de-duplicate neighbours when constructing a HELLO
>>   message.
>>
>> 2- Requires - when a neighbour is already present in the HELLO message
>>   that is under construction - that we determine the 'best' values and
>>   overwrite those in the neighbour that is already present if those
>>   are worse.
>
> Again, 'best' and 'worse' are not words that exactly define what has to be done.
> It is the link-type of 'this interface' that shall be passed.
>
>
>>
>> We have a quick-and-dirty patch implementing this proposed solution and it
>> works well. We are currently cleaning up that patch.
>>
>>
>> We're explicitly soliciting feedback on this approach.
>
> I've looked at the problem and solution. Stripping the 'duplicate/in error'
> approach is OK for me. A patch is needed.
>
> I did not check the Q&D patch.
>
> Teco
>
>
>>
>>
>>
>> Greetings,
>>
>> Iwan, Teco and Ferry
>

-- 
Ferry Huberts



More information about the Olsr-dev mailing list