1075 lines
53 KiB
Plaintext
1075 lines
53 KiB
Plaintext
|
Linux Optimized Link State Routing Protocol (OLSR) IPv6 HOWTO
|
|||
|
|
|||
|
Lars Strand
|
|||
|
|
|||
|
<lars (at) unik no>
|
|||
|
|
|||
|
2004-04-23
|
|||
|
Revision History
|
|||
|
Revision 1.0 2004-04-23 Revised by: EJH
|
|||
|
Final review complete. Document published to the LDP collection.
|
|||
|
Revision 0.6 2004-04-19 Revised by: LKS
|
|||
|
Thanks to Thomas Zimmerman <thomas (at) zimres net> for a language review!
|
|||
|
Updated to latest version number and added a section on plugin-support in
|
|||
|
OLSRd. Changed lisence back to [http://www.gnu.org/copyleft/fdl.html] GFDL
|
|||
|
Revision 0.5 2004-03-08 Revised by: LKS
|
|||
|
An almost complete rewrite. Adding OLSRd (old uOLSR), updated to RFC3626.
|
|||
|
Removed NROLSR and CRCOLSR. Converted to XML Docbook. Changed the license
|
|||
|
from GFDL to [http://www.opencontent.org/openpub/] OPL due to some GFDL
|
|||
|
[http://people.debian.org/~srivasta/Position_Statement.xhtml] problems.
|
|||
|
Revision 0.3 2003-08-05 Revised by: LKS
|
|||
|
Initial release.
|
|||
|
|
|||
|
|
|||
|
This document describes the software and procedures to set up and use
|
|||
|
Optimized Link State Routing Protocol (OLSR) with IPv6 for Linux. OLSR is
|
|||
|
used as a routing protocol for Mobile Ad-Hoc Networks ([http://www.ietf.org/
|
|||
|
rfc/rfc2501.txt] MANET) (also called "spontaneous network").
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
Table of Contents
|
|||
|
1. Introduction
|
|||
|
1.1. Why Ad-Hoc network?
|
|||
|
1.2. What is a MANET?
|
|||
|
1.3. What is Optimized Link State Routing (OLSR)?
|
|||
|
1.4. How does OLSR work?
|
|||
|
1.5. What about IBSS (IEEE ad-hoc mode)?
|
|||
|
|
|||
|
|
|||
|
2. IPv6
|
|||
|
3. OLSR for Linux
|
|||
|
3.1. Installing OLSRd
|
|||
|
3.2. Using OLSRd
|
|||
|
3.3. What about HNA messages?
|
|||
|
3.4. Plugin support
|
|||
|
3.5. Optional GUI
|
|||
|
3.6. Other OLSR implementations
|
|||
|
|
|||
|
|
|||
|
4. FAQ
|
|||
|
5. Useful Resources
|
|||
|
6. Copyright, acknowledgments and miscellaneous
|
|||
|
6.1. Copyright and License
|
|||
|
6.2. How this document was produced
|
|||
|
6.3. Feedback
|
|||
|
6.4. Acknowledgments
|
|||
|
|
|||
|
|
|||
|
A. GNU Free Documentation License
|
|||
|
A.1. PREAMBLE
|
|||
|
A.2. APPLICABILITY AND DEFINITIONS
|
|||
|
A.3. VERBATIM COPYING
|
|||
|
A.4. COPYING IN QUANTITY
|
|||
|
A.5. MODIFICATIONS
|
|||
|
A.6. COMBINING DOCUMENTS
|
|||
|
A.7. COLLECTIONS OF DOCUMENTS
|
|||
|
A.8. AGGREGATION WITH INDEPENDENT WORKS
|
|||
|
A.9. TRANSLATION
|
|||
|
A.10. TERMINATION
|
|||
|
A.11. FUTURE REVISIONS OF THIS LICENSE
|
|||
|
A.12. ADDENDUM: How to use this License for your documents
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1. Introduction
|
|||
|
|
|||
|
This document describes the software and procedures to set up and use
|
|||
|
Optimized Link State Routing Protocol (OLSR) with IPv6 for Linux.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
1.1. Why Ad-Hoc network?
|
|||
|
|
|||
|
An English translation of ad-hoc is "For a particular purpose (improvised,
|
|||
|
made up in an instant)" (source: [http://en.wikipedia.org/wiki/
|
|||
|
List_of_Latin_phrases#A] Wikipedia). An Ad-hoc network, or "spontaneous
|
|||
|
network", is especially useful when dealing with wireless devices in which
|
|||
|
some of the devices are part of the network only for the duration of a
|
|||
|
communications session and the need for a dynamic network topology is
|
|||
|
eminent. A "Mobile Ad hoc Network" is usually called a MANET.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
1.2. What is a MANET?
|
|||
|
|
|||
|
" A MANET consists of mobile platforms (e.g., a router with multiple hosts
|
|||
|
and wireless communications devices)--herein simply referred to as 'nodes'
|
|||
|
--which are free to move about arbitrarily. The nodes may be located in or on
|
|||
|
airplanes, ships, trucks, cars, perhaps even on people or very small devices,
|
|||
|
and there may be multiple hosts per router. A MANET is an autonomous system
|
|||
|
of mobile nodes. The system may operate in isolation, or may have gateways to
|
|||
|
and interface with a fixed network." --- RFC2501: Mobile Ad hoc Networking
|
|||
|
(MANET), section 3 (page 3).
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
1.3. What is Optimized Link State Routing (OLSR)?
|
|||
|
|
|||
|
"OLSR is a proactive routing protocol for mobile ad hoc networks. The
|
|||
|
protocol inherits the stability of a link state algorithm and has the
|
|||
|
advantage of having routes immediately available when needed due to its
|
|||
|
proactive nature. OLSR is an optimization over the classical link state
|
|||
|
protocol, tailored for mobile ad hoc networks."
|
|||
|
|
|||
|
"OLSR is designed to work in a completely distributed manner and does not
|
|||
|
depend on any central entity. The protocol does NOT REQUIRE reliable
|
|||
|
transmission of control messages: each node sends control messages
|
|||
|
periodically, and can therefore sustain a reasonable loss of some such
|
|||
|
messages. Such losses occur frequently in radio networks due to collisions or
|
|||
|
other transmission problems." --- RFC3626: OLSR, section 1.3 (page 8)
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
1.4. How does OLSR work?
|
|||
|
|
|||
|
"The Optimized Link State Routing Protocol (OLSR) is developed for mobile ad
|
|||
|
hoc networks. It operates as a table driven, proactive protocol, i.e.,
|
|||
|
exchanges topology information with other nodes of the network regularly.
|
|||
|
Each node selects a set of its neighbor nodes as 'multi-point relays' (MPR).
|
|||
|
In OLSR, only nodes, selected as such MPRs, are responsible for forwarding
|
|||
|
control traffic, intended for diffusion into the entire network. MPRs provide
|
|||
|
an efficient mechanism for flooding control traffic by reducing the number of
|
|||
|
transmissions required." --- RFC3626: OLSR, section 1 (page 4)
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
1.5. What about IBSS (IEEE ad-hoc mode)?
|
|||
|
|
|||
|
The IEEE 802.11 standard defines two modes:
|
|||
|
|
|||
|
[802-11]
|
|||
|
|
|||
|
IEEE 802.11 standard
|
|||
|
|
|||
|
1. Infrastructure mode: The wireless network consist of at least one access
|
|||
|
point (AP) connected to the wired network and a set of wireless nodes
|
|||
|
(WN). This configuration is called a Basic Service Set (BSS). Extended
|
|||
|
Service Set (ESS) is a set of two or more BSSs (multiple cells).
|
|||
|
|
|||
|
2. Ad hoc mode: Also called "IEEE ad-hoc mode" or "peer-to-peer mode". This
|
|||
|
configuration is called Independent Basic Service Set (IBSS) and is
|
|||
|
useful for establishing a network where wireless infrastructure does not
|
|||
|
exist or where services are not required.
|
|||
|
|
|||
|
|
|||
|
So why use OLSR when we can use "IEEE ad-hoc mode"? IEEE ad-hoc mode does
|
|||
|
NOT support multi-hop. See figure below
|
|||
|
|
|||
|
[multihop]
|
|||
|
|
|||
|
"IEEE 8102.11 Ad hoc" mode has no support for multihop, something OLSR does
|
|||
|
have.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
2. IPv6
|
|||
|
|
|||
|
IP version 6 (IPv6) is a new version of the Internet Protocol, designed as
|
|||
|
the successor to IP version 4 (IPv4) [http://www.ietf.org/rfc/rfc791.txt]
|
|||
|
[RFC-791]. The changes from IPv4 to IPv6 fall primarily into the following
|
|||
|
categories:
|
|||
|
|
|||
|
<EFBFBD><EFBFBD>*<2A>Expanded addressing capabilities
|
|||
|
|
|||
|
<EFBFBD><EFBFBD>*<2A>Header format simplification
|
|||
|
|
|||
|
<EFBFBD><EFBFBD>*<2A>Improved support for extensions and options
|
|||
|
|
|||
|
<EFBFBD><EFBFBD>*<2A>Flow labeling capability
|
|||
|
|
|||
|
<EFBFBD><EFBFBD>*<2A>Authentication and privacy capabilities
|
|||
|
|
|||
|
|
|||
|
For more information on IPv6 in general, visit the IETF's IPv6 Working Group.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
3. OLSR for Linux
|
|||
|
|
|||
|
There are several OLSR implementation for Linux, but not all of them
|
|||
|
support IPv6. You should know how to enable and use IPv6 on Linux. Peter
|
|||
|
Bieringer has written an excellent Linux IPv6 HOWTO.
|
|||
|
|
|||
|
There is one OLSR implementation that is becoming the "standard" and most
|
|||
|
widely used. It goes by the descriptive name "OLSRd" (old Unik-OLSR).
|
|||
|
|
|||
|
OLSRd is an implementation based on the INRA C code, but has been almost
|
|||
|
completely rewritten, so there is not much left of the original INRA code
|
|||
|
(that mean it almost GPL). OLSRd also is under very rapid development, and if
|
|||
|
you report in a bug, it is usually fixed in a matter of hours.
|
|||
|
|
|||
|
OLSRd [http://www.olsr.org/index.cgi?action=comp] fully comply to the OLSR
|
|||
|
RFC, support for plugins, and it has an optional GUI interface (to see what's
|
|||
|
going on). The implementation also has a informative "up-to-date" [http://
|
|||
|
www.olsr.org] web-page with links to mailing lists and papers.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
3.1. Installing OLSRd
|
|||
|
|
|||
|
There are up-to multiple new releases of OLSRd each month, so check the OLSRd
|
|||
|
[http://www.olsr.org] web-site for the newest release.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1. The latest release as of this writing is 0.4.3, but by the time you read
|
|||
|
this there is almost certain a new release. Fetch the latest release from
|
|||
|
[http://www.olsr.org/index.cgi?action=download] http://www.olsr.org/
|
|||
|
index.cgi?action=download.
|
|||
|
|
|||
|
2. Unpack, compile and install the source code:
|
|||
|
# tar jxvf uolsrd-x.y.z
|
|||
|
# cd unik-olsrd-x.y.z
|
|||
|
# make
|
|||
|
# make install
|
|||
|
|
|||
|
|
|||
|
3. The olsrd gets installed to /usr/bin/ and a default config file,
|
|||
|
olsrd.conf can be found under /etc
|
|||
|
|
|||
|
|
|||
|
Check out the /etc/olsrd.conf config file, and change values to fit your
|
|||
|
system. All values in this file can be overridden with command line options
|
|||
|
to olsrd. The main options to change are:
|
|||
|
|
|||
|
|
|||
|
# Debug level(0-9)
|
|||
|
# If set to 0 the daemon runs in the background
|
|||
|
DEBUG 1
|
|||
|
# IP version to use (4 or 6)
|
|||
|
IPVERSION 6
|
|||
|
# A list of whitespace separated interface names
|
|||
|
INTERFACES eth1
|
|||
|
|
|||
|
|
|||
|
Later on, when you know OLSRd is configured correctly, you may set "DEBUG"
|
|||
|
to 0 to make it run in the background. You may then also add it to your init
|
|||
|
scripts. But to test that everything first, set this to at least 1 (setting
|
|||
|
this higher will produce a lot more info messages on APM, forwarding, parsing
|
|||
|
of the config file etc.)
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
3.2. Using OLSRd
|
|||
|
|
|||
|
3.2.1. On one host
|
|||
|
|
|||
|
When OLSRd is installed and configured, it can be started as root with:
|
|||
|
# olsrd
|
|||
|
|
|||
|
|
|||
|
All the settings in /etc/olsrd.conf can be overridden by command line
|
|||
|
options:
|
|||
|
# olsrd -i eth1 -ipv6 -d 1
|
|||
|
|
|||
|
|
|||
|
Would start olsrd listening on interface eth1 using IPv6 and with debug
|
|||
|
messages.
|
|||
|
|
|||
|
We start olsrd:
|
|||
|
# olsrd -i eth1 -d 1 -ipv6
|
|||
|
|
|||
|
*** UniK olsrd-0.4.3 ***
|
|||
|
|
|||
|
hello interval = 2.00 hello int nonwireless: = 4.00 (1)
|
|||
|
tc interval = 5.00 polling interval = 0.10
|
|||
|
neighbor_hold_time = 6.00 neighbor_hold_time_nw = 12.00
|
|||
|
topology_hold_time = 15.00 tos setting = 16
|
|||
|
hna_interval = 15.00 mid_interval = 5.00
|
|||
|
Willingness set to 3 - next update in 20.000000 secs
|
|||
|
Using IP version 6
|
|||
|
Using multicast address ff05::15
|
|||
|
|
|||
|
---- Interface configuration ----
|
|||
|
|
|||
|
eth1: (2)
|
|||
|
Address: fec0:106:2700::10
|
|||
|
Multicast: ff05::15
|
|||
|
Interface eth1 set up for use with index 0
|
|||
|
|
|||
|
|
|||
|
Main address: fec0:106:2700::10 (3)
|
|||
|
|
|||
|
NEIGHBORS: l=linkstate, m=MPR, w=willingness
|
|||
|
|
|||
|
Thread created - polling every 0.10 seconds (4)
|
|||
|
neighbor list: 11:43:17.214807
|
|||
|
neighbor list: 11:43:19.194967
|
|||
|
neighbor list: 11:43:21.395046
|
|||
|
neighbor list: 11:43:23.604800
|
|||
|
neighbor list: 11:43:25.694875
|
|||
|
|
|||
|
|
|||
|
(1) This shows all the settings OLSRd is using. You may override these by
|
|||
|
either specifying it in the config file (/etc/olsrd.conf) or specify it
|
|||
|
at the command line. Read the [http://www.ietf.org/rfc/rfc3626.txt] OLSR
|
|||
|
RFC for a description on what all these settings means.
|
|||
|
(2) OLSRd found our interface. If you are using OLSRd with multiple
|
|||
|
interfaces, "Multiple Interface Declaration" (MID) messages will be
|
|||
|
generated.
|
|||
|
(3) If you are using OLSRd with multiple interfaces, it will pick the first
|
|||
|
interface specified as the "main" address.
|
|||
|
(4) Since no other hosts are running OLSRd, this list is empty.
|
|||
|
|
|||
|
Another thing worth noticing, is that an entry is added to our routing table:
|
|||
|
# route -A inet6
|
|||
|
Destination: Next Hop Flags Metric Ref Use Iface
|
|||
|
...
|
|||
|
ff05::15/128 ff05::15 UAC 0 1 1 eth1
|
|||
|
...
|
|||
|
|
|||
|
|
|||
|
This is the IPv6 multicast address OLSR is using to talk to other nodes
|
|||
|
running OLSR.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
3.2.2. Adding other hosts
|
|||
|
|
|||
|
There is no point in using OLSRd on only one node, so we add some nodes. You
|
|||
|
will then see the "neighbor list" gets updated:
|
|||
|
neighbor list: 12:55:14.733586
|
|||
|
neighbor list: 12:55:18.803585
|
|||
|
Willingness for fec0:106:2700::11 changed from 0 to 3 - UPDATING (1)
|
|||
|
neighbor list: 12:55:22.763585
|
|||
|
fec0:106:2700::11:l=0:m=0:w=3[2hlist:] (2)
|
|||
|
neighbor list: 12:55:26.833589
|
|||
|
fec0:106:2700::11:l=1:m=0:w=3[2hlist:]
|
|||
|
Willingness for fec0:106:2700::12 changed from 0 to 2 - UPDATING (3)
|
|||
|
neighbor list: 12:55:30.903585
|
|||
|
fec0:106:2700::12:l=0:m=0:w=2[2hlist:]
|
|||
|
fec0:106:2700::11:l=1:m=0:w=3[2hlist:]
|
|||
|
neighbor list: 12:55:34.863585
|
|||
|
fec0:106:2700::12:l=0:m=0:w=2[2hlist:]
|
|||
|
fec0:106:2700::11:l=1:m=0:w=3[2hlist:]
|
|||
|
neighbor list: 12:55:39.153586
|
|||
|
fec0:106:2700::12:l=1:m=0:w=2[2hlist:fec0:106:2700::11:] (4)
|
|||
|
fec0:106:2700::11:l=1:m=0:w=3[2hlist:fec0:106:2700::12:] (5)
|
|||
|
neighbor list: 12:55:43.443605
|
|||
|
fec0:106:2700::12:l=1:m=0:w=2[2hlist:fec0:106:2700::11:]
|
|||
|
fec0:106:2700::11:l=1:m=0:w=3[2hlist:fec0:106:2700::12:]
|
|||
|
|
|||
|
|
|||
|
(1) Another node detected (node B). This specifies the willingness of a
|
|||
|
node to carry and forward traffic for other nodes. Here the new node
|
|||
|
fec0:106:2700::11 is willing to forward traffic. A host with low battery
|
|||
|
may not be willing to forward large amount of traffic, - so it will
|
|||
|
proclaim a lower willingness value (routing based on powerstatus is
|
|||
|
available as a plugin).
|
|||
|
(2) The node has been added to our routing table. We can not (yet) reach
|
|||
|
any other node by way of this node, since the 2-hop neighbor list (
|
|||
|
[2hlist:]) is empty. A 2-hop neighbor is a node heard by a neighbor.
|
|||
|
(3) Here is a third node (node C) running OLSRd.
|
|||
|
(4) After a short time, when all nodes have been updated and routes
|
|||
|
calculated, we may also reach any of the other nodes via the other. The
|
|||
|
2-hop neighbor list ([2hlist:]) is populated: We can reach node B via C.
|
|||
|
(5) Here we can reach node C via B.
|
|||
|
|
|||
|
You will also see the routing table is updated with the new hosts:
|
|||
|
# route -A inet6
|
|||
|
Destination: Next Hop Flags Metric Ref Use Iface
|
|||
|
...
|
|||
|
fec0:106:2700::11/128 :: UH 1 0 0 eth1
|
|||
|
fec0:106:2700::12/128 :: UH 1 0 0 eth1
|
|||
|
...
|
|||
|
|
|||
|
|
|||
|
The real beauty of OLSR is when you add a bunch of nodes and move them
|
|||
|
around. You can still reach each one of them either directly (if they are
|
|||
|
close), or through other nodes.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
3.2.3. Movement
|
|||
|
|
|||
|
When every node can reach every other node, it's no fun. Let's start moving
|
|||
|
the nodes, so that node "A" and "B" are out of (radio) range of each other.
|
|||
|
So when we move node "A" far enough away so that it can't hear node "C", all
|
|||
|
traffic must go through node "B":
|
|||
|
|
|||
|
[movement]
|
|||
|
|
|||
|
We move our three nodes so that node A and C must speak through node B to
|
|||
|
reach each other.
|
|||
|
|
|||
|
Tip: Instead of physically moving the nodes around, you can use ip6tables.
|
|||
|
You can drop all packet using the MAC-address. You just need to block on one
|
|||
|
node:
|
|||
|
# ip6tables -A INPUT -m mac --mac-source XX:XX:XX:XX:XX:XX -j DROP
|
|||
|
|
|||
|
|
|||
|
The output from OLSRd on host A is then:
|
|||
|
neighbor list: 13:22:35.693587
|
|||
|
fec0:106:2700::11:l=1:m=1:w=3[2hlist:fec0:106:2700::12:] (1)
|
|||
|
neighbor list: 13:22:40.093588
|
|||
|
fec0:106:2700::11:l=1:m=1:w=3[2hlist:fec0:106:2700::12:]
|
|||
|
neighbor list: 13:22:44.053594
|
|||
|
fec0:106:2700::11:l=1:m=1:w=3[2hlist:fec0:106:2700::12:]
|
|||
|
neighbor list: 13:22:48.233594
|
|||
|
fec0:106:2700::11:l=1:m=1:w=3[2hlist:fec0:106:2700::12:]
|
|||
|
neighbor list: 13:22:52.193605
|
|||
|
fec0:106:2700::11:l=1:m=1:w=3[2hlist:fec0:106:2700::12:]
|
|||
|
|
|||
|
|
|||
|
(1) We can reach node B directly, and via node B we can reach node C.
|
|||
|
|
|||
|
The routing table also gets updated. For node A to reach node C it must go
|
|||
|
through node B:
|
|||
|
# route -A inet6
|
|||
|
Destination: Next Hop Flags Metric Ref Use Iface
|
|||
|
...
|
|||
|
fec0:106:2700::11/128 :: UH 1 1 0 eth1
|
|||
|
fec0:106:2700::12/128 fec0:106:2700::11 UGH 2 0 0 eth1
|
|||
|
...
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
3.3. What about HNA messages?
|
|||
|
|
|||
|
" In order to provide this capability of injecting external routing
|
|||
|
information into an OLSR MANET, a node with such non-MANET interfaces
|
|||
|
periodically issues a Host and Network Association (HNA) message, containing
|
|||
|
sufficient information for the recipients to construct an appropriate routing
|
|||
|
table."
|
|||
|
|
|||
|
" An example of such a situation could be where a node is equipped with a
|
|||
|
fixed network (e.g., an Ethernet) connecting to a larger network as well as a
|
|||
|
wireless network interface running OLSR." --- RFC3626: OLSR, section 12 (page
|
|||
|
51).
|
|||
|
|
|||
|
[HNA]
|
|||
|
|
|||
|
OLSR with a gateway (GW), that sends out HNA messages. All the other nodes
|
|||
|
may then be accessing the "Internet"
|
|||
|
|
|||
|
To have one node, act as a gateway and send out HNA messages, you must
|
|||
|
change the HNA6 in /etc/olsrd.conf:
|
|||
|
# HNA IPv6 routes
|
|||
|
# syntax: netaddr prefix
|
|||
|
# Example Internet gateway
|
|||
|
HNA6 :: 0
|
|||
|
|
|||
|
|
|||
|
When you start OLSRd, you will see the node is sending out HNA messages
|
|||
|
periodically:
|
|||
|
...
|
|||
|
Sending HNA (48 bytes)...
|
|||
|
...
|
|||
|
|
|||
|
|
|||
|
When the other nodes receives a HNA message, they update their routing
|
|||
|
table:
|
|||
|
# route -A inet6
|
|||
|
Destination: Next Hop Flags Metric Ref Use Iface
|
|||
|
...
|
|||
|
::/0 fec0:106:2700::1 UG 1 0 0 eth1
|
|||
|
...
|
|||
|
|
|||
|
|
|||
|
You may also have multiple nodes in a MANET to act as gateways (sending out
|
|||
|
HNA messages). Each mobile node then use the nearest gateway.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
3.4. Plugin support
|
|||
|
|
|||
|
As of version 0.4.3 OLSRd also support plugins. Plugins may be used to add
|
|||
|
extended functionality in a MANET. If only a subset of the nodes knows how to
|
|||
|
interpret the messagetype, it will be forwarded by all the nodes by the
|
|||
|
"default forwarding algorithm" (see section 3.4.1 in the [http://ietf.org/rfc
|
|||
|
/rfc3626.txt] OLSR RFC). This way certain nodes may add special functionlity
|
|||
|
into OLSR.
|
|||
|
|
|||
|
As of this writing, two example plugins is included in the OLSRd release. One
|
|||
|
of these plugins add routing based on powerstatus. If one node has low
|
|||
|
battery, it can set its willingness lower and traffic may be routed through
|
|||
|
other nodes.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
3.5. Optional GUI
|
|||
|
|
|||
|
OLSRd also has an optional GUI, which can show a list of available nodes
|
|||
|
and grab packets. To compile the GUI front end, you must have GTK2. In
|
|||
|
unik-olsrd-x.y.z directory do:
|
|||
|
# cd front-end
|
|||
|
# make
|
|||
|
# make install
|
|||
|
|
|||
|
|
|||
|
Note Remember to start OLSRd with the -ipc switch or set IPC-CONNECT yes in /
|
|||
|
etc/olsrd.conf to enable the GUI to chat with OLSRd.
|
|||
|
|
|||
|
To see some examples of the use of GUI, check out [http://www.olsr.org/
|
|||
|
index.cgi?action=gui] http://www.olsr.org/index.cgi?action=gui
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
3.6. Other OLSR implementations
|
|||
|
|
|||
|
There is also other OLSR implementations, none have gained as much popularity
|
|||
|
as OLSRd, and none of them (except [http://qolsr.lri.fr/] QOLSR?) are fully
|
|||
|
RFC compliant.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
3.6.1. INRIA
|
|||
|
|
|||
|
INRIA was one of the first(?) implementation of OLSR [http://
|
|||
|
hipercom.inria.fr/olsr/#code] http://hipercom.inria.fr/olsr/#code. Their
|
|||
|
web-site has not been updated for quite a while, and the OLSR code you can
|
|||
|
download only complies to draft-ietf-manet-olsr-03.txt (it's now an RFC).
|
|||
|
There is suppose to be another more up-to-date version of INRIA olsr, but I
|
|||
|
have not found it. INRIA OLSR does not support IPv6.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
3.6.2. NROLSR
|
|||
|
|
|||
|
The "US Naval Research Laboratory" (NRL) also has an OLSR implementation. It
|
|||
|
is written in C++, and has IPv6 support. [http://pf.itd.nrl.navy.mil/projects
|
|||
|
/olsr/] http://pf.itd.nrl.navy.mil/projects/olsr/
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
3.6.3. CRCOLSR
|
|||
|
|
|||
|
CRCOLSR is a implementation based on the French INRIA code. It is is supposed
|
|||
|
to be maintained by "Communication Research Center" (CRC) in Canada. But as
|
|||
|
of this writing, there have been no new releases since April 3, 2003. [http:/
|
|||
|
/pf.itd.nrl.navy.mil/projects/olsr/] http://pf.itd.nrl.navy.mil/projects/
|
|||
|
olsr/
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
3.6.4. QOLSR
|
|||
|
|
|||
|
QOLSR is aiming to provide "Quality of Service" routing in wireless mobile ad
|
|||
|
hoc networks. There is no QoS support at the time of this writing, and
|
|||
|
support for ipv4/ipv6 is triggered at compile time. Written in C++.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
4. FAQ
|
|||
|
|
|||
|
Some of these question/answers are from the [http://www.olsr.org] OLSRd site.
|
|||
|
|
|||
|
4.1. If OLSRd fully RFC3626 compliant?
|
|||
|
4.2. Can I mix site-local and global IPv6 addresses?
|
|||
|
4.3. The GUI front-end failed to compile...why?
|
|||
|
4.4. If there is multiply gateways present, how does the mobile node conclude
|
|||
|
to use the nearest one?
|
|||
|
4.5. I get OLSRd up and running - but the nodes don't seem to "hear" each
|
|||
|
other!
|
|||
|
|
|||
|
4.1. If OLSRd fully RFC3626 compliant?
|
|||
|
|
|||
|
Yes. It even has implemented some of the extra functionality mentioned in the
|
|||
|
RFC. See the [http://www.olsr.org/index.cgi?action=comp] RFC Compliance
|
|||
|
section for complete list.
|
|||
|
|
|||
|
4.2. Can I mix site-local and global IPv6 addresses?
|
|||
|
|
|||
|
Yes. But keep in mind that they intentionally were not designed to be used at
|
|||
|
the same time. The network topology can be quite "messy" if you start using
|
|||
|
these two.
|
|||
|
|
|||
|
4.3. The GUI front-end failed to compile...why?
|
|||
|
|
|||
|
You probably don't have the GTK2.0 development libraries installed.
|
|||
|
|
|||
|
4.4. If there is multiply gateways present, how does the mobile node conclude
|
|||
|
to use the nearest one?
|
|||
|
|
|||
|
When a new gateway is detected, the Mobile Node checks the distance (number
|
|||
|
of hops) to this newly discovered gateway compared to the current gateway. If
|
|||
|
there is a shorter distance, this new gateway becomes the current (default)
|
|||
|
gateway. See section 12.6.2 in the OLSR RFC ([http://www.ietf.org/rfc/
|
|||
|
rfc3626.txt] RFC3626)
|
|||
|
|
|||
|
4.5. I get OLSRd up and running - but the nodes don't seem to "hear" each
|
|||
|
other!
|
|||
|
|
|||
|
Most of the time this is a configuration error: Check the following:
|
|||
|
|
|||
|
<EFBFBD><EFBFBD>*<2A> If using WLAN interfaces make sure the ESSID/key match.
|
|||
|
|
|||
|
<EFBFBD><EFBFBD>*<2A> Make sure the cards are set in "ad-hoc" mode and not "managed".
|
|||
|
|
|||
|
<EFBFBD><EFBFBD>*<2A> Make sure you are not blocking UDP/698. If using netfilter run
|
|||
|
ip6tables -L as root to see what rules are set. ip6tables -F flushes all
|
|||
|
rules.
|
|||
|
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
5. Useful Resources
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1. OLSRd (old uOLSR)[http://www.olsr.org] http://www.olsr.org
|
|||
|
|
|||
|
2. Optimized Link State Routing Protocol (OLSR) RFC3626[http://www.ietf.org/
|
|||
|
rfc/rfc3626.txt] http://www.ietf.org/rfc/rfc3626.txt
|
|||
|
|
|||
|
3. Mobile Ad hoc Networking (MANET) RFC2501[http://www.ietf.org/rfc/
|
|||
|
rfc2501.txt] http://www.ietf.org/rfc/rfc3626.txt
|
|||
|
|
|||
|
4. Mobile Ad-hoc Networks (manet) Working Group (IETF)[http://www.ietf.org/
|
|||
|
html.charters/manet-charter.html] http://www.ietf.org/html.charters/
|
|||
|
manet-charter.html
|
|||
|
|
|||
|
5. Open Shortest Path First IGP (ospf)[http://www.ietf.org/html.charters/
|
|||
|
ospf-charter.html] http://www.ietf.org/html.charters/ospf-charter.html
|
|||
|
|
|||
|
6. Protean Forge - OLSR software (CRC and NRL) [http://pf.itd.nrl.navy.mil/
|
|||
|
projects/olsr/] http://pf.itd.nrl.navy.mil/projects/olsr/
|
|||
|
|
|||
|
7. INRIA OLSR [http://hipercom.inria.fr/olsr/] http://hipercom.inria.fr/
|
|||
|
olsr/
|
|||
|
|
|||
|
8. QOLSR [http://qolsr.lri.fr/] http://qolsr.lri.fr/
|
|||
|
|
|||
|
9. IPv6 Working Group (IETF) [http://www.ietf.org/html.charters/
|
|||
|
ipv6-charter.html] http://www.ietf.org/html.charters/ipv6-charter.html
|
|||
|
|
|||
|
10. RFC2460 Internet Protocol, Version 6 (IPv6) Specification [http://
|
|||
|
www.ietf.org/rfc/rfc2460.txt] http://www.ietf.org/rfc/rfc2460.txt
|
|||
|
|
|||
|
11. Peter Bieringer's Linux IPv6 HOWTO (en) [http://ldp.linux.no/HOWTO/
|
|||
|
Linux+IPv6-HOWTO/] http://ldp.linux.no/HOWTO/Linux+IPv6-HOWTO/
|
|||
|
|
|||
|
12. Current Status of IPv6 Support for Networking Applications [http://
|
|||
|
www.deepspace6.net/docs/ipv6_status_page_apps.html] http://
|
|||
|
www.deepspace6.net/docs/ipv6_status_page_apps.html
|
|||
|
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
6. Copyright, acknowledgments and miscellaneous
|
|||
|
|
|||
|
6.1. Copyright and License
|
|||
|
|
|||
|
Copyright (c) 2003, 2004 Lars Strand.
|
|||
|
|
|||
|
Permission is granted to copy, distribute and/or modify this document under
|
|||
|
the terms of the GNU Free Documentation License, Version 1.2 or any later
|
|||
|
version published by the Free Software Foundation; with no Invariant
|
|||
|
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the
|
|||
|
license is included in the section entitled "GNU Free Documentation License".
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
6.2. How this document was produced
|
|||
|
|
|||
|
This document was originally written in LaTeX using Emacs. HTML version
|
|||
|
created with latex2html. Later it was converted to DocBook XML.
|
|||
|
|
|||
|
An up-to-date version of this document can be found at:
|
|||
|
|
|||
|
HTML: [http://www.tldp.org/HOWTO/OLSR-IPv6-HOWTO/index.html] http://
|
|||
|
www.tldp.org/HOWTO/OLSR-IPv6-HOWTO/index.html
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
6.3. Feedback
|
|||
|
|
|||
|
Suggestions, corrections, additions wanted. Contributors wanted and
|
|||
|
acknowledged. Flames not wanted.
|
|||
|
|
|||
|
I can always be reached at <lars at unik no>
|
|||
|
|
|||
|
Homepage: [http://www.gnist.org/~lars/] http://www.gnist.org/~lars/
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
6.4. Acknowledgments
|
|||
|
|
|||
|
This document was produced as a part of Interoperable Networks for Secure
|
|||
|
Communications [http://insc.nodeca.mil.no/] (INSC task 6)
|
|||
|
|
|||
|
Thanks to Andreas Hafslund (andreha [at] unik no) for initial support. Also
|
|||
|
thanks to UniK (University Graduate Center) [http://www.unik.no] http://
|
|||
|
www.unik.no and FFI (Norwegian Defence Research Establishment) [http://
|
|||
|
www.ffi.mil.no] http://www.ffi.mil.no for hardware support.
|
|||
|
|
|||
|
Also thanks to Andreas T<>nnesen (andreto [at] unik no) for technical help
|
|||
|
updating this howto
|
|||
|
|
|||
|
Thanks also to the other HOWTO authors whose works I have referenced:
|
|||
|
|
|||
|
Linux IPv6 HOWTO (en) by Peter Bieringer
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
A. GNU Free Documentation License
|
|||
|
|
|||
|
Version 1.2, November 2002
|
|||
|
|
|||
|
|
|||
|
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 59 Temple
|
|||
|
Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy
|
|||
|
and distribute verbatim copies of this license document, but changing it
|
|||
|
is not allowed.
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
A.1. PREAMBLE
|
|||
|
|
|||
|
The purpose of this License is to make a manual, textbook, or other
|
|||
|
functional and useful document "free" in the sense of freedom: to assure
|
|||
|
everyone the effective freedom to copy and redistribute it, with or without
|
|||
|
modifying it, either commercially or noncommercially. Secondarily, this
|
|||
|
License preserves for the author and publisher a way to get credit for their
|
|||
|
work, while not being considered responsible for modifications made by
|
|||
|
others.
|
|||
|
|
|||
|
This License is a kind of "copyleft", which means that derivative works of
|
|||
|
the document must themselves be free in the same sense. It complements the
|
|||
|
GNU General Public License, which is a copyleft license designed for free
|
|||
|
software.
|
|||
|
|
|||
|
We have designed this License in order to use it for manuals for free
|
|||
|
software, because free software needs free documentation: a free program
|
|||
|
should come with manuals providing the same freedoms that the software does.
|
|||
|
But this License is not limited to software manuals; it can be used for any
|
|||
|
textual work, regardless of subject matter or whether it is published as a
|
|||
|
printed book. We recommend this License principally for works whose purpose
|
|||
|
is instruction or reference.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
A.2. APPLICABILITY AND DEFINITIONS
|
|||
|
|
|||
|
This License applies to any manual or other work, in any medium, that
|
|||
|
contains a notice placed by the copyright holder saying it can be distributed
|
|||
|
under the terms of this License. Such a notice grants a world-wide,
|
|||
|
royalty-free license, unlimited in duration, to use that work under the
|
|||
|
conditions stated herein. The "Document", below, refers to any such manual or
|
|||
|
work. Any member of the public is a licensee, and is addressed as "you". You
|
|||
|
accept the license if you copy, modify or distribute the work in a way
|
|||
|
requiring permission under copyright law.
|
|||
|
|
|||
|
A "Modified Version" of the Document means any work containing the Document
|
|||
|
or a portion of it, either copied verbatim, or with modifications and/or
|
|||
|
translated into another language.
|
|||
|
|
|||
|
A "Secondary Section" is a named appendix or a front-matter section of the
|
|||
|
Document that deals exclusively with the relationship of the publishers or
|
|||
|
authors of the Document to the Document's overall subject (or to related
|
|||
|
matters) and contains nothing that could fall directly within that overall
|
|||
|
subject. (Thus, if the Document is in part a textbook of mathematics, a
|
|||
|
Secondary Section may not explain any mathematics.) The relationship could be
|
|||
|
a matter of historical connection with the subject or with related matters,
|
|||
|
or of legal, commercial, philosophical, ethical or political position
|
|||
|
regarding them.
|
|||
|
|
|||
|
The "Invariant Sections" are certain Secondary Sections whose titles are
|
|||
|
designated, as being those of Invariant Sections, in the notice that says
|
|||
|
that the Document is released under this License. If a section does not fit
|
|||
|
the above definition of Secondary then it is not allowed to be designated as
|
|||
|
Invariant. The Document may contain zero Invariant Sections. If the Document
|
|||
|
does not identify any Invariant Sections then there are none.
|
|||
|
|
|||
|
The "Cover Texts" are certain short passages of text that are listed, as
|
|||
|
Front-Cover Texts or Back-Cover Texts, in the notice that says that the
|
|||
|
Document is released under this License. A Front-Cover Text may be at most 5
|
|||
|
words, and a Back-Cover Text may be at most 25 words.
|
|||
|
|
|||
|
A "Transparent" copy of the Document means a machine-readable copy,
|
|||
|
represented in a format whose specification is available to the general
|
|||
|
public, that is suitable for revising the document straightforwardly with
|
|||
|
generic text editors or (for images composed of pixels) generic paint
|
|||
|
programs or (for drawings) some widely available drawing editor, and that is
|
|||
|
suitable for input to text formatters or for automatic translation to a
|
|||
|
variety of formats suitable for input to text formatters. A copy made in an
|
|||
|
otherwise Transparent file format whose markup, or absence of markup, has
|
|||
|
been arranged to thwart or discourage subsequent modification by readers is
|
|||
|
not Transparent. An image format is not Transparent if used for any
|
|||
|
substantial amount of text. A copy that is not "Transparent" is called
|
|||
|
"Opaque".
|
|||
|
|
|||
|
Examples of suitable formats for Transparent copies include plain ASCII
|
|||
|
without markup, Texinfo input format, LaTeX input format, SGML or XML using a
|
|||
|
publicly available DTD, and standard-conforming simple HTML, PostScript or
|
|||
|
PDF designed for human modification. Examples of transparent image formats
|
|||
|
include PNG, XCF and JPG. Opaque formats include proprietary formats that can
|
|||
|
be read and edited only by proprietary word processors, SGML or XML for which
|
|||
|
the DTD and/or processing tools are not generally available, and the
|
|||
|
machine-generated HTML, PostScript or PDF produced by some word processors
|
|||
|
for output purposes only.
|
|||
|
|
|||
|
The "Title Page" means, for a printed book, the title page itself, plus such
|
|||
|
following pages as are needed to hold, legibly, the material this License
|
|||
|
requires to appear in the title page. For works in formats which do not have
|
|||
|
any title page as such, "Title Page" means the text near the most prominent
|
|||
|
appearance of the work's title, preceding the beginning of the body of the
|
|||
|
text.
|
|||
|
|
|||
|
A section "Entitled XYZ" means a named subunit of the Document whose title
|
|||
|
either is precisely XYZ or contains XYZ in parentheses following text that
|
|||
|
translates XYZ in another language. (Here XYZ stands for a specific section
|
|||
|
name mentioned below, such as "Acknowledgements", "Dedications",
|
|||
|
"Endorsements", or "History".) To "Preserve the Title" of such a section when
|
|||
|
you modify the Document means that it remains a section "Entitled XYZ"
|
|||
|
according to this definition.
|
|||
|
|
|||
|
The Document may include Warranty Disclaimers next to the notice which states
|
|||
|
that this License applies to the Document. These Warranty Disclaimers are
|
|||
|
considered to be included by reference in this License, but only as regards
|
|||
|
disclaiming warranties: any other implication that these Warranty Disclaimers
|
|||
|
may have is void and has no effect on the meaning of this License.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
A.3. VERBATIM COPYING
|
|||
|
|
|||
|
You may copy and distribute the Document in any medium, either commercially
|
|||
|
or noncommercially, provided that this License, the copyright notices, and
|
|||
|
the license notice saying this License applies to the Document are reproduced
|
|||
|
in all copies, and that you add no other conditions whatsoever to those of
|
|||
|
this License. You may not use technical measures to obstruct or control the
|
|||
|
reading or further copying of the copies you make or distribute. However, you
|
|||
|
may accept compensation in exchange for copies. If you distribute a large
|
|||
|
enough number of copies you must also follow the conditions in section 3.
|
|||
|
|
|||
|
You may also lend copies, under the same conditions stated above, and you may
|
|||
|
publicly display copies.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
A.4. COPYING IN QUANTITY
|
|||
|
|
|||
|
If you publish printed copies (or copies in media that commonly have printed
|
|||
|
covers) of the Document, numbering more than 100, and the Document's license
|
|||
|
notice requires Cover Texts, you must enclose the copies in covers that
|
|||
|
carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the
|
|||
|
front cover, and Back-Cover Texts on the back cover. Both covers must also
|
|||
|
clearly and legibly identify you as the publisher of these copies. The front
|
|||
|
cover must present the full title with all words of the title equally
|
|||
|
prominent and visible. You may add other material on the covers in addition.
|
|||
|
Copying with changes limited to the covers, as long as they preserve the
|
|||
|
title of the Document and satisfy these conditions, can be treated as
|
|||
|
verbatim copying in other respects.
|
|||
|
|
|||
|
If the required texts for either cover are too voluminous to fit legibly, you
|
|||
|
should put the first ones listed (as many as fit reasonably) on the actual
|
|||
|
cover, and continue the rest onto adjacent pages.
|
|||
|
|
|||
|
If you publish or distribute Opaque copies of the Document numbering more
|
|||
|
than 100, you must either include a machine-readable Transparent copy along
|
|||
|
with each Opaque copy, or state in or with each Opaque copy a
|
|||
|
computer-network location from which the general network-using public has
|
|||
|
access to download using public-standard network protocols a complete
|
|||
|
Transparent copy of the Document, free of added material. If you use the
|
|||
|
latter option, you must take reasonably prudent steps, when you begin
|
|||
|
distribution of Opaque copies in quantity, to ensure that this Transparent
|
|||
|
copy will remain thus accessible at the stated location until at least one
|
|||
|
year after the last time you distribute an Opaque copy (directly or through
|
|||
|
your agents or retailers) of that edition to the public.
|
|||
|
|
|||
|
It is requested, but not required, that you contact the authors of the
|
|||
|
Document well before redistributing any large number of copies, to give them
|
|||
|
a chance to provide you with an updated version of the Document.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
A.5. MODIFICATIONS
|
|||
|
|
|||
|
You may copy and distribute a Modified Version of the Document under the
|
|||
|
conditions of sections 2 and 3 above, provided that you release the Modified
|
|||
|
Version under precisely this License, with the Modified Version filling the
|
|||
|
role of the Document, thus licensing distribution and modification of the
|
|||
|
Modified Version to whoever possesses a copy of it. In addition, you must do
|
|||
|
these things in the Modified Version:
|
|||
|
|
|||
|
A. Use in the Title Page (and on the covers, if any) a title distinct from
|
|||
|
that of the Document, and from those of previous versions (which should,
|
|||
|
if there were any, be listed in the History section of the Document). You
|
|||
|
may use the same title as a previous version if the original publisher of
|
|||
|
that version gives permission.
|
|||
|
|
|||
|
B. List on the Title Page, as authors, one or more persons or entities
|
|||
|
responsible for authorship of the modifications in the Modified Version,
|
|||
|
together with at least five of the principal authors of the Document (all
|
|||
|
of its principal authors, if it has fewer than five), unless they release
|
|||
|
you from this requirement.
|
|||
|
|
|||
|
C. State on the Title page the name of the publisher of the Modified
|
|||
|
Version, as the publisher.
|
|||
|
|
|||
|
D. Preserve all the copyright notices of the Document.
|
|||
|
|
|||
|
E. Add an appropriate copyright notice for your modifications adjacent to
|
|||
|
the other copyright notices.
|
|||
|
|
|||
|
F. Include, immediately after the copyright notices, a license notice giving
|
|||
|
the public permission to use the Modified Version under the terms of this
|
|||
|
License, in the form shown in the Addendum below.
|
|||
|
|
|||
|
G. Preserve in that license notice the full lists of Invariant Sections and
|
|||
|
required Cover Texts given in the Document's license notice.
|
|||
|
|
|||
|
H. Include an unaltered copy of this License.
|
|||
|
|
|||
|
I. Preserve the section Entitled "History", Preserve its Title, and add to
|
|||
|
it an item stating at least the title, year, new authors, and publisher
|
|||
|
of the Modified Version as given on the Title Page. If there is no
|
|||
|
section Entitled "History" in the Document, create one stating the title,
|
|||
|
year, authors, and publisher of the Document as given on its Title Page,
|
|||
|
then add an item describing the Modified Version as stated in the
|
|||
|
previous sentence.
|
|||
|
|
|||
|
J. Preserve the network location, if any, given in the Document for public
|
|||
|
access to a Transparent copy of the Document, and likewise the network
|
|||
|
locations given in the Document for previous versions it was based on.
|
|||
|
These may be placed in the "History" section. You may omit a network
|
|||
|
location for a work that was published at least four years before the
|
|||
|
Document itself, or if the original publisher of the version it refers to
|
|||
|
gives permission.
|
|||
|
|
|||
|
K. For any section Entitled "Acknowledgements" or "Dedications", Preserve
|
|||
|
the Title of the section, and preserve in the section all the substance
|
|||
|
and tone of each of the contributor acknowledgements and/or dedications
|
|||
|
given therein.
|
|||
|
|
|||
|
L. Preserve all the Invariant Sections of the Document, unaltered in their
|
|||
|
text and in their titles. Section numbers or the equivalent are not
|
|||
|
considered part of the section titles.
|
|||
|
|
|||
|
M. Delete any section Entitled "Endorsements". Such a section may not be
|
|||
|
included in the Modified Version.
|
|||
|
|
|||
|
N. Do not retitle any existing section to be Entitled "Endorsements" or to
|
|||
|
conflict in title with any Invariant Section.
|
|||
|
|
|||
|
O. Preserve any Warranty Disclaimers.
|
|||
|
|
|||
|
|
|||
|
If the Modified Version includes new front-matter sections or appendices that
|
|||
|
qualify as Secondary Sections and contain no material copied from the
|
|||
|
Document, you may at your option designate some or all of these sections as
|
|||
|
invariant. To do this, add their titles to the list of Invariant Sections in
|
|||
|
the Modified Version's license notice. These titles must be distinct from any
|
|||
|
other section titles.
|
|||
|
|
|||
|
You may add a section Entitled "Endorsements", provided it contains nothing
|
|||
|
but endorsements of your Modified Version by various parties--for example,
|
|||
|
statements of peer review or that the text has been approved by an
|
|||
|
organization as the authoritative definition of a standard.
|
|||
|
|
|||
|
You may add a passage of up to five words as a Front-Cover Text, and a
|
|||
|
passage of up to 25 words as a Back-Cover Text, to the end of the list of
|
|||
|
Cover Texts in the Modified Version. Only one passage of Front-Cover Text and
|
|||
|
one of Back-Cover Text may be added by (or through arrangements made by) any
|
|||
|
one entity. If the Document already includes a cover text for the same cover,
|
|||
|
previously added by you or by arrangement made by the same entity you are
|
|||
|
acting on behalf of, you may not add another; but you may replace the old
|
|||
|
one, on explicit permission from the previous publisher that added the old
|
|||
|
one.
|
|||
|
|
|||
|
The author(s) and publisher(s) of the Document do not by this License give
|
|||
|
permission to use their names for publicity for or to assert or imply
|
|||
|
endorsement of any Modified Version.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
A.6. COMBINING DOCUMENTS
|
|||
|
|
|||
|
You may combine the Document with other documents released under this
|
|||
|
License, under the terms defined in section 4 above for modified versions,
|
|||
|
provided that you include in the combination all of the Invariant Sections of
|
|||
|
all of the original documents, unmodified, and list them all as Invariant
|
|||
|
Sections of your combined work in its license notice, and that you preserve
|
|||
|
all their Warranty Disclaimers.
|
|||
|
|
|||
|
The combined work need only contain one copy of this License, and multiple
|
|||
|
identical Invariant Sections may be replaced with a single copy. If there are
|
|||
|
multiple Invariant Sections with the same name but different contents, make
|
|||
|
the title of each such section unique by adding at the end of it, in
|
|||
|
parentheses, the name of the original author or publisher of that section if
|
|||
|
known, or else a unique number. Make the same adjustment to the section
|
|||
|
titles in the list of Invariant Sections in the license notice of the
|
|||
|
combined work.
|
|||
|
|
|||
|
In the combination, you must combine any sections Entitled "History" in the
|
|||
|
various original documents, forming one section Entitled "History"; likewise
|
|||
|
combine any sections Entitled "Acknowledgements", and any sections Entitled
|
|||
|
"Dedications". You must delete all sections Entitled "Endorsements".
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
A.7. COLLECTIONS OF DOCUMENTS
|
|||
|
|
|||
|
You may make a collection consisting of the Document and other documents
|
|||
|
released under this License, and replace the individual copies of this
|
|||
|
License in the various documents with a single copy that is included in the
|
|||
|
collection, provided that you follow the rules of this License for verbatim
|
|||
|
copying of each of the documents in all other respects.
|
|||
|
|
|||
|
You may extract a single document from such a collection, and distribute it
|
|||
|
individually under this License, provided you insert a copy of this License
|
|||
|
into the extracted document, and follow this License in all other respects
|
|||
|
regarding verbatim copying of that document.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
A.8. AGGREGATION WITH INDEPENDENT WORKS
|
|||
|
|
|||
|
A compilation of the Document or its derivatives with other separate and
|
|||
|
independent documents or works, in or on a volume of a storage or
|
|||
|
distribution medium, is called an "aggregate" if the copyright resulting from
|
|||
|
the compilation is not used to limit the legal rights of the compilation's
|
|||
|
users beyond what the individual works permit. When the Document is included
|
|||
|
in an aggregate, this License does not apply to the other works in the
|
|||
|
aggregate which are not themselves derivative works of the Document.
|
|||
|
|
|||
|
If the Cover Text requirement of section 3 is applicable to these copies of
|
|||
|
the Document, then if the Document is less than one half of the entire
|
|||
|
aggregate, the Document's Cover Texts may be placed on covers that bracket
|
|||
|
the Document within the aggregate, or the electronic equivalent of covers if
|
|||
|
the Document is in electronic form. Otherwise they must appear on printed
|
|||
|
covers that bracket the whole aggregate.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
A.9. TRANSLATION
|
|||
|
|
|||
|
Translation is considered a kind of modification, so you may distribute
|
|||
|
translations of the Document under the terms of section 4. Replacing
|
|||
|
Invariant Sections with translations requires special permission from their
|
|||
|
copyright holders, but you may include translations of some or all Invariant
|
|||
|
Sections in addition to the original versions of these Invariant Sections.
|
|||
|
You may include a translation of this License, and all the license notices in
|
|||
|
the Document, and any Warranty Disclaimers, provided that you also include
|
|||
|
the original English version of this License and the original versions of
|
|||
|
those notices and disclaimers. In case of a disagreement between the
|
|||
|
translation and the original version of this License or a notice or
|
|||
|
disclaimer, the original version will prevail.
|
|||
|
|
|||
|
If a section in the Document is Entitled "Acknowledgements", "Dedications",
|
|||
|
or "History", the requirement (section 4) to Preserve its Title (section 1)
|
|||
|
will typically require changing the actual title.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
A.10. TERMINATION
|
|||
|
|
|||
|
You may not copy, modify, sublicense, or distribute the Document except as
|
|||
|
expressly provided for under this License. Any other attempt to copy, modify,
|
|||
|
sublicense or distribute the Document is void, and will automatically
|
|||
|
terminate your rights under this License. However, parties who have received
|
|||
|
copies, or rights, from you under this License will not have their licenses
|
|||
|
terminated so long as such parties remain in full compliance.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
A.11. FUTURE REVISIONS OF THIS LICENSE
|
|||
|
|
|||
|
The Free Software Foundation may publish new, revised versions of the GNU
|
|||
|
Free Documentation License from time to time. Such new versions will be
|
|||
|
similar in spirit to the present version, but may differ in detail to address
|
|||
|
new problems or concerns. See http://www.gnu.org/copyleft/.
|
|||
|
|
|||
|
Each version of the License is given a distinguishing version number. If the
|
|||
|
Document specifies that a particular numbered version of this License "or any
|
|||
|
later version" applies to it, you have the option of following the terms and
|
|||
|
conditions either of that specified version or of any later version that has
|
|||
|
been published (not as a draft) by the Free Software Foundation. If the
|
|||
|
Document does not specify a version number of this License, you may choose
|
|||
|
any version ever published (not as a draft) by the Free Software Foundation.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
A.12. ADDENDUM: How to use this License for your documents
|
|||
|
|
|||
|
To use this License in a document you have written, include a copy of the
|
|||
|
License in the document and put the following copyright and license notices
|
|||
|
just after the title page:
|
|||
|
|
|||
|
|
|||
|
Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute
|
|||
|
and/or modify this document under the terms of the GNU Free Documentation
|
|||
|
License, Version 1.2 or any later version published by the Free Software
|
|||
|
Foundation; with no Invariant Sections, no Front-Cover Texts, and no
|
|||
|
Back-Cover Texts. A copy of the license is included in the section
|
|||
|
entitled "GNU Free Documentation License".
|
|||
|
|
|||
|
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
|
|||
|
replace the "with...Texts." line with this:
|
|||
|
|
|||
|
|
|||
|
with the Invariant Sections being LIST THEIR TITLES, with the
|
|||
|
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
|
|||
|
|
|||
|
If you have Invariant Sections without Cover Texts, or some other combination
|
|||
|
of the three, merge those two alternatives to suit the situation.
|
|||
|
|
|||
|
If your document contains nontrivial examples of program code, we recommend
|
|||
|
releasing these examples in parallel under your choice of free software
|
|||
|
license, such as the GNU General Public License, to permit their use in free
|
|||
|
software.
|