Subject: [manet] hello protocols inappropriate for link sensing?

From: David Young <[email-masked]>
Date: Thu, 26 Feb 2004 14:35:12 -0600

The discussion of OLSR link hysteresis & OLSR hello protocol reminds me
of my misgivings about using hello protocols for link-sensing.

My experience with the OSPF Hello protocol on 802.11b networks has been
that it is not effective for link sensing.  The multicast Hello packets
get "clobbered" (to use the technical term) by the unicast packets.
Routes are quite stable until the network sees prolonged unicast
traffic. For example, during an FTP download, hellos do not get through,
and OSPF detects that links are down in spite of their ability to bear
traffic. My network is static, so I "solved" the problem by raising the
OSPF Dead Interval. That is no solution for a mobile network.

Note that in my example, the FTP stream will produce ample evidence of
the link's bearing ability, if only OSPF will "eavesdrop" on it.

It will depend on the link layer whether or not hello messages help
fulfill the link-sensing role, so I question whether it is appropriate
for a layer-3 routing protocol to define link-sensing as a role for
the hello protocol.  It seems that a layer-3 routing protocol should
define an abstract link-sensing module, only. A link-sensing module will
provide link indications (up/down, percentage BER/PER, S/N, "goodness")
to a routing module (OLSR, AODV, whatever).  A routing module can assist
the link-sensing module by registering as a beacon-producing/expecting
agent. In Java-like pseudocode, the abstract interface might look
like this

        abstract class link_sense_listener {
                link_sense(neighbor, link_quality);
        }

        abstract class link_sense_module {
                registration register_listener(link_sense_listener listener);
                unregister_listener(registration r);
                registration register_beacon(integer interval, integer jitter,
                    integer pkt_length, boolean does_produce,
                    boolean does_expect);
                unregister_beacon(registration r);
        }

        class router extends link_sense_listener {

                registration link_listen_registration, beacon_registration;

                link_sense(neighbor n, link_quality q) {
                        /* update link database here */
                }

                router constructor(ip_address my_ip, integer hello_rate,
                    link_sense_module lm)
                {
                        self.link_listen_registration =
                            lm.register_listener(self);
                        self.beacon_registration =
                            lm.register_beacon(hello_rate, .1 * hello_rate,
                                128, true, true);
                }
        }

Thoughts?

Dave

-- 
David Young             OJC Technologies
[email-masked]      Urbana, IL * (217) 278-3933

_______________________________________________
manet mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/manet