draft-ietf-manet-olsr-05.txt   draft-ietf-manet-olsr-06.txt 
INTERNET-DRAFT Thomas Clausen INTERNET-DRAFT Thomas Clausen
IETF MANET Working Group Philippe Jacquet IETF MANET Working Group Philippe Jacquet
Expiration: 30 April 2002 Anis Laouiti Expiration: 1 September 2002 Anis Laouiti
Pascale Minet Pascale Minet
Paul Muhlethaler Paul Muhlethaler
Amir Qayyum Amir Qayyum
Laurent Viennot Laurent Viennot
INRIA Rocquencourt, France INRIA Rocquencourt, France
31 October 2001 1 September 2001
Optimized Link State Routing Protocol Optimized Link State Routing Protocol
draft-ietf-manet-olsr-05.txt draft-ietf-manet-olsr-06.txt
Status of this Memo Status of this Memo
This document is a submission by the Mobile Ad Hoc Networking Working This document is a submission by the Mobile Ad Hoc Networking Working
Group of the Internet Engineering Task Force (IETF). Comments should Group of the Internet Engineering Task Force (IETF). Comments should
be submitted to the manet@itd.nrl.navy.mil mailing list. be submitted to the manet@itd.nrl.navy.mil mailing list.
Distribution of this memo is unlimited. Distribution of this memo is unlimited.
This document is an Internet-Draft and is in full conformance with This document is an Internet-Draft and is in full conformance with
skipping to change at page 1, line 47 skipping to change at page 1, line 47
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
Abstract Abstract
This document describes the Optimized Link State Routing (OLSR) This document describes the Optimized Link State Routing (OLSR)
protocol for mobile ad hoc networks. The protocol is an optimization protocol for mobile ad hoc networks. The protocol is an optimization
of the pure link state algorithm tailored to the requirements of a of the classical link state algorithm tailored to the requirements of
mobile wireless LAN. The key concept used in the protocol is that of a mobile wireless LAN. The key concept used in the protocol is that
multipoint relays (MPRs) [1], [2]. MPRs are selected nodes which of multipoint relays (MPRs) [1], [2]. MPRs are selected nodes which
forward broadcast messages during the flooding process. This forward broadcast messages during the flooding process. This
technique substantially reduces the message overhead as compared to a technique substantially reduces the message overhead as compared to a
pure flooding mechanism, where every node retransmits each message classical flooding mechanism, where every node retransmits each
when it receives the first copy of the message. In OLSR, information message when it receives the first copy of the message. In OLSR,
flooded in the network "through" these MPRs is also "about" the MPRs. information flooded in the network "through" these MPRs is also
Thus, a second optimization is achieved by minimizing the "contents" "about" the MPRs. Thus, a second optimization is achieved by
of the control messages flooded in the network. Hence, as contrary to minimizing the "contents" of the control messages flooded in the
the classic link state algorithm, a node declares only a small subset network. Hence, as contrary to the classic link state algorithm, a
of links to its neighbor nodes, rather than all links to all node declares only a small subset of links to its neighbor nodes,
neighbors. This information is then used by the OLSR protocol for rather than all links to all neighbors. This information is then used
route calculation. As a consequence hereof, the routes contain only by the OLSR protocol for route calculation. As a consequence hereof,
the MPRs as intermediate nodes from a Source to a Destination. OLSR routes contain only the MPRs as intermediate nodes from a Source to a
provides optimal routes (in terms of number of hops). The protocol is Destination. OLSR provides optimal routes (in terms of number of
particularly suitable for large and dense networks as the technique hops). The protocol is particularly suitable for large and dense
of MPRs works well in this context. networks as the technique of MPRs works well in this context.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1. Changes . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1. Changes . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2. OLSR Terminology . . . . . . . . . . . . . . . . . . . . . 5 1.2. OLSR Terminology . . . . . . . . . . . . . . . . . . . . . 5
1.3. Applicability Section . . . . . . . . . . . . . . . . . . 7 1.3. Applicability Section . . . . . . . . . . . . . . . . . . 7
1.4. Protocol Overview . . . . . . . . . . . . . . . . . . . . 7 1.4. Protocol Overview . . . . . . . . . . . . . . . . . . . . 8
1.5. Multipoint Relays . . . . . . . . . . . . . . . . . . . . 8 1.5. Multipoint Relays . . . . . . . . . . . . . . . . . . . . 9
2. Protocol Functioning . . . . . . . . . . . . . . . . . . . . 9 2. Protocol Functioning . . . . . . . . . . . . . . . . . . . . 10
2.1. Packet Format and Forwarding . . . . . . . . . . . . . . . 10 2.1. Packet Format and Forwarding . . . . . . . . . . . . . . . 10
2.1.1. Protocol and Port Number . . . . . . . . . . . . . . . . 11 2.1.1. Protocol and Port Number . . . . . . . . . . . . . . . . 11
2.1.2. Multiple Interfaces and Main Address . . . . . . . . . . 11 2.1.2. Multiple Interfaces and Main Address . . . . . . . . . . 11
2.1.3. Packet Format . . . . . . . . . . . . . . . . . . . . . 11 2.1.3. Packet Format . . . . . . . . . . . . . . . . . . . . . 11
2.1.3.1. Packet Header . . . . . . . . . . . . . . . . . . . . 12 2.1.3.1. Packet Header . . . . . . . . . . . . . . . . . . . . 12
2.1.3.2. Message Header . . . . . . . . . . . . . . . . . . . . 12 2.1.3.2. Message Header . . . . . . . . . . . . . . . . . . . . 12
2.1.4. Packet Processing and Message Flooding . . . . . . . . . 13 2.1.4. Packet Processing and Message Flooding . . . . . . . . . 14
2.1.5. Message Emission and Jitter . . . . . . . . . . . . . . 16 2.1.5. Message Emission and Jitter . . . . . . . . . . . . . . 16
2.2. Neighbor Sensing . . . . . . . . . . . . . . . . . . . . . 17 2.2. Neighbor Sensing . . . . . . . . . . . . . . . . . . . . . 17
2.2.1. HELLO Message Format . . . . . . . . . . . . . . . . . . 18 2.2.1. HELLO Message Format . . . . . . . . . . . . . . . . . . 18
2.2.2. Neighbor Sensing Information Base . . . . . . . . . . . 20 2.2.2. Neighbor Sensing Information Base . . . . . . . . . . . 20
2.2.2.1. Neighbor Set . . . . . . . . . . . . . . . . . . . . . 20 2.2.2.1. Neighbor Set . . . . . . . . . . . . . . . . . . . . . 20
2.2.2.2. 2-hop Neighbor Set . . . . . . . . . . . . . . . . . . 20 2.2.2.2. 2-hop Neighbor Set . . . . . . . . . . . . . . . . . . 21
2.2.2.3. MPR Set . . . . . . . . . . . . . . . . . . . . . . . 21 2.2.2.3. MPR Set . . . . . . . . . . . . . . . . . . . . . . . 21
2.2.2.4. MPR Selector Set . . . . . . . . . . . . . . . . . . . 21 2.2.2.4. MPR Selector Set . . . . . . . . . . . . . . . . . . . 21
2.2.3. HELLO Message Generation . . . . . . . . . . . . . . . . 21 2.2.3. HELLO Message Generation . . . . . . . . . . . . . . . . 22
2.2.4. HELLO Message Processing . . . . . . . . . . . . . . . . 22 2.2.4. HELLO Message Processing . . . . . . . . . . . . . . . . 23
2.2.5. Multipoint Relay Selection . . . . . . . . . . . . . . . 25 2.2.5. Multipoint Relay Selection . . . . . . . . . . . . . . . 27
2.2.5.1. Neighborhood and 2-hop Neighborhood Changes . . . . . 27 2.2.5.1. Neighborhood and 2-hop Neighborhood Changes . . . . . 29
2.2.6. Advanced Neighbor Sensing Functioning . . . . . . . . . 27 2.2.6. Advanced Neighbor Sensing Functioning . . . . . . . . . 30
2.2.6.1. Link Hysteresis . . . . . . . . . . . . . . . . . . . 28 2.2.6.1. Link Hysteresis . . . . . . . . . . . . . . . . . . . 31
2.2.6.2. Optional Link layer notification . . . . . . . . . . . 29 2.2.6.2. Optional Link layer notification . . . . . . . . . . . 32
2.3. Topology Discovery . . . . . . . . . . . . . . . . . . . . 30
2.3.1. Multipoint Relay Information Declaration . . . . . . . . 30
2.3.1.1. Topology Information Base . . . . . . . . . . . . . . 30
2.3.1.2. TC Message Generation . . . . . . . . . . . . . . . . 31
2.3.1.3. TC Message Processing . . . . . . . . . . . . . . . . 32
2.3.2. Multiple Interface Association . . . . . . . . . . . . . 34
2.3.2.1. Interface Association Information Base . . . . . . . . 34
2.3.2.2. MID Broadcast . . . . . . . . . . . . . . . . . . . . 35
2.3.2.3. MID Message Processing . . . . . . . . . . . . . . . . 36
2.3.3. Associated Networks and Hosts . . . . . . . . . . . . . 37
2.3.3.1. Host and Network Association Information Base . . . . 38
2.3.3.2. Host and Network Association Message Broadcast . . . . 38
2.3.3.3. HNA Message Processing . . . . . . . . . . . . . . . . 39
2.3.3.4. Optional Link layer notification . . . . . . . . . . . 40
2.3.4. Routing Table Calculation . . . . . . . . . . . . . . . 41
3. Node Configuration . . . . . . . . . . . . . . . . . . . . . 43 2.3. Topology Discovery . . . . . . . . . . . . . . . . . . . . 33
3.1. Address Assignment . . . . . . . . . . . . . . . . . . . . 43 2.3.1. TC Message Format . . . . . . . . . . . . . . . . . . . 33
3.2. Routing Configuration . . . . . . . . . . . . . . . . . . 43 2.3.2. Topology Information Base . . . . . . . . . . . . . . . 34
3.3. Data Packet Forwarding . . . . . . . . . . . . . . . . . . 44 2.3.3. TC Message Generation . . . . . . . . . . . . . . . . . 35
3.4. Control Message Forwarding . . . . . . . . . . . . . . . . 44 2.3.4. TC Message Processing . . . . . . . . . . . . . . . . . 35
2.3.5. Multiple Interface Association . . . . . . . . . . . . . 37
2.3.5.1. Multiple Interface Association Information Base . . . 37
2.3.5.2. MID Message Format . . . . . . . . . . . . . . . . . . 37
2.3.5.3. MID Message Generation . . . . . . . . . . . . . . . . 38
2.3.5.4. MID Message Processing . . . . . . . . . . . . . . . . 39
2.3.6. Associated Networks and Hosts . . . . . . . . . . . . . 40
2.3.6.1. HNA Message Format . . . . . . . . . . . . . . . . . . 41
2.3.6.2. Host and Network Association Information Base . . . . 41
2.3.6.3. HNA Message Generation . . . . . . . . . . . . . . . . 42
2.3.6.4. HNA Message Processing . . . . . . . . . . . . . . . . 42
2.3.7. Routing Table Calculation . . . . . . . . . . . . . . . 43
2.3.8. Advanced Topology Discovery Functioning . . . . . . . . 46
2.3.8.1. Reaction to Link Failure with a MPR Selector . . . . . 46
2.3.8.2. Advanced Fast Re-routing Mechanism . . . . . . . . . . 47
2.3.8.2.1. FRR Message Format . . . . . . . . . . . . . . . . . 48
2.3.8.2.2. FRR Message Generation . . . . . . . . . . . . . . . 48
2.3.8.2.3. FRR Message Processing . . . . . . . . . . . . . . . 49
4. IPv6 Considerations . . . . . . . . . . . . . . . . . . . . 44 3. Node Configuration . . . . . . . . . . . . . . . . . . . . . 49
5. Proposed Values for the Constants . . . . . . . . . . . . . 44 3.1. Address Assignment . . . . . . . . . . . . . . . . . . . . 49
6. Sequence Numbers . . . . . . . . . . . . . . . . . . . . . . 45 3.2. Routing Configuration . . . . . . . . . . . . . . . . . . 50
7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 46 3.3. Data Packet Forwarding . . . . . . . . . . . . . . . . . . 50
4. IPv6 Considerations . . . . . . . . . . . . . . . . . . . . 50
5. Proposed Values for the Constants . . . . . . . . . . . . . 50
6. Sequence Numbers . . . . . . . . . . . . . . . . . . . . . . 51
7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 52
8. Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 52
1. Introduction 1. Introduction
The Optimized Link State Routing Protocol (OLSR) is developed for The Optimized Link State Routing Protocol (OLSR) is developed for
mobile ad hoc networks. It operates as a table driven and proactive mobile ad hoc networks. It operates as a table driven, proactive pro-
protocol, thus exchanges topology information with other nodes of the tocol. I.e., exchanges topology information with other nodes of the
network regularly. The nodes which are selected as a multipoint relay network regularly. Each node selects a set of its neighbor nodes as
by some neighbor nodes announce this information periodically in "multipoint relays". These nodes which have been selected as a multi-
their control messages. Thereby, a node announces to the network, point relay by some neighbor nodes announce this information periodi-
that it has reachability to the nodes which have selected it as MPR. cally in their control messages. Thereby, a node announces to the
In route calculation, the MPRs are used to form the route from a network, that it has reachability to the nodes which have selected it
given node to any destination in the network. The protocol uses the as MPR. In route calculation, the MPRs are used to form the route
MPRs to facilitate efficient flooding of control messages in the net- from a given node to any destination in the network. Furthermore, the
work. protocol uses the MPRs to facilitate efficient flooding of control
messages in the network.
MPRs are selected by a node among its one hop neighbors with "symmet- A node selects MPRs from among its one hop neighbors with "symmetri-
ric", i.e. bi-directional, link. Therefore, selecting the route cal", i.e. bi-directional, linkages. Therefore, selecting the route
through MPRs automatically avoids the problems associated with data through MPRs automatically avoids the problems associated with data
packet transfer over uni-directional links (such as the problem of packet transfer over uni-directional links (such as the problem of
not getting link-layer acknowledgments for data packets at each hop) not getting link-layer acknowledgments for data packets at each hop)
OLSR is developed to work independently from other protocols. Like- OLSR is developed to work independently from other protocols. Like-
wise, OLSR makes no assumptions about the underlying link-layer. wise, OLSR makes no assumptions about the underlying link-layer.
OLSR inherits the concept of forwarding and relaying from HIPERLAN (a OLSR inherits the concept of forwarding and relaying from HIPERLAN (a
MAC layer protocol) which is standardized by ETSI [3]. The protocol MAC layer protocol) which is standardized by ETSI [3]. The protocol
is developed in the IPANEMA project (part of the Euclid program) and is developed in the IPANEMA project (part of the Euclid program) and
in the PRIMA project (part of the RNRT program). in the PRIMA project (part of the RNRT program).
1.1. Changes 1.1. Changes
Major changes from version 05 to version 06
- Clarification of the usage of link layer notification and fast
rerouting
- Clarification of MPR selection
- Clarification of multiple interfaces
Major changes from version 04 to version 05 Major changes from version 04 to version 05
- Introduction of support for multiple interfaces - Introduction of support for multiple interfaces
- Introduction of support for associated hosts and networks. - Introduction of support for associated hosts and networks.
- Introduction of support for advanced neighbor sensing through - Introduction of support for advanced neighbor sensing through
hysteresis. hysteresis.
- Modularity between neighbor sensing and topology discovery - Modularity between neighbor sensing and topology discovery
emphasized. emphasized.
Major changes from version 03 to version 04 Major changes from version 03 to version 04
skipping to change at page 6, line 12 skipping to change at page 6, line 22
multipoint relay, will be called a multipoint relay selector multipoint relay, will be called a multipoint relay selector
of node X. of node X.
node node
A MANET router which implements this Optimized Link State A MANET router which implements this Optimized Link State
Routing protocol. Routing protocol.
interface interface
A network device participating in the MANET (it is usually A network device participating in the MANET (usually a wire-
wireless). A node may have several interfaces, each one pos- less device). A node may have several interfaces, each inter-
sessing its own IP address. face assigned an unique IP address.
link link
A link is a pair of interfaces (from two different nodes) sus- A link is a pair of interfaces (from two different nodes) sus-
ceptible to hear one another (i.e. one may be able to receive ceptible to hear one another (i.e. one may be able to receive
traffic from the other). A node is said to have a link to traffic from the other). A node is said to have a link to
another node when one of its interface has a link to one of another node when one of its interface has a link to one of
the interfaces of the other node. the interfaces of the other node.
neighbor interface neighbor interface
skipping to change at page 6, line 36 skipping to change at page 6, line 46
An interface I is a neighbor interface of an interface J if J An interface I is a neighbor interface of an interface J if J
can hear I (i.e. it is possible to send traffic from I to J). can hear I (i.e. it is possible to send traffic from I to J).
sender interface sender interface
The sender interface of a control message is the neighbor The sender interface of a control message is the neighbor
interface over which the message has been transmitted. interface over which the message has been transmitted.
receiver interface receiver interface
The reciever interface of a control message is the (local) The receiver interface of a control message is the (local)
interface, over which a control message has been recieved. interface, over which a control message has been received.
neighbor node neighbor node
A node X is a neighbor node of node Y if node Y can hear node A node X is a neighbor node of node Y if node Y can hear node
X (i.e. one of X interfaces is a neighbor interface of some X (i.e. one of X interfaces is a neighbor interface of some
interface of Y). interface of Y).
2-hop interface
An interface heard by a neighbor.
symmetric link symmetric link
A bi-directional link between two interfaces, i.e. interface I A bi-directional link between two interfaces, i.e. interface I
and interface J where both can hear each other. and interface J where both can hear each other.
symmetric neighborhood symmetric neighborhood
The symmetric neighborhood of any node X is the set of nodes The symmetric neighborhood of any node X is the set of nodes
which have at least one symmetric link to X. which have at least one symmetric link to X.
symmetric 2-hop neighborhood symmetric 2-hop neighborhood
skipping to change at page 7, line 31 skipping to change at page 7, line 46
the optimization achieved using the MPRs works well in this context. the optimization achieved using the MPRs works well in this context.
The larger and more dense a network, the more optimization can be The larger and more dense a network, the more optimization can be
achieved as compared to the classic link state algorithm. OLSR uses achieved as compared to the classic link state algorithm. OLSR uses
hop-by-hop routing, i.e. each node uses its local information to hop-by-hop routing, i.e. each node uses its local information to
route packets. route packets.
OLSR is well suited for networks, where the traffic is random and OLSR is well suited for networks, where the traffic is random and
sporadic between "several" nodes rather than being almost exclusively sporadic between "several" nodes rather than being almost exclusively
between a small specific set of nodes. The performance of the proto- between a small specific set of nodes. The performance of the proto-
col, compared to a reactive protocol, is even better if these col, compared to a reactive protocol, is even better if these
[source, destination] pairs change with time [4]. Such changes may [source, destination] pairs change over time [4]. Such changes may
initiate substantial traffic (query flooding) in case of a reactive initiate substantial traffic (query flooding) in case of a reactive
protocol, but nothing in OLSR, as the routes are maintained for each protocol, but no additional traffic in OLSR, as the routes are main-
known destination all the time. tained for each known destination all the time.
1.4. Protocol Overview 1.4. Protocol Overview
OLSR is a proactive routing protocol for mobile ad hoc networks. The OLSR is a proactive routing protocol for mobile ad hoc networks. The
protocol inherits the stability of a link state algorithm and has the protocol inherits the stability of a link state algorithm and has the
advantage of having routes immediately available when needed due to advantage of having routes immediately available when needed due to
its proactive nature. OLSR is an optimization over the pure link its proactive nature. OLSR is an optimization over the classical link
state protocol, tailored for mobile ad hoc networks. state protocol, tailored for mobile ad hoc networks.
Firstly, it reduces the size of the control messages: rather than First, it reduces the size of the control messages: rather than
declaring all links, a node declares only a subset of links with its declaring all links, a node declares only a subset of links with its
neighbors, namely the links to those nodes which are its MPR selec- neighbors, namely the links to those nodes which are its MPR selec-
tors. Secondly, OLSR minimizes flooding of control traffic by using tors. Second, OLSR minimizes the overhead from flooding of control
only selected nodes, called MPRs, to diffuse its control messages. traffic by using only selected nodes, called MPRs, to retransmit con-
This technique significantly reduces the number of retransmissions in trol messages. This technique significantly reduces the number of
a flooding or broadcast procedure. retransmissions required to flood a message to all nodes in the net-
work.
OLSR MAY optimize the reactivity to topological changes by reducing OLSR MAY optimize the reactivity to topological changes by reducing
the maximum time interval for periodic control message transmission. the maximum time interval for periodic control message transmission.
Furthermore, as OLSR continuously maintains routes for all destina- Furthermore, as OLSR continuously maintains routes to all destina-
tions in the network, the protocol is beneficial for traffic patterns tions in the network, the protocol is beneficial for traffic patterns
where a large subset of nodes are communicating with another large where a large subset of nodes are communicating with another large
subset of nodes, and where the [source,destination] pairs are chang- subset of nodes, and where the [source,destination] pairs are chang-
ing over time. The protocol is particularly suited for large and ing over time. The protocol is particularly suited for large and
dense networks, as the optimization done using MPRs works well in dense networks, as the optimization done using MPRs works well in
this context. The larger and more dense a network, the more optimiza- this context. The larger and more dense a network, the more optimiza-
tion can be achieved as compared to the classic link state algorithm. tion can be achieved as compared to the classic link state algorithm.
OLSR is designed to work in a completely distributed manner and does OLSR is designed to work in a completely distributed manner and does
thus not depend on any central entity. The protocol does NOT REQUIRE thus not depend on any central entity. The protocol does NOT REQUIRE
reliable transmission of control messages: each node sends control reliable transmission of control messages: each node sends control
messages periodically, and can therefore sustain an occasional loss messages periodically, and can therefore sustain an occasional loss
of some such messages. Such losses occur frequently in radio networks of some such messages. Such losses occur frequently in radio networks
due to collisions or other transmission problems. due to collisions or other transmission problems.
Also, OLSR does not require sequenced delivery of messages. Each con- Also, OLSR does not require sequenced delivery of messages. Each con-
trol message contains a sequence number which is incremented for each trol message contains a sequence number which is incremented for each
message. Thus the recipient of a control message can easily identify message. Thus the recipient of a control message can, if required,
which information is newer - even if messages have been re-ordered easily identify which information is newer - even if messages have
while in transmission. been re-ordered while in transmission.
Furthermore, OLSR provides support for protocol extensions such as Furthermore, OLSR provides support for protocol extensions such as
sleep mode operation, multicast-routing etc. Such extensions may be sleep mode operation, multicast-routing etc. Such extensions may be
introduced as additions to the protocol without breaking backwards introduced as additions to the protocol without breaking backwards
compatibility with earlier versions. compatibility with earlier versions.
OLSR performs hop by hop routing, i.e. each node uses its most recent
local information to route a packet. Hence, for OLSR to be able to
route packets, the frequency of control messages should be tuned to
the speed of the mobile nodes such that their movements can be
tracked by their neighborhood.
OLSR does not require any changes to the format of IP packets. Thus OLSR does not require any changes to the format of IP packets. Thus
any existing IP stack can be used as is: the protocol only interacts any existing IP stack can be used as is: the protocol only interacts
with routing table management. with routing table management.
1.5. Multipoint Relays 1.5. Multipoint Relays
The idea of multipoint relays is to minimize the overhead of flooding The idea of multipoint relays is to minimize the overhead of flooding
messages in the network by reducing duplicate retransmissions in the messages in the network by reducing duplicate retransmissions in the
same region. Each node in the network selects a set of nodes in its same region. Each node in the network selects a set of nodes in its
symmetric neighborhood which may retransmit its messages. This set of symmetric neighborhood which may retransmit its messages. This set of
skipping to change at page 9, line 17 skipping to change at page 9, line 28
Each node selects its MPR set among its one hop symmetric neighbors. Each node selects its MPR set among its one hop symmetric neighbors.
This set is selected such that it covers (in terms of radio range) This set is selected such that it covers (in terms of radio range)
all nodes that are two hops away. The MPR set of N, denoted as all nodes that are two hops away. The MPR set of N, denoted as
MPR(N), is then an arbitrary subset of the symmetric neighborhood of MPR(N), is then an arbitrary subset of the symmetric neighborhood of
N which satisfies the following condition: every node in the symmet- N which satisfies the following condition: every node in the symmet-
ric 2-hop neighborhood of N must have a symmetric link towards ric 2-hop neighborhood of N must have a symmetric link towards
MPR(N). The smaller the MPR set is, the more optimal is the routing MPR(N). The smaller the MPR set is, the more optimal is the routing
protocol. [2] gives an analysis and example of MPR selection algo- protocol. [2] gives an analysis and example of MPR selection algo-
rithms. rithms.
Each node maintains information about the neighbors that have Each node maintains information about the set of neighbors that have
selected it as MPR. This set is called the "Multipoint Relay Selector selected it as MPR. This set is called the "Multipoint Relay Selector
set" (MPR selector set) of a node. A node obtains this information set" (MPR selector set) of a node. A node obtains this information
from periodic HELLO messages received from the neighbors. from periodic HELLO messages received from the neighbors.
A broadcast message, intended to be diffused in the whole network, A broadcast message, intended to be diffused in the whole network,
coming from these MPR selectors is assumed to be retransmitted by the coming from any of the MPR selectors of node N is assumed to be
node. This set can change over time (i.e. when a node selects another retransmitted by node N. This set can change over time (i.e. when a
MPR-set) and is indicated by the selector nodes in their HELLO mes- node selects another MPR-set) and is indicated by the selector nodes
sages. Each node has a specific "Multipoint relay Selector Sequence in their HELLO messages. Each node has a specific "Multipoint relay
Number" (MSSN) associated with this set. Whenever the MPR selector Selector Sequence Number" (MSSN) associated with this set. Whenever
set is updated, the node also increments its MSSN. the MPR selector set is updated, the node also increments its MSSN.
OLSR relies on selection of MPRs, and calculates routes through these OLSR relies on selection of MPRs, and calculates routes through these
nodes. I.e., the path is made of links between MPR and MPR selector. nodes. I.e., the path is made of links between MPR and MPR selector.
To enable this, each node in the network periodically floods informa- To enable this, each node in the network periodically floods informa-
tion describing which neighbors have selected it as a MPR. Upon tion describing which neighbors have selected it as a MPR. Upon
receipt of this "MPR Selector" information, each node calculates or receipt of this "MPR Selector" information, each node calculates or
updates the route to each known destination. So principally, the updates the route to each known destination. So principally, the
route is a sequence of hops through the MPRs from source to the des- route is a sequence of hops through the MPRs from source to the des-
tination. tination.
MPRs are selected among the symmetric neighborhood. Therefore, A nodes MPRs are selected among its symmetric neighborhood.
selecting the route through MPRs automatically avoids the problems
associated with data packet transfer over uni-directional links such Therefore, selecting the route through MPRs automatically avoids the
as the problem of not getting an acknowledgment for the data packets problems associated with data packet transfer over uni-directional
at each hop. links such as the problem of not getting a link layer acknowledgment
for the data packets at each hop.
2. Protocol Functioning 2. Protocol Functioning
This section describes the details of the protocol functioning. This This section describes the details of the protocol functioning. This
includes descriptions of the format and contents of the packets being includes descriptions of the format and contents of the packets being
exchanged by routers, the algorithms (e.g. for packet handling and exchanged by routers and the algorithms (e.g. for packet handling and
routing table calculation) and suggested data structures internally routing table calculation).
kept in each router.
The "Packet Forwarding" and "Neighbor Sensing" mechanisms may be seen The "Packet Forwarding" and "Neighbor Sensing" mechanisms may be seen
as a transfer layer for the routing protocol. This provides nodes as a transfer layer for the routing protocol. This provides nodes
with information about their neighbors and offer an optimized mecha- with information about their neighbors and offers an optimized mecha-
nism for flooding messages through the concept of MPRs. It completely nism for flooding messages through the concept of MPRs. It completely
relies on the exchange of HELLO messages. relies on the exchange of HELLO messages.
The "Topoly Discovery" mechanism relies on the "Packet Forwarding" The "Topology Discovery" mechanism relies on the "Packet Forwarding"
and "Neighbor Sensing" mechanisms. Neighbor and MPR information from and "Neighbor Sensing" mechanisms. A node uses neighbor and MPR
the "Neighbor Sensing" mechanism is utilized by a node for diffusing information from the "Neighbor Sensing" mechanism in diffusing local
local topology information to the whole network. Topology information topology information to the larger network. Topology information is
is diffused through the "Packet Forwarding" mechanism, and relies on diffused through the "Packet Forwarding" mechanism, and relies on TC,
TC, MID and HNA messages. Resulting from the "Topology Discovery" MID and HNA messages. Resulting from the "Topology Discovery" mecha-
mechanism is information which allows routing table calculation. nism is information which allows routing table calculation.
The key notion in these modules is the MPR relationship. The key notion for these mechanisms is the MPR relationship.
2.1. Packet Format and Forwarding 2.1. Packet Format and Forwarding
OLSR communicates using an unified packet format for all data related OLSR communicates using a unified packet format for all data related
to the protocol. The purpose of this is to facilitate extensibility to the protocol. The purpose of this is to facilitate extensibility
of the protocol without breaking backwards compatibility, as well as of the protocol without breaking backwards compatibility. Also, this
to provide an easy way of piggybacking different "types" of informa- provides an easy way of piggybacking different "types" of information
tion into a single transmission. These packets are embedded in UDP into a single transmission, and thus for a given implementation to
datagrams for transmission over the network. The present draft is optimize towards utilizing the maximal frame-size, provided by the
presented with IPv4 addresses. Considerations regarding IPv6 are network. These packets are embedded in UDP datagrams for transmission
given in section 4. over the network. The present draft is presented with IPv4 addresses.
Considerations regarding IPv6 are given in section 4.
Each packet encapsulates one or more messages. The messages share a Each packet encapsulates one or more messages. The messages share a
common header format, which enables nodes to correctly accept and (if common header format, which enables nodes to correctly accept and (if
applicable) retransmit messages of an unknown type. applicable) retransmit messages of an unknown type.
Messages can be flooded onto the entire network, or flooding can be Messages can be flooded onto the entire network, or flooding can be
limited to nodes within a diameter (in terms of number of hops) from limited to nodes within a diameter (in terms of number of hops) from
the originator of the message. Thus, broadcasting a message to the the originator of the message. Thus transmitting a message to the
neighborhood of a node is just a special case of flooding. When neighborhood of a node is just a special case of flooding. When
flooding any control message, duplicate retransmissions will be elim- flooding any control message, duplicate retransmissions will be elim-
inated locally (i.e. each node maintains a duplicate table to prevent inated locally (i.e. each node maintains a duplicate table to prevent
transmitting the same message twice) and minimized in the entire net- transmitting the same message twice) and minimized in the entire net-
work through the usage of MPRs as described in later sections. work through the usage of MPRs as described in later sections.
Furthermore, a node can examine the header of a message to obtain Furthermore, a node can examine the header of a message to obtain
information on the distance (in terms of number of hops) to the orig- information on the distance (in terms of number of hops) to the orig-
inator of the message. This feature may be useful in situations inator of the message. This feature may be useful in situations
where, e.g., the time information from a received control messages where, e.g., the time information from a received control messages
skipping to change at page 11, line 15 skipping to change at page 11, line 26
2.1.1. Protocol and Port Number 2.1.1. Protocol and Port Number
Packets in OLSR are communicated using UDP. Port 698 has been Packets in OLSR are communicated using UDP. Port 698 has been
assigned by IANA for exclusive usage by the OLSR protocol. assigned by IANA for exclusive usage by the OLSR protocol.
2.1.2. Multiple Interfaces and Main Address 2.1.2. Multiple Interfaces and Main Address
A node may have several wireless interfaces, each of them having a A node may have several wireless interfaces, each of them having a
distinct IP address. OLSR supports such nodes with multiple inter- distinct IP address. OLSR supports such nodes with multiple inter-
faces. For this reason, each node MUST choose one of its interface faces. For this reason, each node MUST choose one of its interface
addresses as its "main address". For example, the smallest interface addresses as its "main address". It is of no importance which address
address may be the chosen as the main interface. The main address is chosen, however a node SHOULD always use the same address as its
MUST be used in OLSR control traffic as the "originator address" of main address. For example, the smallest interface address may be cho-
all messages emitted by a node. sen as the main interface. The main address MUST be used in OLSR con-
trol traffic as the "originator address" of all messages emitted by a
node.
A node must transmit and retransmit all control messages on all A node must transmit and retransmit all control messages on all
interfaces. The source address in the IP header must contain the IP- interfaces. The source address in the IP header must contain the IP-
address of the interface where the message is transmitted. This address of the interface where the message is transmitted. This
address will be denoted the "sender interface address". address will be denoted the "sender interface address".
2.1.3. Packet Format 2.1.3. Packet Format
The basic layout of any packet in OLSR is as follows (omitting the IP The basic layout of any packet in OLSR is as follows (omitting the IP
and UDP headers): and UDP headers):
skipping to change at page 12, line 29 skipping to change at page 13, line 4
MUST be set to "0000000000000000" to be in compliance with MUST be set to "0000000000000000" to be in compliance with
this version of the draft. this version of the draft.
The sender information for a packet is obtainable from the UDP The sender information for a packet is obtainable from the UDP
header. header.
2.1.3.2. Message Header 2.1.3.2. Message Header
Message Type Message Type
This field indicates which type of message is to be found in
This field indicates which type of message are to be found in
the "MESSAGE" partition. Message types in the range of 0-127 the "MESSAGE" partition. Message types in the range of 0-127
are reserved for messages in this draft and in extension are reserved for messages in this draft and in extension
drafts. drafts.
Reserved Reserved
MUST be set to "00000000" to be in compliance with this ver- MUST be set to "00000000" to be in compliance with this ver-
sion of the draft. sion of the draft.
Message Size Message Size
This field gives the size of this message, counted in bytes This field gives the size of this message, counted in bytes
and measured from the beginning of the "Message Type" field and measured from the beginning of the "Message Type" field
and until the beginning of the next "Message Type" field (or - and until the beginning of the next "Message Type" field (or -
if there are no following messages - the end of the packet). if there are no following messages - until the end of the
packet).
Originator Address Originator Address
This field contains the main address of the node, which has This field contains the main address of the node, which has
originally generated this message. This field SHOULD NOT be originally generated this message. This field SHOULD NOT be
confused with the source address from the UDP header, which is confused with the source address from the UDP header, which is
changed each time to the address of the intermediate interface changed each time to the address of the intermediate interface
which is "re-transmitting" this message. The Originator which is re-transmitting this message. The Originator Address
Address field MUST *NEVER* be changed in retransmissions. field MUST *NEVER* be changed in retransmissions.
Time To Live Time To Live
This field contains the maximum number of hops a message will This field contains the maximum number of hops a message will
be transmitted. Before a message is retransmitted, the Time To be transmitted. Before a message is retransmitted, the Time To
Live MUST be decremented by 1. When a node receives a message Live MUST be decremented by 1. When a node receives a message
with a Time To Live equal to 0 or 1, the message MUST NOT be with a Time To Live equal to 0 or 1, the message MUST NOT be
retransmitted under any circumstances. Normally, a node would retransmitted under any circumstances. Normally, a node would
not receive a message with a TTL of zero. not receive a message with a TTL of zero.
skipping to change at page 13, line 48 skipping to change at page 14, line 21
inating from the node - "wrap-arounds" are handled as inating from the node - "wrap-arounds" are handled as
described in a later section. Message sequence numbers are described in a later section. Message sequence numbers are
used to ensure that a given message is not retransmitted more used to ensure that a given message is not retransmitted more
than once by any node. than once by any node.
2.1.4. Packet Processing and Message Flooding 2.1.4. Packet Processing and Message Flooding
Upon receiving a basic packet, the protocol parser examines each of Upon receiving a basic packet, the protocol parser examines each of
the "message headers". Based on the value of the "Message Type" the "message headers". Based on the value of the "Message Type"
field, the parser can determine the fate of the message. A node may field, the parser can determine the fate of the message. A node may
receive the same message several times. This can happen only if the receive the same message several times. Thus, to avoid re-processing
message is retransmitted by two interfaces in the receivers neighbor- of a message which was already received and processed, each node
hood and the "Time To Live" and the "Hop Count" fields in the message maintains a Duplicate table. In this table, the node records informa-
satisfy the following condition: tion about the most recently received messages where the above condi-
tion holds. For each message, satisfying the above condition, a node
Time To Live + Hop Count > 1 records a "Duplicate Tuple" (D_addr, D_seq_num, D_time), where D_addr
is the originator address of the message, D_seq_num is the message
Thus, to avoid re-processing of a message which was already received sequence number of the message and D_time specifies the time at which
and processed, each node maintains a Duplicate table. In this table, a tuple expires and *MUST* be removed.
the node records information about the most recently received mes-
sages where the above condition holds. For each message, satisfying
the above condition, a node records a "Duplicate Tuple" (D_addr,
D_seq_num, D_time), where D_addr is the originator address of the
message, D_seq_num is the message sequence number of the message and
D_time specifies the time at which a tuple expires and *MUST* be
removed.
In a node, the set of Duplicate Tuples are denoted the "Duplicate In a node, the set of Duplicate Tuples are denoted the "Duplicate
set". set".
In this section, the term "Originator Address" will be used for the
main address of the node which sent the message. The term "Sender
Interface Address" will be used for the sender address (given in the
IP header of the packet containing the message) of the interface
which sent the message.
Thus, upon receiving a basic packet, a node performs the following Thus, upon receiving a basic packet, a node performs the following
tasks for each encapsulated message: tasks for each encapsulated message:
1 If the time to live of the message is less than or equal to 1 If the time to live of the message is less than or equal to
'0' (zero), the message MUST silently be dropped. '0' (zero), the message MUST silently be dropped.
2 If there exists a tuple in the duplicate set, where: 2 If there exists a tuple in the duplicate set, where:
D_addr == Originator Address, AND D_addr == Originator Address, AND
D_seq_num == Message Sequence Number D_seq_num == Message Sequence Number
then the message has already been completely processed and then the message has already been completely processed and
MUST silently be ignored. MUST silently be ignored.
3 Otherwise, if the Message Type of the message is known to the 3 Otherwise, if the node implements the Message Type of the mes-
node, the message MUST be processed according to the specifi- sage, the message MUST be processed according to the specifi-
cations of such message type. cations for the message type.
4 Otherwise, If the Message Type of the message is not known to 4 Otherwise, if the node does not implement the Message Type of
the node, the message SHOULD be processed according to the the message the message SHOULD be processed according to the
following algorithm: following algorithm:
4.1 If the sender of the message is not detected to be in the 4.1 If the sender interface address of the message is not
symmetric neighborhood of the node, the message MUST detected to be in the symmetric neighborhood of the node,
silently be dropped. the message MUST silently be dropped.
4.2 If the sender of the message is detected to be in the 4.2 If the sender interface address of the message is
symmetric neighborhood of the node, an entry in the detected to be in the symmetric neighborhood of the node,
duplicate set is recorded with: an entry in the duplicate set is recorded with:
D_addr = originator address D_addr = originator address
D_seq_num = Message Sequence Number D_seq_num = Message Sequence Number
D_time = current time + D_HOLD_TIME. D_time = current time + D_HOLD_TIME.
4.3 If the sender address is the link interface address of a 4.3 If the sender interface address is an interface address
MPR selector of this node and if the time to live of the of a MPR selector of this node and if the time to live of
message is greater than '1', the message MUST be for- the message is greater than '1', the message MUST be for-
warded according to the following: warded according to the following:
4.3.1 4.3.1
The TTL of the message is reduced by one. The TTL of the message is reduced by one.
4.3.2 4.3.2
The hop-count of the message is increased by one The hop-count of the message is increased by one
4.3.3 4.3.3
The message is broadcasted on all interfaces The message is broadcasted on all interfaces
(Notice: The remaining fields of the message header (Notice: The remaining fields of the message header
SHOULD be left unmodified.) SHOULD be left unmodified.)
Notice: known message types are *not* forwarded "blindly" by this Notice: known message types are *not* forwarded "blindly" by this
algorithm. Forwarding (and setting the correct message header in the algorithm. Forwarding (and setting the correct message header in the
forwarded, known, message) is the responsibility of the algorithm forwarded, known, message) is the responsibility of the algorithm
specifying how the message is to be handled. This enables, e.g., a specifying how the message is to be handled. This enables, e.g., a
message type to be specified such that the message can be modified message type to be specified such that the message can be modified
while in transit (e.g. to reflect the route the message has taken). while in transit (e.g. to reflect the route the message has taken).
Further, it enables that the optimization through the MPRs can be Further, it enables that the optimization through the MPRs can be
bypassed: if for some reason pure flooding of a message type is bypassed: if for some reason classical flooding of a message type is
required (e.g. to transmit control information over unidirectional required (e.g. to transmit control information over unidirectional
links), the algorithm which specifies how such messages should be links), the algorithm which specifies how such messages should be
handled will simply rebroadcast the message, regardless of MPRs. handled will simply rebroadcast the message, regardless of MPRs.
Finally, notice that a message, which is to be broadcasted in the
neighborhood but not flooded into the entire network, (e.g. a HELLO-
message) is simply specified by setting the time to live to 1 (one)
and the hop count to 0 (zero), and that no duplicate tuples are
recorded for such messages.
By defining a set of message types, which MUST be recognized by all By defining a set of message types, which MUST be recognized by all
implementations of OLSR, it will be possible to extend the protocol implementations of OLSR, it will be possible to extend the protocol
through introduction of additional message types, while still be able through introduction of additional message types, while still be able
to maintain compatibility with older implementations. The REQUIRED to maintain compatibility with older implementations. The REQUIRED
message types for OLSR are: message types for OLSR are:
- HELLO-messages, performing the task of neighbor sensing. - HELLO-messages, performing the task of neighbor sensing.
- TC-messages, performing the task of MPR information declara- - TC-messages, performing the task of MPR information declara-
tion (OLSR topology declaration). tion (OLSR topology declaration).
- MID-messages, performing the task of multiple interface decla- - MID-messages, performing the task of multiple interface decla-
ration. ration.
- HNA-messages, performing the task of associated host and/or - HNA-messages, performing the task of associated host and/or
network declaration network declaration.
- FRR-messages, performing the task of initiating fast rerouting
in case of link failure.
Extensions may for example be messages enabling power conservation / Extensions may for example be messages enabling power conservation /
sleep mode, multicast routing, support for unidirectional links, sleep mode, multicast routing, support for unidirectional links,
auto-configuration/address assignment etc. auto-configuration/address assignment etc.
2.1.5. Message Emission and Jitter 2.1.5. Message Emission and Jitter
As a basic implementation requirement, synchronization of control As a basic implementation requirement, synchronization of control
messages SHOULD be avoided. As a consequence, periodic OLSR messages messages SHOULD be avoided. As a consequence, periodic OLSR messages
should be emitted such that they avoid synchronization. SHOULD be emitted such that they avoid synchronization.
Emission of control traffic from neighboring nodes may, for various Emission of control traffic from neighboring nodes may, for various
reasons (mainly timer interactions with packet processing), become reasons (mainly timer interactions with packet processing), become
synchronized such that several neighbor nodes attempt to transmit synchronized such that several neighbor nodes attempt to transmit
control traffic simultaneously. Depending on the nature of the under- control traffic simultaneously. Depending on the nature of the under-
lying link-layer, this may or may not lead to collisions and hence lying link-layer, this may or may not lead to collisions and hence
message loss - possibly loss of several subsequent messages of the message loss - possibly loss of several subsequent messages of the
same type. same type.
To counter such synchronizations, the following simple strategy for To avoid such synchronizations, the following simple strategy for
emitting control messages is proposed. A node may add an amount of emitting control messages is proposed. A node MAY add an amount of
jitter to the interval at which messages are generated. The jitter jitter to the interval at which messages are generated. The jitter
must be a random value for each message generated. Thus, for a node must be a random value for each message generated. Thus, for a node
utilizing jitter: utilizing jitter:
Actual message interval = MESSAGE_INTERVAL + jitter Actual message interval = MESSAGE_INTERVAL - jitter
Where jitter is a value, randomly selected from the interval Where jitter is a value, randomly selected from the interval
[-MAXJITTER,0] and MESSAGE_INTERVAL is the value of the message [0,MAXJITTER] and MESSAGE_INTERVAL is the value of the message inter-
interval specified for the message being emitted (e.g. HELLO_INTERVAL val specified for the message being emitted (e.g. HELLO_INTERVAL for
for HELLO messages, TC_INTERVAL for TC-messages etc.). HELLO messages, TC_INTERVAL for TC-messages etc.).
Jitter MAY also be introduced when forwarding messages. The follow-
ing simple strategy may be adopted: when a message is to be forwarded
by a node, it should be kept in the node during a short period of
time :
Keep message period = jitter
Where jitter is a random value in [0,MAXJITTER].
Notice that when the node sends a control message, the opportunity to
piggyback other messages (before their keeping period is expired) may
be taken to reduce the number of packet transmissions.
It should be noticed that the present draft imposes a minimal rate of It should be noticed that the present draft imposes a minimal rate of
control message emission. However a node MAY send control messages at control message emission. However a node MAY send control messages at
a higher rate (e.g. for better reacting to high mobility). It is an a higher rate (e.g. for better reacting to high mobility). Tuning the
implementation issue to optimize the rate of control packet emission. rate of control traffic to the actual conditions under which the pro-
If all nodes use the same constant base rate, introducing some jitter tocol is to operate is an implementation issue.
as described above may be desirable.
2.2. Neighbor Sensing 2.2. Neighbor Sensing
Each node should detect the neighbor interfaces with which it has a Each node should detect the neighbor interfaces with which it has a
direct and symmetric link. Uncertainties over radio propagation may direct and symmetric link. Uncertainties over radio propagation may
make some links unidirectional. Consequently, all links MUST be make some links unidirectional. Consequently, all links MUST be
checked in both directions in order to be considered valid. checked in both directions in order to be considered valid.
To perform neighbor detection, each node broadcasts HELLO messages, To perform neighbor detection, each node broadcasts HELLO messages,
containing information about heard neighbor interfaces and their link containing information about heard neighbor interfaces and their link
status. The link status may either be "symmetric", "heard" (asymmet- status. The link status may either be "symmetric", "heard" (asymmet-
ric), "MPR" or "lost". "Symmetric" indicates, that the link has been ric), "MPR" or "lost". "Symmetric" indicates, that the link has been
verified to be bi-directional, i.e. it is possible to transmit data verified to be bi-directional, i.e. it is possible to transmit data
in both directions. "Heard" indicates that the node can hear HELLO in both directions. "Heard" indicates that the node can hear HELLO
messages from a neighbor interface, but it is not confirmed that this messages from a neighbor interface, but it is not confirmed that this
neighbor interface is also able to receive messages from the node. neighbor interface is also able to receive messages from the node.
"MPR" indicates, that a node is selected by the sender as a MPR. A MPR indicates that the sender has selected the node as MPR. A status
status of MPR further implies that the link is symmetric. "Lost" of MPR further implies that the link is symmetric. "Lost" indicates
indicates that the link with this neighbor interface is now lost. that the link with this neighbor interface is now lost.
HELLO messages are broadcasted to all one-hop neighbors and are emit- HELLO messages are broadcasted to all one-hop neighbors and are emit-
ted on each MANET interface of the node. They are *not relayed* to ted on each MANET interface of the node. They are *not relayed* to
further nodes. further nodes.
More precisely, a HELLO message contains for each interface I: More precisely, a HELLO message contains for each interface I:
- a list of neighbor interface addresses, having a symmetric - a list of neighbor interface addresses, having a symmetric
link to interface I; link to interface I;
- a list of neighbor interface addresses, which are "heard" by - a list of neighbor interface addresses, which are "heard" by
interface I (for historical reasons, the term "heard" is used interface I (for historical reasons, the term "asymmetric" is
for "asymmetric"); used for "heard");
- a list of neighbor interface addresses of neighbors selected - a list of neighbor interface addresses of neighbors selected
as MPRs, AND having a symmetric link to interface I; as MPRs, AND having a symmetric link to interface I;
- a list of neighbor interface addresses, which have been lost. - a list of neighbor interface addresses, which have been lost.
These lists are computed as described in the HELLO message generation These lists are computed as described in the HELLO message generation
section. section.
2.2.1. HELLO Message Format 2.2.1. HELLO Message Format
skipping to change at page 18, line 47 skipping to change at page 19, line 25
| Neighbor Interface Address | | Neighbor Interface Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
: : : :
: : : :
(etc) (etc)
This is sent as the data-portion of the general packet format This is sent as the data-portion of the general packet format
described in the Packet Format and Forwarding section, with the "Mes- described in the Packet Format and Forwarding section, with the "Mes-
sage Type" set to HELLO_MESSAGE and the TTL field set to 1 (one). sage Type" set to HELLO_MESSAGE and the TTL field set to 1 (one).
Description of the fields
Reserved Reserved
This field is reserved for future usage, and MUST be set to This field is reserved for future usage, and MUST be set to
"000000000000000000000000" for compliance with this draft. "000000000000000000000000" for compliance with this draft.
# Interfaces # Interfaces
This field indicates the number of additional MANET interfaces This field indicates the number of additional MANET interfaces
(excluding the main interface) possessed by the node. If the (excluding the main interface) possessed by the node. If the
node has only one interface, this number is 0. node has only one interface, this number is 0.
skipping to change at page 19, line 25 skipping to change at page 20, line 4
Interface Address Interface Address
This field indicates the addresses of additional MANET inter- This field indicates the addresses of additional MANET inter-
faces. The first one will be referenced as interface address faces. The first one will be referenced as interface address
number 1, the second as interface address number 2, and so on. number 1, the second as interface address number 2, and so on.
The main address of the node (whose address is given in the The main address of the node (whose address is given in the
originator field of the message header) will be referenced as originator field of the message header) will be referenced as
interface address number 0. interface address number 0.
Link Message Size Link Message Size
The size of the link message, counted in bytes and measured The size of the link message, counted in bytes and measured
from the beginning of the "Link Type" field and until the next from the beginning of the "Link Type" field and until the next
"Link Type" field (or - if there are no more link types - the "Link Type" field (or - if there are no more link types - the
end of the message). end of the message).
Interface #
This field indicates the number of the interface to which the
following list of neighbor interfaces corresponds. Number 0
indicates the main interface (whose address is the main
address).
Link Type Link Type
This field specifies the type of the link between the inter- This field specifies the type of the link between the inter-
face of the sender, as identified by the interface number, and face of the sender, as identified by the interface number, and
the following list of neighbor interfaces. As a minimum, the the following list of neighbor interfaces. As a minimum, the
following four link types are REQUIRED by OLSR: following four link types are REQUIRED by OLSR:
- ASYM_LINK - indicating that the links are asymmetric - ASYM_LINK - indicating that the links are asymmetric
(i.e. the neighbor interface is "heard"). (i.e. the neighbor interface is "heard").
- SYM_LINK - indicating that the links are symmetric. - SYM_LINK - indicating that the links are symmetric.
- MPR_LINK - indicating, that the links are symmetric AND - MPR_LINK - indicating, that the links are symmetric AND
that the neighbors have been selected as MPR by the that the neighbors have been selected as MPR by the
sender. sender.
- LOST_LINK - indicating that the links have been lost. - LOST_LINK - indicating that the links have been lost.
Interface #
This field indicates the number of the interface to which the
following list of neighbor interfaces corresponds. Number 0
indicates the main interface (whose address is the main
address).
Neighbor Interface Address Neighbor Interface Address
An interface address of a neighbor. An address of a neighbor interface.
Neighbor sensing is performed using HELLO message exchange, updating Neighbor sensing is performed using HELLO message exchange, updating
the neighbor sensing information base in each node. the neighbor sensing information base in each node.
2.2.2. Neighbor Sensing Information Base 2.2.2. Neighbor Sensing Information Base
The neighbor sensing information base stores information about neigh- The neighbor sensing information base stores information about neigh-
bor interfaces, 2-hop neighbors, MPRs and MPR selectors. bor interfaces, 2-hop neighbors, MPRs and MPR selectors.
2.2.2.1. Neighbor Set 2.2.2.1. Neighbor Set
For each of its interface I and for each neighbor interface NI, heard For each of its interface I and for each neighbor interface NI, heard
by I, a node records a "Neighbor Tuple" (N_if_id, N_if_addr, by I, a node records a "Neighbor Tuple" (N_if_id, N_if_addr,
N_main_addr, N_SYM_time, N_ASYM_time, N_time) where N_if_id is the N_main_addr, N_SYM_time, N_ASYM_time, N_time) where N_if_id is the
identification number of I, N_if_addr is the address of the neighbor identifier number of the local interface I, N_if_addr is the address
interface NI, N_main_addr is the main address of the neighbor pos- of the neighbor interface NI, N_main_addr is the main address of the
sessing NI, N_SYM_time is the time until which the link is considered neighbor possessing NI, N_SYM_time is the time until which the link
symmetric, N_ASYM_time is the time until which the neighbor interface is considered symmetric, N_ASYM_time is the time until which the
is considered heard, and N_time specifies the time at which this neighbor interface is considered heard, and N_time specifies the time
record expires and *MUST* be removed. When N_SYM_time and at which this record expires and *MUST* be removed. When N_SYM_time
N_ASYM_time are expired, the link is considered lost. and N_ASYM_time are expired, the link is considered lost.
This information is used when declaring the neighbor interfaces in This information is used when declaring the neighbor interfaces in
the HELLO messages. N_SYM_time and N_ASYM_time are used to decide the the HELLO messages.
Link Type declared for the neighbor interface. If N_SYM_time is not
expired, the link is declared symmetric. If N_SYM_time is expired but N_SYM_time and N_ASYM_time are used to decide the Link Type declared
N_ASYM_time is not, the link is declared heard. If both N_SYM_time for the neighbor interface. If N_SYM_time is not expired, the link is
and N_ASYM_time are expired, the link is declared lost. declared symmetric. If N_SYM_time is expired but N_ASYM_time is not,
the link is declared heard. If both N_SYM_time and N_ASYM_time are
expired, the link is declared lost.
In a node, the set of Neighbor Tuples are denoted the "Neighbor Set". In a node, the set of Neighbor Tuples are denoted the "Neighbor Set".
2.2.2.2. 2-hop Neighbor Set 2.2.2.2. 2-hop Neighbor Set
A node records a set of "2-hop tuples" (N_main_addr, N_if_addr, A node records a set of "2-hop tuples" (N_main_addr, N_if_addr,
N_2hop_addr, N_time), describing symmetric or MPR links between its N_2hop_addr, N_time), describing symmetric or MPR links between its
neighbors and the 2-hop symmetric neighborhood. N_main_addr and neighbors and the symmetric 2-hop neighborhood. N_main_addr and
N_if_addr are the main address and an interface address of a N_if_addr are the main address and an interface address of a neigh-
neighbor, N_2hop_addr is an interface address of a 2-hop neighbor bor, N_2hop_addr is an interface address of a 2-hop neighbor with a
with a symmetric or MPR link to interface N_if_addr and N_time speci- symmetric or MPR link to interface N_if_addr and N_time specifies the
fies the time at which the tuple expires and *MUST* be removed. time at which the tuple expires and *MUST* be removed.
This information is gathered from the HELLO messages received by a This information is gathered from the HELLO messages received by a
node from its neighbor nodes. node from its neighbor nodes.
In a node, the set of 2-hop tuples are denoted the "2-hop Neighbor In a node, the set of 2-hop tuples are denoted the "2-hop Neighbor
Set". Set".
2.2.2.3. MPR Set 2.2.2.3. MPR Set
A node maintains a set of neighbors which are elected as MPR. Their A node maintains a set of neighbors which are selected as MPR. Their
main addresses are listed in the so-called MPR Set. The Multipoint main addresses are listed in the so-called MPR Set. The Multipoint
relay selection section describes how MPRs are elected. relay selection section describes how MPRs are selected.
2.2.2.4. MPR Selector Set 2.2.2.4. MPR Selector Set
A node maintains information (obtained from the HELLO messages) about A node maintains information (obtained from the HELLO messages) about
the neighbors which have selected this node as a MPR. the neighbors which have selected this node as a MPR.
Thus, a node records a MPR-selector tuple (MS_if_addr, MS_main_addr, Thus, a node records an MPR-selector tuple (MS_if_addr, MS_main_addr,
MS_time), for interfaces of a neighbor which has selected the node as MS_time), for interfaces of a neighbor which has selected the node as
MPR. MS_if_addr is the address of an interface of a node which has MPR. MS_if_addr is the address of an interface of a node which has
selected the node as MPR for that interface, MS_main_addr is the main selected the node as MPR for that interface, MS_main_addr is the main
address of the MPR selector and MS_time specifies the time at which a address of the MPR selector and MS_time specifies the time at which a
tuple expires and *MUST* be removed. tuple expires and *MUST* be removed.
In a node, the set of MPR-selector tuples are denoted the "MPR Selec- In a node, the set of MPR-selector tuples are denoted the "MPR Selec-
tor Set". A sequence number, MSSN, is associated with this set. When- tor Set". A sequence number, MSSN, is associated with this set. When-
ever a tuple is added to or removed from this set, the MSSN is incre- ever a tuple is added to or removed from this set, the MSSN is incre-
mented by 1. mented by 1.
2.2.3. HELLO Message Generation 2.2.3. HELLO Message Generation
The lists of addresses declared in a HELLO message are computed from The lists of addresses declared in a HELLO message are computed from
the Neighbor Set as follows: the Neighbor Set as follows:
- for each tuple where N_SYM_time and N_ASYM_time are expired, - for each tuple where:
the N_if_addr is declared with LOST_LINK Link Type for inter-
face N_if_id;
- for each tuple where N_SYM_time is not expired, the N_if_addr N_SYM_time < current time (expired) AND
is declared with MPR_LINK Link Type if N_main_addr is in the N_ASYM_time <current time (expired)
MPR set and SYM_LINK Link Type otherwise;
- for each tuple where N_SYM_time is expired but N_ASYM_time is N_if_addr is declared with LOST_LINK Link Type for interface
not expired, the N_if_addr is declared with ASYM_LINK Link N_if_id;
Type.
- for each tuple where:
N_SYM_time >= current time (not expired)
N_if_addr is declared with MPR_LINK Link Type if N_main_addr
is in the MPR set and SYM_LINK Link Type otherwise;
- for each tuple where:
N_SYM_time < current time (expired) AND
N_ASYM_time >= current time (not expired),
N_if_addr is declared with ASYM_LINK Link Type.
The list of neighbor interfaces in a HELLO message can be partial The list of neighbor interfaces in a HELLO message can be partial
(e.g. due to message size limitations, imposed by the network), the (e.g. due to message size limitations, imposed by the network), the
rule being the following: for each interface a neighbor interface is rule being the following: for each interface a neighbor interface is
heard on, its address is cited with corresponding interface id at heard on, its address is cited with corresponding interface id at
least once within a predetermined refreshing period (HELLO_INTERVAL). least once within a predetermined refreshing period, REFRESH_INTER-
VAL. To keep track of fast connectivity change a HELLO message must
be sent at least every HELLO_INTERVAL period, smaller than or equal
to REFRESH_INTERVAL.
Notice that for limiting the impact from loss of control messages, it Notice that for limiting the impact from loss of control messages, it
is desirable that a message fits in a single MAC packet. is desirable that a message (plus the generic package header) can fit
into a single MAC frame.
Each HELLO message generated is broadcasted on each MANET interface Each HELLO message generated is broadcasted on each MANET interface
of the node. of the node.
2.2.4. HELLO Message Processing 2.2.4. HELLO Message Processing
In this section, the terms "Originator Address", "Sender Interface",
"Receiver Interface", and "Link Interface" are used. They are defined
bellow and illustrated in the following figure:
______________ _____________
| J1 |= -- = |I1 |
| Main -> J2 |= | = |I2 <- Main |
| J3 |= -- = |I3 |
-------------- | -------------
|
______________ |
| K1 |=
| Main -> K2 |=
--------------
J1, J2 and J3 are the addresses of local interfaces on node J. Like-
wise, I1, I2 and I3 are addresses of local interfaces on node I and
K1 and K2 are addresses of local interfaces on node K. There are sym-
metric links between J1 and I3 and between J3 and K1.
The three nodes have selected, respectively, J2, I2 and K2 as their
"main addresses". I.e. the Originator Address of all OLSR-messages
sent by node J will have the Originator Address J2 (and likewise for
node I and K).
A HELLO message, sent by node J, is transmitted on all node J's
interfaces. Recieved by node I, the following naming conventions
apply:
- The term "Originator Address" is the main address of the node,
originating a message. In the example above, the Originator
Address of the HELLO is J2.
- The term "Sender Interface" for the HELLO message is the
interface over which the HELLO was transmitted. In the example
above, the Sender Interface Address is J1.
- The term "Receiver Interface" will be used for the interface
which received the HELLO message. In the example above, node
I's "Receiver Interface" for the HELLO generated by node J is
I3.
- The term "Link Interface" will be used to in a HELLO message
to designate on which interface (of the sender of a HELLO mes-
sage) a neighbor is detected. In the example above, K1 is
listed in the HELLO message of J with Link Interface J3. The
"Link Interface" is calculated based on the Interface # in the
HELLO message). Notice that an interface address may be listed
several times with different Link Interfaces.
Upon receiving a HELLO message, the node SHOULD update the neighbor Upon receiving a HELLO message, the node SHOULD update the neighbor
information corresponding to the sender node address (a node may - information corresponding to the sender node address (a node may -
e.g. for security reasons - wish to restrict updating the neighbor- e.g. for security reasons - wish to restrict updating the neighbor-
table, i.e. ignoring HELLO messages from some nodes). table, i.e. ignoring HELLO messages from some nodes).
In this section, the term "Originator Address" will be used for the
main address of the node which sent the HELLO-message. The term
"Sender Interface Address" will be used for the sender address (given
in the IP header of the packet containing the message) of the inter-
face which sent the HELLO message. The term "Receiver Interface" will
be used for the interface which received the HELLO message. The term
"link interface addresses" will be used for the own interface
addresses of the sender listed in the HELLO message.
The Neighbor Set should be updated as follows: The Neighbor Set should be updated as follows:
1 Upon receiving a HELLO message, if there exists no neighbor 1 Upon receiving a HELLO message, if there exists no neighbor
tuple with tuple with
N_if_addr == Sender Interface Address N_if_addr == Sender Interface Address
and and
N_if_id == identifier of the Receiver Interface, N_if_id == identifier of the Receiver Interface,
skipping to change at page 23, line 4 skipping to change at page 24, line 39
1 Upon receiving a HELLO message, if there exists no neighbor 1 Upon receiving a HELLO message, if there exists no neighbor
tuple with tuple with
N_if_addr == Sender Interface Address N_if_addr == Sender Interface Address
and and
N_if_id == identifier of the Receiver Interface, N_if_id == identifier of the Receiver Interface,
a new tuple is created with a new tuple is created with
N_if_addr = Sender Interface Address N_if_addr = Sender Interface Address
N_if_id = identifier of the Receiver Interface N_if_id = identifier of the Receiver Interface
N_SYM_time = current time - 1 (expired time) N_SYM_time = current time - 1 (expired)
N_time = current time + NEIGHB_HOLD_TIME N_time = current time + NEIGHB_HOLD_TIME
2 The tuple is then modified as follows: 2 The tuple is then modified as follows:
2.1 N_main_addr = Originator Address. 2.1 N_main_addr = Originator Address.
2.3 N_time = max (N_time, current time + 2.3 N_time = max (N_time, current time +
NEIGHB_HOLD_TIME); NEIGHB_HOLD_TIME);
2.4 N_ASYM_time = current time + NEIGHB_HOLD_TIME; 2.4 N_ASYM_time = current time + NEIGHB_HOLD_TIME;
2.5 if the node finds the receiver interface address among 2.5 if the node finds the Receiver Interface Address among
the addresses listed in the HELLO with: the addresses listed in the HELLO with:
Link Interface Address == Sender Interface Address, Link Interface Address == Sender Interface Address,
then, the tuple is modified as follows: then, the tuple is modified as follows:
if Link Type == LOST_LINK then if Link Type == LOST_LINK then
N_SYM_time = current time - 1 (expired time) N_SYM_time = current time - 1 (expired)
else: else:
N_SYM_time = current time + NEIGHB_HOLD_TIME, N_SYM_time = current time + NEIGHB_HOLD_TIME,
N_time = current time + 2 * N_time = current time + 2 *
NEIGHB_HOLD_TIME. NEIGHB_HOLD_TIME.
The rule for setting N_time is the following: a link loosing its sym- The rule for setting N_time is the following: a link loosing its sym-
metricity should still be advertised at least NEIGHB_HOLD_TIME. This metry should still be advertised at least NEIGHB_HOLD_TIME. This
allows neighbors to detect the link breakage. allows neighbors to detect the link breakage.
The 2-hop Neighbor Set is updated as follows: The 2-hop Neighbor Set is updated as follows:
1 for each 2-hop interface address listed in the HELLO message 1 for each 2-hop interface address listed in the HELLO message
with Link Type SYM_LINK or MPR_LINK, a 2-hop tuple is created with Link Type SYM_LINK or MPR_LINK, a 2-hop tuple is created
with: with:
N_main_addr = Originator Address; N_main_addr = Originator Address;
N_if_addr = Link Interface Address corresponding to the N_if_addr = Link Interface Address corresponding to the
2-hop interface address; 2-hop interface address;
N_2hop_addr = the interface address of the 2-hop neigh- N_2hop_addr = the interface address of the 2-hop neigh-
bor; bor;
N_time = current time + NEIGHB_HOLD_TIME. N_time = current time + 2HOP_HOLD_TIME.
This tuple may replaces an older similar tuple with same This tuple may replace an older similar tuple with same
N_if_addr and N_2hop_addr values. N_if_addr and N_2hop_addr values.
2 For each 2-hop interface address listed in the HELLO message 2 For each 2-hop interface address listed in the HELLO message
with Link Type LOST_LINK or ASYM_LINK, all the 2-hop tuples with Link Type LOST_LINK or ASYM_LINK, all the 2-hop tuples
where: where:
N_if_addr == Link Interface Address corresponding to the N_if_addr == Link Interface Address corresponding to the
2-hop interface address, 2-hop interface address,
and and
skipping to change at page 25, line 20 skipping to change at page 27, line 11
MS_main_addr = Originator Address, MS_main_addr = Originator Address,
MS_time = current time + NEIGHB_HOLD_TIME. MS_time = current time + NEIGHB_HOLD_TIME.
Deletion of MPR selector tuples occurs in case of expiration of the Deletion of MPR selector tuples occurs in case of expiration of the
timer or in case of link breakage as described in the neighborhood timer or in case of link breakage as described in the neighborhood
and 2-hop neighborhood changes section. and 2-hop neighborhood changes section.
2.2.5. Multipoint Relay Selection 2.2.5. Multipoint Relay Selection
MPRs are used to flood control messages from that node into the net-
work while reducing the number of retransmissions that will occur in
a region. Thus, the concept of MPR is an optimization of a classical
flooding mechanism.
Each node in the network selects, independently, its own set of MPRs Each node in the network selects, independently, its own set of MPRs
among its symmetric neighborhood. The symmetric links with MPRs are among its symmetric neighborhood. The symmetric links with MPRs are
advertised with Link Type MPR_LINK instead of SYM_LINK in HELLO mes- advertised with Link Type MPR_LINK instead of SYM_LINK in HELLO mes-
sages. sages.
MPRs are used to flood control messages from that node into the net- The MPR set MUST be calculated by a node in such a way that it,
work while reducing the number of retransmissions that will occur in
a region. Thus, the concept of MPR is an optimization of a pure
flooding mechanism.
The MPR set must be calculated by a node in such a way that it,
through the neighbors in the MPR-set, can reach all symmetric 2-hop through the neighbors in the MPR-set, can reach all symmetric 2-hop
neighbors which are not at the same time symmetric neighbors of the neighbors which are not at the same time symmetric neighbors of the
node. This means that the union of the symmetric neighborhoods of node. This means that the union of the symmetric neighborhoods of the
the MPR nodes contains the symmetric 2-hop neighborhood. While it is MPR nodes contains the symmetric 2-hop neighborhood. MPR set recalcu-
not essential that the MPR set is minimal, it is essential that all lation should occur when changes are detected in the neighborhood or
2-hop neighbors can be reached through the selected MPR nodes. The in the 2-hop neighborhood.
smaller a MPR-set, however, the more optimization is achieved.
While it is not essential that the MPR set is minimal, it is essen-
tial that all 2-hop neighbors can be reached through the selected MPR
nodes. A node SHOULD select an MPR set such that any 2-hop neighbor
is covered by at least MPR_COVERAGE MPR nodes. With MPR_COVERAGE=1
the overhead of the protocol is kept at a minimum. In presence of
mobility and link failure, an MPR_COVERAGE=2 could provide a more
redundant connectivity, for example to support a link failure without
rerouting.
Notice that MPR_COVERAGE can be tuned locally without affecting the
consistency of the protocol. For example, a node can set MPR_COVER-
AGE=2 if it observes many changes in its neighbor information base
caused by mobility, while otherwise keeping MPR_COVERAGE=1.
By default, the MPR set can coincide with the entire symmetric neigh- By default, the MPR set can coincide with the entire symmetric neigh-
bor set. This will be the case at network initialization. bor set. This will be the case at network initialization (and will
correspond to classic link-state routing).
The following specifies a proposed heuristic for selection of MPRs The following specifies a proposed heuristic for selection of MPRs
[2] adapted for multiple interfaces support. It constructs a MPR-set [2] adapted for multiple interfaces support. It constructs an MPR-set
that allows to reach any symmetric 2-hop interface (i.e. any inter- that enables it to reach any symmetrical 2-hop interface (i.e. any
face of a 2-hop neighbor having a symmetric link with a neighbor). interface of a 2-hop neighbor having a symmetrical link with a neigh-
The following terminology will be used in describing this algorithm bor). The following terminology will be used in describing this
(neighbors are identified by their main address and 2-hop interfaces algorithm (neighbors are identified by their main address and 2-hop
by their address): interfaces by their address):
N: The set of neighbors with which there exists a symmetric link. N:
The set of neighbors with which there exists a symmetric link.
N2: The set made of the symmetric 2-hop interfaces excluding all N2:
The set made of the symmetric 2-hop interfaces excluding all
the interfaces of members of N and the interfaces of the node the interfaces of members of N and the interfaces of the node
performing the computation. performing the computation.
D(y): D(y):
Degree of one hop neighbor node y (where y is a member of N), Degree of one hop neighbor node y (where y is a member of N),
defined as the number of symmetric neighbor interfaces of node defined as the number of symmetric neighbor interfaces of node
y, EXCLUDING all the interfaces of members of N and the inter- y, EXCLUDING all the interfaces of members of N and the inter-
faces of the node performing the computation. faces of the node performing the computation.
Poorly covered interface:
A poorly covered interface is an interface in N2 which is cov-
ered by less than MPR_COVERAGE nodes in N.
The proposed heuristic is as follows: The proposed heuristic is as follows:
1 Start with an empty MPR set 1 Start with an empty MPR set
2 Calculate D(y), where y is a member of N, for all nodes in N. 2 Calculate D(y), where y is a member of N, for all nodes in N.
3 Select as MPRs those nodes in N which provide the "only path" 3 Select as MPRs those nodes in N which cover the poorly covered
to some interfaces in N2. interfaces in N2. The interfaces are then removed from N2 for
the rest of the computation.
4 While there exist interfaces in N2 which are not covered by 4 While there exist interfaces in N2 which are not covered by at
the MPR set: least MPR_COVERAGE nodes in the MPR set:
4.1 For each node in N, calculate the number of interfaces in 4.1 For each node in N, calculate the number of interfaces in
N2 which are not yet covered by the MPR set and are N2 which are not yet covered by at least MPR_COVERAGE
reachable through this one hop neighbor; nodes in the MPR set, and which are reachable through
this one hop neighbor;
4.2 Select as a MPR the node from N which provides reachabil- 4.2 Select as a MPR the node from N which provides reachabil-
ity to the maximum number of uncovered interfaces in N2. ity to the maximum number of those interfaces in N2. In
In case of a tie, select that node as MPR whose D(y) is case of multiple nodes providing the same amount of
greater. reachability, select that node as MPR whose D(y) is
greater. Remove from N2 the interfaces that are now cov-
ered by MPR_COVERAGE node in the MPR set.
5 As an optimization, process each node y in the MPR set. If the 5 As an optimization, process each node y in the MPR set. If
MPR set excluding y still covers all interfaces in N2, node y all interfaces in N2 are still covered by at least
is removed from the MPR set. MPR_COVERAGE nodes in the MPR set excluding y, node y is
removed from the MPR set.
When the MPR set has been computed, all the corresponding main When the MPR set has been computed, all the corresponding main
addresses are stored in the MPR Set. addresses are stored in the MPR Set.
Some processing such as MPR set re-calculation should occur when
changes are detected in the neighborhood or the 2-hop neighborhood.
2.2.5.1. Neighborhood and 2-hop Neighborhood Changes 2.2.5.1. Neighborhood and 2-hop Neighborhood Changes
A change in the neighborhood is detected when: A change in the neighborhood is detected when:
- The N_SYM_time field of a neighbor tuple expires. This is con- - The N_SYM_time field of a neighbor tuple expires. This is con-
sidered as a neighbor loss if it was the last link with a sidered as a neighbor loss if it was the last link with a
neighbor node (on the contrary, a link with an interface may neighbor node (on the contrary, a link with an interface may
break while a link with another interface of the neighbor node break while a link with another interface of the neighbor node
is still alive). remains intact).
- The N_ASYM_time field of a neighbor tuple expires and - The N_ASYM_time field of a neighbor tuple expires and
N_SYM_time is expired. The link is then considered lost. N_SYM_time is expired. The link is then considered lost.
- A new neighbor tuple is inserted in the Neighbor Set with a - A new neighbor tuple is inserted in the Neighbor Set with a
valid N_SYM_time or a tuple with expired N_SYM_time is modi- valid N_SYM_time or a tuple with expired N_SYM_time is modi-
fied so that N_SYM_time becomes valid. This is considered as a fied so that N_SYM_time becomes valid. This is considered as a
neighbor appearance if there was previously no link with the neighbor appearance if there was previously no link with the
corresponding neighbor node. corresponding neighbor node.
skipping to change at page 27, line 48 skipping to change at page 30, line 9
loss is detected, or when a change in the 2-hop neighborhood loss is detected, or when a change in the 2-hop neighborhood
is detected. is detected.
- An additional HELLO message may be sent when the MPR set - An additional HELLO message may be sent when the MPR set
changes. changes.
2.2.6. Advanced Neighbor Sensing Functioning 2.2.6. Advanced Neighbor Sensing Functioning
Established links should be as reliable as possible to avoid data Established links should be as reliable as possible to avoid data
packet loss. To enhance the reliability of the neighbor sensing mech- packet loss. To enhance the reliability of the neighbor sensing mech-
anism, the following implementation recomendations should be consid- anism, the following implementation recommendations should be consid-
ered. ered.
Each neighbor tuple in the neighbor set SHOULD, in addition to what Each neighbor tuple in the neighbor set SHOULD, in addition to what
is described in section 2.2.2.1, include a N_pending field, a N_qual- is described in previous sections, include a N_pending field, a
ity field, and a N_LOST_time. N_pending is a boolean value specify- N_quality field, and a N_LOST_time field. N_pending is a boolean
ing if the link is considered pending (i.e. the link is not consid- value specifying if the link is considered pending (i.e. the link is
ered established). N_quality is a dimensionless number between 0 and not considered established). N_quality is a dimensionless number
1 describing the quality of the link. N_LOST_time is a timer for between 0 and 1 describing the quality of the link. N_LOST_time is a
declaring a link as lost when an established link becomes pending. timer for declaring a link as lost when an established link becomes
pending.
HELLO message generation should consider those new fields as follows. HELLO message generation should consider those new fields as follows:
1 If N_LOST_time is not expired, the link is advertised with a 1 if N_LOST_time is not expired, the link is advertised with a
link type of LOST_LINK; link type of LOST_LINK;
2 otherwise, if N_LOST_time is expired and N_pending is set to 2 otherwise, if N_LOST_time is expired and N_pending is set to
"true", the link SHOULD NOT be advertised at all; "true", the link SHOULD NOT be advertised at all;
3 otherwise, if N_LOST_time is expired and N_pending is set to 3 otherwise, if N_LOST_time is expired and N_pending is set to
"false", the link is advertised as described in the HELLO mes- "false", the link is advertised as described in the HELLO mes-
sage generation section. sage generation section.
A node considers it has a symmetric link for each neighbor tuple such A node considers that it has a symmetric link for each neighbor tuple
that N_LOST_time is expired, N_pending is "false" and N_SYM_time is where
not expired. This should be taken as definition for computing the
symmetric neighborhood when computing the MPR set.
Apart from the above points, what has been previously describe do not 1 N_LOST_time is expired, AND
interfere with this newly introduced fields. The N_quality, N_pending
and N_LOST_time fields are updated according to the present section 2 N_pending is "false", AND
and nowhere else. The other fields are not modified by the advanced
neighbor sensing functioning. 3 N_SYM_time is not expired.
This should be taken as definition for computing the symmetric neigh-
borhood when computing the MPR set.
Apart from the above points, what has been described previously does
not interfere with these advanced neighbor sensing fields in the
neighbor tuples. The N_quality, N_pending and N_LOST_time fields are
exclusively updated according to the present section. Advanced neigh-
bor sensing does not modify the function of any other fields in the
neighbor tuples.
This advanced functioning is described as separately as possible to This advanced functioning is described as separately as possible to
increase readability. increase readability.
2.2.6.1. Link Hysteresis 2.2.6.1. Link Hysteresis
The link between a node and some of its neighbor interfaces might be The link between a node and some of its neighbor interfaces might be
"bad", i.e. from time to time let HELLOs pass through only to fade "bad", i.e. from time to time let HELLOs pass through only to fade
out immediately after. In this case, the neighbor information base out immediately after. In this case, the neighbor information base
would contain a bad link for at least NEIGHB_HOLD_TIME. In absence of would contain a bad link for at least NEIGHB_HOLD_TIME. In absence of
link layer notification, such a bad link would spoil routing. To cope link layer notification, such a bad link might affect routing badly.
with such unstable links, the following hysteresis strategy SHOULD be To cope with such unstable links, the following hysteresis strategy
adopted. SHOULD be adopted.
For each neighbor interface NI heard by interface I, the N_quality For each neighbor interface NI heard by interface I, the N_quality
field of the corresponding Neighbor Tuple determines the establish- field of the corresponding Neighbor Tuple determines the establish-
ment of the link. Its value is compared to two thresholds ment of the link. The value of N_qualityis compared to two thresholds
HYST_THRESHOLD_HIGH, HYST_THRESHOLD_LOW which are fixed between 0 and HYST_THRESHOLD_HIGH, HYST_THRESHOLD_LOW, fixed between 0 and 1 and
1 and such that HYST_THRESHOLD_HIGH >= HYST_THRESHOLD_LOW. When such that HYST_THRESHOLD_HIGH >= HYST_THRESHOLD_LOW.
N_quality becomes higher than HYST_THRESHOLD_HIGH, the N_pending
field is set to false. When N_quality goes below HYST_THRESHOLD_LOW, The N_pending field is set according to the following:
the N_pending field is set to true and N_LOST_time is set to min
(N_time, current time + NEIGHB_HOLD_TIME) (the link is then consid- 1 if N_quality > HYST_THRESHOLD_HIGH:
ered as lost according to the Neighborhood and 2-hop neighborhood
changes section and this may produce a neighbor loss). The condition N_pending = false
for considering a link established is thus stricter than the condi-
tion for loosing it. N_LOST_time = current time - 1 (expired)
2 otherwise, if N_quality < HYST_THRESHOLD_LOW:
N_pending = true
N_LOST_time = min (N_time, current time +
NEIGHB_HOLD_TIME)
(the link is then considered as lost according to the
Neighborhood and 2-hop neighborhood changes section and
this may produce a neighbor loss).
3 otherwise, if HYST_THRESHOLD_LOW <= N_quality <= HYST_THRESH-
OLD_HIGH:
N_pending and N_LOST_time remain unchanged.
The condition for considering a link established is thus stricter
than the condition for loosing it.
As a basic implementation requirement, an estimation of the link As a basic implementation requirement, an estimation of the link
quality must be maintained and stored in the N_quality field. If some quality must be maintained and stored in the N_quality field. If some
measure of the signal/noise level on a received message is available measure of the signal/noise level on a received message is available
(e.g. as a link layer notification), then it can be used as estima- (e.g. as a link layer notification), then it can be used as estima-
tion after normalization. tion after normalization.
If no signal/noise information is available from the link layer, an If no signal/noise information is available from the link layer, an
algorithm such the following can be utilized. The algorithm is algorithm such as the following can be utilized. The algorithm is
parametrized by a scaling parameter HYST_SCALING which is a number parameterized by a scaling parameter HYST_SCALING which is a number
fixed between 0 and 1. For each neighbor interface NI heard by inter- fixed between 0 and 1. For each neighbor interface NI heard by inter-
face I, the first time NI is heard by I, N_quality is set to face I, the first time NI is heard by I, N_quality is set to
HYST_SCALING (and N_pending is set to true). HYST_SCALING (N_pending is set to true and N_LOST_time to current
time - 1).
A tuple is updated according to two rules. Every time an OLSR mes- A tuple is updated according to two rules. Every time an OLSR mes-
sage emitted by NI is received by I, the stability rule is applied: sage emitted by NI is received by I, the stability rule is applied:
N_quality = (1-HYST_SCALING)*N_quality + HYST_SCALING. N_quality = (1-HYST_SCALING)*N_quality + HYST_SCALING.
When an OLSR message emitted by NI is lost by I, the instability When an OLSR message emitted by NI is lost by I, the instability
rule is applied: rule is applied:
N_quality = (1-HYST_SCALING)*N_quality. N_quality = (1-HYST_SCALING)*N_quality.
skipping to change at page 30, line 13 skipping to change at page 33, line 7
available, a node MAY use this as described in this section. available, a node MAY use this as described in this section.
If link layer information describing connectivity to neighboring If link layer information describing connectivity to neighboring
nodes is available (i.e. loss of connectivity such as through absence nodes is available (i.e. loss of connectivity such as through absence
of a link layer acknowledgment), this information is used in addition of a link layer acknowledgment), this information is used in addition
to the information from the HELLO-messages to maintain the neighbor to the information from the HELLO-messages to maintain the neighbor
information base and the MPR selector set. information base and the MPR selector set.
Thus, upon receiving a link-layer notification that the link between Thus, upon receiving a link-layer notification that the link between
a node and a neighbor interface is broken, the following actions are a node and a neighbor interface is broken, the following actions are
taken: taken with respect to neighbor sensing:
1 if the link is broken to either a symmetric or asymmetric 1 if the link to a neighboring symmetric or asymmetric interface
neighbor interface, the corresponding neighbor tuple is modi- is broken, the corresponding neighbor tuple is modified:
fied: N_LOST_time and N_time are set to current time + N_LOST_time and N_time are set to current time +
NEIGHB_HOLD_TIME. NEIGHB_HOLD_TIME.
2 this is considred as a link loss and the appropriate process- 2 this is considered as a link loss and the appropriate process-
ing described in the neighborhood and 2-hop neighborhood ing described in the neighborhood and 2-hop neighborhood
changes section should be performed. changes section should be performed.
2.3. Topology Discovery 2.3. Topology Discovery
The Neighbor Sensing part of the protocol basically offers to each The Neighbor Sensing part of the protocol basically offers to each
node a list of neighbors with which it can communicate directly and node a list of neighbors with which it can communicate directly and
an optimized flooding mechanism through MPRs. Based on this mecha- an optimized flooding mechanism through MPRs. Based on this mecha-
nism, topology information is disseminated through the network. The nism, topology information is disseminated through the network. The
present section describes what part of the information given by the present section describes what part of the information given by the
Neighbor Sensing is disseminated and how it is used to construct Neighbor Sensing is disseminated and how it is used to construct
routes. routes.
Routes are constructed through MPR-links and links with neighbors. A Routes are constructed through MPR-links and links with neighbors. A
node thus basically disseminates its MPR-selector set. If a node has node thus basically disseminates its MPR-selector set. If a node has
multiple interfaces, it must also disseminate the list of its inter- multiple interfaces, it must also disseminate the list of its inter-
face addresses. face addresses.
2.3.1. Multipoint Relay Information Declaration 2.3.1. TC Message Format
2.3.1.1. Topology Information Base
Each node in the network maintains topological information about the
network. This information is acquired from TC-messages and is used
for routing table calculations.
Thus, for each destination in the network, a "Topology Tuple"
(T_dest, T_last, T_seq, T_time) is recorded. T_dest is the main
address of a node, which may be reached in one hop from the node with
the main address T_last. Typically, T_last is a MPR of T_dest. T_seq
is a sequence number, and T_time specifies the time at which this
tuple expires and *MUST* be removed.
In a node, the set of Topology Tuples are denoted the "Topology Set".
2.3.1.2. TC Message Generation
In order to build the topology information base needed, each node,
which has been selected as MPR, broadcasts Topology Control (TC) mes-
sages. TC messages are flooded to all nodes in the network and take
advantage of MPRs. MPRs enable a better scalability in the distribu-
tion of topology information [1].
A TC message is sent by a node in the network to declare its MPR
Selector set. I.e., the TC message contains the list of neighbors
which have selected the sender node as a MPR. The sequence number
(MSSN) associated with this MPR selector set is also sent with the
list. The list of addresses can be partial in each TC message (e.g.
due to message size limitations, imposed by the network), but parsing
of all TC messages describing the MPR selector set of a node MUST be
complete within a certain refreshing period (TC_INTERVAL). The infor-
mation diffused in the network by these TC messages will help each
node calculate its routing table. A node which has an empty MPR
selector set, i.e. nobody has selected it as a MPR, SHOULD NOT gener-
ate any TC message.
A node MAY transmit additional TC-messages to increase its reactive-
ness to link failures. I.e. when a change to the MPR selector set is
detected and this change can be attributed to a link failure, a TC-
message SHOULD be transmitted after a shorter interval than TC_INTER-
VAL.
The proposed format of a TC message is The proposed format of a TC message is
0 1 2 3 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MSSN | Reserved | | MSSN | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Multipoint Relay Selector Main Address | | Multipoint Relay Selector Main Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
skipping to change at page 32, line 4 skipping to change at page 33, line 48
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MSSN | Reserved | | MSSN | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Multipoint Relay Selector Main Address | | Multipoint Relay Selector Main Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Multipoint Relay Selector Main Address | | Multipoint Relay Selector Main Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ... | | ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
This is sent as the data-portion of the general message format with This is sent as the data-portion of the general message format with
the "Message Type" set to TC_MESSAGE. The time to live SHOULD be set the "Message Type" set to TC_MESSAGE. The time to live SHOULD be set
to 255 (maximum value) to diffuse the message into the entire net- to 255 (maximum value) to diffuse the message into the entire net-
work. work.
Description of the fields
MPR Selector Sequence Number (MSSN) MPR Selector Sequence Number (MSSN)
A sequence number is associated with the MPR selector set. A sequence number is associated with the MPR selector set.
Every time a node detects a change in its MPR selector set, it Every time a node detects a change in its MPR selector set, it
increments this sequence number. This number is sent in this increments this sequence number. This number is sent in this
MSSN field of the TC message to keep track of the most recent MSSN field of the TC message to keep track of the most recent
information. When a node receives a TC message, it can decide information. When a node receives a TC message, it can decide
on the basis of this MPR Sequence Number, whether or not the on the basis of this MPR Sequence Number, whether or not the
received information about the MPR selectors of the originator received information about the MPR selectors of the originator
node is more recent than what it already has. node is more recent than what it already has.
Multipoint Relay Selector Main Address Multipoint Relay Selector Main Address
This field contains the main address of a node, which has This field contains the main address of a node, which has
selected the Originator node (of the TC message) as a MPR. selected the Originator node (of the TC message) as a MPR.
All addresses of the MPR selectors of the Originator node are All addresses of the MPR selectors of the Originator node are
put in the TC message. If the maximum allowed message size (as put in the TC message. If the maximum allowed message size (as
imposed by the network) is reached while there are still MPR imposed by the network) is reached while there are still MPR
selector addresses which which have not been inserted into the selector addresses which have not been inserted into the TC-
TC-message, more TC messages will be generated until the message, more TC messages will be generated until the entire
entire MPR selector set has been sent. MPR selector set has been sent.
Reserved Reserved
This field is reserved for future usage, and MUST be set to This field is reserved for future usage, and MUST be set to
"0000000000000000" for compliance with this draft. "0000000000000000" for compliance with this draft.
2.3.1.3. TC Message Processing 2.3.2. Topology Information Base
Each node in the network maintains topological information about the
network. This information is acquired from TC-messages and is used
for routing table calculations.
Thus, for each destination in the network, a "Topology Tuple"
(T_dest, T_last, T_seq, T_time) is recorded. T_dest is the main
address of a node, which may be reached in one hop from the node with
the main address T_last. Typically, T_last is a MPR of T_dest. T_seq
is a sequence number, and T_time specifies the time at which this
tuple expires and *MUST* be removed.
In a node, the set of Topology Tuples are denoted the "Topology Set".
2.3.3. TC Message Generation
In order to build the topology information base needed, each node,
which has been selected as MPR, broadcasts Topology Control (TC) mes-
sages. TC messages are flooded to all nodes in the network and take
advantage of MPRs. MPRs enable a better scalability in the distribu-
tion of topology information [1].
A TC message is sent by a node in the network to declare its MPR
Selector set. I.e., the TC message contains the list of neighbors
which have selected the sender node as a MPR. The sequence number
(MSSN) associated with this MPR selector set is also sent with the
list. The list of addresses can be partial in each TC message (e.g.
due to message size limitations, imposed by the network), but parsing
of all TC messages describing the MPR selector set of a node MUST be
complete within a certain refreshing period (TC_INTERVAL). The infor-
mation diffused in the network by these TC messages will help each
node calculate its routing table.
A node which has an empty MPR selector set, i.e. nobody has selected
it as a MPR, may not generate any TC message. Indeed, when its MPR
selector set becomes empty, it SHOULD still send (empty) TC-messages
during TOP_HOLD_TIME to invalidate the previous TC-messages. It MAY
then stop sending TC-messages until some node is inserted in its MPR
selector set.
A node MAY transmit additional TC-messages to increase its reactive-
ness to link failures. I.e. when a change to the MPR selector set is
detected and this change can be attributed to a link failure, a TC-
message SHOULD be transmitted after a shorter interval than TC_INTER-
VAL.
2.3.4. TC Message Processing
TC messages are broadcasted and retransmitted by the MPRs in order to TC messages are broadcasted and retransmitted by the MPRs in order to
diffuse the messages in the entire network. diffuse the messages in the entire network.
In this section, the term "originator" is used to designate the node In this section, the term "originator" is used to designate the node
from which the message originally originated, while the term "sender" from which the message originally originated, while the term "sender"
is used to designate the node from which the message was received is used to designate the node from which the message was received
(i.e. the "last hop" of the message). (i.e. the "last hop" of the message).
The tuples in the topology set are recorded with the topology infor- The tuples in the topology set are recorded with the topology infor-
mation that is exchanged through TC messages, according to the mation that is exchanged through TC messages, according to the fol-
following algorithm: lowing algorithm:
1 If the sender interface (NB: not originator) of this message 1 If the sender interface (NB: not originator) of this message
is not in the symmetric neighborhood of this node, the message is not in the symmetric neighborhood of this node, the message
is discarded. is discarded.
2 A tuple is inserted into the duplicate table to prevent it 2 A tuple is inserted into the duplicate table to prevent it
from being processed again with: from being processed again with:
D_addr = originator address D_addr = originator address
skipping to change at page 34, line 18 skipping to change at page 37, line 16
where: where:
T_dest = MPR selector address, T_dest = MPR selector address,
T_last = originator address, T_last = originator address,
T_seq = MSSN, T_seq = MSSN,
T_time = current time + TOP_HOLD_TIME. T_time = current time + TOP_HOLD_TIME.
6 If the sender address is the link interface address of a MPR 6 If the sender address is an interface address of a MPR selec-
selector of this node and if the time to live of the message tor of this node and if the time to live of the message is
is greater than '1', the message MUST be forwarded according greater than '1', the message MUST be forwarded according to
to the following: the following:
6.1 The TTL of the message is reduced by one. 6.1 The TTL of the message is reduced by one.
6.2 The hop-count of the message is increased by one 6.2 The hop-count of the message is increased by one
6.3 The message is broadcasted on all interfaces (Notice: The 6.3 The message is broadcasted on all interfaces (Notice: The
remaining fields of the message header SHOULD be left remaining fields of the message header SHOULD be left
unmodified.) unmodified.)
2.3.2. Multiple Interface Association 2.3.5. Multiple Interface Association
Each node in the network maintains interface information about the other Each node in the network maintains interface information about the
nodes in the network. This information acquired from MID-messages, emit- other nodes in the network. This information acquired from MID-mes-
ted by nodes with multiple interfaces participating in the MANET, and is sages, emitted by nodes with multiple interfaces participating in the
used for routing table calculations. MANET, and is used for routing table calculations.
2.3.2.1. Interface Association Information Base 2.3.5.1. Multiple Interface Association Information Base
For each destination in the network, "Interface association Tuples" For each destination in the network, "Interface association Tuples"
(I_if_addr, I_main_addr, I_time) are recorded. I_if_addr is an inter- (I_if_addr, I_main_addr, I_time) are recorded. I_if_addr is an inter-
face address of a node, I_main_addr is the main address of this node. face address of a node, I_main_addr is the main address of this node.
I_time specifies the time at which this tuple expires and *MUST* be I_time specifies the time at which this tuple expires and *MUST* be
removed. removed.
In a node, the set of Interface association Tuples is denoted the In a node, the set of Interface association Tuples is denoted the
"Interface association Set". "Interface association Set".
2.3.2.2. MID Message Broadcast 2.3.5.2. MID Message Format
In order to build the interface association information base, each
node with multiple interfaces broadcast Multiple Interface Declara-
tion (MID) messages. MID messages are flooded to all nodes in the
network and take advantage of MPRs.
A MID message is sent by a node in the network to declare its multi-
ple interfaces (if any). I.e., the MID message contains the list of
interface addresses which are associated to its main address. The
list of addresses can be partial in each TC message (e.g. due to mes-
sage size limitations, imposed by the network), but parsing of all
MID messages describing a nodes interface set MUST be complete within
a certain refreshing period (MID_INTERVAL). The information diffused
in the network by these MID messages will help each node to calculate
its routing table. A node which has only a single interface address
participating in the MANET (i.e. running OLSR), MUST NOT generate any
MID message.
A node with more interfaces, where only one is participating in the
MANET and running OLSR (e.g. a node is connected to a wired network
as well as to a MANET) MUST NOT generate any MID messages.
The proposed format of a MID message is The proposed format of a MID message is
0 1 2 3 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Interface Address | | Interface Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Interface Address | | Interface Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ... | | ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
skipping to change at page 35, line 45 skipping to change at page 38, line 19
| Interface Address | | Interface Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ... | | ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
This is sent as the data-portion of the general message format with This is sent as the data-portion of the general message format with
the "Message Type" set to MID_MESSAGE. The time to live SHOULD be the "Message Type" set to MID_MESSAGE. The time to live SHOULD be
set to 255 (maximum value) to diffuse the message into the entire set to 255 (maximum value) to diffuse the message into the entire
network. network.
Description of the fields
Interface Address Interface Address
This field contains the address of an interface of the node This field contains the address of an interface of the node
other than its main address (already indicated in the origina- other than its main address (already indicated in the origina-
tor address). All interface addresses other than the main tor address). All interface addresses other than the main
address of the Originator node are put in the MID message. If address of the Originator node are put in the MID message. If
the maximum allowed message size (as imposed by the network) the maximum allowed message size (as imposed by the network)
is reached while there are still interface addresses which is reached while there are still interface addresses which
have not been inserted into the MID-message, more MID messages have not been inserted into the MID-message, more MID messages
are generated until the entire interface addresses set has are generated until the entire interface addresses set has
been sent. been sent.
skipping to change at page 36, line 14 skipping to change at page 38, line 31
This field contains the address of an interface of the node This field contains the address of an interface of the node
other than its main address (already indicated in the origina- other than its main address (already indicated in the origina-
tor address). All interface addresses other than the main tor address). All interface addresses other than the main
address of the Originator node are put in the MID message. If address of the Originator node are put in the MID message. If
the maximum allowed message size (as imposed by the network) the maximum allowed message size (as imposed by the network)
is reached while there are still interface addresses which is reached while there are still interface addresses which
have not been inserted into the MID-message, more MID messages have not been inserted into the MID-message, more MID messages
are generated until the entire interface addresses set has are generated until the entire interface addresses set has
been sent. been sent.
2.3.2.3. MID Message Processing 2.3.5.3. MID Message Generation
In order to build the interface association information base, each
node with multiple interfaces broadcast Multiple Interface Declara-
tion (MID) messages. MID messages are flooded to all nodes in the
network and take advantage of MPRs.
A MID message is sent by a node in the network to declare its multi-
ple interfaces (if any). I.e., the MID message contains the list of
interface addresses which are associated to its main address. The
list of addresses can be partial in each TC message (e.g. due to mes-
sage size limitations, imposed by the network), but parsing of all
MID messages describing a nodes interface set MUST be complete within
a certain refreshing period (MID_INTERVAL). The information diffused
in the network by these MID messages will help each node to calculate
its routing table. A node which has only a single interface address
participating in the MANET (i.e. running OLSR), MUST NOT generate any
MID message.
A node with more interfaces, where only one is participating in the
MANET and running OLSR (e.g. a node is connected to a wired network
as well as to a MANET) MUST NOT generate any MID messages.
2.3.5.4. MID Message Processing
MID messages are broadcasted and retransmitted by the MPRs in order MID messages are broadcasted and retransmitted by the MPRs in order
to diffuse the messages in the entire network. to diffuse the messages in the entire network.
In this section, the term "originator" is used to designate the node In this section, the term "originator" is used to designate the node
from which the message originally originated, while the term "sender" from which the message originally originated, while the term "sender"
is used to designate the node from which the message was received is used to designate the node from which the message was received
(i.e. the "last hop" of the message). (i.e. the "last hop" of the message).
The tuples in the multiple interface association set are recorded The tuples in the multiple interface association set are recorded
skipping to change at page 37, line 19 skipping to change at page 40, line 14
3.2 Otherwise, a new tuple is recorded in the interface asso- 3.2 Otherwise, a new tuple is recorded in the interface asso-
ciation set where: ciation set where:
I_if_addr = interface address, I_if_addr = interface address,
I_main_addr = originator address, I_main_addr = originator address,
I_time = current time + MID_HOLD_TIME. I_time = current time + MID_HOLD_TIME.
4 If the sender address is the link interface address of a MPR 4 If the sender address is an interface address of a MPR selec-
selector of this node and if the time to live of the message tor of this node and if the time to live of the message is
is greater than '1', the message MUST be forwarded according greater than '1', the message MUST be forwarded according to
to the following: the following:
4.1 The TTL of the message is reduced by one. 4.1 The TTL of the message is reduced by one.
4.2 The hop-count of the message is increased by one 4.2 The hop-count of the message is increased by one
4.3 The message is broadcasted on all interfaces (Notice: The 4.3 The message is broadcasted on all interfaces (Notice: The
remaining fields of the message header SHOULD be left remaining fields of the message header SHOULD be left
unmodified.) unmodified.)
2.3.3. Associated Networks and Hosts 2.3.6. Associated Networks and Hosts
A node MAY provide access to a set of associated hosts. I.e., a node A node MAY provide access to a set of associated hosts. I.e., a node
may act as a "gateway" between the MANET and a number of associated may act as a "gateway" between the MANET and a number of associated
hosts and/or subnets, not running OLSR and thus not participating in hosts and/or subnets, not running OLSR and thus not participating in
the MANET. Thus, a node SHOULD be able to inject routing information the MANET. Thus, a node SHOULD be able to inject routing information
describing these associated hosts or networks into MANET, as SHOULD describing these associated hosts or networks into MANET, as SHOULD
all nodes be capable of interpreting such information. all nodes be capable of interpreting such information.
Notice, that this is a different case from that of "multiple inter- Notice that this is a different case from that of "multiple inter-
faces", described previously. Where, in the "Multiple Interface Asso- faces", described previously. Where, in the "Multiple Interface Asso-
ciations", all the described interfaces were participating in the ciations", all the described interfaces were participating in the
MANET through running the OLSR protocol, this section addresses the MANET through running the OLSR protocol, this section addresses the
interfaces which do not participate. This is, e.g., the case where a interfaces which do not participate. This is, e.g., the case where a
node has both a wireless interface (participating in the MANET) and a node has both a wireless interface (participating in the MANET) and a
wired interface, through which a number of hosts statically connect wired interface, through which a number of hosts statically connect
(to the nodes in the MANET). (to the nodes in the MANET).
To accomplish this, a node, to which there are associated hosts To accomplish this, a node, to which there are associated hosts
and/or networks, periodically issues an Host and Network Association and/or networks, periodically issues an Host and Network Association
(HNA) message, containing sufficient information for the recipients (HNA) message, containing sufficient information for the recipients
to construct an appropriate routing table. to construct an appropriate routing table.
2.3.3.1. Host and Network Association Information Base 2.3.6.1. HNA Message Format
Each node maintains information concerning which nodes may act as
"gateways" to associated hosts and networks by recording "association
tuples" (GW_main_addr, NET_addr, NET_mask, GS_time), where
GW_main_addr is the main address of the gateway, NET_addr and
NET_mask specifies the network address and netmask of a network,
reachable through this gateway, and GS_time specifies the time at
which this tuple expires and hence *MUST* be removed.
The set of all association tuples in a node is called the "associa-
tion set".
2.3.3.2. Host and Network Association Message Broadcast
A node with associated hosts and/or networks SHOULD periodically gen-
erate a Host and Network Association (HNA) message, containing pairs
of (network address, netmask) corresponding to the connected hosts and
networks. HNA-messages SHOULD be transmitted periodically every
HNA_INTERVAL.
A node without any associated hosts and/or networks SHOULD NOT gener-
ate HNA-messages.
The proposed format of an HNA-message is: The proposed format of an HNA-message is:
0 1 2 3 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Network Address | | Network Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Netmask | | Netmask |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
skipping to change at page 39, line 14 skipping to change at page 41, line 35
It should be noticed, that the HNA-message can be considered as a It should be noticed, that the HNA-message can be considered as a
"generalized version" of the TC-message: the originator of both the "generalized version" of the TC-message: the originator of both the
HNA and TC messages announce "reachability" to some other host(s). In HNA and TC messages announce "reachability" to some other host(s). In
the TC-message, no netmask is required, since all reachability is the TC-message, no netmask is required, since all reachability is
announced on a per-host basis. In HNA-messages, announcing reachabil- announced on a per-host basis. In HNA-messages, announcing reachabil-
ity to an address sequence through a network- and netmask address is ity to an address sequence through a network- and netmask address is
typically preferred over announcing reachability to individual host typically preferred over announcing reachability to individual host
addresses. addresses.
Description of the fields
Network Address Network Address
The network address of the associated network The network address of the associated network
Netmask Netmask
The netmask, corresponding to the network address immediately The netmask, corresponding to the network address immediately
above. above.
2.3.3.3. HNA Message Processing 2.3.6.2. Host and Network Association Information Base
Each node maintains information concerning which nodes may act as
"gateways" to associated hosts and networks by recording "association
tuples" (GW_main_addr, NET_addr, NET_mask, GS_time), where
GW_main_addr is the main address of the gateway, NET_addr and
NET_mask specifies the network address and netmask of a network,
reachable through this gateway, and GS_time specifies the time at
which this tuple expires and hence *MUST* be removed.
The set of all association tuples in a node is called the "associa-
tion set".
2.3.6.3. HNA Message Generation
A node with associated hosts and/or networks SHOULD periodically gen-
erate a Host and Network Association (HNA) message, containing pairs
of (network address, netmask) corresponding to the connected hosts and
networks. HNA-messages SHOULD be transmitted periodically every
HNA_INTERVAL.
A node without any associated hosts and/or networks SHOULD NOT gener-
ate HNA-messages.
2.3.6.4. HNA Message Processing
In this section, the term "originator address" is used to designate In this section, the term "originator address" is used to designate
the main address of the node which originally issued the HNA-message. the main address of the node which originally issued the HNA-message.
Upon receiving a HNA-message, the node performs the following: Upon receiving a HNA-message, the node performs the following:
1 An entry in the duplicate set is recorded for this message 1 An entry in the duplicate set is recorded for this message
with: with:
D_addr = originator address D_addr = originator address
skipping to change at page 40, line 4 skipping to change at page 42, line 45
D_time = current time + D_HOLD_TIME. D_time = current time + D_HOLD_TIME.
2 For each (network address, netmask) pair in the message: 2 For each (network address, netmask) pair in the message:
2.1 if an entry in the association set already exists, where: 2.1 if an entry in the association set already exists, where:
GW_main_addr == originator address GW_main_addr == originator address
NET_addr == network address NET_addr == network address
NET_mask == netmask
NET_mask == netmask
then the holding time for that tuple is set to: then the holding time for that tuple is set to:
GW_time = current time + GW_HOLDING_TIME GW_time = current time + GW_HOLDING_TIME
2.2 otherwise, a new tuple is recorded with: 2.2 otherwise, a new tuple is recorded with:
GW_main_addr == originator address GW_main_addr == originator address
NET_addr == network address NET_addr == network address
NET_mask == netmask NET_mask == netmask
GW_time = current time + GW_HOLDING_TIME GW_time = current time + GW_HOLDING_TIME
3 If the sender address is the link interface address of a MPR 3 If the sender address is an interface address of a MPR selec-
selector of this node and if the time to live of the message tor of this node and if the time to live of the message is
is greater than '1', the message MUST be forwarded according greater than '1', the message MUST be forwarded according to
to the following: the following:
3.1 The TTL of the message is reduced by one. 3.1 The TTL of the message is reduced by one.
3.2 The hop-count of the message is increased by one 3.2 The hop-count of the message is increased by one
3.3 The message is broadcasted on all interfaces (Notice: The 3.3 The message is broadcasted on all interfaces (Notice: The
remaining fields of the message header SHOULD be left remaining fields of the message header SHOULD be left
unmodified.) unmodified.)
2.3.3.4. Optional Link layer notification 2.3.7. Routing Table Calculation
Detection of a link failure between a node and one of its MPR selec-
tors through a link-layer notification may trigger additional TC-mes-
sages to increase the protocols reactiveness to link failures. I.e.
when a change to the MPR selector set is detected and this change can
be attributed to a link failure, an additional TC-message SHOULD be
transmitted.
Thus, if a link failure appears to be a neighbor loss with a neigh-
bor, which has selected this node as MPR, the MPR selector set is
updated (MSSN is thus incremented) and a TC message SHOULD be gener-
ated.
2.3.4. Routing Table Calculation
Each node maintains a routing table which allows it to route data, Each node maintains a routing table which allows it to route data,
destined for the other nodes in the network. The routing table is destined for the other nodes in the network. The routing table is
based on the information contained in the neighbor sensing informa- based on the information contained in the neighbor sensing informa-
tion base, the interface association set and the topology set. There- tion base, the interface association set and the topology set. There-
fore, if any of these tables are changed, the routing table is re- fore, if any of these tables are changed, the routing table is re-
calculated to update the route information about each destination in calculated to update the route information about each destination in
the network. The route entries are recorded in the routing table in the network. The route entries are recorded in the routing table in
the following format: the following format:
skipping to change at page 41, line 50 skipping to change at page 44, line 34
any symmetric neighbor of X (with Link Type SYM_LINK or MPR_LINK) and any symmetric neighbor of X (with Link Type SYM_LINK or MPR_LINK) and
the arcs U -> V where there exists an entry in the topology set with the arcs U -> V where there exists an entry in the topology set with
V as T_dest and U as T_last. V as T_dest and U as T_last.
The following procedure is given as an example to calculate (or re- The following procedure is given as an example to calculate (or re-
calculate) the routing table : calculate) the routing table :
1 All the entries from the routing table are removed. 1 All the entries from the routing table are removed.
2 The new routing entries are added starting with the symmetric 2 The new routing entries are added starting with the symmetric
neighbors (h=1) as the destination nodes. For each neighbor neighbors (h=1) as the destination nodes. I.e. for each neigh-
tuple in the neighbor set, corresponding to a symmetric link bor tuple in the neighbor set where:
(i.e. N_LOST_time is expired, N_pending == false and
N_SYM_time is not expired), N_LOST_time < current time AND
a new routing entry is recorded in the routing table where
R_dest is set to the main address N_main_addr of the neighbor, N_pending == false AND
R_next is set to the interface address N_if_addr of the neigh-
bor interface, R_dist is set to 1, and R_if_id is set to the N_SYM_time >= current time
value field N_if_id of the entry. If N_if_addr is distinct of
N_main_addr, another new routing entry with R_dest = (there is a symmetric link to the neighbor), a new routing
N_main_addr, R_next = N_if_addr, R_if_id = N_if_id and R_dist entry is recorded in the routing table with:
= 1 is added.
R_dest = N_main_addr of the neighbor;
R_next = N_if_addr of the neighbor interface;
R_dist = 1;
R_if_id = N_if_id of the entry.
If N_if_addr is distinct from N_main_addr, another new routing
entry with is added, with:
R_dest = N_main_addr;
R_next = N_if_addr;
R_dist = 1;
R_if_id = N_if_id.
3 The new route entries for the destination nodes h+1 hops away 3 The new route entries for the destination nodes h+1 hops away
are recorded in the routing table. The following procedure is are recorded in the routing table. The following procedure is
executed for each value of h, starting with h=1 and increment- executed for each value of h, starting with h=1 and increment-
ing it by 1 each time. The execution will stop if no new entry ing it by 1 each time. The execution will stop if no new entry
is recorded in an iteration. is recorded in an iteration.
3.1 For each topology entry in the topology table, if its 3.1 For each topology entry in the topology table, if its
T_dest does not correspond to R_dest of any route entry T_dest does not correspond to R_dest of any route entry
in the routing table AND its T_last corresponds to R_dest in the routing table AND its T_last corresponds to R_dest
of a route entry whose R_dist is equal to h, then a new of a route entry whose R_dist is equal to h, then a new
route entry is recorded in the routing table (if it does route entry is recorded in the routing table (if it does
not already exist) where: not already exist) where:
R_dest is set to T_dest; R_dest = T_dest;
R_next is set to R_next of the recorded route entry R_next = R_next of the recorded route entry whose
whose R_dest is equal to T_last R_dest == T_last
R_dist is set to h+1; and R_dist = h+1; and
R_if_id is set to the value of the R_if_id of the R_if_id = R_if_id of the recorded route entry whose
recorded route entry whose R_dest is equal to R_dest == T_last.
T_last.
3.2 Several topology entries may be used to select a next hop
R_next for reaching the node R_dest. When h=1, ties
should be broken such that MPR selectors are preferred as
next hop.
The routing table is further completed by using the multiple inter- The routing table is further completed by using the multiple inter-
face association set: face association set:
1 For each entry in the multiple interface association where 1 For each entry in the multiple interface association base
there exists a routing entry such that: where there exists a routing entry such that:
R_dest == I_main_addr (of the multiple interface inter- R_dest == I_main_addr (of the multiple interface inter-
face association entry) face association entry)
a route entry is created in the routing table with: a route entry is created in the routing table with:
R_dest = I_if_addr (of the multiple interface associa- R_dest = I_if_addr (of the multiple interface associa-
tion entry) tion entry)
R_next = R_next (of the recorded route entry) R_next = R_next (of the recorded route entry)
R_dist = R_dist (of the recorded route entry) R_dist = R_dist (of the recorded route entry)
R_if_id = R_if_id (of the recorded route entry). R_if_id = R_if_id (of the recorded route entry).
skipping to change at page 43, line 31 skipping to change at page 46, line 38
R_dest = NET_addr/NET_mask R_dest = NET_addr/NET_mask
R_next = the next hop on the path from the node to R_next = the next hop on the path from the node to
GW_main_addr GW_main_addr
R_dist = dist to GW_main_addr R_dist = dist to GW_main_addr
R_next and R_if_id are set to the same values as the R_next and R_if_id are set to the same values as the
tuple from the routing set with R_dest == GW_main_addr. tuple from the routing set with R_dest == GW_main_addr.
2.3.8. Advanced Topology Discovery Functioning
Due to mobility, some links of the broadcasted topology may fail.
Additional messages may be sent to recover quickly. Ideally the load
of control messages should increase smoothly with mobility. This sec-
tion describes how this may be achieved in OLSR.
2.3.8.1. Reaction to Link Failure with a MPR Selector
Detection of a link failure between a node and one of its MPR selec-
tors through a link-layer notification may trigger additional TC-
messages to increase the protocol reactiveness to link failures. I.e.
when a change to the MPR selector set is detected and this change can
be attributed to a link failure, an additional TC-message MAY be
transmitted.
More precisely, if a link failure appears to be a neighbor loss with
a neighbor, which has selected this node as MPR, the MPR selector set
is updated (MSSN is thus incremented) and a TC message MAY be gener-
ated. Moreover if it appears that data traffic was flowing through
this link, a TC message SHOULD be generated. Notice, that a node may
be aware of data traffic flowing to the lost neighbor in case of a
link layer notification coming from a missing acknowledgement or when
statistics about packet forwarding is given by the IP stack.
2.3.8.2. Advanced Fast Re-routing Mechanism
When a link breaks, information stored in the neighbor sensing infor-
mation base may be used to compute an alternative route immediately
if necessary.
If there exists a N_2hop_address listed in the 2-hop neighbor set,
and for which no route exists, a route entry is created in the rout-
ing table with:
R_dest = N_2hop_address
R_next = R_next of the recorded route entry whose R_dest is
equal to N_main_addr of the corresponding 2-hop tuple
R_dist = 2
R_if_id = R_if_id of the recorded route entry whose R_dest is
equal to N_main_addr of the corresponding 2-hop tuple.
If an entry in the multiple interface association base records a main
address I_main_addr reporting an interface I_if_addr =
N_2hop_address, then R_dest is set to I_main_addr instead of
N_2hop_address.
If the two hop neighbor allows to reach other nodes at distance
greater than 2 according to the topology set then other entries may
be added in the routing table with same R_next for these nodes.
The routing table is finally completed using the multiple interface
association set and the host and network association set as described
in the routing table calculation section.
To allow other nodes to benefit from the alternative route, the node
MAY trigger a fast re-routing event by generating a FRR message.
2.3.8.2.1. FRR Message Format
The proposed format of a FRR message is
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Hop Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Two Hop Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Two Hop Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
This is sent as the data-portion of the general message format with
the "Message Type" set to FRR_MESSAGE. The time to live SHOULD be
set to 1, ensuring that the message is only received by one-hop
neighbors.
Next Hop Address
This field contains the main address of a node which is used
as next hop by the Originator for reaching all the nodes iden-
tified by the Two Hop Address fields.
Two Hop Address
This field contain the main address of a 2-hop neighbor of the
Originator of the message.
2.3.8.2.2. FRR Message Generation
When the fast re-routing mechanism allows to reach 2-hop neighbors
through a neighbor which is not recorded as MPR of them in the topol-
ogy set, the node MAY inform this next hop by generating a FRR Mes-
sage with Next Hop Address containing the main address of this next
hop and listing the main addresses of these 2-hop neighbors.
If some information allows to deduce that some data traffic flows
through the node to some of these 2-hop neighbors, such a FRR Message
SHOULD be generated. This can be the case if such a 2-hop neighbor
was previously a neighbor and a link layer notification of a missing
acknowledgement has been received or statistics about packet forward-
ing are provided by the IP stack. Otherwise, an FFR-message MAY be
generated.
2.3.8.2.3. FRR Message Processing
Upon reception of a FRR message a node performs the following:
1 If the Next Hop Address field is not the main address of the
node, the message is dropped.
2 For each Two Hop Address listed in the FRR Message for which
there exists a neighbor tuple with N_main_addr = the Two Hop
Address and for which there exists no tuple in the MPR selec-
tor set with MS_main_addr = the Two Hop Addres, a new tuple is
inserted with:
MS_main_addr = the Two Hop Addres
MS_if_addr = N_if_addr of the corresponding neighbor
tuple
MS_time = current time + 2HOP_HOLD_TIME.
If the MPR set has changed then the MSSN is incremented by 1 and a TC
message containing the new MPR selector set SHOULD be generated.
3. Node Configuration 3. Node Configuration
3.1. Address Assignment 3.1. Address Assignment
The nodes in the MANET network SHOULD be assigned addresses within a The nodes in the MANET network SHOULD be assigned addresses within a
defined address sequence. I.e., the nodes in the MANET SHOULD be defined address sequence. I.e., the nodes in the MANET SHOULD be
addressable through a network address and a netmask. addressable through a network address and a netmask.
Likewise, the nodes in each associated network SHOULD be assigned Likewise, the nodes in each associated network SHOULD be assigned
addresses from a defined address sequence, distinct from that being addresses from a defined address sequence, distinct from that being
used in the MANET. used in the MANET.
3.2. Routing Configuration 3.2. Routing Configuration
MANET nodes MUST be configured such that they have a network route Any MANET node with associated networks or hosts SHOULD
set up on one of the interfaces participating in the MANET. I.e., in be configured such that it has routes set up to the interfaces with
lack of other routing information, any incoming datagrams, destined associated hosts or network.
for a node in the MANET address sequence, is transmitted onto this
interface (efficiently: incoming data to a MANET node, which the node
cannot find an exact match for, is broadcast to all neighbors)
Any node with associated networks or hosts SHOULD, in addition to the
configuration described above, be configured such that it has routes
set up to the interfaces with associated hosts or network.
3.3. Data Packet Forwarding 3.3. Data Packet Forwarding
OLSR itself does not perform packet forwarding. Rather, it maintains OLSR itself does not perform packet forwarding. Rather, it maintains
the routing table in the underlying operating system, which is the routing table in the underlying operating system, which is
assumed to be forwarding packets as specified in RFC1812. assumed to be forwarding packets as specified in RFC1812.
3.4. Control Message Forwarding
Control messages, destined for flooding into the entire network,
SHOULD be relayed by the MPR via the following rule:
A node retransmits a message only when it is received from one
of its MPR selector AND it is not before registered in the
duplicate table AND the time to live is greater than 1 (one).
Before retransmitting, the hop count is incremented by one and the
time to live is decremented by one.
4. IPv6 Considerations 4. IPv6 Considerations
All the operations and parameters described in this document used by All the operations and parameters described in this document used by
OLSR for IP version 4 are the same as those used by OLSR for IP ver- OLSR for IP version 4 are the same as those used by OLSR for IP ver-
sion 6. However, with IP version 6, we only need to replace all the sion 6. However, to operate with IP version 6, the only required
4 bytes Ipv4 address field in different messages with 16 bytes Ipv6 change is to replace the IPv4 addresses with Ipv6 address.
address format.
5. Proposed Values for the Constants 5. Proposed Values for the Constants
This section list the values for the constants used in the descrip- This section list the values for the constants used in the descrip-
tion of the protocol. tion of the protocol.
HELLO_INTERVAL = 2 seconds HELLO_INTERVAL = 2 seconds
REFRESH_INTERVAL = 2 seconds
TC_INTERVAL = 5 seconds TC_INTERVAL = 5 seconds
MID_INTERVAL = TC_INTERVAL MID_INTERVAL = TC_INTERVAL
HNA_INTERVAL = TC_INTERVAL HNA_INTERVAL = TC_INTERVAL
NEIGHB_HOLD_TIME = 3 x HELLO_INTERVAL NEIGHB_HOLD_TIME = 3 x HELLO_INTERVAL
2HOP_HOLD_TIME = 3 x REFRESH_INTERVAL
TOP_HOLD_TIME = 3 x TC_INTERVAL TOP_HOLD_TIME = 3 x TC_INTERVAL
D_TIME = 30 seconds D_TIME = 30 seconds
I_TIME = 3 x MID_INTERVAL I_TIME = 3 x MID_INTERVAL
GW_TIME = 3 x HNA_INTERVAL GW_TIME = 3 x HNA_INTERVAL
HELLO_MESSAGE = 1 HELLO_MESSAGE = 1
TC_MESSAGE = 2 TC_MESSAGE = 2
MID_MESSAGE = 3 MID_MESSAGE = 3
skipping to change at page 45, line 26 skipping to change at page 51, line 16
GW_TIME = 3 x HNA_INTERVAL GW_TIME = 3 x HNA_INTERVAL
HELLO_MESSAGE = 1 HELLO_MESSAGE = 1
TC_MESSAGE = 2 TC_MESSAGE = 2
MID_MESSAGE = 3 MID_MESSAGE = 3
HNA_MESSAGE = 4 HNA_MESSAGE = 4
MID_MESSAGE = 5
FRR_MESSAGE = 6
ASYM_LINK = 1 ASYM_LINK = 1
SYM_LINK = 2 SYM_LINK = 2
MPR_LINK = 3 MPR_LINK = 3
LOST_LINK = 4 LOST_LINK = 4
HYST_THRESHOLD_HIGH = 0.8 HYST_THRESHOLD_HIGH = 0.8
HYST_THRESHOLD_LOW = 0.3 HYST_THRESHOLD_LOW = 0.3
HYST_SCALING = 0.5 HYST_SCALING = 0.5
MAXJITTER = 0.5 MPR COVERAGE = 1
MAXJITTER = HELLO_INTERVAL / 4
6. Sequence Numbers 6. Sequence Numbers
Sequence numbers are used in OLSR with the purpose of discarding Sequence numbers are used in OLSR with the purpose of discarding
"old" information, i.e. messages received out of order. However with "old" information, i.e. messages received out of order. However with
a limited number of bits for representing sequence numbers, wrap- a limited number of bits for representing sequence numbers, wrap-
arounds (that the sequence number is incremented from the maximum arounds (that the sequence number is incremented from the maximum
possible value to zero) will occur. To prevent this from interfering possible value to zero) will occur. To prevent this from interfering
with the operation of the protocol, the following MUST be observed. with the operation of the protocol, the following MUST be observed.
The term MAXVALUE designates in the following the largest possible The term MAXVALUE designates in the following the largest possible
value for a sequence number. value for a sequence number.
The sequence number S1 is said to be "greater than" the sequence num- The sequence number S1 is said to be "greater than" the sequence num-
ber S2 iff: ber S2 iff:
S1-S2 < MAXVALUE/2 OR S1 > S2 AND S1 - S2 <= MAXVALUE/2 OR
S1 < MAXVALUE/2 AND S2 > S1 + MAXVALUE/2 S2 > S1 AND S2 - S1 > MAXVALUE/2
Thus when comparing two messages, it is possible - even in the pres- Thus when comparing two messages, it is possible - even in the pres-
ence of wrap-around - to determine which message contains the most ence of wrap-around - to determine which message contains the most
recent information. recent information.
7. Acknowledgments 7. Acknowledgments
The authors would like to thank Joseph Macker and his team The authors would like to thank Joseph Macker and his team
<macker@itd.nrl.navy.mil> for their valuable suggestions on the <macker@itd.nrl.navy.mil> for their valuable suggestions on the
advanced neighbor sensing mechanism. advanced neighbor sensing mechanism.
8. References 8. Authors' Addresses
Thomas Heide Clausen Project HIPERCOM INRIA Rocquencourt BP 105 78153
Le Chesnay Cedex, France Phone: +33 1 3963 5133 Email:
Thomas.Clausen@inria.fr
Philippe Jacquet Project HIPERCOM INRIA Rocquencourt BP 105 78153 Le
Chesnay Cedex, France Phone: +33 1 3963 5263 Email:
Philippe.Jacquet@inria.fr
Anis Laouiti Project HIPERCOM INRIA Rocquencourt BP 105 78153 Le
Chesnay Cedex, France Phone: +33 1 3963 508832 Email:
Anis.Laouiti@inria.fr
Pascale Minet Project HIPERCOM INRIA Rocquencourt BP 105 78153 Le
Chesnay Cedex, France Phone: +33 1 3963 508832 Email: Pas-
cale.Minet@inria.fr
Paul Muhlethaler Project HIPERCOM INRIA Rocquencourt BP 105 78153 Le
Chesnay Cedex, France Phone: +33 1 3963 5278 Email: Paul.Muh-
lethaler@inria.fr
Amir Qayyum Avaz Networks 5-A Constitution Avenue Islamabad, Pakistan
Phone: +92-51-2826160 Email: qayyum@avaznet.com
Laurent Viennot Project HIPERCOM INRIA Rocquencourt BP 105 78153 Le
Chesnay Cedex, France Phone: +33 1 3963 5225 Email: Laurent.Vien-
not@inria.fr
9. References
1. P. Jacquet, P. Minet, P. Muhlethaler, N. Rivierre. Increasing relia- 1. P. Jacquet, P. Minet, P. Muhlethaler, N. Rivierre. Increasing relia-
bility in cable free radio LANs: Low level forwarding in HIPERLAN. bility in cable free radio LANs: Low level forwarding in HIPERLAN.
Wireless Personal Communications, 1996 Wireless Personal Communications, 1996
2. A. Qayyum, L. Viennot, A. Laouiti. Multipoint relaying: An efficient 2. A. Qayyum, L. Viennot, A. Laouiti. Multipoint relaying: An efficient
technique for flooding in mobile wireless networks. INRIA research technique for flooding in mobile wireless networks. 35th Annual
report RR-3898, 2000 Hawaii International Conference on System Sciences (HICSS'2001).
3. ETSI STC-RES10 Committee. Radio equipment and systems: HIPERLAN type 3. ETSI STC-RES10 Committee. Radio equipment and systems: HIPERLAN type
1, functional specifications ETS 300-652, ETSI, June 1996 1, functional specifications ETS 300-652, ETSI, June 1996
4. Philippe Jacquet and Laurent Viennot, Overhead in Mobile Ad-hoc Net- 4. Philippe Jacquet and Laurent Viennot, Overhead in Mobile Ad-hoc Net-
work Protocols, INRIA research report RR-3965, 2000 work Protocols, INRIA research report RR-3965, 2000
5. S. Bradner. Key words for use in RFCs to Indicate Requirement Lev- 5. S. Bradner. Key words for use in RFCs to Indicate Requirement Lev-
els. Request for Comments (Best Current Practice) 2119, Internet els. Request for Comments (Best Current Practice) 2119, Internet
Engineering Task Force, March 1997. Engineering Task Force, March 1997.
6. T. Clausen, G. Hansen, L. Christensen and G. Behrmann. The Optimized
Link State Routing Protocol, Evaluation through Experiments and
Simulation. IEEE Symposium on "Wireless Personal Mobile Communica-
tions", september 2001.
7. T. Clausen, P. Jacquet, A. Laouiti, P. Muhlethaler, A. Qayyum and L.
Viennot. Optimized Link State Routing Protocol. IEEE INMIC Pakistan
2001.
 End of changes. 

This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/