draft-ietf-manet-olsrv2-12.txt   draft-ietf-manet-olsrv2-13.txt 
Mobile Ad hoc Networking (MANET) T. Clausen Mobile Ad hoc Networking (MANET) T. Clausen
Internet-Draft LIX, Ecole Polytechnique Internet-Draft LIX, Ecole Polytechnique
Intended status: Standards Track C. Dearlove Intended status: Standards Track C. Dearlove
Expires: January 27, 2012 BAE Systems ATC Expires: April 16, 2012 BAE Systems ATC
P. Jacquet P. Jacquet
Project Hipercom, INRIA Project Hipercom, INRIA
July 26, 2011 October 14, 2011
The Optimized Link State Routing Protocol version 2 The Optimized Link State Routing Protocol version 2
draft-ietf-manet-olsrv2-12 draft-ietf-manet-olsrv2-13
Abstract Abstract
This document describes version 2 of the Optimized Link State Routing This document describes version 2 of the Optimized Link State Routing
(OLSRv2) protocol for Mobile Ad hoc NETworks (MANETs). (OLSRv2) protocol for Mobile Ad hoc NETworks (MANETs).
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
skipping to change at page 1, line 34 skipping to change at page 1, line 34
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on January 27, 2012. This Internet-Draft will expire on April 16, 2012.
Copyright Notice Copyright Notice
Copyright (c) 2011 IETF Trust and the persons identified as the Copyright (c) 2011 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 19 skipping to change at page 2, line 19
modifications of such material outside the IETF Standards Process. modifications of such material outside the IETF Standards Process.
Without obtaining an adequate license from the person(s) controlling Without obtaining an adequate license from the person(s) controlling
the copyright in such materials, this document may not be modified the copyright in such materials, this document may not be modified
outside the IETF Standards Process, and derivative works of it may outside the IETF Standards Process, and derivative works of it may
not be created outside the IETF Standards Process, except to format not be created outside the IETF Standards Process, except to format
it for publication as an RFC or to translate it into languages other it for publication as an RFC or to translate it into languages other
than English. than English.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 6
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 6 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 7
3. Applicability Statement . . . . . . . . . . . . . . . . . . . 8 3. Applicability Statement . . . . . . . . . . . . . . . . . . . 9
4. Protocol Overview and Functioning . . . . . . . . . . . . . . 9 4. Protocol Overview and Functioning . . . . . . . . . . . . . . 10
4.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . 10 4.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 10
4.2. Routers and Interfaces . . . . . . . . . . . . . . . . . . 12 4.2. Routers and Interfaces . . . . . . . . . . . . . . . . . 13
4.3. Information Base Overview . . . . . . . . . . . . . . . . 13 4.3. Information Base Overview . . . . . . . . . . . . . . . . 14
4.3.1. Local Information Base . . . . . . . . . . . . . . . . 13 4.3.1. Local Information Base . . . . . . . . . . . . . . . 14
4.3.2. Interface Information Bases . . . . . . . . . . . . . 13 4.3.2. Interface Information Bases . . . . . . . . . . . . . 14
4.3.3. Neighbor Information Base . . . . . . . . . . . . . . 14 4.3.3. Neighbor Information Base . . . . . . . . . . . . . . 14
4.3.4. Topology Information Base . . . . . . . . . . . . . . 14 4.3.4. Topology Information Base . . . . . . . . . . . . . . 15
4.3.5. Received Message Information Base . . . . . . . . . . 15 4.3.5. Received Message Information Base . . . . . . . . . . 16
4.4. Signaling Overview . . . . . . . . . . . . . . . . . . . . 15 4.4. Signaling Overview . . . . . . . . . . . . . . . . . . . 16
4.5. Link Metrics . . . . . . . . . . . . . . . . . . . . . . . 17 4.5. Link Metrics . . . . . . . . . . . . . . . . . . . . . . 17
4.6. Routing Set . . . . . . . . . . . . . . . . . . . . . . . 18 4.6. Routing Set Use . . . . . . . . . . . . . . . . . . . . . 18
5. Protocol Parameters and Constants . . . . . . . . . . . . . . 18 5. Protocol Parameters and Constants . . . . . . . . . . . . . . 19
5.1. Protocol and Port Numbers . . . . . . . . . . . . . . . . 18 5.1. Protocol and Port Numbers . . . . . . . . . . . . . . . . 19
5.2. Multicast Address . . . . . . . . . . . . . . . . . . . . 19 5.2. Multicast Address . . . . . . . . . . . . . . . . . . . . 19
5.3. Interface Parameters . . . . . . . . . . . . . . . . . . . 19 5.3. Interface Parameters . . . . . . . . . . . . . . . . . . 19
5.3.1. Received Message Validity Time . . . . . . . . . . . . 19 5.3.1. Received Message Validity Time . . . . . . . . . . . 20
5.4. Router Parameters . . . . . . . . . . . . . . . . . . . . 19 5.4. Router Parameters . . . . . . . . . . . . . . . . . . . . 20
5.4.1. Local History Times . . . . . . . . . . . . . . . . . 19 5.4.1. Local History Times . . . . . . . . . . . . . . . . . 20
5.4.2. Link_Metric_Parameters . . . . . . . . . . . . . . . . 19 5.4.2. Link Metric Parameters . . . . . . . . . . . . . . . 20
5.4.3. Message Intervals . . . . . . . . . . . . . . . . . . 20 5.4.3. Message Intervals . . . . . . . . . . . . . . . . . . 20
5.4.4. Advertised Information Validity Times . . . . . . . . 20 5.4.4. Advertised Information Validity Times . . . . . . . . 21
5.4.5. Processing and Forwarding Validity Times . . . . . . . 21 5.4.5. Processing and Forwarding Validity Times . . . . . . 22
5.4.6. Jitter . . . . . . . . . . . . . . . . . . . . . . . . 22 5.4.6. Jitter . . . . . . . . . . . . . . . . . . . . . . . 22
5.4.7. Hop Limit . . . . . . . . . . . . . . . . . . . . . . 22 5.4.7. Hop Limit . . . . . . . . . . . . . . . . . . . . . . 23
5.4.8. Willingness . . . . . . . . . . . . . . . . . . . . . 23 5.4.8. Willingness . . . . . . . . . . . . . . . . . . . . . 23
5.5. Parameter Change Constraints . . . . . . . . . . . . . . . 24 5.5. Parameter Change Constraints . . . . . . . . . . . . . . 24
5.6. Constants . . . . . . . . . . . . . . . . . . . . . . . . 25 5.6. Constants . . . . . . . . . . . . . . . . . . . . . . . . 26
5.6.1. Link Metric Constants . . . . . . . . . . . . . . . . 25 5.6.1. Link Metric Constants . . . . . . . . . . . . . . . . 26
6. Link Metric Values . . . . . . . . . . . . . . . . . . . . . . 26 5.6.2. Willingness Constants . . . . . . . . . . . . . . . . 26
6.1. Link Metric Representation . . . . . . . . . . . . . . . . 26 6. Link Metric Values . . . . . . . . . . . . . . . . . . . . . 27
6.2. Link Metric Compressed Form . . . . . . . . . . . . . . . 26 6.1. Link Metric Representation . . . . . . . . . . . . . . . 27
7. Local Information Base . . . . . . . . . . . . . . . . . . . . 27 6.2. Link Metric Compressed Form . . . . . . . . . . . . . . . 27
7.1. Originator Set . . . . . . . . . . . . . . . . . . . . . . 27 7. Local Information Base . . . . . . . . . . . . . . . . . . . 28
7.2. Local Attached Network Set . . . . . . . . . . . . . . . . 28 7.1. Originator Set . . . . . . . . . . . . . . . . . . . . . 28
8. Interface Information Base . . . . . . . . . . . . . . . . . . 29 7.2. Local Attached Network Set . . . . . . . . . . . . . . . 29
9. Neighbor Information Base . . . . . . . . . . . . . . . . . . 30 8. Interface Information Base . . . . . . . . . . . . . . . . . 30
10. Topology Information Base . . . . . . . . . . . . . . . . . . 31 8.1. Link Set . . . . . . . . . . . . . . . . . . . . . . . . 30
10.1. Advertising Remote Router Set . . . . . . . . . . . . . . 31 8.2. 2-Hop Set . . . . . . . . . . . . . . . . . . . . . . . . 30
10.2. Router Topology Set . . . . . . . . . . . . . . . . . . . 32 9. Neighbor Information Base . . . . . . . . . . . . . . . . . . 31
10.3. Routable Address Topology Set . . . . . . . . . . . . . . 32 10. Topology Information Base . . . . . . . . . . . . . . . . . . 32
10.4. Attached Network Set . . . . . . . . . . . . . . . . . . . 33 10.1. Advertising Remote Router Set . . . . . . . . . . . . . . 32
10.5. Routing Set . . . . . . . . . . . . . . . . . . . . . . . 34 10.2. Router Topology Set . . . . . . . . . . . . . . . . . . . 33
11. Received Message Information Base . . . . . . . . . . . . . . 35 10.3. Routable Address Topology Set . . . . . . . . . . . . . . 34
11.1. Received Set . . . . . . . . . . . . . . . . . . . . . . . 35 10.4. Attached Network Set . . . . . . . . . . . . . . . . . . 34
11.2. Processed Set . . . . . . . . . . . . . . . . . . . . . . 35 10.5. Routing Set . . . . . . . . . . . . . . . . . . . . . . . 35
11.3. Forwarded Set . . . . . . . . . . . . . . . . . . . . . . 36 11. Received Message Information Base . . . . . . . . . . . . . . 36
12. Information Base Properties . . . . . . . . . . . . . . . . . 36 11.1. Received Set . . . . . . . . . . . . . . . . . . . . . . 36
13. Packets and Messages . . . . . . . . . . . . . . . . . . . . . 38 11.2. Processed Set . . . . . . . . . . . . . . . . . . . . . . 36
13.1. Messages . . . . . . . . . . . . . . . . . . . . . . . . . 38 11.3. Forwarded Set . . . . . . . . . . . . . . . . . . . . . . 37
13.2. Packets . . . . . . . . . . . . . . . . . . . . . . . . . 38 12. Information Base Properties . . . . . . . . . . . . . . . . . 37
13.3. TLVs . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 13. Packets and Messages . . . . . . . . . . . . . . . . . . . . 39
13.3.1. Message TLVs . . . . . . . . . . . . . . . . . . . . . 39 13.1. Messages . . . . . . . . . . . . . . . . . . . . . . . . 39
13.3.2. Address Block TLVs . . . . . . . . . . . . . . . . . . 39 13.2. Packets . . . . . . . . . . . . . . . . . . . . . . . . . 39
14. Message Processing and Forwarding . . . . . . . . . . . . . . 41 13.3. TLVs . . . . . . . . . . . . . . . . . . . . . . . . . . 40
14.1. Actions when Receiving a Message . . . . . . . . . . . . . 42 13.3.1. Message TLVs . . . . . . . . . . . . . . . . . . . . 40
14.2. Message Considered for Processing . . . . . . . . . . . . 43 13.3.2. Address Block TLVs . . . . . . . . . . . . . . . . . 40
14.3. Message Considered for Forwarding . . . . . . . . . . . . 44 14. Message Processing and Forwarding . . . . . . . . . . . . . . 42
15. HELLO Messages . . . . . . . . . . . . . . . . . . . . . . . . 45 14.1. Actions when Receiving a Message . . . . . . . . . . . . 43
15.1. HELLO Message Generation . . . . . . . . . . . . . . . . . 46 14.2. Message Considered for Processing . . . . . . . . . . . . 44
15.2. HELLO Message Transmission . . . . . . . . . . . . . . . . 47 14.3. Message Considered for Forwarding . . . . . . . . . . . . 45
15.3. HELLO Message Processing . . . . . . . . . . . . . . . . . 48 15. HELLO Messages . . . . . . . . . . . . . . . . . . . . . . . 46
15.3.1. HELLO Message Discarding . . . . . . . . . . . . . . . 48 15.1. HELLO Message Generation . . . . . . . . . . . . . . . . 47
15.3.2. HELLO Message Usage . . . . . . . . . . . . . . . . . 49 15.2. HELLO Message Transmission . . . . . . . . . . . . . . . 48
16. TC Messages . . . . . . . . . . . . . . . . . . . . . . . . . 52 15.3. HELLO Message Processing . . . . . . . . . . . . . . . . 49
16.1. TC Message Generation . . . . . . . . . . . . . . . . . . 52 15.3.1. HELLO Message Discarding . . . . . . . . . . . . . . 49
16.2. TC Message Transmission . . . . . . . . . . . . . . . . . 54 15.3.2. HELLO Message Usage . . . . . . . . . . . . . . . . . 50
16.3. TC Message Processing . . . . . . . . . . . . . . . . . . 55 16. TC Messages . . . . . . . . . . . . . . . . . . . . . . . . . 53
16.3.1. Invalid Message . . . . . . . . . . . . . . . . . . . 55 16.1. TC Message Generation . . . . . . . . . . . . . . . . . . 53
16.3.2. TC Message Processing Definitions . . . . . . . . . . 56 16.2. TC Message Transmission . . . . . . . . . . . . . . . . . 55
16.3.3. Initial TC Message Processing . . . . . . . . . . . . 57 16.3. TC Message Processing . . . . . . . . . . . . . . . . . . 56
16.3.4. Completing TC Message Processing . . . . . . . . . . . 60 16.3.1. Invalid Message . . . . . . . . . . . . . . . . . . . 56
17. Information Base Changes . . . . . . . . . . . . . . . . . . . 61 16.3.2. TC Message Processing Definitions . . . . . . . . . . 57
17.1. Originator Address Changes . . . . . . . . . . . . . . . . 61 16.3.3. Initial TC Message Processing . . . . . . . . . . . . 58
17.2. Link State Changes . . . . . . . . . . . . . . . . . . . . 62 16.3.4. Completing TC Message Processing . . . . . . . . . . 61
17.3. Neighbor State Changes . . . . . . . . . . . . . . . . . . 62 17. Information Base Changes . . . . . . . . . . . . . . . . . . 62
17.4. Advertised Neighbor Changes . . . . . . . . . . . . . . . 63 17.1. Originator Address Changes . . . . . . . . . . . . . . . 62
17.5. Advertising Remote Router Tuple Expires . . . . . . . . . 63 17.2. Link State Changes . . . . . . . . . . . . . . . . . . . 63
17.6. Neighborhood Changes and MPR Updates . . . . . . . . . . . 64 17.3. Neighbor State Changes . . . . . . . . . . . . . . . . . 63
17.7. Routing Set Updates . . . . . . . . . . . . . . . . . . . 65 17.4. Advertised Neighbor Changes . . . . . . . . . . . . . . . 64
18. Selecting MPRs . . . . . . . . . . . . . . . . . . . . . . . . 66 17.5. Advertising Remote Router Tuple Expires . . . . . . . . . 64
19. Routing Set Calculation . . . . . . . . . . . . . . . . . . . 68 17.6. Neighborhood Changes and MPR Updates . . . . . . . . . . 65
19.1. Network Topology Graph . . . . . . . . . . . . . . . . . . 68 17.7. Routing Set Updates . . . . . . . . . . . . . . . . . . . 66
19.2. Populating the Routing Set . . . . . . . . . . . . . . . . 70 18. Selecting MPRs . . . . . . . . . . . . . . . . . . . . . . . 67
20. Proposed Values for Parameters and Constants . . . . . . . . . 71 18.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 68
20.1. Local History Time Parameters . . . . . . . . . . . . . . 72 18.2. Neighbor Graph . . . . . . . . . . . . . . . . . . . . . 68
20.2. Message Interval Parameters . . . . . . . . . . . . . . . 72 18.3. MPR Properties . . . . . . . . . . . . . . . . . . . . . 69
20.3. Advertised Information Validity Time Parameters . . . . . 72 18.4. Flooding MPRs . . . . . . . . . . . . . . . . . . . . . . 70
20.4. Received Message Validity Time Parameters . . . . . . . . 72 18.5. Routing MPRs . . . . . . . . . . . . . . . . . . . . . . 72
20.5. Jitter Time Parameters . . . . . . . . . . . . . . . . . . 72 18.6. Calculating MPRs . . . . . . . . . . . . . . . . . . . . 73
20.6. Hop Limit Parameter . . . . . . . . . . . . . . . . . . . 72 19. Routing Set Calculation . . . . . . . . . . . . . . . . . . . 73
20.7. Willingness Parameter and Constants . . . . . . . . . . . 72 19.1. Network Topology Graph . . . . . . . . . . . . . . . . . 74
21. Sequence Numbers . . . . . . . . . . . . . . . . . . . . . . . 73 19.2. Populating the Routing Set . . . . . . . . . . . . . . . 76
22. Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . 73 20. Proposed Values for Parameters . . . . . . . . . . . . . . . 77
23. Security Considerations . . . . . . . . . . . . . . . . . . . 74 20.1. Local History Time Parameters . . . . . . . . . . . . . . 77
23.1. Confidentiality . . . . . . . . . . . . . . . . . . . . . 74 20.2. Message Interval Parameters . . . . . . . . . . . . . . . 77
23.2. Integrity . . . . . . . . . . . . . . . . . . . . . . . . 74 20.3. Advertised Information Validity Time Parameters . . . . . 77
23.3. Interaction with External Routing Domains . . . . . . . . 76 20.4. Received Message Validity Time Parameters . . . . . . . . 77
24. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 76 20.5. Jitter Time Parameters . . . . . . . . . . . . . . . . . 78
24.1. Expert Review: Evaluation Guidelines . . . . . . . . . . . 76 20.6. Hop Limit Parameter . . . . . . . . . . . . . . . . . . . 78
24.2. Message Types . . . . . . . . . . . . . . . . . . . . . . 77 20.7. Willingness Parameter . . . . . . . . . . . . . . . . . . 78
24.3. Message-Type-specific TLV Type Registries . . . . . . . . 77 21. Sequence Numbers . . . . . . . . . . . . . . . . . . . . . . 78
24.4. Message TLV Types . . . . . . . . . . . . . . . . . . . . 77 22. Extensions . . . . . . . . . . . . . . . . . . . . . . . . . 79
24.5. Address Block TLV Types . . . . . . . . . . . . . . . . . 79 23. Security Considerations . . . . . . . . . . . . . . . . . . . 79
24.6. NBR_ADDR_TYPE Values . . . . . . . . . . . . . . . . . . . 81 23.1. Confidentiality . . . . . . . . . . . . . . . . . . . . . 79
25. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 82 23.2. Integrity . . . . . . . . . . . . . . . . . . . . . . . . 80
26. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 82 23.3. Interaction with External Routing Domains . . . . . . . . 81
27. References . . . . . . . . . . . . . . . . . . . . . . . . . . 82 24. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 82
27.1. Normative References . . . . . . . . . . . . . . . . . . . 82 24.1. Expert Review: Evaluation Guidelines . . . . . . . . . . 82
27.2. Informative References . . . . . . . . . . . . . . . . . . 83 24.2. Message Types . . . . . . . . . . . . . . . . . . . . . . 82
Appendix A. Example Algorithm for Calculating MPRs . . . . . . . 84 24.3. Message-Type-Specific TLV Type Registries . . . . . . . . 82
A.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 85 24.4. Message TLV Types . . . . . . . . . . . . . . . . . . . . 83
A.2. MPR Selection Algorithm for each OLSRv2 Interface . . . . 85 24.5. Address Block TLV Types . . . . . . . . . . . . . . . . . 84
Appendix B. Example Algorithm for Calculating the Routing Set . . 86 24.6. NBR_ADDR_TYPE and MPR Values . . . . . . . . . . . . . . 87
B.1. Local Interfaces and Neighbors . . . . . . . . . . . . . . 86 25. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 87
B.2. Add Neighbor Routers . . . . . . . . . . . . . . . . . . . 87 26. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 88
B.3. Add Remote Routers . . . . . . . . . . . . . . . . . . . . 87 27. References . . . . . . . . . . . . . . . . . . . . . . . . . 88
B.4. Add Neighbor Addresses . . . . . . . . . . . . . . . . . . 88 27.1. Normative References . . . . . . . . . . . . . . . . . . 88
B.5. Add Remote Routable Addresses . . . . . . . . . . . . . . 89 27.2. Informative References . . . . . . . . . . . . . . . . . 89
B.6. Add Attached Networks . . . . . . . . . . . . . . . . . . 89 Appendix A. Example Algorithm for Calculating MPRs . . . . . . . 89
B.7. Add 2-Hop Neighbors . . . . . . . . . . . . . . . . . . . 90 A.1. Additional Notation . . . . . . . . . . . . . . . . . . . 89
Appendix C. TC Message Example . . . . . . . . . . . . . . . . . 91 A.2. MPR Selection Algorithm . . . . . . . . . . . . . . . . . 90
Appendix D. Constraints . . . . . . . . . . . . . . . . . . . . . 93 Appendix B. Example Algorithm for Calculating the Routing Set . 91
Appendix E. Flow and Congestion Control . . . . . . . . . . . . . 98 B.1. Local Interfaces and Neighbors . . . . . . . . . . . . . 91
B.2. Add Neighbor Routers . . . . . . . . . . . . . . . . . . 92
B.3. Add Remote Routers . . . . . . . . . . . . . . . . . . . 92
B.4. Add Neighbor Addresses . . . . . . . . . . . . . . . . . 94
B.5. Add Remote Routable Addresses . . . . . . . . . . . . . . 94
B.6. Add Attached Networks . . . . . . . . . . . . . . . . . . 95
B.7. Add 2-Hop Neighbors . . . . . . . . . . . . . . . . . . . 95
Appendix C. TC Message Example . . . . . . . . . . . . . . . . . 96
Appendix D. Constraints . . . . . . . . . . . . . . . . . . . . 98
Appendix E. Flow and Congestion Control . . . . . . . . . . . . 103
1. Introduction 1. Introduction
The Optimized Link State Routing protocol version 2 (OLSRv2) is an The Optimized Link State Routing protocol version 2 (OLSRv2) is an
update to OLSR (version 1) as published in [RFC3626]. Compared to update to OLSR (version 1) as published in [RFC3626]. Compared to
[RFC3626], OLSRv2 retains the same basic mechanisms and algorithms, [RFC3626], OLSRv2 retains the same basic mechanisms and algorithms,
enhanced by the ability to use a link metric other than hop count in enhanced by the ability to use a link metric other than hop count in
the selection of shortest routes. OLSRv2 also uses a more flexible the selection of shortest routes. OLSRv2 also uses a more flexible
and efficient signaling framework, and includes some simplification and efficient signaling framework, and includes some simplification
of the messages being exchanged. of the messages being exchanged.
OLSRv2 is developed for mobile ad hoc networks. It operates as a OLSRv2 is developed for mobile ad hoc networks (MANETs). It operates
table driven, proactive protocol, i.e., it exchanges topology as a table driven, proactive protocol, i.e., it exchanges topology
information with other routers in the network regularly. OLSRv2 is information with other routers in the network regularly. OLSRv2 is
an optimization of the classical link state routing protocol. Its an optimization of the classical link state routing protocol. Its
key concept is that of MultiPoint Relays (MPRs). Each router selects key concept is that of MultiPoint Relays (MPRs). Each router selects
as MPRs a set of its neighbor routers that "cover" all of its two sets of MPRs, each being a set of its neighbor routers that
symmetrically connected 2-hop neighbor routers. Separate sets of "cover" all of its symmetrically connected 2-hop neighbor routers.
flooding MPRs and routing MPRs are then used to achieve flooding These two sets are of flooding MPRs and routing MPRs, and are used to
reduction and topology reduction, respectively. achieve flooding reduction and topology reduction, respectively.
Flooding reduction is achieved by control traffic being flooded Flooding reduction is achieved by control traffic being flooded
through the network using hop by hop forwarding, but with a router through the network using hop by hop forwarding, but with a router
only needing to forward control traffic that is first received only needing to forward control traffic that is first received
directly from one of the routers that have selected it as a flooding directly from one of the routers that have selected it as a flooding
MPR (its "flooding MPR selectors"). This mechanism, denoted "MPR MPR (its "flooding MPR selectors"). This mechanism, denoted "MPR
flooding", provides an efficient mechanism for information flooding", provides an efficient mechanism for information
distribution within the MANET by reducing the number of transmissions distribution within the MANET by reducing the number of transmissions
required. required.
skipping to change at page 5, line 45 skipping to change at page 6, line 45
to routers selected as routing MPRs when declaring link state to routers selected as routing MPRs when declaring link state
information. A sufficient requirement for OLSRv2 to provide shortest information. A sufficient requirement for OLSRv2 to provide shortest
routes to all destinations is that routers declare link state routes to all destinations is that routers declare link state
information for their routing MPR selectors, if any. Routers that information for their routing MPR selectors, if any. Routers that
are not selected as routing MPRs need not send any link state are not selected as routing MPRs need not send any link state
information. Based on this reduced link state information, routing information. Based on this reduced link state information, routing
MPRs are used as intermediate routers in multi-hop routes. MPRs are used as intermediate routers in multi-hop routes.
Thus the use of MPRs allows reduction of the number and the size of Thus the use of MPRs allows reduction of the number and the size of
link state messages, and in the amount of link state information link state messages, and in the amount of link state information
maintained in each router. When possible (in particular when using a maintained in each router. When possible (in particular if using a
hop count metric) the same routers may be picked as both flooding hop count metric) the same routers may be picked as both flooding
MPRs and routing MPRs. MPRs and routing MPRs.
A router selects both routing and flooding MPRs from among its one A router selects both routing and flooding MPRs from among its one
hop neighbors connected by "symmetric", i.e., bidirectional, links. hop neighbors connected by "symmetric", i.e., bidirectional, links.
Therefore, selecting routes through routing MPRs avoids the problems Therefore, selecting routes through routing MPRs avoids the problems
associated with data packet transfer over unidirectional links (e.g., associated with data packet transfer over unidirectional links (e.g.,
the problem of not getting link layer acknowledgments at each hop, the problem of not getting link layer acknowledgments at each hop,
for link layers employing this technique). for link layers employing this technique).
OLSRv2 uses and extends [RFC6130] and uses [RFC5444], [RFC5497] and, OLSRv2 uses and extends the MANET NeighborHood Discovery Protocol
optionally, [RFC5148]. These other protocols and specifications were (NHDP) defined in [RFC6130] and also uses the MANET generalized
all originally created as part of OLSRv2, but have been specified packet/message format [RFC5444] and the specifications in [RFC5497]
separately for wider use. and, optionally, [RFC5148]. These four other protocols and
specifications were all originally created as part of OLSRv2, but
have been specified separately for wider use.
OLSRv2 makes no assumptions about the underlying link layer. OLSRv2, OLSRv2 makes no assumptions about the underlying link layer. OLSRv2,
through its use of [RFC6130], may use link layer information and through its use of [RFC6130], may use link layer information and
notifications when available and applicable. Link metrics may be notifications when available and applicable. In addition OLSRv2 uses
derived from link layer or any other information. OLSRv2 does not link metrics that may be derived from link layer or any other
specify the physical meaning of link metrics, but specifies a means information. OLSRv2 does not specify the physical meaning of link
by which new types of link metrics may be specified in the future, metrics, but specifies a means by which new types of link metrics may
but used by OLSRv2 without modification. be specified in the future, but used by OLSRv2 without modification.
OLSRv2, as OLSR [RFC3626], inherits its concept of forwarding and OLSRv2, as OLSR [RFC3626], inherits its concept of forwarding and
relaying from HIPERLAN (a MAC layer protocol) which is standardized relaying from HIPERLAN (a MAC layer protocol) which is standardized
by ETSI [HIPERLAN], [HIPERLAN2]. by ETSI [HIPERLAN], [HIPERLAN2].
Note: This is the first version of this specification to incorporate
the use of link metrics. It is not compete: Section 18 and
Appendix A have not yet been updated to use link metrics and separate
sets of flooding and routing MPRs.
2. Terminology 2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in "OPTIONAL" in this document are to be interpreted as described in
[RFC2119]. [RFC2119].
All terms introduced in [RFC5444], including "packet", "Packet All terms introduced in [RFC5444], including "packet", "Packet
Header", "message", "Message Header", "Message Body", "Message Type", Header", "message", "Message Header", "Message Body", "Message Type",
"message sequence number", "hop limit", "hop count", "Address Block", "message sequence number", "hop limit", "hop count", "Address Block",
skipping to change at page 7, line 5 skipping to change at page 8, line 5
described there. described there.
All terms introduced in [RFC6130], including "interface", "MANET All terms introduced in [RFC6130], including "interface", "MANET
interface", "network address", "link", "symmetric link", "1-hop interface", "network address", "link", "symmetric link", "1-hop
neighbor", "symmetric 1-hop neighbor", "symmetric 2-hop neighbor", neighbor", "symmetric 1-hop neighbor", "symmetric 2-hop neighbor",
"constant", "interface parameter", "router parameter", "Information "constant", "interface parameter", "router parameter", "Information
Base", and "HELLO message" are to be interpreted as described there. Base", and "HELLO message" are to be interpreted as described there.
Additionally, this specification uses the following terminology: Additionally, this specification uses the following terminology:
Router - A MANET router which implements this protocol. Router:
A MANET router which implements this protocol.
OLSRv2 interface - A MANET interface running this protocol.
Routable address - A network address which may be used as the
destination of a data packet. A router MUST be able to
distinguish a routable address from a non-routable address by
direct inspection of the network address, based on global scope
address allocations by IANA and/or administrative configuration.
Broadcast, multicast and anycast addresses, and addresses which
are limited in scope to less than the entire MANET, MUST NOT be
considered as routable addresses.
Originator address - An address which is unique (within the MANET)
to a router. A router MUST select an originator address; it MAY
choose one of its interface addresses as its originator address.
If it selects a routable address then this MUST be one which this
router will accept as destination. An originator address MUST NOT
have a prefix length, except for when included in an Address Block
where it MAY be associated with a prefix of maximum prefix length
(e.g., if the originator address is an IPv6 address, it MUST have
either no prefix length, or have a prefix length of 128). An
originator address may be a routable or non-routable address.
Message originator address - The originator address of the router
which created a message, as deduced from that message by its
recipient. The message originator address will usually be
included in the message as its <msg-orig-addr> element as defined
in [RFC5444]. However an exceptional case in a HELLO message is
also allowed by this specification, when a router only uses a
single address. For all messages used in this specification,
including HELLO messages defined in [RFC6130], the recipient MUST
be able to deduce an originator address.
Willingness - A numerical value between WILL_NEVER and WILL_ALWAYS OLSRv2 interface:
(both inclusive), that represents the router's willingness to be A MANET interface running this protocol.
selected as an MPR.
Willing symmetric 1-hop neighbor - A symmetric 1-hop neighbor of Routable address:
this router that has willingness not equal to WILL_NEVER. A network address which may be used as the destination of a data
packet. A router MUST be able to distinguish a routable address
from a non-routable address by direct inspection of the network
address, based on global scope address allocations by IANA and/or
administrative configuration. Broadcast, multicast and anycast
addresses, and addresses which are limited in scope to less than
the entire MANET, MUST NOT be considered as routable addresses.
Symmetric 1-hop neighbor through OLSRv2 interface I - A symmetric Originator address
1-hop neighbor of the router via a symmetric link using OLSRv2 An address which is unique (within the MANET) to a router. A
interface I of the router. router MUST select an originator address; it MAY choose one of its
interface addresses as its originator address; it MAY select
either a routable or non-routable address. If it selects a
routable address then this MUST be one which the router will
accept as destination. An originator address MUST NOT have a
prefix length, except for when included in an Address Block where
it MAY be associated with a prefix of maximum prefix length (e.g.,
if the originator address is an IPv6 address, it MUST have either
no prefix length, or have a prefix length of 128).
Willing symmetric 1-hop neighbor through OLSRv2 interface I - A Message originator address
willing symmetric 1-hop neighbor of the router via a symmetric The originator address of the router which created a message, as
link using OLSRv2 interface I of the router. deduced from that message by its recipient. The message
originator address will usually be included in the message as its
<msg-orig-addr> element as defined in [RFC5444]. However an
exceptional case in a HELLO message is also allowed by this
specification, when a router only uses a single address. For all
messages used in this specification, including HELLO messages
defined in [RFC6130], the recipient MUST be able to deduce an
originator address.
Symmetric strict 2-hop neighbor - A symmetric 1-hop neighbor of a Willingness:
willing symmetric 1-hop neighbor that is not a symmetric 1-hop A numerical value between WILL_NEVER and WILL_ALWAYS (both
neighbor. inclusive), that represents the router's willingness to be
selected as an MPR. A router has separate willingness values to
be a flooding MPR and a routing MPR.
Symmetric strict 2-hop neighbor through OLSRv2 interface I - A Willing symmetric 1-hop neighbor
symmetric 1-hop neighbor of a willing symmetric 1-hop neighbor A symmetric 1-hop neighbor of this router that has willingness not
through OLSRv2 interface I that is not a symmetric 1-hop neighbor equal to WILL_NEVER.
through OLSRv2 interface I. The router MAY elect to use only
information received over OLSRv2 interface I in making this
determination.
Multipoint relay (MPR) - A router, X, is an MPR for a router, Y, if Multipoint relay (MPR):
router Y has indicated its selection of router X as an MPR in a A router, X, is an MPR for a router, Y, if router Y has indicated
recent HELLO message. Router X may be a Flooding MPR for Y, if it its selection of router X as an MPR in a recent HELLO message.
is indicated to participate in the flooding process of messages Router X may be a flooding MPR for Y, if it is indicated to
received from router Y, or it may be a Routing MPR for Y, if it is participate in the flooding process of messages received from
indicated to declare link-state information for the link from X to router Y, or it may be a routing MPR for Y, if it is indicated to
Y. It may also be both at the same time. declare link-state information for the link from X to Y. It may
also be both at the same time.
MPR selector - A router, Y, is an MPR selector of router X if router MPR selector:
Y has selected router X as an MPR. A router, Y, is a flooding/routing MPR selector of router X if
router Y has selected router X as a flooding/routing MPR.
MPR flooding - The optimized MANET-wide information distribution MPR flooding:
mechanism, employed by this protocol, in which a message is The optimized MANET-wide information distribution mechanism,
relayed by only a reduced subset of the routers in the network. employed by this protocol, in which a message is relayed by only a
MPR flooding is the mechanism by which flooding reduction is reduced subset of the routers in the network. MPR flooding is the
achieved. mechanism by which flooding reduction is achieved.
This document employs the same notational conventions as in [RFC5444] This document employs the same notational conventions as in [RFC5444]
and [RFC6130]. and [RFC6130].
3. Applicability Statement 3. Applicability Statement
This protocol: This protocol:
o Is a proactive routing protocol for mobile ad hoc networks o Is a proactive routing protocol for mobile ad hoc networks
(MANETs) [RFC2501]. (MANETs) [RFC2501].
skipping to change at page 9, line 21 skipping to change at page 10, line 10
o Continuously maintains routes to all destinations in the network, o Continuously maintains routes to all destinations in the network,
i.e., routes are instantly available and data traffic is subject i.e., routes are instantly available and data traffic is subject
to no delays due to route discovery. Consequently, no data to no delays due to route discovery. Consequently, no data
traffic buffering is required. traffic buffering is required.
o Supports routers that have non-OLSRv2 interfaces which may be o Supports routers that have non-OLSRv2 interfaces which may be
local to a router or that can serve as gateways towards other local to a router or that can serve as gateways towards other
networks. networks.
o Enables the use of bidirectional additive link metrics to use o Enables the use of bidirectional additive link metrics to use
shortest distance (i.e., the total of metrics) routes. Incoming shortest distance routes (i.e., routes with smallest total of link
link metric values are to be determined by a process outside this metrics). Incoming link metric values are to be determined by a
specification. process outside this specification.
o Is optimized for large and dense networks; the larger and more o Is optimized for large and dense networks; the larger and more
dense a network, the more optimization can be achieved by using dense a network, the more optimization can be achieved by using
MPRs, compared to the classic link state algorithm. MPRs, compared to the classic link state algorithm.
o Uses [RFC5444] as described in its "Intended Usage" appendix and o Uses [RFC5444] as described in its "Intended Usage" appendix and
by [RFC5498]. by [RFC5498].
o Allows "external" and "internal" extensibility as enabled by o Allows "external" and "internal" extensibility (adding new message
types and adding information to existing messages) as enabled by
[RFC5444]. [RFC5444].
o Is designed to work in a completely distributed manner, and does o Is designed to work in a completely distributed manner, and does
not depend on any central entity. not depend on any central entity.
4. Protocol Overview and Functioning 4. Protocol Overview and Functioning
The objective of this protocol is for each router to, independently: The objectives of this protocol are for each router to,
independently:
o Identify all destinations in the network. o Identify all destinations in the network.
o Identify a sufficient subset of links in the network, in order o Identify a sufficient subset of links in the network, in order
that shortest paths can be calculated to all available that shortest paths can be calculated to all available
destinations. destinations.
o Provide a Routing Set, containing these shortest paths from this o Provide a Routing Set, containing these shortest paths from this
router to all destinations (routable addresses and local links). router to all destinations (routable addresses and local links).
skipping to change at page 10, line 18 skipping to change at page 11, line 6
o Using [RFC6130] to identify symmetric 1-hop neighbors and o Using [RFC6130] to identify symmetric 1-hop neighbors and
symmetric 2-hop neighbors. symmetric 2-hop neighbors.
o Extending [RFC6130] to allow the addition of directional link o Extending [RFC6130] to allow the addition of directional link
metrics to advertised links, and to indicate which link metric metrics to advertised links, and to indicate which link metric
type is being used by that router. Both incoming and outgoing type is being used by that router. Both incoming and outgoing
link metrics may be reported, the latter determined by the link metrics may be reported, the latter determined by the
advertising router. advertising router.
o Independently selecting flooding MPRs and routing MPRs from among o Selecting flooding MPRs and routing MPRs from among its symmetric
its symmetric 1-hop neighbors such that, for each set of MPRs all 1-hop neighbors such that, for each set of MPRs all symmetric
symmetric 2-hop neighbors are reachable via at least one symmetric 2-hop neighbors are reachable either directly or via at least one
1-hop neighbor. An analysis and examples of MPR selection symmetric 1-hop neighbor, using a path of minimum total metric
algorithms is given in [MPR], a suggested algorithm, modified for where appropriate. An analysis and examples of MPR selection
each set of MPRs, is included in this specification. Note that it algorithms are given in [MPR]; a suggested algorithm,
is not necessary for routers to use the same algorithm in order to appropriately adapted for each set of MPRs, is included in this
interoperate in the same MANET, but these algorithms must each specification. Note that it is not necessary for routers to use
have the appropriate properties. the same algorithm in order to interoperate in the same MANET, but
these algorithms must each have the appropriate properties.
o Signaling its flooding MPR and routing MPR selections by extending o Signaling its flooding MPR and routing MPR selections by extending
[RFC6130] to report this information in outgoing HELLO messages, [RFC6130] to report this information in outgoing HELLO messages,
by the addition of MPR Address Block TLV(s) associated with the by the addition of MPR Address Block TLV(s) associated with the
appropriate network addresses. appropriate network addresses.
o Extracting its flooding MPR selectors and routing MPR selectors o Extracting its flooding MPR selectors and routing MPR selectors
from received HELLO messages, using the included MPR Address Block from received HELLO messages, using the included MPR Address Block
TLV(s). TLV(s).
o Reporting its willingness to be a flooding MPR and to be a routing o Reporting its willingness to be a flooding MPR and to be a routing
MPR in HELLO messages, by the addition on an MPR_WILLING Message MPR in HELLO messages, by the addition of an MPR_WILLING Message
TLV. The router's flooding willingness indicates how willing it TLV. The router's flooding willingness indicates how willing it
is to participate in MPR flooding and the router's routing is to participate in MPR flooding and the router's routing
willingness indicates how willing is is to be an intermediate node willingness indicates how willing it is to be an intermediate node
for routing, while still being able to be a routing source or for routing, while still being able to be a routing source or
destination. destination even if unwilling to perform either function.
o Using the message format specified in [RFC5444], specifically o Using the message format specified in [RFC5444], specifically
defining a TC (Topology Control) Message Type, used to defining a TC (Topology Control) Message Type, used to
periodically signal links between routing MPR selectors and itself periodically signal links between routing MPR selectors and itself
throughout the MANET. This signaling includes suitable direction throughout the MANET. This signaling includes suitable
router metrics (the best link metric in that direction between directional neighbor metrics (the best link metric in that
those routers). direction between those routers).
o Allowing its TC messages, as well as HELLO messages, to be o Allowing its TC messages, as well as HELLO messages, to be
included in packets specified in [RFC5444], using the "manet" IP included in packets specified in [RFC5444], using the "manet" IP
protocol or UDP port as specified in [RFC5498]. protocol or UDP port as specified in [RFC5498].
o Diffusing TC messages by using a flooding reduction mechanism, o Diffusing TC messages by using a flooding reduction mechanism,
denoted "MPR flooding"; only the flooding MPRs of a router will denoted "MPR flooding"; only the flooding MPRs of a router will
retransmit messages received from (i.e., originated or last retransmit messages received from (i.e., originated or last
relayed by) that router. relayed by) that router.
skipping to change at page 11, line 37 skipping to change at page 12, line 25
flooding) of selected topology (link state) information. flooding) of selected topology (link state) information.
o A requirement for each router to have an originator address to be o A requirement for each router to have an originator address to be
included in, or deducible from, HELLO messages and TC messages. included in, or deducible from, HELLO messages and TC messages.
o The specification of new Message TLVs and Address Block TLVs that o The specification of new Message TLVs and Address Block TLVs that
are used in HELLO messages and TC messages, including for are used in HELLO messages and TC messages, including for
reporting link metrics and their usage, willingness to be an MPR, reporting link metrics and their usage, willingness to be an MPR,
MPR selection, and content sequence number information. Note that MPR selection, and content sequence number information. Note that
the generation of (incoming) link metric values is to be the generation of (incoming) link metric values is to be
undertaken by a process outside this specification. This undertaken by a process outside this specification; this
specification concerns only the distribution and use of those specification concerns only the distribution and use of those
metrics. metrics.
o The generation of TC messages from the appropriate information in o The generation of TC messages from the appropriate information in
the Information Bases. the Information Bases.
o The updating of the Topology Information Base according to o The updating of the Topology Information Base according to
received TC messages. received TC messages.
o The MPR flooding mechanism, including the inclusion of message o The MPR flooding mechanism, including the inclusion of message
skipping to change at page 12, line 18 skipping to change at page 13, line 7
This protocol inherits the stability of a link state algorithm, and This protocol inherits the stability of a link state algorithm, and
has the advantage of having routes immediately available when needed, has the advantage of having routes immediately available when needed,
due to its proactive nature. due to its proactive nature.
This protocol only interacts with IP through routing table This protocol only interacts with IP through routing table
management, and the use of the sending IP address for IP datagrams management, and the use of the sending IP address for IP datagrams
containing OLSRv2 packets. containing OLSRv2 packets.
4.2. Routers and Interfaces 4.2. Routers and Interfaces
In order for a router to participate in a MANET, it MUST have at In order for a router to participate in a MANET using this protocol
least one, and possibly more, OLSRv2 interfaces. Each OLSRv2 it MUST have at least one, and possibly more, OLSRv2 interfaces.
interface: Each OLSRv2 interface:
o Is configured with one or more network addresses, as specified in o Is configured with one or more network addresses, as specified in
[RFC6130]. These addresses MUST each be specific to this router, [RFC6130]. These addresses MUST each be specific to this router,
and MUST include any address that will be used as the sending and MUST include any address that will be used as the sending
address of any IP packet sent on this OLSRv2 interface. address of any IP packet sent on this OLSRv2 interface.
o Has a number of interface parameters, adding to those specified in o Has a number of interface parameters, adding to those specified in
[RFC6130]. [RFC6130].
o Has an Interface Information Base, extending that specified in o Has an Interface Information Base, extending that specified in
skipping to change at page 14, line 13 skipping to change at page 14, line 48
selector information. selector information.
4.3.3. Neighbor Information Base 4.3.3. Neighbor Information Base
The Neighbor Information Base is specified in [RFC6130], and is The Neighbor Information Base is specified in [RFC6130], and is
extended to also record, in the Neighbor Tuple for each neighbor: extended to also record, in the Neighbor Tuple for each neighbor:
o Its originator address. o Its originator address.
o Neighbor metric values, these being the minimum of the link metric o Neighbor metric values, these being the minimum of the link metric
values in the indicated directon for all symmetric 1-hop links values in the indicated direction for all symmetric 1-hop links
with that neighbor. with that neighbor.
o Its willingness to be a flooding MPR and to be a routing MPR. o Its willingness to be a flooding MPR and to be a routing MPR.
o Whether it has been selected by this router as a flooding MPR or o Whether it has been selected by this router as a flooding MPR or
as a routing MPR, and whether it is a routing MPR selector of this as a routing MPR, and whether it is a routing MPR selector of this
router. (Whether it is a flooding MPR selector of this neighbor router. (Whether it is a flooding MPR selector of this neighbor
is recorded in the Interface Information Base.) is recorded in the Interface Information Base.)
o Whether it is to be advertised in TC messages sent by this router. o Whether it is to be advertised in TC messages sent by this router.
skipping to change at page 14, line 50 skipping to change at page 15, line 37
a single IP hop), as reported by received TC messages. a single IP hop), as reported by received TC messages.
o An Attached Network Set, recording networks to which a remote o An Attached Network Set, recording networks to which a remote
router has advertised that it may act as a gateway. These router has advertised that it may act as a gateway. These
networks may be reached in one or more IP hops. networks may be reached in one or more IP hops.
o A Routing Set, recording routes from this router to all available o A Routing Set, recording routes from this router to all available
destinations. The IP routing table is to be updated using this destinations. The IP routing table is to be updated using this
Routing Set. (A router MAY choose to use any or all destination Routing Set. (A router MAY choose to use any or all destination
network addresses in the Routing Set to update the IP routing network addresses in the Routing Set to update the IP routing
table, this selection is outside the scope of this protocol.) table, this selection is outside the scope of this specification.)
The purpose of the Topology Information Base is to record information The purpose of the Topology Information Base is to record information
used, in addition to that in the Local Information Base, the used, in addition to that in the Local Information Base, the
Interface Information Bases and the Neighbor Information Base, to Interface Information Bases and the Neighbor Information Base, to
construct the Routing Set (which is also included in the Topology construct the Routing Set (which is also included in the Topology
Information Base). Information Base).
This specification describes the calculation of the Routing Set based This specification describes the calculation of the Routing Set based
on a Topology Graph constructed in two phases. First, a "backbone" on a Topology Graph constructed in two phases. First, a "backbone"
graph representing the routers in the MANET, and the connectivity graph representing the routers in the MANET, and the connectivity
skipping to change at page 15, line 38 skipping to change at page 16, line 25
o A Received Set for each OLSRv2 interface, describing TC messages o A Received Set for each OLSRv2 interface, describing TC messages
received by this router on that OLSRv2 interface. received by this router on that OLSRv2 interface.
o A Processed Set, describing TC messages processed by this router. o A Processed Set, describing TC messages processed by this router.
o A Forwarded Set, describing TC messages forwarded by this router. o A Forwarded Set, describing TC messages forwarded by this router.
The Received Message Information Base serves the MPR flooding The Received Message Information Base serves the MPR flooding
mechanism by ensuring that received messages are forwarded at most mechanism by ensuring that received messages are forwarded at most
once by a router, and also ensures that received messages are once by a router, and also ensures that received messages are
processed exactly once by a router. processed exactly once by a router. The Received Messages
Information Base MAY also record information about other message
types that use the MPR flooding mechanism.
4.4. Signaling Overview 4.4. Signaling Overview
This protocol generates and processes HELLO messages according to This protocol generates and processes HELLO messages according to
[RFC6130], extended according to Section 15 of this specification to [RFC6130], extended according to Section 15 of this specification to
include an originator address, link metrics, and MPR selection include an originator address, link metrics, and MPR selection
information. information.
This protocol specifies a single message type, the TC message. TC This specification defines a single message type, the TC message. TC
messages are sent by their originating router proactively, at a messages are sent by their originating router proactively, at a
regular interval. This interval may be fixed, or may be dynamic, for regular interval. This interval may be fixed, or may be dynamic, for
example it may be backed off due to congestion or network stability. example it may be backed off due to congestion or network stability.
TC messages may also be sent as a response to a change in the router TC messages may also be sent as a response to a change in the router
itself, or its advertised 1-hop neighborhood, for example on first itself, or its advertised 1-hop neighborhood, for example on first
being selected as a routing MPR. being selected as a routing MPR.
Because TC messages are sent periodically, this protocol is tolerant Because TC messages are sent periodically, this protocol is tolerant
of unreliable transmissions of TC messages. Message losses may occur of unreliable transmissions of TC messages. Message losses may occur
more frequently in wireless networks due to collisions or other more frequently in wireless networks due to collisions or other
transmission problems. This protocol MAY use "jitter", randomized transmission problems. This protocol may use "jitter", randomized
adjustments to message transmission times, to reduce the incidence of adjustments to message transmission times, to reduce the incidence of
collisions, as specified in [RFC5148]. collisions, as specified in [RFC5148].
This protocol is tolerant of out of sequence delivery of TC messages This protocol is tolerant of out of sequence delivery of TC messages
due to in transit message reordering. Each router maintains an due to in transit message reordering. Each router maintains an
Advertised Neighbor Sequence Number (ANSN) that is incremented when Advertised Neighbor Sequence Number (ANSN) that is incremented when
its recorded neighbor information that is to be included in its TC its recorded neighbor information that is to be included in its TC
messages changes. This ANSN is included in the router's TC messages. messages changes. This ANSN is included in the router's TC messages.
The recipient of a TC message can used this included ANSN to identify The recipient of a TC message can used this included ANSN to identify
which of the information it has received is most recent, even if which of the information it has received is most recent, even if
skipping to change at page 16, line 42 skipping to change at page 17, line 30
TC messages, and HELLO messages as extended by this specification, TC messages, and HELLO messages as extended by this specification,
include an originator address for the router that created the include an originator address for the router that created the
message. A TC message reports both the originator addresses and message. A TC message reports both the originator addresses and
routable addresses of its advertised neighbors, distinguishing the routable addresses of its advertised neighbors, distinguishing the
two using an Address Block TLV (an address may be both routable and two using an Address Block TLV (an address may be both routable and
an originator address). TC messages also report the originator's an originator address). TC messages also report the originator's
locally attached networks. locally attached networks.
TC messages are MPR flooded throughout the MANET. A router TC messages are MPR flooded throughout the MANET. A router
retransmits a TC message only if it is received from (i.e., retransmits a TC message received on an OLSRv2 interface if and only
originated from or was last relayed by) one of that router's flooding if the message did not originate at this router and has not been
MPR selectors. previously forwarded by this router, this is the first time the
message has been received on this OLSRv2 interface, and the message
is received from (i.e., originated from or was last relayed by) one
of this router's flooding MPR selectors.
Some TC messages may be MPR flooded over only part of the network, Some TC messages may be MPR flooded over only part of the network,
e.g., allowing a router to ensure that nearer routers are kept more e.g., allowing a router to ensure that nearer routers are kept more
up to date than distant routers, such as is used in Fisheye State up to date than distant routers, such as is used in Fisheye State
Routing [FSR] and Fuzzy Sighted Link State routing [FSLS]. This is Routing [FSR] and Fuzzy Sighted Link State routing [FSLS]. This is
enabled using [RFC5497]. enabled using [RFC5497].
TC messages include outgoing neighbor metrics that will be used in TC messages include outgoing neighbor metrics that will be used in
the creation of route metrics. the selection of routes.
4.5. Link Metrics 4.5. Link Metrics
OLSRv1 [RFC3626] created minimum hop routes to destinations. However OLSRv1 [RFC3626] created minimum hop routes to destinations. However
in many, if not most, circumstances, better routes (in terms of in many, if not most, circumstances, better routes (in terms of
quality of service for end users) can be created by use of link quality of service for end users) can be created by use of link
metrics. metrics.
OLSRv2, as defined in this specification, allows links to have a OLSRv2, as defined in this specification, allows links to have a
metric (also known as a cost). Link metrics as defined in OLSRv2 are metric (also known as a cost). Link metrics as defined in OLSRv2 are
skipping to change at page 17, line 28 skipping to change at page 18, line 18
routes, where the length of a route is defined as the sum of the routes, where the length of a route is defined as the sum of the
metrics of the links in that route. metrics of the links in that route.
Link metrics are defined to be directional; the link metric from one Link metrics are defined to be directional; the link metric from one
router to another may be different from that on the reverse link. router to another may be different from that on the reverse link.
The link metric is assessed at the receiver, as on a (typically) The link metric is assessed at the receiver, as on a (typically)
wireless link, that is the better informed as to link information. wireless link, that is the better informed as to link information.
Both incoming and outgoing link information is used by OLSRv2, the Both incoming and outgoing link information is used by OLSRv2, the
distinctions in the specification must be clearly followed. distinctions in the specification must be clearly followed.
This specification also defines both incoming annd outgoing neighbor This specification also defines both incoming and outgoing neighbor
metrics for each symmetric 1-hop neighbor, these being the minimum metrics for each symmetric 1-hop neighbor, these being the minimum
value of the link metrics in the same direction for all symmstric value of the link metrics in the same direction for all symmetric
links with that neighbor. Note that this means that all neighbor links with that neighbor. Note that this means that all neighbor
metric values are link metric values and that specification of, for metric values are link metric values and that specification of, for
example, link metric value encoding also includes neighbor metric example, link metric value encoding also includes neighbor metric
values. values.
This specification does not define the nature of the link metric. This specification does not define the nature of the link metric.
However this psecification allows, through use of the type extension However this specification allows, through use of the type extension
of a defined Address Block TLV, for link metrics with specific of a defined Address Block TLV, for link metrics with specific
meanings to be defined and either allocated by IANA or privately meanings to be defined and either allocated by IANA or privately
used. Each HELLO or TC message carrying link (or neighbor) metrics used. Each HELLO or TC message carrying link (or neighbor) metrics
thus indicates which link metric information it is carrying, thus thus indicates which link metric information it is carrying, thus
allowing routers to determine if they can interoperate. If link allowing routers to determine if they can interoperate. If link
metrics require additional signaling to determine their values, metrics require additional signaling to determine their values,
whether in HELLO messages or otherwise, then this is permitted but is whether in HELLO messages or otherwise, then this is permitted but is
outside the scope of this specification. outside the scope of this specification.
Users are advised that they should carefully consider how to use link Users are advised that they should carefully consider how to use link
metrics. In particular they should not simply default to use of all metrics. In particular they should not simply default to use of all
links with equal metrics (i.e. hop count) without careful links with equal metrics (i.e. hop count) for routing without careful
consideration of whether that is advisable or not. consideration of whether that is advisable or not.
4.6. Routing Set 4.6. Routing Set Use
The purpose of the Routing Set is to determine and record routes The purpose of the Routing Set is to determine and record routes
(local interface network address and next hop interface network (local interface network address and next hop interface network
address) to all possible routable addresses advertised by this address) to all possible routable addresses advertised by this
protocol, as well as of all destinations that are local, i.e., within protocol, as well as of all destinations that are local, i.e., within
one hop, to the router (whether using routable addresses or not). one hop, to the router (whether using routable addresses or not).
Only symmetric links are used in such routes. Only symmetric links are used in such routes.
It is intended that the Routing Set can be used for packet routing, It is intended that the Routing Set can be used for packet routing,
by using its contents to update IP's routing tables. That update, by using its contents to update IP's routing tables. That update,
skipping to change at page 18, line 37 skipping to change at page 19, line 25
Network Set). Network Set).
5. Protocol Parameters and Constants 5. Protocol Parameters and Constants
The parameters and constants used in this specification are those The parameters and constants used in this specification are those
defined in [RFC6130] plus those defined in this section. The defined in [RFC6130] plus those defined in this section. The
separation in [RFC6130] into interface parameters, router parameters separation in [RFC6130] into interface parameters, router parameters
and constants is also used in this specification. and constants is also used in this specification.
As for the parameters in [RFC6130], parameters defined in this As for the parameters in [RFC6130], parameters defined in this
specification may be changed dynamically by a router, and need not be specification MAY be changed dynamically by a router, and need not be
the same on different routers, even in the same MANET, or, for the same on different routers, even in the same MANET, or, for
interface parameters, on different interfaces of the same router. interface parameters, on different interfaces of the same router.
5.1. Protocol and Port Numbers 5.1. Protocol and Port Numbers
This protocol specifies TC messages, which are included in packets as This protocol specifies TC messages, which are included in packets as
defined by [RFC5444]. These packets may be sent either using the defined by [RFC5444]. These packets may be sent either using the
"manet" protocol number or the "manet" UDP well-known port number, as "manet" protocol number or the "manet" UDP well-known port number, as
specified in [RFC5498]. specified in [RFC5498].
skipping to change at page 19, line 13 skipping to change at page 20, line 4
protocols into the same [RFC5444] packet for transmission. protocols into the same [RFC5444] packet for transmission.
5.2. Multicast Address 5.2. Multicast Address
This protocol specifies TC messages, which are included in packets as This protocol specifies TC messages, which are included in packets as
defined by [RFC5444]. These packets MAY be transmitted using the defined by [RFC5444]. These packets MAY be transmitted using the
link local multicast address "LL-MANET-Routers", as specified in link local multicast address "LL-MANET-Routers", as specified in
[RFC5498]. [RFC5498].
5.3. Interface Parameters 5.3. Interface Parameters
5.3.1. Received Message Validity Time 5.3.1. Received Message Validity Time
The following parameter manages the validity time of recorded The following parameter manages the validity time of recorded
received message information: received message information:
RX_HOLD_TIME - is the period after receipt of a message by the RX_HOLD_TIME:
appropriate OLSRv2 interface of this router for which that The period after receipt of a message by the appropriate OLSRv2
information is recorded, in order that the message is recognized interface of this router for which that information is recorded,
as having been previously received on this OLSRv2 interface. in order that the message is recognized as having been previously
received on this OLSRv2 interface.
The following constraints apply to this parameters: The following constraints apply to this parameter:
o RX_HOLD_TIME > 0 o RX_HOLD_TIME > 0
o RX_HOLD_TIME SHOULD be greater than the maximum difference in time o RX_HOLD_TIME SHOULD be greater than the maximum difference in time
that a message may take to traverse the MANET, taking into account that a message may take to traverse the MANET, taking into account
any message forwarding jitter as well as propagation, queuing, and any message forwarding jitter as well as propagation, queuing, and
processing delays. processing delays.
5.4. Router Parameters 5.4. Router Parameters
5.4.1. Local History Times 5.4.1. Local History Times
The following router parameter manages the time for which local The following router parameter manages the time for which local
information is retained: information is retained:
O_HOLD_TIME - is used to define the time for which a recently used O_HOLD_TIME:
and replaced originator address is used to recognize the router's The time for which a recently used and replaced originator address
own messages. is used to recognize the router's own messages.
The following constraint applies to this parameter: The following constraint apply to this parameter:
o O_HOLD_TIME >= 0 o O_HOLD_TIME > 0
5.4.2. Link_Metric_Parameters 5.4.2. Link Metric Parameters
All routes found using this specification use a single link metric All routes found using this specification use a single link metric
type that is specified by the router parameter LINK_METRIC_TYPE, type that is specified by the router parameter LINK_METRIC_TYPE,
which may take any value from 0 to 255, inclusive. which may take any value from 0 to 255, inclusive.
5.4.3. Message Intervals 5.4.3. Message Intervals
The following parameters regulate TC message transmissions by a The following parameters regulate TC message transmissions by a
router. TC messages are usually sent periodically, but MAY also be router. TC messages are usually sent periodically, but MAY also be
sent in response to changes in the router's Neighbor Set and/or Local sent in response to changes in the router's Neighbor Set and/or Local
Attached Network Set. In a highly dynamic network, and with a larger Attached Network Set. In a highly dynamic network, and with a larger
value of the parameter TC_INTERVAL and a smaller value of the value of the parameter TC_INTERVAL and a smaller value of the
parameter TC_MIN_INTERVAL, TC messages may be transmitted more often parameter TC_MIN_INTERVAL, TC messages may be transmitted more often
in response to changes than periodically. However because a router in response to changes than periodically. However because a router
has no knowledge of, for example, routers remote to it (i.e., beyond has no knowledge of, for example, routers remote to it (i.e., beyond
two hops away) joining the network, TC messages MUST NOT be sent two hops away) joining the network, TC messages MUST NOT be sent
purely responsively. purely responsively.
TC_INTERVAL - is the maximum time between the transmission of two TC_INTERVAL:
successive TC messages by this router. When no TC messages are The maximum time between the transmission of two successive TC
sent in response to local network changes (by design, or because messages by this router. When no TC messages are sent in response
the local network is not changing) then TC messages SHOULD be sent to local network changes (by design, or because the local network
at a regular interval TC_INTERVAL, possibly modified by jitter as is not changing) then TC messages SHOULD be sent at a regular
specified in [RFC5148]. interval TC_INTERVAL, possibly modified by jitter as specified in
[RFC5148].
TC_MIN_INTERVAL - is the minimum interval between transmission of TC_MIN_INTERVAL:
two successive TC messages by this router. (This minimum interval The minimum interval between transmission of two successive TC
MAY be modified by jitter, as specified in [RFC5148].) messages by this router. (This minimum interval MAY be modified
by jitter, as specified in [RFC5148].)
The following constraints apply to these parameters: The following constraints apply to these parameters:
o TC_INTERVAL > 0 o TC_INTERVAL > 0
o TC_MIN_INTERVAL >= 0 o TC_MIN_INTERVAL >= 0
o TC_INTERVAL >= TC_MIN_INTERVAL o TC_INTERVAL >= TC_MIN_INTERVAL
o If TLVs with Type = INTERVAL_TIME, as defined in [RFC5497], are o If TLVs with Type = INTERVAL_TIME, as defined in [RFC5497], are
included in TC messages, then TC_INTERVAL MUST be representable as included in TC messages, then TC_INTERVAL MUST be representable as
described in [RFC5497]. described in [RFC5497].
5.4.4. Advertised Information Validity Times 5.4.4. Advertised Information Validity Times
The following parameters manage the validity time of information The following parameters manage the validity time of information
advertised in TC messages: advertised in TC messages:
T_HOLD_TIME - is used to define the minimum value in the TLV with T_HOLD_TIME:
Type = VALIDITY_TIME included in all TC messages sent by this Used as the minimum value in the TLV with Type = VALIDITY_TIME
router. If a single value of parameter TC_HOP_LIMIT (see included in all TC messages sent by this router. If a single
Section 5.4.7) is used then this will be the only value in that value of parameter TC_HOP_LIMIT (see Section 5.4.7) is used then
TLV. this will be the only value in that TLV.
A_HOLD_TIME - is the period during which TC messages are sent after A_HOLD_TIME:
they no longer have any advertised information to report, but are The period during which TC messages are sent after they no longer
sent in order to accelerate outdated information removal by other have any advertised information to report, but are sent in order
routers. to accelerate outdated information removal by other routers.
The following constraints apply to these parameters: The following constraints apply to these parameters:
o T_HOLD_TIME > 0 o T_HOLD_TIME > 0
o A_HOLD_TIME >= 0 o A_HOLD_TIME >= 0
o T_HOLD_TIME >= TC_INTERVAL o T_HOLD_TIME >= TC_INTERVAL
o If TC messages can be lost, then both T_HOLD_TIME and A_HOLD_TIME o If TC messages can be lost, then both T_HOLD_TIME and A_HOLD_TIME
SHOULD be significantly greater than TC_INTERVAL; a value >= 3 x SHOULD be significantly greater than TC_INTERVAL; a value >= 3 x
TC_INTERVAL is RECOMMENDED. TC_INTERVAL is RECOMMENDED.
o T_HOLD_TIME MUST be representable as described in [RFC5497]. o T_HOLD_TIME MUST be representable as described in [RFC5497].
5.4.5. Processing and Forwarding Validity Times 5.4.5. Processing and Forwarding Validity Times
The following parameters manage the processing and forwarding The following parameters manage the processing and forwarding
validity time of recorded message information: validity time of recorded message information:
P_HOLD_TIME is the period after receipt of a message that is P_HOLD_TIME:
processed by this router for which that information is recorded, The period after receipt of a message that is processed by this
in order that the message is not processed again if received router for which that information is recorded, in order that the
again. message is not processed again if received again.
F_HOLD_TIME is the period after receipt of a message that is F_HOLD_TIME:
forwarded by this router for which that information is recorded, The period after receipt of a message that is forwarded by this
in order that the message is not forwarded again if received router for which that information is recorded, in order that the
again. message is not forwarded again if received again.
The following constraints apply to these parameters: The following constraints apply to these parameters:
o P_HOLD_TIME > 0 o P_HOLD_TIME > 0
o F_HOLD_TIME > 0 o F_HOLD_TIME > 0
o Both of these parameters SHOULD be greater than the maximum o Both of these parameters SHOULD be greater than the maximum
difference in time that a message may take to traverse the MANET, difference in time that a message may take to traverse the MANET,
taking into account any message forwarding jitter as well as taking into account any message forwarding jitter as well as
propagation, queuing, and processing delays. propagation, queuing, and processing delays.
5.4.6. Jitter 5.4.6. Jitter
If jitter, as defined in [RFC5148], is used then the governing jitter If jitter, as defined in [RFC5148], is used then the governing jitter
parameters are as follows: parameters are as follows:
TP_MAXJITTER - represents the value of MAXJITTER used in [RFC5148] TP_MAXJITTER:
for periodically generated TC messages sent by this router. Represents the value of MAXJITTER used in [RFC5148] for
periodically generated TC messages sent by this router.
TT_MAXJITTER - represents the value of MAXJITTER used in [RFC5148] TT_MAXJITTER:
for externally triggered TC messages sent by this router. Represents the value of MAXJITTER used in [RFC5148] for externally
triggered TC messages sent by this router.
F_MAXJITTER - represents the default value of MAXJITTER used in F_MAXJITTER:
[RFC5148] for messages forwarded by this router. However before Represents the default value of MAXJITTER used in [RFC5148] for
using F_MAXJITTER a router MAY attempt to deduce a more messages forwarded by this router. However before using
appropriate value of MAXJITTER, for example based on any TLVs with F_MAXJITTER a router MAY attempt to deduce a more appropriate
Type = INTERVAL_TIME or Type = VALIDITY_TIME contained in the value of MAXJITTER, for example based on any TLVs with Type =
message to be forwarded. INTERVAL_TIME or Type = VALIDITY_TIME contained in the message to
be forwarded.
For constraints on these parameters see [RFC5148]. For constraints on these parameters see [RFC5148].
5.4.7. Hop Limit 5.4.7. Hop Limit
The parameter TC_HOP_LIMIT is the hop limit set in each TC message. The parameter TC_HOP_LIMIT is the hop limit set in each TC message.
TC_HOP_LIMIT MAY be a single fixed value, or MAY be different in TC TC_HOP_LIMIT MAY be a single fixed value, or MAY be different in TC
messages sent by the same router. However each other router, at any messages sent by the same router. However each other router, at any
hop count distance, SHOULD see a regular pattern of TC messages in hop count distance, SHOULD see a regular pattern of TC messages in
order that meaningful values of TLVs with Type = INTERVAL_TIME and order that meaningful values of TLVs with Type = INTERVAL_TIME and
skipping to change at page 23, line 32 skipping to change at page 24, line 22
this protocol with too many routers having either willingness value this protocol with too many routers having either willingness value
equal to WILL_NEVER will not function; it MUST be ensured, by equal to WILL_NEVER will not function; it MUST be ensured, by
administrative or other means, that this does not happen. administrative or other means, that this does not happen.
If a router has a willingness value equal to WILL_ALWAYS (the highest If a router has a willingness value equal to WILL_ALWAYS (the highest
possible value) then it will always be selected as a flooding or possible value) then it will always be selected as a flooding or
routing MPR, respectively, by all symmetric 1-hop neighbors. routing MPR, respectively, by all symmetric 1-hop neighbors.
A MANET in which all routers have WILL_FLOODING = WILL_ALWAYS, the A MANET in which all routers have WILL_FLOODING = WILL_ALWAYS, the
flooding operation will effectively disable optimizations, and flooding operation will effectively disable optimizations, and
perform as classic flooding. perform as blind flooding.
A router, which has WILL_ROUTING = WILL_NEVER will not act as an A router, which has WILL_ROUTING = WILL_NEVER will not act as an
intermediate router in the MANET. Such a router can, act as a intermediate router in the MANET. Such a router can, act as a
source, destination or gateway to another routing domain. source, destination or gateway to another routing domain.
Different routers MAY have different values for WILL_FLOODING and/or Different routers MAY have different values for WILL_FLOODING and/or
WILL_ROUTING. A router that has both WILL_FLOODING = WILL_DEFAULT WILL_ROUTING. A router that has both WILL_FLOODING = WILL_DEFAULT
and WILL_ROUTING = WILL_DEFAULT need not include an MPR_WILLING TLV and WILL_ROUTING = WILL_DEFAULT need not include an MPR_WILLING TLV
in its HELLO messages. in its HELLO messages.
skipping to change at page 26, line 4 skipping to change at page 26, line 39
Base. Base.
5.6. Constants 5.6. Constants
5.6.1. Link Metric Constants 5.6.1. Link Metric Constants
The constant minimum, maximum and default metric values are defined The constant minimum, maximum and default metric values are defined
by: by:
o MINIMUM_METRIC := 1 o MINIMUM_METRIC := 1
o MAXIMUM_METRIC := 16776960 o MAXIMUM_METRIC := 16776960
o DEFAULT_METRIC := 256 o DEFAULT_METRIC := 256
The symbolic value UNKNOWN_METRIC is defined in Section 6.1. The symbolic value UNKNOWN_METRIC is defined in Section 6.1.
5.6.2. Willingness Constants
The constant minimum, maximum and default willingness values are
defined by:
o WILL_NEVER := 0
o WILL_ALWAYS := 15
o WILL_DEFAULT := 7
6. Link Metric Values 6. Link Metric Values
A router records a link metric value for each direction of a link of A router records a link metric value for each direction of a link of
which it has knowledge. These link metric values are used to create which it has knowledge. These link metric values are used to create
metrics for routes by the addition of link metric values. metrics for routes by the addition of link metric values.
6.1. Link Metric Representation 6.1. Link Metric Representation
Link metric are reported in messages using a compressed Link metrics are reported in messages using a compressed
representation that occupies 12 bits, a 4 bit field and an 8 bit representation that occupies 12 bits, a 4 bit field and an 8 bit
field. The compressed representation represents positive integer field. The compressed representation represents positive integer
values with a minimum value of 1 and a maximum value that is slightly values with a minimum value of 1 and a maximum value that is slightly
smaller than the maximum 24 bit value. Only those values that have smaller than the maximum 24 bit value. Only those values that have
exact representation in the compressed form are used. Route metrics exact representation in the compressed form are used. Route metrics
are the summation of no more then 255 link metric values, and can are the summation of no more then 255 link metric values, and can
therefore be represented using no more than 32 bits. therefore be represented using no more than 32 bits.
Link and route metrics used in the Information Bases defined in this Link and route metrics used in the Information Bases defined in this
specification refer to the uncompressed values, and arithmetic specification refer to the uncompressed values, and arithmetic
skipping to change at page 26, line 51 skipping to change at page 27, line 52
6.2. Link Metric Compressed Form 6.2. Link Metric Compressed Form
The 12-bit compressed form of a link metric uses a modified form of a The 12-bit compressed form of a link metric uses a modified form of a
representation with as 8-bit mantissa (denoted b) and a 4-bit representation with as 8-bit mantissa (denoted b) and a 4-bit
exponent (denoted a). Note that if represented as the 12 bit value exponent (denoted a). Note that if represented as the 12 bit value
256a+b then the ordering of those 12 bit values is identical to the 256a+b then the ordering of those 12 bit values is identical to the
ordering of the represented values. ordering of the represented values.
The value so represented is (257+b)2^a - 256, where ^ denotes The value so represented is (257+b)2^a - 256, where ^ denotes
exponentiation. This has a minimum value (when a = 0 and b = 0) of exponentiation. This has a minimum value (when a = 0 and b = 0) of
MINUMUM_METRIC = 1 and a maximum value (when a = 15 and b = 255) of MINIMUM_METRIC = 1 and a maximum value (when a = 15 and b = 255) of
MAXIMUM_METRIC = 2^24 - 256. MAXIMUM_METRIC = 2^24 - 256.
An algorithm for computing a and b for the smallest representable An algorithm for computing a and b for the smallest representable
value not less than a link metric value v such that MINIMUM_METRIC <= value not less than a link metric value v such that MINIMUM_METRIC <=
v <= MAXIMUM_METRIC is: v <= MAXIMUM_METRIC is:
1. Find the smallest integer a such that v + 256 <= 2^(a + 9). 1. Find the smallest integer a such that v + 256 <= 2^(a + 9).
2. Set b := (v - 256(2^a - 1)) / (2^a) - 1, rounded up to the 2. Set b := (v - 256(2^a - 1)) / (2^a) - 1, rounded up to the
nearest integer. nearest integer.
skipping to change at page 28, line 7 skipping to change at page 29, line 7
A router's Originator Set records addresses that were recently used A router's Originator Set records addresses that were recently used
as originator addresses by this router. If a router's originator as originator addresses by this router. If a router's originator
address is immutable then this set is always empty and MAY be address is immutable then this set is always empty and MAY be
omitted. It consists of Originator Tuples: omitted. It consists of Originator Tuples:
(O_orig_addr, O_time) (O_orig_addr, O_time)
where: where:
O_orig_addr - is a recently used originator address, note that this O_orig_addr is a recently used originator address; note that this
does not include a prefix length; does not include a prefix length;
O_time - specifies the time at which this Tuple expires and MUST be O_time specifies the time at which this Tuple expires and MUST be
removed. removed.
7.2. Local Attached Network Set 7.2. Local Attached Network Set
A router's Local Attached Network Set records its local non-OLSRv2 A router's Local Attached Network Set records its local non-OLSRv2
interfaces via which it can act as gateways to other networks. The interfaces via which it can act as gateways to other networks. The
Local Attached Network Set is not modified by this protocol. This Local Attached Network Set is not modified by this protocol. This
protocol MAY respond to changes to the Local Attached Network Set, protocol MAY respond to changes to the Local Attached Network Set,
which MUST reflect corresponding changes in the router's status. It which MUST reflect corresponding changes in the router's status. It
consists of Local Attached Network Tuples: consists of Local Attached Network Tuples:
(AL_net_addr, AL_dist, AL_metric) (AL_net_addr, AL_dist, AL_metric)
where: where:
AL_net_addr - is the network address of an attached network which AL_net_addr is the network address of an attached network which
can be reached via this router. This SHOULD be a routable can be reached via this router. This SHOULD be a routable
address. It is constrained as described below. address. It is constrained as described below.
AL_dist - is the number of hops to the network with network address AL_dist is the number of hops to the network with network address
AL_net_addr from this router. AL_net_addr from this router.
AL_metric - is the metric of the link to the attached network with AL_metric is the metric of the link to the attached network with
address AL_net_addr from this router; address AL_net_addr from this router;
Attached networks local to this router only (i.e., not reachable Attached networks local to this router only (i.e., not reachable
except via this router) SHOULD be treated as local non-MANET except via this router) SHOULD be treated as local non-MANET
interfaces, and added to the Local Interface Set, as specified in interfaces, and added to the Local Interface Set, as specified in
[RFC6130], rather than be added to the Local Attached Network Set. [RFC6130], rather than be added to the Local Attached Network Set.
Because an attached network is not specific to the router, and may be Because an attached network is not specific to the router, and may be
outside the MANET, an attached network MAY also be attached to other outside the MANET, an attached network MAY also be attached to other
routers. Routing to an AL_net_addr will use maximum prefix length routers. Routing to an AL_net_addr will use maximum prefix length
skipping to change at page 29, line 14 skipping to change at page 30, line 14
Network Set only when the routers' local attached network Network Set only when the routers' local attached network
configuration changes, i.e., they are not subject to timer-based configuration changes, i.e., they are not subject to timer-based
expiration or changes due to received messages. expiration or changes due to received messages.
8. Interface Information Base 8. Interface Information Base
An Interface Information Base, as defined in [RFC6130], is maintained An Interface Information Base, as defined in [RFC6130], is maintained
for each OLSRv2 interface. Its Link Set and 2-Hop Set are modified for each OLSRv2 interface. Its Link Set and 2-Hop Set are modified
by this protocol. by this protocol.
8.1. Link Set
The Link Set is modified by adding these additional elements to each The Link Set is modified by adding these additional elements to each
Link Tuple: Link Tuple:
L_in_metric - is the metric of the link from the OLSRv2 interface L_in_metric is the metric of the link from the OLSRv2 interface
with addresses L_neighbor_iface_addr_list to this OLSRv2 with addresses L_neighbor_iface_addr_list to this OLSRv2
interface; interface;
L_out_metric - is the metric of the link to the OLSRv2 interface L_out_metric is the metric of the link to the OLSRv2 interface
with addresses L_neighbor_iface_addr_list from this OLSRv2 with addresses L_neighbor_iface_addr_list from this OLSRv2
interface; interface;
L_mpr_selector - is a boolean flag, describing if this neighbor has L_mpr_selector is a boolean flag, describing if this neighbor has
selected this router as a flooding MPR, i.e., is a flooding MPR selected this router as a flooding MPR, i.e., is a flooding MPR
selector of this router. selector of this router.
L_in_metric will be specified by a process that is external to this L_in_metric will be specified by a process that is external to this
specification. Any Link Tuple with L_status = HEARD or L_status = specification. Any Link Tuple with L_status = HEARD or L_status =
SYMMETRIC MUST have a specified value of L_in_metric. SYMMETRIC MUST have a specified value of L_in_metric.
A Link Tuple created (but not updated) by [RFC6130] MUST set: A Link Tuple created (but not updated) by [RFC6130] MUST set:
o L_in_metric := unknown; o L_in_metric := UNKNOWN_METRIC;
o L_out_metric := unknown; o L_out_metric := UNKNOWN_METRIC;
o L_mpr_selector := false. o L_mpr_selector := false.
8.2. 2-Hop Set
The 2-Hop Set is modified by adding these additional elements to each The 2-Hop Set is modified by adding these additional elements to each
2-Hop Tuple: 2-Hop Tuple:
N2_in_metric - is the router metric from the router with address N2_in_metric is the neighbor metric from the router with address
N2_2hop_iface_addr to the router with OLSRv2 interface addresses N2_2hop_iface_addr to the router with OLSRv2 interface addresses
N2_neighbor_iface_addr_list; N2_neighbor_iface_addr_list;
N2_out_metric is the neighbor metric to the router with address
N2_out_metric - is the router metric to the router with address
N2_2hop_iface_addr from the router with OLSRv2 interface addresses N2_2hop_iface_addr from the router with OLSRv2 interface addresses
N2_neighbor_iface_addr_list. N2_neighbor_iface_addr_list.
A Neighbor Tuple created (but not updated) by [RFC6130] MUST set: A 2-Hop Tuple created (but not updated) by [RFC6130] MUST set:
o N2_in_metric := unknown; o N2_in_metric := UNKNOWN_METRIC;
o N2_out_metric := unknown. o N2_out_metric := UNKNOWN_METRIC.
9. Neighbor Information Base 9. Neighbor Information Base
An Neighbor Information Base, as defined in [RFC6130], is maintained An Neighbor Information Base, as defined in [RFC6130], is maintained
for each router. It is modified by this protocol by adding these for each router. It is modified by this protocol by adding these
additional elements to each Neighbor Tuple in the Neighbor Set: additional elements to each Neighbor Tuple in the Neighbor Set:
N_orig_addr - is the neighbor's originator address, which may be N_orig_addr is the neighbor's originator address, which may be
unknown. Note that this originator address does not include a unknown. Note that this originator address does not include a
prefix length; prefix length;
N_in_metric - is the router metric of any link from this neighbor to N_in_metric is the neighbor metric of any link from this neighbor
this router, i.e., the minimum of all corresponding L_in_metric to this router, i.e., the minimum of all corresponding L_in_metric
with L_status = SYMMETRIC, unspecified if there are no such Link with L_status = SYMMETRIC, UNKNOWN_METRIC if there are no such
Tuples; Link Tuples;
N_out_metric - is the router metric of any link from this router to N_out_metric is the neighbor metric of any link from this router
this neighbor, i.e., the minimum of all corresponding L_out_metric to this neighbor, i.e., the minimum of all corresponding
with L_status = SYMMETRIC, unspecified if there are no such Link L_out_metric with L_status = SYMMETRIC, UNKNOWN_METRIC if there
Tuples; are no such Link Tuples;
N_will_flooding - is the neighbor's willingness to be selected as a N_will_flooding is the neighbor's willingness to be selected as a
flooding MPR, in the range from WILL_NEVER to WILL_ALWAYS, both flooding MPR, in the range from WILL_NEVER to WILL_ALWAYS, both
inclusive; inclusive;
N_will_routing - is the neighbor's willingness to be selected as a N_will_routing is the neighbor's willingness to be selected as a
routing MPR, in the range from WILL_NEVER to WILL_ALWAYS, both routing MPR, in the range from WILL_NEVER to WILL_ALWAYS, both
inclusive; inclusive;
N_flooding_mpr - is a boolean flag, describing if this neighbor is N_flooding_mpr is a boolean flag, describing if this neighbor is
selected as a flooding MPR by this router; selected as a flooding MPR by this router;
N_routing_mpr - is a boolean flag, describing if this neighbor is N_routing_mpr is a boolean flag, describing if this neighbor is
selected as a routing MPR by this router; selected as a routing MPR by this router;
N_mpr_selector - is a boolean flag, describing if this neighbor has N_mpr_selector is a boolean flag, describing if this neighbor has
selected this router as a routing MPR, i.e., is a routing MPR selected this router as a routing MPR, i.e., is a routing MPR
selector of this router. selector of this router.
N_advertised - is a boolean flag, describing if this router has N_advertised is a boolean flag, describing if this router has
elected to advertise a link to this neighbor in its TC messages. elected to advertise a link to this neighbor in its TC messages.
A Neighbor Tuple created (but not updated) by [RFC6130] MUST set: A Neighbor Tuple created (but not updated) by [RFC6130] MUST set:
o N_orig_addr := unknown; o N_orig_addr := unknown;
o N_in_metric := unknown; o N_in_metric := UNKNOWN_METRIC;
o N_out_metric := unknown; o N_out_metric := UNKNOWN_METRIC;
o N_will_flooding := WILL_NEVER; o N_will_flooding := WILL_NEVER;
o N_will_routing := WILL_NEVER; o N_will_routing := WILL_NEVER;
o N_routing_mpr := false; o N_routing_mpr := false;
o N_flooding_mpr := false; o N_flooding_mpr := false;
o N_mpr_selector := false; o N_mpr_selector := false;
skipping to change at page 32, line 7 skipping to change at page 33, line 11
A router's Advertising Remote Router Set records information A router's Advertising Remote Router Set records information
describing each remote router in the network that transmits TC describing each remote router in the network that transmits TC
messages, allowing outdated TC messages to be recognized and messages, allowing outdated TC messages to be recognized and
discarded. It consists of Advertising Remote Router Tuples: discarded. It consists of Advertising Remote Router Tuples:
(AR_orig_addr, AR_seq_number, AR_time) (AR_orig_addr, AR_seq_number, AR_time)
where: where:
AR_orig_addr - is the originator address of a received TC message, AR_orig_addr is the originator address of a received TC message,
note that this does not include a prefix length; note that this does not include a prefix length;
AR_seq_number - is the greatest ANSN in any TC message received AR_seq_number is the greatest ANSN in any TC message received
which originated from the router with originator address which originated from the router with originator address
AR_orig_addr (i.e., which contributed to the information contained AR_orig_addr (i.e., which contributed to the information contained
in this Tuple); in this Tuple);
AR_time - is the time at which this Tuple expires and MUST be AR_time is the time at which this Tuple expires and MUST be
removed. removed.
10.2. Router Topology Set 10.2. Router Topology Set
A router's Topology Set records topology information about the links A router's Topology Set records topology information about the links
between routers in the MANET. It consists of Router Topology Tuples: between routers in the MANET. It consists of Router Topology Tuples:
(TR_from_orig_addr, TR_to_orig_addr, TR_seq_number, TR_metric, (TR_from_orig_addr, TR_to_orig_addr, TR_seq_number, TR_metric,
TR_time) TR_time)
where: where:
TR_from_orig_addr - is the originator address of a router which can TR_from_orig_addr is the originator address of a router which can
reach the router with originator address TR_to_orig_addr in one reach the router with originator address TR_to_orig_addr in one
hop, note that this does not include a prefix length; hop, note that this does not include a prefix length;
TR_to_orig_addr - is the originator address of a router which can be TR_to_orig_addr is the originator address of a router which can be
reached by the router with originator address TR_to_orig_addr in reached by the router with originator address TR_to_orig_addr in
one hop, note that this does not include a prefix length; one hop, note that this does not include a prefix length;
TR_seq_number - is the greatest ANSN in any TC message received TR_seq_number is the greatest ANSN in any TC message received
which originated from the router with originator address which originated from the router with originator address
TR_from_orig_addr (i.e., which contributed to the information TR_from_orig_addr (i.e., which contributed to the information
contained in this Tuple); contained in this Tuple);
TR_metric - is the router metric from the router with originator TR_metric is the neighbor metric from the router with originator
address TR_from_orig_addr to the router with originator address address TR_from_orig_addr to the router with originator address
TR_to_orig_addr; TR_to_orig_addr;
TR_time - specifies the time at which this Tuple expires and MUST be TR_time specifies the time at which this Tuple expires and MUST be
removed. removed.
10.3. Routable Address Topology Set 10.3. Routable Address Topology Set
A router's Routable Address Topology Set records topology information A router's Routable Address Topology Set records topology information
about the routable addresses within the MANET, and via which routers about the routable addresses within the MANET, and via which routers
they may be reached. It consists of Routable Address Topology they may be reached. It consists of Routable Address Topology
Tuples: Tuples:
(TA_from_orig_addr, TA_dest_addr, TA_seq_number, TA_metric, (TA_from_orig_addr, TA_dest_addr, TA_seq_number, TA_metric,
TA_time) TA_time)
where: where:
TA_from_orig_addr - is the originator address of a router which can TA_from_orig_addr is the originator address of a router which can
reach the router with routable address TA_dest_addr in one hop, reach the router with routable address TA_dest_addr in one hop,
note that this does not include a prefix length; note that this does not include a prefix length;
TA_dest_addr - is a routable address of a router which can be TA_dest_addr is a routable address of a router which can be
reached by the router with originator address TA_from_orig_addr in reached by the router with originator address TA_from_orig_addr in
one hop; one hop;
TA_seq_number - is the greatest ANSN in any TC message received TA_seq_number is the greatest ANSN in any TC message received
which originated from the router with originator address which originated from the router with originator address
TA_from_orig_addr (i.e., which contributed to the information TA_from_orig_addr (i.e., which contributed to the information
contained in this Tuple); contained in this Tuple);
TA_metric - is the router metric from the router with originator TA_metric is the neighbor metric from the router with originator
address TA_from_orig_addr to the router with OLSRv2 interface address TA_from_orig_addr to the router with OLSRv2 interface
address TA_dest_addr; address TA_dest_addr;
TA_time - specifies the time at which this Tuple expires and MUST be TA_time specifies the time at which this Tuple expires and MUST be
removed. removed.
10.4. Attached Network Set 10.4. Attached Network Set
A router's Attached Network Set records information about networks A router's Attached Network Set records information about networks
(which may be outside the MANET) attached to other routers and their (which may be outside the MANET) attached to other routers and their
routable addresses. It consists of Attached Network Tuples: routable addresses. It consists of Attached Network Tuples:
(AN_orig_addr, AN_net_addr, AN_seq_number, AN_dist, AN_metric, (AN_orig_addr, AN_net_addr, AN_seq_number, AN_dist, AN_metric,
AN_time) AN_time)
where: where:
AN_orig_addr - is the originator address of a router which can act AN_orig_addr is the originator address of a router which can act
as gateway to the network with network address AN_net_addr, note as gateway to the network with network address AN_net_addr, note
that this does not include a prefix length; that this does not include a prefix length;
AN_net_addr is the network address of an attached network, which
AN_net_addr - is the network address of an attached network, which
may be reached via the router with originator address may be reached via the router with originator address
AN_orig_addr; AN_orig_addr;
AN_seq_number - is the greatest ANSN in any TC message received AN_seq_number is the greatest ANSN in any TC message received
which originated from the router with originator address which originated from the router with originator address
AN_orig_addr (i.e., which contributed to the information contained AN_orig_addr (i.e., which contributed to the information contained
in this Tuple); in this Tuple);
AN_dist - is the number of hops to the network with network address AN_dist is the number of hops to the network with network address
AN_net_addr from the router with originator address AN_orig_addr; AN_net_addr from the router with originator address AN_orig_addr;
AN_metric - is the metric of the link from the router with AN_metric is the metric of the link from the router with
originator address AN_orig_addr to the attached network with originator address AN_orig_addr to the attached network with
address AN_net_addr; address AN_net_addr;
AN_time - specifies the time at which this Tuple expires and MUST be AN_time specifies the time at which this Tuple expires and MUST be
removed. removed.
10.5. Routing Set 10.5. Routing Set
A router's Routing Set records the first hop along a selected path to A router's Routing Set records the first hop along a selected path to
each destination for which any such path is known. It consists of each destination for which any such path is known. It consists of
Routing Tuples: Routing Tuples:
(R_dest_addr, R_next_iface_addr, R_local_iface_addr, R_dist, (R_dest_addr, R_next_iface_addr, R_local_iface_addr, R_dist,
R_metric) R_metric)
where: where:
R_dest_addr - is the network address of the destination, either the R_dest_addr is the network address of the destination, either the
network address of an interface of a destination router, or the network address of an interface of a destination router, or the
network address of an attached network; network address of an attached network;
R_next_iface_addr - is the network address of the "next hop" on the R_next_iface_addr is the network address of the "next hop" on the
selected path to the destination; selected path to the destination;
R_local_iface_addr - is the network address of the local OLSRv2 R_local_iface_addr is the network address of the local OLSRv2
interface over which a packet MUST be sent to reach the interface over which a packet MUST be sent to reach the
destination by the selected path. destination by the selected path.
R_dist - is the number of hops on the selected path to the R_dist is the number of hops on the selected path to the
destination; destination;
R_metric - is the metric of the route to the destination with R_metric is the metric of the route to the destination with
address R_dest_addr. address R_dest_addr.
The Routing Set for a router is derived from the contents of other The Routing Set for a router is derived from the contents of other
protocol Sets of the router (the Link Sets, the Neighbor Set, the protocol sets of the router (the Link Sets, the Neighbor Set, the
Router Topology Set, the Routable Address Topology Set, the Attached Router Topology Set, the Routable Address Topology Set, the Attached
Network Set, and OPTIONALLY the Two Hop Sets). The Routing Set is Network Set, and OPTIONALLY the 2-Hop Sets). The Routing Set is
updated (Routing Tuples added or removed, or the complete Routing Set updated (Routing Tuples added or removed, or the complete Routing Set
recalculated) when routing paths are calculated, based on changes to recalculated) when routing paths are calculated, based on changes to
these other protocol Sets. Routing Tuples are not subject to timer- these other protocol sets. Routing Tuples are not subject to timer-
based expiration. based expiration.
11. Received Message Information Base 11. Received Message Information Base
The Received Message Information Base, defined by this specification, The Received Message Information Base, defined by this specification,
records information required to ensure that a message is processed at records information required to ensure that a message is processed at
most once and is forwarded at most once per OLSRv2 interface of a most once and is forwarded at most once per OLSRv2 interface of a
router, using MPR flooding. router, using MPR flooding.
11.1. Received Set 11.1. Received Set
A router has a Received Set per OLSRv2 interface. Each Received Set A router has a Received Set per OLSRv2 interface. Each Received Set
records the signatures of messages which have been received over that records the signatures of messages which have been received over that
OLSRv2 interface. Each consists of Received Tuples: OLSRv2 interface. Each consists of Received Tuples:
(RX_type, RX_orig_addr, RX_seq_number, RX_time) (RX_type, RX_orig_addr, RX_seq_number, RX_time)
where: where:
RX_type - is the received Message Type; RX_type is the received Message Type;
RX_orig_addr - is the originator address of the received message, RX_orig_addr is the originator address of the received message,
note that this does not include a prefix length; note that this does not include a prefix length;
RX_seq_number - is the message sequence number of the received RX_seq_number is the message sequence number of the received
message; message;
RX_time - specifies the time at which this Tuple expires and MUST be RX_time specifies the time at which this Tuple expires and MUST be
removed. removed.
11.2. Processed Set 11.2. Processed Set
A router has a single Processed Set which records signatures of A router has a single Processed Set which records signatures of
messages which have been processed by the router. It consists of messages which have been processed by the router. It consists of
Processed Tuples: Processed Tuples:
(P_type, P_orig_addr, P_seq_number, P_time) (P_type, P_orig_addr, P_seq_number, P_time)
where: where:
P_type - is the processed Message Type; P_type is the processed Message Type;
P_orig_addr is the originator address of the processed message,
P_orig_addr - is the originator address of the processed message,
note that this does not include a prefix length; note that this does not include a prefix length;
P_seq_number - is the message sequence number of the processed P_seq_number is the message sequence number of the processed
message; message;
P_time - specifies the time at which this Tuple expires and MUST be P_time specifies the time at which this Tuple expires and MUST be
removed. removed.
11.3. Forwarded Set 11.3. Forwarded Set
A router has a single Forwarded Set which records signatures of A router has a single Forwarded Set which records signatures of
messages which have been forwarded by the router. It consists of messages which have been forwarded by the router. It consists of
Forwarded Tuples: Forwarded Tuples:
(F_type, F_orig_addr, F_seq_number, F_time) (F_type, F_orig_addr, F_seq_number, F_time)
where: where:
F_type - is the forwarded Message Type; F_type is the forwarded Message Type;
F_orig_addr - is the originator address of the forwarded message, F_orig_addr is the originator address of the forwarded message,
note that this does not include a prefix length; note that this does not include a prefix length;
F_seq_number - is the message sequence number of the forwarded F_seq_number is the message sequence number of the forwarded
message; message;
F_time - specifies the time at which this Tuple expires and MUST be F_time specifies the time at which this Tuple expires and MUST be
removed. removed.
12. Information Base Properties 12. Information Base Properties
As part of this specification, in a number of cases there is a As part of this specification, in a number of cases there is a
natural correspondence from a Protocol Tuple in one Protocol Set to a natural correspondence from a Protocol Tuple in one Protocol Set to a
single Protocol Tuple in another Protocol Set, in the same or another single Protocol Tuple in another Protocol Set, in the same or another
Information Base. The latter Protocol Tuple is referred to as Information Base. The latter Protocol Tuple is referred to as
"corresponding" to the former Protocol Tuple. "corresponding" to the former Protocol Tuple.
skipping to change at page 39, line 16 skipping to change at page 40, line 19
This specification defines 2 Message TLVs and 4 Address Block TLVs. This specification defines 2 Message TLVs and 4 Address Block TLVs.
All references in this specification to TLVs that do not indicate a All references in this specification to TLVs that do not indicate a
type extension, assume Type Extension = 0. TLVs in processed type extension, assume Type Extension = 0. TLVs in processed
messages with a type extension which is neither zero as so assumed, messages with a type extension which is neither zero as so assumed,
nor a specifically indicated non-zero type extension, are ignored. nor a specifically indicated non-zero type extension, are ignored.
13.3.1. Message TLVs 13.3.1. Message TLVs
The MPR_WILLING TLV is used in HELLO messages. At most one The MPR_WILLING TLV is used in HELLO messages. A message MUST NOT
MPR_WILLING TLV may appear in any message. contain more than one MPR_WILLING TLV.
+-------------+--------------+--------------------------------------+ +-------------+--------------+--------------------------------------+
| Type | Value Length | Value | | Type | Value Length | Value |
+-------------+--------------+--------------------------------------+ +-------------+--------------+--------------------------------------+
| MPR_WILLING | 1 octet | Bits 0-3 encode the parameter | | MPR_WILLING | 1 octet | Bits 0-3 encode the parameter |
| | | WILL_FLOODING; bits 4-7 encode the | | | | WILL_FLOODING; bits 4-7 encode the |
| | | parameter WILL_ROUTING. | | | | parameter WILL_ROUTING. |
+-------------+--------------+--------------------------------------+ +-------------+--------------+--------------------------------------+
Table 1: MPR_WILLING TLV definition Table 1: MPR_WILLING TLV definition
The CONT_SEQ_NUM TLV is used in TC messages. At most one The CONT_SEQ_NUM TLV is used in TC messages. message MUST NOT contain
CONT_SEQ_NUM TLV may appear in any message. more than one CONT_SEQ_NUM TLV.
+--------------+--------------+-------------------------------------+ +--------------+--------------+-------------------------------------+
| Type | Value Length | Value | | Type | Value Length | Value |
+--------------+--------------+-------------------------------------+ +--------------+--------------+-------------------------------------+
| CONT_SEQ_NUM | 2 octets | The ANSN contained in the Neighbor | | CONT_SEQ_NUM | 2 octets | The ANSN contained in the Neighbor |
| | | Information Base. | | | | Information Base. |
+--------------+--------------+-------------------------------------+ +--------------+--------------+-------------------------------------+
Table 2: CONT_SEQ_NUM TLV definition Table 2: CONT_SEQ_NUM TLV definition
13.3.2. Address Block TLVs 13.3.2. Address Block TLVs
The LINK_METRIC TLV is used in HELLO messages and TC messages. It The LINK_METRIC TLV is used in HELLO messages and TC messages. It
may use any type extension; only LINK_METRIC TLVs with type extension MAY use any type extension; only LINK_METRIC TLVs with type extension
equal to LINK_METRIC_TYPE will be used by this specification. At equal to LINK_METRIC_TYPE will be used by this specification. At
most one link metric value of any given kind (link or neighbor) and most one link metric value of any given kind (link or neighbor) and
direction may be associated with any address. direction may be associated with any address.
+-------------+--------------+--------------------------------------+ +-------------+--------------+--------------------------------------+
| Type | Value Length | Value | | Type | Value Length | Value |
+-------------+--------------+--------------------------------------+ +-------------+--------------+--------------------------------------+
| LINK_METRIC | 2 octets | Bits 0-3 indicates kind(s) and | | LINK_METRIC | 2 octets | Bits 0-3 indicates kind(s) and |
| | | direction(s), Bits 4-7 indicate | | | | direction(s), Bits 4-7 indicate |
| | | exponent (a), Bits 8-15 indicate | | | | exponent (a), Bits 8-15 indicate |
| | | mantissa (b) | | | | mantissa (b) |
+-------------+--------------+--------------------------------------+ +-------------+--------------+--------------------------------------+
Table 3: LINK_METRIC TLV definition Table 3: LINK_METRIC TLV definition
The exponent and mantissa use the representation defined in The exponent and mantissa use the representation defined in
Section 6. Each bit of the types and directions sub-field, if set Section 6. Each bit of the types and directions sub-field, if set
('1') indicates that the link metric is of the indicated kind and ('1') indicates that the link metric is of the indicated kind and
direction. Any combination of these bits MAY be used, except that direction. Any combination of these bits MAY be used.
the combination with all bits unset ('0') SHOULD NOT be used.
+-----+-----------------+-----------+ +-----+-----------------+-----------+
| Bit | Kind | Direction | | Bit | Kind | Direction |
+-----+-----------------+-----------+ +-----+-----------------+-----------+
| 0 | Link metric | Incoming | | 0 | Link metric | Incoming |
| 1 | Link metric | Outgoing | | 1 | Link metric | Outgoing |
| 2 | Neighbor metric | Incoming | | 2 | Neighbor metric | Incoming |
| 3 | Neighbor metric | Outgoing | | 3 | Neighbor metric | Outgoing |
+-----+-----------------+-----------+ +-----+-----------------+-----------+
skipping to change at page 41, line 21 skipping to change at page 42, line 21
| | | originator address, ROUTABLE | | | | originator address, ROUTABLE |
| | | indicates that the corresponding | | | | indicates that the corresponding |
| | | network address is a routable | | | | network address is a routable |
| | | address of an interface, | | | | address of an interface, |
| | | ROUTABLE_ORIG indicates that the | | | | ROUTABLE_ORIG indicates that the |
| | | corresponding address is both | | | | corresponding address is both |
+---------------+--------------+------------------------------------+ +---------------+--------------+------------------------------------+
Table 6: NBR_ADDR_TYPE TLV definition Table 6: NBR_ADDR_TYPE TLV definition
If an address is both a originator address and a routable address, If an address is both an originator address and a routable address,
then it may be associated with either one Address Block TLV with Type then it may be associated with either one Address Block TLV with Type
:= NBR_ADDR_TYPE and Value := ROUTABLE_ORIG, or with two Address := NBR_ADDR_TYPE and Value := ROUTABLE_ORIG, or with two Address
Block TLVs with Type:= NBR_ADDR_TYPE, one with Value := ORIGINATOR Block TLVs with Type:= NBR_ADDR_TYPE, one with Value := ORIGINATOR
and one with Value := ROUTABLE. and one with Value := ROUTABLE.
The GATEWAY TLV is used in TC messages. At most one GATEWAY TLV may The GATEWAY TLV is used in TC messages. At most one GATEWAY TLV may
be associated with any address. be associated with any address.
+---------+--------------+-------------------------------------+ +---------+--------------+-------------------------------------+
| Type | Value Length | Value | | Type | Value Length | Value |
skipping to change at page 45, line 48 skipping to change at page 46, line 48
Message Header by 1. Message Header by 1.
3. The message is transmitted over all OLSRv2 3. The message is transmitted over all OLSRv2
interfaces, as described in Section 13. interfaces, as described in Section 13.
15. HELLO Messages 15. HELLO Messages
The HELLO message Message Type is owned by [RFC6130], and thus HELLO The HELLO message Message Type is owned by [RFC6130], and thus HELLO
messages are generated, transmitted, received and processed by messages are generated, transmitted, received and processed by
[RFC6130]. This protocol, as permitted by [RFC6130], also uses HELLO [RFC6130]. This protocol, as permitted by [RFC6130], also uses HELLO
messages, including adding to HELLO message generation, and # messages, including adding to HELLO message generation, and
implementing additional processing based on received HELLO messages. implementing additional processing based on received HELLO messages.
HELLO messages are not forwarded by [RFC6130] or this specification. HELLO messages are not forwarded by [RFC6130] or by this
specification.
15.1. HELLO Message Generation 15.1. HELLO Message Generation
An HELLO message is generated as defined in [RFC6130], extended by A HELLO message is generated as defined in [RFC6130], extended by the
the following elements being added to the HELLO message by this following elements being added to the HELLO message by this
specification before the HELLO message is sent over an OLSRv2 specification before the HELLO message is sent over an OLSRv2
interface: interface:
o A message originator address, recording this router's originator o A message originator address, recording this router's originator
address. This MUST use a <msg-orig-addr> element, unless: address. This MUST use a <msg-orig-addr> element, unless:
* The message specifies only a single local interface address * The message specifies only a single local interface address
(i.e., contains only one address object that is associated with (i.e., contains only one address object that is associated with
an Address Block TLV with Type = LOCAL_IF, and which has no an Address Block TLV with Type = LOCAL_IF, and which has no
prefix length, or a maximum prefix length) which will then be prefix length, or a maximum prefix length) which will then be
skipping to change at page 46, line 30 skipping to change at page 47, line 30
* The message does not include any local interface network * The message does not include any local interface network
addresses (i.e., has no address objects associated with an addresses (i.e., has no address objects associated with an
Address Block TLV with Type = LOCAL_IF), as permitted by the Address Block TLV with Type = LOCAL_IF), as permitted by the
specification in [RFC6130] when the router that generated the specification in [RFC6130] when the router that generated the
HELLO message has only one interface address and will use that HELLO message has only one interface address and will use that
as the sending address of the IP datagram in which the HELLO as the sending address of the IP datagram in which the HELLO
message is contained. In this case that address will be message is contained. In this case that address will be
interpreted as the message originator address. interpreted as the message originator address.
o A Message TLV with Type := MPR_WILLING and Value := WILLINGNESS o A Message TLV with Type := MPR_WILLING MUST be included, unless
MUST be included, unless WILLINGNESS = WILL_DEFAULT (in which case both willingness values that it reports are equal to WILL_DEFAULT
it MAY be included). (in which case it MAY be included).
o The following cases associate Address Block TLVs with one or more o The following cases associate Address Block TLVs with one or more
addresses from a Link Tuple or a Neighbor Tuple if these are addresses from a Link Tuple or a Neighbor Tuple if these are
included in the HELLO message. In each case the TLV MUST be included in the HELLO message. In each case the TLV MUST be
associated with at least copy of one address from the relevant associated with at least copy of one address from the relevant
Tuple, the TLV MAY be associated with more such addresses Tuple; the TLV MAY be associated with more such addresses
(including a copy of that address object, possibly not itself (including a copy of that address object, possibly not itself
associated with any other indicated TLVs, in the same or a associated with any other indicated TLVs, in the same or a
different Address Block). These additional TLVs MUST NOT be different Address Block). These additional TLVs MUST NOT be
associated with any other addresses in a HELLO message that will associated with any other addresses in a HELLO message that will
be processed by [RFC6130]. be processed by [RFC6130].
* For each Link Tuple for which L_in_metric != UNKNOWN_METRIC, * For each Link Tuple for which L_in_metric != UNKNOWN_METRIC,
and for which one or more addresses in its and for which one or more addresses in its
L_neighbor_iface_addr_list are included as address objects with L_neighbor_iface_addr_list are included as address objects with
an associated Address Block TLV with Type = LINK_STATUS and an associated Address Block TLV with Type = LINK_STATUS and
skipping to change at page 47, line 17 skipping to change at page 48, line 17
L_neighbor_iface_addr_list are included as address objects with L_neighbor_iface_addr_list are included as address objects with
an associated Address Block TLV with Type = LINK_STATUS and an associated Address Block TLV with Type = LINK_STATUS and
Value = SYMMETRIC, at least one of these addresses MUST be Value = SYMMETRIC, at least one of these addresses MUST be
associated with an Address Block TLV with Type := LINK_METRIC associated with an Address Block TLV with Type := LINK_METRIC
indicating an outgoing link metric with value L_out_metric, indicating an outgoing link metric with value L_out_metric,
unless this equals DEFAULT_METRIC. unless this equals DEFAULT_METRIC.
* For each Neighbor Tuple for which N_symmetric = true, and for * For each Neighbor Tuple for which N_symmetric = true, and for
which one or more addresses in its N_neighbor_addr_list are which one or more addresses in its N_neighbor_addr_list are
included as address objects with an associated Address Block included as address objects with an associated Address Block
TLV with Type = LINK_STATUS and Value = SYMMETRIC, at least one TLV with Type = LINK_STATUS or Type = OTHER_NEIGHB and Value =
of these addresses MUST be associated with an Address Block TLV SYMMETRIC, at least one of these addresses MUST be associated
with Type := LINK_METRIC indicating an incoming neighbor metric with an Address Block TLV with Type := LINK_METRIC indicating
with value N_in_metric, unless this equals DEFAULT_METRIC. an incoming neighbor metric with value N_in_metric, unless this
equals DEFAULT_METRIC.
* For each Neighbor Tuple for which N_symmetric = true, and for * For each Neighbor Tuple for which N_symmetric = true, and for
which one or more addresses in its N_neighbor_addr_list are which one or more addresses in its N_neighbor_addr_list are
included as address objects with an associated Address Block included as address objects with an associated Address Block
TLV with Type = LINK_STATUS and Value = SYMMETRIC, at least one TLV with Type = LINK_STATUS or Type = OTHER_NEIGHB and Value =
of these addresses MUST be associated with an Address Block TLV SYMMETRIC, at least one of these addresses MUST be associated
with Type := LINK_METRIC indicating an outcoming neighbor with an Address Block TLV with Type := LINK_METRIC indicating
metric with value N_out_metric, unless this equals an outgoing neighbor metric with value N_out_metric, unless
DEFAULT_METRIC. this equals DEFAULT_METRIC.
* For each Neighbor Tuple with N_flooding_mpr = true, and for * For each Neighbor Tuple with N_flooding_mpr = true, and for
which one or more network addresses in its N_neighbor_addr_list which one or more network addresses in its N_neighbor_addr_list
are included as address objects in the HELLO message with an are included as address objects in the HELLO message with an
associated Address Block TLV with Type = LINK_STATUS and Value associated Address Block TLV with Type = LINK_STATUS and Value
= SYMMETRIC, at least one of these addresses MUST be associated = SYMMETRIC, at least one of these addresses MUST be associated
with an Address Block TLV with Type := MPR and Value := 0 or with an Address Block TLV with Type := MPR and Value :=
Value := 1. FLOODING or Value := FLOOD_ROUTE.
* For each Neighbor Tuple with N_routing_mpr = true, and for * For each Neighbor Tuple with N_routing_mpr = true, and for
which one or more network addresses in its N_neighbor_addr_list which one or more network addresses in its N_neighbor_addr_list
are included as address objects in the HELLO message with an are included as address objects in the HELLO message with an
associated Address Block TLV with Type = LINK_STATUS and Value associated Address Block TLV with Type = LINK_STATUS and Value
= SYMMETRIC, at least one of these addresses MUST be associated = SYMMETRIC, at least one of these addresses MUST be associated
with an Address Block TLV with Type := MPR and Value := 0 or with an Address Block TLV with Type := MPR and Value := ROUTING
Value := 2. or Value := FLOOD_ROUTE.
15.2. HELLO Message Transmission 15.2. HELLO Message Transmission
HELLO messages are scheduled and transmitted by [RFC6130]. This HELLO messages are scheduled and transmitted by [RFC6130]. This
protocol MAY require that an additional HELLO message is sent when protocol MAY require that an additional HELLO message is sent when
the router's set of MPRs changes, in addition to the cases specified either of the router's sets of MPRs changes, in addition to the cases
in [RFC6130], and subject to the same constraints. specified in [RFC6130], and subject to the same constraints.
15.3. HELLO Message Processing 15.3. HELLO Message Processing
When received on an OLSRv2 interface, HELLO messages are made When received on an OLSRv2 interface, HELLO messages are made
available to this protocol in two ways, both as permitted by available to this protocol in two ways, both as permitted by
[RFC6130]: [RFC6130]:
o Such received HELLO messages MUST be made available to this o Such received HELLO messages MUST be made available to this
protocol on reception, which allows them to be discarded before protocol on reception, which allows them to be discarded before
being processed by [RFC6130], for example if the information added being processed by [RFC6130], for example if the information added
to the HELLO message by this protocol is inconsistent. to the HELLO message by this specification is inconsistent.
o Such received HELLO messages MUST be made available to OLSRv2 o Such received HELLO messages MUST be made available to OLSRv2
after [RFC6130] has completed its processing thereof, unless after [RFC6130] has completed its processing thereof, unless
discarded as malformed by [RFC6130], for processing by this discarded as malformed by [RFC6130], for processing by this
protocol. specification.
15.3.1. HELLO Message Discarding 15.3.1. HELLO Message Discarding
In addition to the reasons specified in [RFC6130] for discarding a In addition to the reasons specified in [RFC6130] for discarding a
HELLO message on reception, a HELLO message MUST be discarded before HELLO message on reception, a HELLO message MUST be discarded before
processing by [RFC6130] or this specification if it: processing by [RFC6130] or this specification if it:
o Has more than one Message TLV with Type = MPR_WILLING. o Has more than one Message TLV with Type = MPR_WILLING.
o Has a message originator address, or a network address o Has a message originator address, or a network address
skipping to change at page 49, line 8 skipping to change at page 50, line 8
o Contains any address object associated with an Address Block TLV o Contains any address object associated with an Address Block TLV
with Type = MPR that is not also associated with an Address Block with Type = MPR that is not also associated with an Address Block
TLV with Type = LINK_STATUS and Value = SYMMETRIC (including using TLV with Type = LINK_STATUS and Value = SYMMETRIC (including using
a different copy of that address object, in the same or a a different copy of that address object, in the same or a
different Address Block). different Address Block).
15.3.2. HELLO Message Usage 15.3.2. HELLO Message Usage
HELLO messages are first processed as specified in [RFC6130]. That HELLO messages are first processed as specified in [RFC6130]. That
processing includes identifying (or creating) a Neighbor Tuple processing includes identifying (or creating) a Link Tuple and a
corresponding to the originator of the HELLO message (the "current Neighbor Tuple corresponding to the originator of the HELLO message
Neighbor Tuple"). After this, the following processing MUST also be (the "current Link Tuple" and the "current Neighbor Tuple"). After
performed: this, the following processing MUST also be performed:
1. If the HELLO message has a well-defined message originator 1. If the HELLO message has a well-defined message originator
address, i.e., has an <msg-orig-addr> element or has zero or one address, i.e., has an <msg-orig-addr> element or has zero or one
network addresses associated with a TLV with Type = LOCAL_IF: network addresses associated with a TLV with Type = LOCAL_IF:
1. Remove any other Neighbor Tuple with N_orig_addr = message 1. Remove any Neighbor Tuple, other than the current Neighbor
originator address, taking any consequent action (including Tuple, with N_orig_addr = message originator address, taking
removing one or more Link Tuples) as specified in [RFC6130]. any consequent action (including removing one or more Link
Tuples) as specified in [RFC6130].
2. The current Link Tuple is then updated according to: 2. The current Link Tuple is then updated according to:
1. Update L_in_metric and L_out_metric as described in 1. Update L_in_metric and L_out_metric as described in
Section 15.3.2.1; Section 15.3.2.1;
2. Update L_mpr_selector as described in Section 15.3.2.3. 2. Update L_mpr_selector as described in Section 15.3.2.3.
3. The current Neighbor Tuple is then updated according to: 3. The current Neighbor Tuple is then updated according to:
skipping to change at page 51, line 5 skipping to change at page 52, line 5
values equal to DEFAULT_METRIC unless there are only such values. values equal to DEFAULT_METRIC unless there are only such values.
(Note that the rules for discarding HELLO messages in (Note that the rules for discarding HELLO messages in
Section 15.3.1 make this value unambiguous.) Section 15.3.1 make this value unambiguous.)
The neighbor metric elements N_in_metric and N_out_metric in a The neighbor metric elements N_in_metric and N_out_metric in a
Neighbor Tuple are updated according to Section 17.3. Neighbor Tuple are updated according to Section 17.3.
The metric elements N2_in_metric and N2_out_metric in any 2-Hop Tuple The metric elements N2_in_metric and N2_out_metric in any 2-Hop Tuple
updated as defined in [RFC6130] are updated to equal the incoming updated as defined in [RFC6130] are updated to equal the incoming
neighbor metric and outgoing neighbor metric, respectively, neighbor metric and outgoing neighbor metric, respectively,
associated with the corresponsing N2_2hop_addr. associated with the corresponding N2_2hop_addr.
15.3.2.2. Updating Willingness 15.3.2.2. Updating Willingness
N_will_flooding and N_will_routing in the current Neighbor Tuple are N_will_flooding and N_will_routing in the current Neighbor Tuple are
updated as follows: updated as follows:
1. If the HELLO message contains a Message TLV with Type = 1. If the HELLO message contains a Message TLV with Type =
MPR_WILLING then N_will_flooding := bits 0-3 of the value of that MPR_WILLING then N_will_flooding := bits 0-3 of the value of that
TLV, and N_will_routing := bits 4-7 of the value of that TLV TLV, and N_will_routing := bits 4-7 of the value of that TLV
(each in the range 0 to 15). (each in the range 0 to 15).
skipping to change at page 51, line 27 skipping to change at page 52, line 27
2. Otherwise, N_will_flooding := WILL_DEFAULT, and N_will_routing := 2. Otherwise, N_will_flooding := WILL_DEFAULT, and N_will_routing :=
WILL_DEFAULT. WILL_DEFAULT.
15.3.2.3. Updating MPR Selector Status 15.3.2.3. Updating MPR Selector Status
L_mpr_selector is updated as follows: L_mpr_selector is updated as follows:
1. If a router finds an address object representing any of its local 1. If a router finds an address object representing any of its local
interface network addresses (i.e., those contained in the interface network addresses (i.e., those contained in the
I_local_iface_addr_list of an OLSRv2 interface) with an I_local_iface_addr_list of an OLSRv2 interface) with an
associated Address Block TLV with Type = MPR and Value = 0 or associated Address Block TLV with Type = MPR and Value = FLOODING
Value = 1 in the HELLO message (indicating that the originating or Value = FLOOD_ROUTE in the HELLO message (indicating that the
router has selected the receiving router as a flooding MPR) then, originating router has selected the receiving router as a
for the current Link Tuple: flooding MPR) then, for the current Link Tuple:
* L_mpr_selector := true * L_mpr_selector := true.
2. Otherwise (i.e., if no such address object and Address Block TLV 2. Otherwise (i.e., if no such address object and Address Block TLV
was found) if a router finds an address object representing any was found) if a router finds an address object representing any
of its local interface network addresses (i.e., those contained of its local interface network addresses (i.e., those contained
in the I_local_iface_addr_list of an OLSRv2 interface) with an in the I_local_iface_addr_list of an OLSRv2 interface) with an
associated Address Block TLV with Type = LINK_STATUS and Value = associated Address Block TLV with Type = LINK_STATUS and Value =
SYMMETRIC in the HELLO message, then for the current Link Tuple: SYMMETRIC in the HELLO message, then for the current Link Tuple:
* L_mpr_selector := false * L_mpr_selector := false.
N_mpr_selector is updated as follows: N_mpr_selector is updated as follows:
1. If a router finds an address object representing any of its local 1. If a router finds an address object representing any of its local
interface network addresses (i.e., those contained in the interface network addresses (i.e., those contained in the
I_local_iface_addr_list of an OLSRv2 interface) with an I_local_iface_addr_list of an OLSRv2 interface) with an
associated Address Block TLV with Type = MPR and Value = 0 or associated Address Block TLV with Type = MPR and Value = ROUTING
Value = 2 in the HELLO message (indicating that the originating or Value = FLOOD_ROUTE in the HELLO message (indicating that the
router has selected the receiving router as a routing MPR) then, originating router has selected the receiving router as a routing
for the current Neighbor Tuple: MPR) then, for the current Neighbor Tuple:
* N_mpr_selector := true * N_mpr_selector := true;
* N_advertised := true * N_advertised := true.
2. Otherwise (i.e., if no such address object and Address Block TLV 2. Otherwise (i.e., if no such address object and Address Block TLV
was found) if a router finds an address object representing any was found) if a router finds an address object representing any
of its local interface network addresses (i.e., those contained of its local interface network addresses (i.e., those contained
in the I_local_iface_addr_list of an OLSRv2 interface) with an in the I_local_iface_addr_list of an OLSRv2 interface) with an
associated Address Block TLV with Type = LINK_STATUS and Value = associated Address Block TLV with Type = LINK_STATUS and Value =
SYMMETRIC in the HELLO message, then for the current Neighbor SYMMETRIC in the HELLO message, then for the current Neighbor
Tuple: Tuple:
* N_mpr_selector := false * N_mpr_selector := false;
* The router MAY also set N_advertised := false * The router MAY also set N_advertised := false.
16. TC Messages 16. TC Messages
This protocol defines, and hence owns, the TC message type (see This protocol defines, and hence owns, the TC message type (see
Section 24). Thus, as specified in [RFC5444], this protocol Section 24). Thus, as specified in [RFC5444], this protocol
generates and transmits all TC messages, receives all TC messages and generates and transmits all TC messages, receives all TC messages and
is responsible for determining whether and how each TC message is to is responsible for determining whether and how each TC message is to
be processed (updating the Topology Information Base) and/or be processed (updating the Topology Information Base) and/or
forwarded, according to this specification. forwarded, according to this specification.
skipping to change at page 54, line 31 skipping to change at page 55, line 31
A router with one or more OLSRv2 interfaces, and with any Neighbor A router with one or more OLSRv2 interfaces, and with any Neighbor
Tuples with N_advertised = true, or with a non-empty Local Attached Tuples with N_advertised = true, or with a non-empty Local Attached
Network Set MUST generate TC messages. A router which does not have Network Set MUST generate TC messages. A router which does not have
such information to advertise SHOULD also generate "empty" TC such information to advertise SHOULD also generate "empty" TC
messages for a period A_HOLD_TIME after it last generated a non-empty messages for a period A_HOLD_TIME after it last generated a non-empty
TC message. TC message.
Complete TC messages are generated and transmitted periodically on Complete TC messages are generated and transmitted periodically on
all OLSRv2 interfaces, with a default interval between two all OLSRv2 interfaces, with a default interval between two
consecutive TC transmissions by the same router of TC_INTERVAL. consecutive TC message transmissions by the same router of
TC_INTERVAL.
TC messages MAY be generated in response to a change in the TC messages MAY be generated in response to a change in the
information which they are to advertise, indicated by a change in the information which they are to advertise, indicated by a change in the
ANSN in the Neighbor Information Base. In this case a router MAY ANSN in the Neighbor Information Base. In this case a router MAY
send a complete TC message, and if so MAY re-start its TC message send a complete TC message, and if so MAY re-start its TC message
schedule. Alternatively a router MAY send an incomplete TC message schedule. Alternatively a router MAY send an incomplete TC message
with at least the newly advertised network addresses (i.e., not with at least the newly advertised network addresses (i.e., not
previously, but now, an N_orig_addr or in an N_neighbor_addr_list in previously, but now, an N_orig_addr or in an N_neighbor_addr_list in
a Neighbor Tuple with N_advertised = true, or an AL_net_addr) in its a Neighbor Tuple with N_advertised = true, or an AL_net_addr) in its
Address Blocks, with associated Address Block TLV(s). Note that a Address Blocks, with associated Address Block TLV(s). Note that a
skipping to change at page 57, line 25 skipping to change at page 58, line 25
o "validity time" is calculated from a VALIDITY_TIME Message TLV in o "validity time" is calculated from a VALIDITY_TIME Message TLV in
the TC message according to the specification in [RFC5497]. All the TC message according to the specification in [RFC5497]. All
information in the TC message has the same validity time. information in the TC message has the same validity time.
o "received ANSN" is defined as being the value of a Message TLV o "received ANSN" is defined as being the value of a Message TLV
with Type = CONT_SEQ_NUM. with Type = CONT_SEQ_NUM.
o "associated metric value" is defined for any address in the TC o "associated metric value" is defined for any address in the TC
message as being either the outgoing neighbor metric value message as being either the outgoing neighbor metric value
indicated by a TLV with Type = LINK_METRIC and Type Extemsion = indicated by a TLV with Type = LINK_METRIC and Type Extension =
LINK_METRIC_TYPE that is associated with any address object in the LINK_METRIC_TYPE that is associated with any address object in the
TC message that is equal to that address, or as DEFAULT_METRIC TC message that is equal to that address, or as DEFAULT_METRIC
otherwise. (Note that the rules in Section 16.3.1 make this otherwise. (Note that the rules in Section 16.3.1 make this
definition unambiguous.) definition unambiguous.)
o Comparisons of sequence numbers are carried out as specified in o Comparisons of sequence numbers are carried out as specified in
Section 21. Section 21.
16.3.3. Initial TC Message Processing 16.3.3. Initial TC Message Processing
skipping to change at page 62, line 21 skipping to change at page 63, line 21
The Originator Tuple (existing or new) with: The Originator Tuple (existing or new) with:
* O_orig_addr = new originator address * O_orig_addr = new originator address
is then modified as follows: is then modified as follows:
* O_time := current time + O_HOLD_TIME * O_time := current time + O_HOLD_TIME
17.2. Link State Changes 17.2. Link State Changes
The consistency of a Link Tuple MUST be maintained accoprding to the The consistency of a Link Tuple MUST be maintained according to the
following rules, in addition to those in [RFC6130]: following rules, in addition to those in [RFC6130]:
o If L_status = HEARD or L_status = SYMMETRIC, then L_in_metric MUST o If L_status = HEARD or L_status = SYMMETRIC, then L_in_metric MUST
be set (by a process outside this specification). be set (by a process outside this specification).
o If L_status != SYMMETRIC, then set L_mpr_selector := false. o If L_status != SYMMETRIC, then set L_mpr_selector := false.
o If L_out_metric = UNKNOWN_METRIC, then L_status MUST NOT equal o If L_out_metric = UNKNOWN_METRIC, then L_status MUST NOT equal
SYMMETRIC; set L_SYM_time := expired if this would otherwise be SYMMETRIC; set L_SYM_time := expired if this would otherwise be
the case. the case.
skipping to change at page 64, line 30 skipping to change at page 65, line 30
* a Link Tuple is added with L_status = SYMMETRIC, OR; * a Link Tuple is added with L_status = SYMMETRIC, OR;
* a Link Tuple with L_status = SYMMETRIC is removed, OR; * a Link Tuple with L_status = SYMMETRIC is removed, OR;
* a Link Tuple with L_status = SYMMETRIC changes to having * a Link Tuple with L_status = SYMMETRIC changes to having
L_status = HEARD or L_status = LOST, OR; L_status = HEARD or L_status = LOST, OR;
* a Link Tuple with L_status = HEARD or L_status = LOST changes * a Link Tuple with L_status = HEARD or L_status = LOST changes
to having L_status = SYMMETRIC, OR; to having L_status = SYMMETRIC, OR;
* the flooding MPR selection process uses metrics (see
Section 18.4 and the L_out_metric of any Link Tuple with
L_status = SYMMETRIC changes, OR;
* a 2-Hop Tuple is added or removed, OR; * a 2-Hop Tuple is added or removed, OR;
* the N_will_flooding of a Neighbor Tuple with N_symmetric = * the N_will_flooding of a Neighbor Tuple with N_symmetric =
true changes from WILL_NEVER to any other value, OR; true changes from WILL_NEVER to any other value, OR;
* the N_will_flooding of a Neighbor Tuple with N_flooding_mpr = * the N_will_flooding of a Neighbor Tuple with N_flooding_mpr =
true changes to WILL_NEVER from any other value, OR; true changes to WILL_NEVER from any other value, OR;
* the N_will_flooding of a Neighbor Tuple with N_symmetric = * the N_will_flooding of a Neighbor Tuple with N_symmetric =
true and N_flooding_mpr = false changes to WILL_ALWAYS from true and N_flooding_mpr = false changes to WILL_ALWAYS from
any other value. any other value, OR;
* the flooding MPR selection process uses metrics (see
Section 18.4 and the N2_out_metric of any 2-Hop Tuple changes.
2. Otherwise, the set of flooding MPRs of a router MAY be 2. Otherwise, the set of flooding MPRs of a router MAY be
recalculated if the N_will_flooding of a Neighbor Tuple with recalculated if the N_will_flooding of a Neighbor Tuple with
N_symmetric = true changes in any other way; it SHOULD be N_symmetric = true changes in any other way; it SHOULD be
recalculated if N_flooding_mpr = false and this is an increase in recalculated if N_flooding_mpr = false and this is an increase in
N_will_flooding or if N_flooding_mpr = true and this is a N_will_flooding or if N_flooding_mpr = true and this is a
decrease in N_will_flooding. decrease in N_will_flooding.
3. The set of routing MPRs of a router MUST be recalculated if: 3. The set of routing MPRs of a router MUST be recalculated if:
skipping to change at page 65, line 17 skipping to change at page 66, line 24
L_status = HEARD or L_status = LOST, OR; L_status = HEARD or L_status = LOST, OR;
* a Link Tuple with L_status = HEARD or L_status = LOST changes * a Link Tuple with L_status = HEARD or L_status = LOST changes
to having L_status = SYMMETRIC, OR; to having L_status = SYMMETRIC, OR;
* a 2-Hop Tuple is added or removed, OR; * a 2-Hop Tuple is added or removed, OR;
* the N_will_routing of a Neighbor Tuple with N_symmetric = true * the N_will_routing of a Neighbor Tuple with N_symmetric = true
changes from WILL_NEVER to any other value, OR; changes from WILL_NEVER to any other value, OR;
* the N_will_routing of a Neighbor Tuple with N_routing mpr = * the N_will_routing of a Neighbor Tuple with N_routing_mpr =
true changes to WILL_NEVER from any other value, OR; true changes to WILL_NEVER from any other value, OR;
* the N_will_routing of a Neighbor Tuple with N_symmetric = true * the N_will_routing of a Neighbor Tuple with N_symmetric = true
and N_routing_mpr = false changes to WILL_ALWAYS from any and N_routing_mpr = false changes to WILL_ALWAYS from any
other value. other value, OR;
* the N_in_metric of any Neighbor Tuple with N_symmetric
changes, OR;
* the N2_in_metric of any 2-Hop Tuple changes.
4. Otherwise, the set of routing MPRs of a router MAY be 4. Otherwise, the set of routing MPRs of a router MAY be
recalculated if the N_will_routing of a Neighbor Tuple with recalculated if the N_will_routing of a Neighbor Tuple with
N_symmetric = true changes in any other way; it SHOULD be N_symmetric = true changes in any other way; it SHOULD be
recalculated if N_routing_mpr = false and this is an increase in recalculated if N_routing_mpr = false and this is an increase in
N_will_routing or if N_routing_mpr = true and this is a decrease N_will_routing or if N_routing_mpr = true and this is a decrease
in N_will_routing. in N_will_routing.
If either set of MPRs of a router is recalculated, this MUST be as If either set of MPRs of a router is recalculated, this MUST be as
described in Section 18. Before that calculation, N_flooding_mpr or described in Section 18.
N_routing_mpr (as appropriate) of all Neighbor Tuples is set false
(although its previous value MAY be used by an algorithm that
minimizes changes to the set of MPRs). After that calculation the
N_flooding_mpr or N_routing_mpr (as appropriate) of all Neighbor
Tuples representing symmetric 1-hop neighbors that are chosen as
MPRs, are set true.
17.7. Routing Set Updates 17.7. Routing Set Updates
The Routing Set MUST be updated, as described in Section 19 when The Routing Set MUST be updated, as described in Section 19, when
changes in the Local Information Base, the Neighborhood Information changes in the Local Information Base, the Neighborhood Information
Base or the Topology Information Base indicate a change (including of Base or the Topology Information Base indicate a change (including of
any potentially used link metric values, all outgoing) of the known any potentially used outgoing neighbor metric values) of the known
symmetric links and/or attached networks in the MANET, hence changing symmetric links and/or attached networks in the MANET, hence changing
the Topology Graph. It is sufficient to consider only changes which the Topology Graph. It is sufficient to consider only changes which
affect at least one of: affect at least one of:
o The Local Interface Set, if the change removes any network address o The Local Interface Set, if the change removes any network address
in an I_local_iface_addr_list. In this case, unless the OLSRv2 in an I_local_iface_addr_list. In this case, unless the OLSRv2
interface is removed, it may not be necessary to do more than interface is removed, it may not be necessary to do more than
replace such network addresses, if used, by an alternative network replace such network addresses, if used, by an alternative network
address from the same I_local_iface_addr_list. address from the same I_local_iface_addr_list.
skipping to change at page 66, line 32 skipping to change at page 67, line 38
the Routing Set. the Routing Set.
o The Router Topology Set of the router. o The Router Topology Set of the router.
o The Routable Address Topology Set of the router. o The Routable Address Topology Set of the router.
o The Attached Network Set of the router. o The Attached Network Set of the router.
18. Selecting MPRs 18. Selecting MPRs
Note: This section has not yet been updated to use link metrics and
separate sets of flooding and routing MPRs.
Each router MUST select, from among its willing symmetric 1-hop Each router MUST select, from among its willing symmetric 1-hop
neighbors, a subset of these routers as MPRs. Only MPRs forward neighbors, two subsets of these routers, as flooding and routing
control messages flooded through the MANET, thus effecting a flooding MPRs. This selection is recorded in the router's Neighbor Set, and
reduction, an optimization of the classical flooding mechanism, known reported in the router's HELLO messages. Routers MAY select their
as MPR flooding. MPRs MAY also be used to effect a topology MPRs by any process that satisfies the conditions which follow, which
reduction in the MANET. Consequently, while it is not essential that may, but need not, use the organization of the data described.
the set of MPRs is minimal, keeping the number of MPRs small ensures Routers can freely interoperate whether they use the same or
that the overhead is kept at a minimum. different MPR selection algorithms.
A router MUST select MPRs for each of its OLSRv2 interfaces, but then Only flooding MPRs forward control messages flooded through the
forms the union of those sets as its single set of MPRs. This union MANET, thus effecting a flooding reduction, an optimization of the
MUST include all symmetric 1-hop neighbors with willingness flooding mechanism, known as MPR flooding. Routing MPRs are used to
WILL_ALWAYS. Only this overall set of MPRs is relevant, the recorded effect a topology reduction in the MANET. (If no such reduction is
and used MPR relationship is one of routers, not interfaces. Routers required then a router can select all of its relevant neighbors as
MAY select their MPRs by any process which satisfies the conditions routing MPRs.) Consequently, while it is not essential that these
which follow. Routers can freely interoperate whether they use the two sets of MPRs are minimal, keeping the numbers of MPRs small
same or different MPR selection algorithms. ensures that the overhead of this protocol is kept to a minimum.
For each OLSRv2 interface a router MUST select a set of MPRs. This 18.1. Overview
set MUST have the properties that:
o All of the selected MPRs are willing symmetric 1-hop neighbors, MPRs are selected according to the following steps, defined in the
AND; following sections:
o If the selecting router sends a message on that OLSRv2 interface, o A form of data structure known as a Neighbor Graph is defined.
and that message is successfully forwarded by all of the selected
MPRs for that interface, then all symmetric strict 2-hop neighbors
of the selecting router through that OLSRv2 interface will receive
that message over a symmetric link.
When a router selects its set of MPRs it MAY consider any other o The properties of an MPR Set derived from a Neighbor Graph are
defined. Any algorithm that creates an MPR Set that satisfies
these properties is a valid MPR selection algorithm. An example
algorithm that creates such an MPR Set is given in Appendix A.
o How to create a Neighbor Graph for each interface based on the
corresponding Interface Information Base is defined, and how to
combine the resulting MPR Sets to determine the router's flooding
MPRs and record those in the router's Neighbor Set.
o How to create a single Neighbor Graph based on all Interface
Information Bases and the Neighbor Information Base is defined,
and how to record the resulting MPR Set as the router's routing
MPRs in the router's Neighbor Set.
o A specification as to when MPRs MUST be calculated is given.
When a router selects its MPRs it MAY consider any other
characteristics of its neighbors that it is aware of. In particular characteristics of its neighbors that it is aware of. In particular
it SHOULD consider the willingness of the neighbor, as recorded by it SHOULD consider the willingness of the neighbor, as recorded by
the corresponding N_willingness value, preferring neighbors with the corresponding N_will_flooding or N_will_routing value, as
higher values of N_willingness, but MAY consider other appropriate, preferring neighbors with higher values. (Note that
willingness values equal to WILL_NEVER and WILL_ALWAYS are always
considered, as described.) However a router MAY consider other
characteristics to have a greater significance. characteristics to have a greater significance.
Note that it is always possible to select a valid set of MPRs. The Each router MAY select its flooding and routing MPRs independently
set of all willing symmetric 1-hop neighbors of a router is a from each other, or coordinate its selections. A router MAY make its
(maximal) valid set of MPRs for that router. However a router SHOULD MPR selections independently of the MPR selection by other routers,
NOT select a symmetric 1-hop neighbor with N_willingness != or it MAY, for example, give preference to routers that either are,
WILL_ALWAYS as an MPR if there are no symmetric strict 2-hop or are not, already selected as MPRs by other routers.
neighbors with a symmetric link to that symmetric 1-hop neighbor.
Thus a router with no symmetric 1-hop neighbors with N_willingness =
WILL_ALWAYS and with no symmetric strict 2-hop neighbors SHOULD NOT
select any MPRs.
A router MAY select its MPRs for each OLSRv2 interface independently, 18.2. Neighbor Graph
or it MAY coordinate its MPR selections across its OLSRv2 interfaces,
as long as the required condition is satisfied for each OLSRv2
interface. Each router MAY select its MPRs independently from the
MPR selection by other routers, or it MAY, for example, give
preference to routers that either are, or are not, already selected
as MPRs by other routers.
When selecting MPRs for each OLSRv2 interface independently, this MAY A Neighbor Graph is a structure defined here as consisting of sets N1
be done using information from the Link Set and 2-Hop Set of that and N2 and some associated metric and willingness values. Elements
OLSRv2 interface only, and the Neighbor Set of the router of set N1 represent willing symmetric 1-hop neighbors, and elements
(specifically the N_willingness elements). of set N2 represent addresses of a symmetric 2-hop neighbor.
The selection of MPRs is recorded in the Neighbor Set of the router, A Neighbor Graph has the following properties:
by setting N_mpr = true for any selected MPR (on any OLSRv2
interface) and ensuring that N_mpr = false otherwise. A selected MPR
MUST be a willing symmetric 1-hop neighbor (i.e., MUST have
corresponding N_symmetric = true, and corresponding N_willingness !=
WILL_NEVER). Note that although selected per OLSRv2 interface, MPRs
are recorded and used independent of interface, i.e., a router's set
of MPRs is the union of the sets of MPRs selected per OLSRv2
interface.
A router MUST recalculate its MPRs whenever the currently selected o It contains two disjoint sets N1 and N2.
set of MPRs does not still satisfy the required conditions. It MAY
recalculate its MPRs if the current set of MPRs is still valid, but
could be more efficient. Sufficient conditions to recalculate a
router's set of MPRs are given in Section 17.6.
An example algorithm that creates a set of MPRs that satisfies the o For each element x in N1 there is an associated willingness value
required conditions is given in Appendix A. W(x) such that WILL_NEVER < W(x) <= WILL_ALWAYS.
o For each element x in N1 there is an associated metric d1(x) > 0.
o For some elements y in N2 there is an associated metric d1(y) > 0.
(Other elements y in N2 have undefined d1(y), this may be
considered to be infinite.)
o For each element x in N1 there is a subset N2(x) of elements of
N2; this subset may be empty. For each x in N1 and each y in
N2(x) there is an associated metric d2(x,y) > 0. (For other x in
N1 and y in N2, d2(x,y) is undefined, and may be considered
infinite.)
o N2 is equal to the union of all the N2(x) for all x in N1, i.e.
for each y in N2 there is at least one x in N1 such that y is in
N2(x).
It is convenient to also define:
o For each y in N2 the set N1(y) that contains x in N1 if and only
if y is in N2(x). From the final property above, N1(y) is not
empty.
o For each x in N1 and y in N2, if d2(x,y) is defined then d(x,y) :=
d1(x)+d2(x,y), otherwise d(x,y) is not defined. (Thus d(x,y) is
defined if y is in N2(x), or equivalently if x is in N1(y).)
o For any subset S of N1, and for each y in N2, the metric d(y,S) is
the minimum value of d1(y), if defined, and of all d(x,y) for x in
N1(y) and in S. If there are no such metrics to take the minimum
value of, then d(y,S) is undefined (may be considered to be
infinite). From the final property above, d(y,N1) is defined for
all y.
18.3. MPR Properties
Given a Neighbor Graph as defined in Section 18.2. an MPR Set for
that Neighbor Graph is a subset M of the set N1 that satisfies the
following properties:
o If x in N1 has W(x) = WILL_ALWAYS then x is in M.
o For any y in N2 that does not have a defined d1(y), there is at
least one element in M that is also in N1(y). This is equivalent
to the requirement that d(y,M) is defined.
o For any y in N2, d(y,M) = d(y,N1).
These two properties correspond first to that the MPR Set consists of
a set of symmetric 1-hop neighbors that cover all the symmetric 2-hop
neighbors, and second that they do so retaining a minimum distance
route (1-hop, if present, or 2-hop) to each symmetric 2-hop neighbor.
Note that if M is an MPR Set, then so is any subset of N1 that
contains M, and also that N1 is always an MPR Set. An MPR Set may be
empty, but cannot be empty if N2 contains any elements y that do not
have a defined d1(y).
18.4. Flooding MPRs
Whenever flooding MPRs are to be calculated, an implementation MUST
determine and record a set of flooding MPRs that is equivalent to one
calculated as described in this section.
The calculation of flooding MPRs need not use link metrics, or
equivalently may use link metrics with a fixed value, here taken to
be 1. Routers MAY make individual decisions as to whether to use
link metrics for the calculation of flooding MPRs. A router MUST use
the same approach to the choice of whether to use link metrics for
all links, i.e. in the cases indicated by a or b, the same choice
MUST be made in each case.
For each OLSRv2 interface (the "current interface") define a Neighbor
Graph as defined in Section 18.2 according to the following:
o Define a reachable Link Tuple to be a Link Tuple in the Link Set
for the current interface with L_status = SYMMETRIC.
o Define an allowed Link Tuple to be a reachable Link Tuple whose
corresponding Neighbor Tuple has N_will_flooding > WILL_NEVER.
o Define an allowed 2-Hop Tuple to be a 2-Hop Tuple in the 2-Hop Set
for the current interface for which there is an allowed Link Tuple
with L_neighbor_iface_addr_list = N2_neighbor_iface_addr_list.
o Define an element of N1 for each allowed Link Tuple. This then
defines the corresponding Link Tuple for each element of N1 and
the corresponding Neighbor Tuple for each element of N1, being the
Neighbor Tuple corresponding to that Link Tuple.
o For each element x in N1, define W(x) := N_will_flooding of the
corresponding Neighbor Tuple.
o For each element x in N1, define d1(x) as either:
A. L_out_metric of the corresponding Link Tuple, OR;
B. 1.
o Define an element of N2 for each network address that is the
N2_2hop_addr of one or more allowed 2-Hop Tuples. This then
defines the corresponding address for each element of N2.
o For each element y in N2, if the corresponding address is in the
N_neighbor_addr_list of a Neighbor Tuple that corresponds to one
or more reachable Link Tuples, then define d1(y) as either:
A. the minimum value of the L_out_metric of those Link Tuples,
OR;
B. 1.
Otherwise d1(y) is not defined. In the latter case, where d1(y) :
=1, all such y in N2 may instead be removed from N2.
o For each element x in N1, define N2(x) as the set of elements y in
N2 whose corresponding address is the N2_2hop_addr of an allowed
2-Hop Tuple that has N2_neighbor_iface_addr_list =
L_neighbor_iface_addr_list of the Link Tuple corresponding to x.
For all such x and y, define d2(x,y) as either:
A. N2_out_metric of that 2-Hop Tuple;
B. 1.
It is up to the implementer to decide how to label each element of N1
or N2. For example an element of N1 may be labeled with one or more
addresses from the corresponding L_neighbor_iface_addr_list, or with
a pointer or reference to the corresponding Link Tuple.
Using these Neighbor Graphs, flooding MPRs are selected and recorded
by:
o For each OLSRv2 interface, determine an MPR Set as specified in
Section 18.3.
o A Neighbor Tuple represents a flooding MPR and has N_flooding_mpr
:= true (otherwise N_flooding_mpr := false) if and only if that
Neighbor Tuple corresponds to an element in an MPR Set created for
any interface as described above. That is, the overall set of
flooding MPRs is the union of the sets of flooding MPRs for all
OLSRv2 interfaces.
A router MAY select its flooding MPRs for each OLSRv2 interface
independently, or it MAY coordinate its MPR selections across its
OLSRv2 interfaces, as long as the required condition is satisfied for
each OLSRv2 interface. One such coordinated approach is to process
the OLSRv2 interfaces sequentially, and for each OLSRv2 interface
start with flooding MPRs selected (and not removable) if the neighbor
has been already selected as an MPR for an OLSRv2 interface that has
already been processed. The algorithm specified in Appendix A can be
used in this way.
18.5. Routing MPRs
Whenever routing MPRs are to be calculated, an implementation MUST
determine and record a set of routing MPRs that is equivalent to one
calculated as described in this section.
Define a single Neighbor Graph as defined in Section 18.2 according
to the following:
o Define a reachable Neighbor Tuple to be a Neighbor Tuple with
N_symmetric = true.
o Define an allowed Neighbor Tuple to be a reachable Neighbor Tuple
with N_will_routing > WILL_NEVER.
o Define an allowed 2-Hop Tuple to be a 2-Hop Tuple in the 2-Hop Set
for any OLSRv2 interface for which there is an allowed Neighbor
Tuple with N_neighbor_addr_list containing
N2_neighbor_iface_addr_list.
o Define an element of N1 for each allowed Neighbor Tuple. This
then defines the corresponding Neighbor Tuple for each element of
N1.
o For each element x in N1, define W(x) := N_will_routing of the
corresponding Neighbor Tuple.
o For each element x in N1, define d1(x) := N_in_metric of the
corresponding Neighbor Tuple.
o Define an element of N2 for each network address that is the
N2_2hop_addr of one or more allowed 2-Hop Tuples. This then
defines the corresponding address for each element of N2.
o For each element y in N2, if the corresponding address is in the
N_neighbor_addr_list of a reachable Neighbor Tuple, then define
d1(y) to be the N_in_metric of that Neighbor Tuple, otherwise
d1(y) is not defined.
o For each element x in N1, define N2(x) as the set of elements y in
N2 whose corresponding address is the N2_2hop_addr of an allowed
2-Hop Tuple that has N2_neighbor_iface_addr_list contained in
N_neighbor_addr_list of the Neighbor Tuple corresponding to x.
For all such x and y, define d2(x,y) := N2_out_metric of that
2-Hop Tuple.
It is up to the implementer to decide how to label each element of N1
or N2. For example an element of N1 may be labeled with one or more
addresses from the corresponding N_neighbor_addr_list, or with a
pointer or reference to the corresponding Neighbor Tuple.
Using these Neighbor Graphs, routing MPRs are selected and recorded
by:
o Determine an MPR Set as specified in Section 18.3
o A Neighbor Tuple represents a routing MPR and has N_routing_mpr :=
true (otherwise N_routing_mpr := false) if and only if that
Neighbor Tuple corresponds to an element in the MPR Set created as
described above.
18.6. Calculating MPRs
A router MUST recalculate each of its sets of MPRs whenever the
currently selected set of MPRs does not still satisfy the required
conditions. It MAY recalculate its MPRs if the current set of MPRs
is still valid, but could be more efficient. Sufficient conditions
to recalculate a router's sets of MPRs are given in Section 17.6.
19. Routing Set Calculation 19. Routing Set Calculation
The Routing Set of a router is populated with Routing Tuples that The Routing Set of a router is populated with Routing Tuples that
represent paths from that router to all destinations in the network. represent paths from that router to all destinations in the network.
These paths are calculated based on the Network Topology Graph, which These paths are calculated based on the Network Topology Graph, which
is constructed from information in the Information Bases, obtained is constructed from information in the Information Bases, obtained
via HELLO and TC message exchange. via HELLO and TC message exchange.
Changes to the Routing Set do not require any messages to be Changes to the Routing Set do not require any messages to be
skipping to change at page 69, line 12 skipping to change at page 74, line 38
* X is in the I_local_iface_addr_list of a Local Interface Tuple, * X is in the I_local_iface_addr_list of a Local Interface Tuple,
AND; AND;
* There is a Link Tuple with L_status = SYMMETRIC such that this * There is a Link Tuple with L_status = SYMMETRIC such that this
Neighbor Tuple and this Local Interface Tuple correspond to it. Neighbor Tuple and this Local Interface Tuple correspond to it.
A network address from L_neighbor_iface_addr_list will be A network address from L_neighbor_iface_addr_list will be
denoted R in this case. denoted R in this case.
It SHOULD be preferred, where possible, to select R = S and X from It SHOULD be preferred, where possible, to select R = S and X from
the Local Interface Tuple corresponding to the Link Tuple from the Local Interface Tuple corresponding to the Link Tuple from
which R was selected. The metrio such an edge is the which R was selected. The metric such an edge is the
corresponding N_out_metric. corresponding N_out_metric.
o All edges W -> U such that: o All edges W -> U such that:
* W is the TR_from_orig_addr of a Router Topology Tuple, AND; * W is the TR_from_orig_addr of a Router Topology Tuple, AND;
* U is the TR_to_orig_addr of the same Router Topology Tuple. * U is the TR_to_orig_addr of the same Router Topology Tuple.
The metrio of such an edge is the corresponding TR_metric. The metric of such an edge is the corresponding TR_metric.
The Network Topology Graph is further "decorated" with the following The Network Topology Graph is further "decorated" with the following
edges. If a network address S, V, Z or T equals a network address Y edges. If a network address S, V, Z or T equals a network address Y
or W, then the edge terminating in the network address S, V, Z or T or W, then the edge terminating in the network address S, V, Z or T
MUST NOT be used in any path. MUST NOT be used in any path.
o Edges X -> S for all possible S, and one X per S, such that: o Edges X -> S for all possible S, and one X per S, such that:
* S is in the N_neighbor_addr_list of a Neighbor Tuple, AND; * S is in the N_neighbor_addr_list of a Neighbor Tuple, AND;
skipping to change at page 70, line 22 skipping to change at page 75, line 48
The metric for such an edge is the corresponding AN_metric. The metric for such an edge is the corresponding AN_metric.
o OPTIONALLY, all edges Y -> Z such that: o OPTIONALLY, all edges Y -> Z such that:
* Z is a routable address and is the N2_2hop_addr of a 2-Hop * Z is a routable address and is the N2_2hop_addr of a 2-Hop
Tuple, AND; Tuple, AND;
* Y is the N_orig_addr of the corresponding Neighbor Tuple, AND; * Y is the N_orig_addr of the corresponding Neighbor Tuple, AND;
* This Neighbor Tuple has N_willingness not equal to WILL_NEVER. * This Neighbor Tuple has N_will_routing not equal to WILL_NEVER.
A path terminating with such an edge SHOULD NOT be used in A path terminating with such an edge SHOULD NOT be used in
preference to any other path. The metric for such an edge is the preference to any other path. The metric for such an edge is the
corresponding N2_metric. corresponding N2_out_metric.
Any part of the Topology Graph which is not connected to a local Any part of the Topology Graph which is not connected to a local
network address X is not used. Only one selection X SHOULD be made network address X is not used. Only one selection X SHOULD be made
from each I_local_iface_addr_list, and only one selection R SHOULD be from each I_local_iface_addr_list, and only one selection R SHOULD be
made from any L_neighbor_iface_addr_list. All edges have a hop count made from any L_neighbor_iface_addr_list. All edges have a hop count
of 1, except edges W -> T that have a hop count of the corresponding of 1, except edges W -> T that have a hop count of the corresponding
value of AN_dist. value of AN_dist.
19.2. Populating the Routing Set 19.2. Populating the Routing Set
skipping to change at page 71, line 23 skipping to change at page 77, line 4
o R_metric := edge metric. o R_metric := edge metric.
where R is as defined in Section 19.1 for these types of edges. where R is as defined in Section 19.1 for these types of edges.
The second type will represent a multiple edge path, which will The second type will represent a multiple edge path, which will
always have first edge of type X -> Y, and will have final edge of always have first edge of type X -> Y, and will have final edge of
type W -> U, W -> V, W -> T or Y -> Z. The Routing Tuple will be: type W -> U, W -> V, W -> T or Y -> Z. The Routing Tuple will be:
o R_local_iface_addr := X; o R_local_iface_addr := X;
o R_next_iface_addr := Y; o R_next_iface_addr := Y;
o R_dest_addr := U, V, T or Z; o R_dest_addr := U, V, T or Z;
o R_dist := the total hop count of all edges in the path; o R_dist := the total hop count of all edges in the path;
o R_dist := the total metric of all edges in the path. o R_metric := the total metric of all edges in the path.
Finally, Routing Tuples of the second type whose R_dest_addr is not Finally, Routing Tuples of the second type whose R_dest_addr is not
routable MAY be discarded. routable MAY be discarded.
An example algorithm for calculating the Routing Set of a router is An example algorithm for calculating the Routing Set of a router is
given in Appendix B. given in Appendix B.
20. Proposed Values for Parameters and Constants 20. Proposed Values for Parameters
This protocol uses all parameters and constants defined in [RFC6130] This protocol uses all parameters defined in [RFC6130] and additional
and additional parameters and constants defined in this parameters and defined in this specification. All but one
specification. All but one (RX_HOLD_TIME) of these additional (RX_HOLD_TIME) of these additional parameters are router parameters
parameters are router parameters as defined in [RFC6130]. These as defined in [RFC6130]. The proposed values of the additional
proposed values of the additional parameters are appropriate to the parameters defined in the following sections are appropriate to the
case where all parameters (including those defined in [RFC6130]) have case where all parameters (including those defined in [RFC6130]) have
a single value. Proposed values for parameters defined in [RFC6130] a single value. Proposed values for parameters defined in [RFC6130]
are given in that specification. are given in that specification.
20.1. Local History Time Parameters 20.1. Local History Time Parameters
o O_HOLD_TIME := 30 seconds o O_HOLD_TIME := 30 seconds
20.2. Message Interval Parameters 20.2. Message Interval Parameters
skipping to change at page 72, line 41 skipping to change at page 78, line 18
o TP_MAXJITTER := HP_MAXJITTER o TP_MAXJITTER := HP_MAXJITTER
o TT_MAXJITTER := HT_MAXJITTER o TT_MAXJITTER := HT_MAXJITTER
o F_MAXJITTER := TT_MAXJITTER o F_MAXJITTER := TT_MAXJITTER
20.6. Hop Limit Parameter 20.6. Hop Limit Parameter
o TC_HOP_LIMIT := 255 o TC_HOP_LIMIT := 255
20.7. Willingness Parameter and Constants 20.7. Willingness Parameter
o WILLINGNESS := WILL_DEFAULT o WILLINGNESS := WILL_DEFAULT
o WILL_NEVER := 0
o WILL_DEFAULT := 7
o WILL_ALWAYS := 15
21. Sequence Numbers 21. Sequence Numbers
Sequence numbers are used in this specification for the purpose of Sequence numbers are used in this specification for the purpose of
discarding "old" information, i.e., messages received out of order. discarding "old" information, i.e., messages received out of order.
However with a limited number of bits for representing sequence However with a limited number of bits for representing sequence
numbers, wrap-around (that the sequence number is incremented from numbers, wrap-around (that the sequence number is incremented from
the maximum possible value to zero) will occur. To prevent this from the maximum possible value to zero) will occur. To prevent this from
interfering with the operation of this protocol, the following MUST interfering with the operation of this protocol, the following MUST
be observed when determining the ordering of sequence numbers. be observed when determining the ordering of sequence numbers.
skipping to change at page 77, line 19 skipping to change at page 82, line 34
specified in Table 8. specified in Table 8.
+------+----------------------------------------------+ +------+----------------------------------------------+
| Type | Description | | Type | Description |
+------+----------------------------------------------+ +------+----------------------------------------------+
| TBD1 | TC : Topology Control (MANET-wide signaling) | | TBD1 | TC : Topology Control (MANET-wide signaling) |
+------+----------------------------------------------+ +------+----------------------------------------------+
Table 8: Message Type assignment Table 8: Message Type assignment
24.3. Message-Type-specific TLV Type Registries 24.3. Message-Type-Specific TLV Type Registries
IANA is requested to create a registry for Message-Type-specific IANA is requested to create a registry for Message-Type-specific
Message TLVs for TC messages, in accordance with Section 6.2.1 of Message TLVs for TC messages, in accordance with Section 6.2.1 of
[RFC5444], and with initial assignments and allocation policies as [RFC5444], and with initial assignments and allocation policies as
specified in Table 9. specified in Table 9.
+---------+-------------+-------------------+ +---------+-------------+-------------------+
| Type | Description | Allocation Policy | | Type | Description | Allocation Policy |
+---------+-------------+-------------------+ +---------+-------------+-------------------+
| 128-223 | Unassigned | Expert Review | | 128-223 | Unassigned | Expert Review |
skipping to change at page 78, line 12 skipping to change at page 83, line 27
[RFC5444]. IANA is requested to make allocations in the 0-127 range [RFC5444]. IANA is requested to make allocations in the 0-127 range
for these types. This will create two new Type Extension registries for these types. This will create two new Type Extension registries
with assignments as specified in Table 11 and Table 12. with assignments as specified in Table 11 and Table 12.
Specifications of these TLVs are in Section 13.3.1. Each of these Specifications of these TLVs are in Section 13.3.1. Each of these
TLVs MUST NOT be included more than once in a Message TLV Block. TLVs MUST NOT be included more than once in a Message TLV Block.
+-------------+------+-----------+---------------------+------------+ +-------------+------+-----------+---------------------+------------+
| Name | Type | Type | Description | Allocation | | Name | Type | Type | Description | Allocation |
| | | Extension | | Policy | | | | Extension | | Policy |
+-------------+------+-----------+---------------------+------------+ +-------------+------+-----------+---------------------+------------+
| MPR_WILLING | TBD2 | 0 | Bits 0-3 encode | | | MPR_WILLING | TBD2 | 0 | Bits 0-3 specify | |
| | | | specify the | | | | | | the originating | |
| | | | originating | |
| | | | router's | | | | | | router's | |
| | | | willingness to act | | | | | | willingness to act | |
| | | | as a flooding | | | | | | as a flooding MPR; | |
| | | | relay; bits 4-7 | | | | | | bits 4-7 specify | |
| | | | encode specify the | | | | | | the originating | |
| | | | originating | |
| | | | router's | | | | | | router's | |
| | | | willingness to act | | | | | | willingness to act | |
| | | | as a routing relay | | | | | | as a routing MPR | |
| MPR_WILLING | TBD2 | 1-255 | Unassigned | Expert | | MPR_WILLING | TBD2 | 1-255 | Unassigned | Expert |
| | | | | Review | | | | | | Review |
+-------------+------+-----------+---------------------+------------+ +-------------+------+-----------+---------------------+------------+
Table 11: Message TLV Type assignment: MPR_WILLING Table 11: Message TLV Type assignment: MPR_WILLING
+--------------+------+-----------+--------------------+------------+ +--------------+------+-----------+--------------------+------------+
| Name | Type | Type | Description | Allocation | | Name | Type | Type | Description | Allocation |
| | | Extension | | Policy | | | | Extension | | Policy |
+--------------+------+-----------+--------------------+------------+ +--------------+------+-----------+--------------------+------------+
skipping to change at page 81, line 26 skipping to change at page 87, line 5
| GATEWAY | TBD7 | 1-255 | | Expert | | GATEWAY | TBD7 | 1-255 | | Expert |
| | | | | Review | | | | | | Review |
+---------+------+-----------+-------------------------+------------+ +---------+------+-----------+-------------------------+------------+
Table 16: Address Block TLV Type assignment: GATEWAY Table 16: Address Block TLV Type assignment: GATEWAY
Type extensions indicated as Expert Review SHOULD be allocated as Type extensions indicated as Expert Review SHOULD be allocated as
described in [RFC5444], based on Expert Review as defined in described in [RFC5444], based on Expert Review as defined in
[RFC5226]. [RFC5226].
24.6. NBR_ADDR_TYPE Values 24.6. NBR_ADDR_TYPE and MPR Values
Note: This section does not require any IANA action, as the required Note: This section does not require any IANA action, as the required
information is included in the descriptions of the MPR and information is included in the descriptions of the MPR and
NBR_ADDR_TYPE Address Block TLVs allocated in Section 24.5. This NBR_ADDR_TYPE Address Block TLVs allocated in Section 24.5. This
information is recorded here for clarity, and for use elsewhere in information is recorded here for clarity, and for use elsewhere in
this specification. this specification.
The Values which the MPR Address Block TLV can use are the following: The Values which the MPR Address Block TLV can use are the following:
o FLOODING := 1; o FLOODING := 1;
skipping to change at page 82, line 42 skipping to change at page 88, line 19
The authors would like to acknowledge the team behind OLSRv1, The authors would like to acknowledge the team behind OLSRv1,
specified in RFC3626, including Anis Laouiti (INT, Paris), Pascale specified in RFC3626, including Anis Laouiti (INT, Paris), Pascale
Minet (INRIA, France), Laurent Viennot (INRIA, France), and Amir Minet (INRIA, France), Laurent Viennot (INRIA, France), and Amir
Qayyum (M.A. Jinnah University, Islamabad) for their contributions. Qayyum (M.A. Jinnah University, Islamabad) for their contributions.
The authors would like to gratefully acknowledge the following people The authors would like to gratefully acknowledge the following people
for intense technical discussions, early reviews and comments on the for intense technical discussions, early reviews and comments on the
specification and its components (listed alphabetically): Khaldoun Al specification and its components (listed alphabetically): Khaldoun Al
Agha (LRI), Teco Boot (Infinity Networks), Song-Yean Cho (LIX), Alan Agha (LRI), Teco Boot (Infinity Networks), Song-Yean Cho (LIX), Alan
Cullen (BAE Systems), Louise Lamont (CRC), Li Li (CRC), Joe Macker Cullen (BAE Systems), Ulrich Herberg (Fujitsu), Louise Lamont (CRC),
(NRL), Richard Ogier (SRI), Charles E. Perkins (WiChorus), Henning Li Li (CRC), Joe Macker (NRL), Richard Ogier (SRI), Charles E.
Rogge (FGAN), and the entire IETF MANET working group. Perkins (WiChorus), Henning Rogge (FGAN), and the entire IETF MANET
working group.
27. References 27. References
27.1. Normative References 27.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", RFC 2119, BCP 14, March 1997. Requirement Levels", RFC 2119, BCP 14, March 1997.
[RFC5148] Clausen, T., Dearlove, C., and B. Adamson, "Jitter [RFC5148] Clausen, T., Dearlove, C., and B. Adamson, "Jitter
Considerations in Mobile Ad Hoc Networks (MANETs)", Considerations in Mobile Ad Hoc Networks (MANETs)",
skipping to change at page 84, line 12 skipping to change at page 89, line 39
[FSR] Pei, G., Gerla, M., and T. Chen, "Fisheye state routing [FSR] Pei, G., Gerla, M., and T. Chen, "Fisheye state routing
in mobile ad hoc networks", 2000. in mobile ad hoc networks", 2000.
[FSLS] Santivanez, C., Ramanathan, R., and I. Stavrakakis, [FSLS] Santivanez, C., Ramanathan, R., and I. Stavrakakis,
"Making link-state routing scale for ad hoc networks", "Making link-state routing scale for ad hoc networks",
2000. 2000.
Appendix A. Example Algorithm for Calculating MPRs Appendix A. Example Algorithm for Calculating MPRs
Note: This appendix has not yet been updated to use link metrics and The following specifies an algorithm which MAY be used to select an
separate sets of flooding and routing MPRs. MPR Set given a Neighbor Graph, as defined in Section 18.2 and
Section 18.3.
The following specifies an algorithm which MAY be used to select
MPRs. MPRs are calculated per OLSRv2 interface, but then a single
set of MPRs is formed from the union of the MPRs for all OLSRv2
interfaces. (As noted in Section 18 a router MAY improve on this, by
coordination between OLSRv2 interfaces.) A router's MPRs are
recorded using the element N_mpr in Neighbor Tuples.
If using this example algorithm then the following steps MUST be
executed in order for a router to select its MPRs:
1. Set N_mpr := false in all Neighbor Tuples;
2. For each Neighbor Tuple with N_symmetric = true and N_willingness
= WILL_ALWAYS, set N_mpr := true;
3. For each OLSRv2 interface of the router, use the algorithm in
Appendix A.2. Note that this sets N_mpr := true for some
Neighbor Tuples, these routers are already selected as MPRs when
using the algorithm for following OLSRv2 interfaces.
4. OPTIONALLY, consider each selected MPR in turn, and if the set of
selected MPRs without that router still satisfies the necessary
conditions, for all OLSRv2 interfaces, then that router MAY be
removed from the set of MPRs. This process MAY be repeated until
no MPRs are removed. Routers MAY be considered in order of
increasing N_willingness.
Note that only symmetric strict 2-hop neighbors are considered, thus:
o Symmetric 1-hop neighbor routers with N_willingness = WILL_NEVER
MUST NOT be selected as MPRs, and MUST be ignored in the following
algorithm (and hence also ignore any 2-Hop Tuples whose
N2_neighbor_iface_addr_list is included in the
N_neighbor_addr_list of any such Neighbor Tuple).
o Symmetric 2-hop neighbor routers which are also symmetric 1-hop
neighbor routers MUST be ignored in the following algorithm (i.e.,
ignore any 2-Hop Tuples whose N2_2hop_addr is in the
N_neighbor_addr_list of any Neighbor Tuple).
A.1. Terminology This algorithm selects an MPR Set M that is a subset of the set N1
that is part of the Neighbor Graph. This algorithm assumes that a
subset I of N1 is pre-selected as MPRs, i.e., that M will contain I.
The following terminology will be used when selecting MPRs for the A.1. Additional Notation
OLSRv2 interface I:
N(I) - The set of symmetric 1-hop neighbors which have a symmetric The following additional notation, in addition to that in
link to I. Section 18.2 will be used by this algorithm:
N2(I) - The set of network addresses of interfaces of a router with N:
a symmetric link to a router in N(I); this MAY be restricted to A subset of N2, consisting of those elements y in N2 such that
considering only information received over I (in which case N2(I) either d1(y) is not defined, or there is at least one x in N1 such
is the set of N2_2hop_addr in 2-Hop Tuples in the 2-Hop Set for that d(x,y) is defined and d(x,y) < d1(y).
OLSRv2 interface I).
Connected to I via Y - A network address A in N2(I) is connected to D(x):
I via a router Y in N(I) if A is a network address of an interface For an element x in N1, the number of elements y in N for which
of a symmetric 1-hop neighbor of Y (i.e., A is the N2_2hop_addr in d(x,y) is defined and has minimal value among the d(z,y) for all z
a 2-Hop Tuple in the 2-Hop Set for OLSRv2 interface I, and whose in N1.
N2_neighbor_iface_addr_list is contained in the set of interface
network addresses of Y).
D(Y, I) - For a router Y in N(I), the number of network addresses in R(x,M):
N2(I) which are connected to I via Y. For an element x in N1, the number of elements y in N for which
d(x,y) is defined, has minimal value among the d(z,y) for all z in
N1, and no such minimal values have z in M. (Note that, denoting
the empty set by 0, D(x) = R(x,0).)
R(Y, I): - For a router Y in N(I), the number of network addresses A.2. MPR Selection Algorithm
in N2(I) which are connected to I via Y, but are not connected to
I via any router which has already been selected as an MPR.
A.2. MPR Selection Algorithm for each OLSRv2 Interface To create the MPR Set M, starting with M := I:
When selecting MPRs for the OLSRv2 interface I: 1. Add all elements x in N1 that have W(x) = WILL_ALWAYS.
1. For each network address A in N2(I) for which there is only one 2. For each element y in N for which there is only one element x in
router Y in N(I) such that A is connected to I via Y, select that N1 such that d2(x,y) is defined, add that element x to M.
router Y as an MPR (i.e., set N_mpr := true in the Neighbor Tuple
corresponding to Y).
2. While there exists any router Y in N(I) with R(Y, I) > 0: 3. While there exists any element x in N1 with R(x,M) > 0:
1. Select a router Y in N(I) with R(Y, I) > 0 in the following 1. Select an element x in N1 with R(x,M) > 0 in the following
order of priority: order of priority:
+ greatest N_willingness in the Neighbor Tuple corresponding + greatest W(x), THEN;
to Y, THEN;
+ greatest R(Y, I), THEN;
+ greatest D(Y, I), THEN; + greatest R(x,M), THEN;
+ N_mpr_selector is equal to true, if possible, THEN; + greatest D(x), THEN;
+ any choice. + any choice, which MAY be based on other criteria (for
example a router MAY choose to prefer a neighbor as an MPR
if that neighbor has already selected the router as an MPR
of the same type, MAY prefer a neighbor based on
information freshness, or MAY prefer a neighbor based on
length of time previously selected as an MPR) or MAY be
random.
2. Select Y as an MPR (i.e., set N_mpr := true in the Neighbor 4. OPTIONALLY, consider each element x in M, but not in I, in turn
Tuple corresponding to Y). and if x can be removed from M while still leaving it satisfying
the definition of an MPR Set, then remove that element x from M.
Elements MAY be considered in any order, e.g. in order of
increasing W(x).
Appendix B. Example Algorithm for Calculating the Routing Set Appendix B. Example Algorithm for Calculating the Routing Set
The following procedure is given as an example for calculating the The following procedure is given as an example for calculating the
Routing Set using a variation of Dijkstra's algorithm. First all Routing Set using a variation of Dijkstra's algorithm. First all
Routing Tuples are removed, and then, using the selections and Routing Tuples are removed, and then, using the selections and
definitions in Appendix B.1, the procedures in the following sections definitions in Appendix B.1, the procedures in the following sections
(each considered a "stage" of the processing) are applied in turn. (each considered a "stage" of the processing) are applied in turn.
B.1. Local Interfaces and Neighbors B.1. Local Interfaces and Neighbors
skipping to change at page 87, line 18 skipping to change at page 92, line 7
Then for this neighbor address: Then for this neighbor address:
3. The selected local address is defined as the selected local 3. The selected local address is defined as the selected local
address for the selected Link Tuple. address for the selected Link Tuple.
4. The selected link address is defined as an address from the 4. The selected link address is defined as an address from the
L_neighbor_iface_addr_list of the selected Link Tuple, if L_neighbor_iface_addr_list of the selected Link Tuple, if
possible equal to this neighbor address. possible equal to this neighbor address.
5. Routing Tuple preference is decided by preference for minimum 5. Routing Tuple preference is decided by preference for minimum
R_dist, and then for preference for corresponding Neighbor Tuples R_dist, then for minimum R_dist, and then for preference for
in this order: corresponding Neighbor Tuples in this order:
* For greater N_willingness. * For greater N_will_routing.
* For N_mpr_selector = true over N_mpr_selector = false. * For N_mpr_selector = true over N_mpr_selector = false.
Note that preferred Routing Tuples SHOULD be used. Routing Note that preferred Routing Tuples SHOULD be used. Routing
Tuples with minimum R_metric MUST be used, this is specified Tuples with minimum R_metric MUST be used, this is specified
outside the definition of preference. An implementation MAY outside the definition of preference. An implementation MAY
modify this definition of preference without otherwise affecting modify this definition of preference (including for minimum
this algorithm. R_dist) without otherwise affecting this algorithm.
B.2. Add Neighbor Routers B.2. Add Neighbor Routers
The following procedure is executed once. The following procedure is executed once.
1. For each Neighbor Tuple with N_symmetric = true, add a Routing 1. For each Neighbor Tuple with N_symmetric = true, add a Routing
Tuple with: Tuple with:
* R_dest_addr := N_orig_addr; * R_dest_addr := N_orig_addr;
* R_next_iface_addr := selected link address for N_orig_addr; * R_next_iface_addr := selected link address for N_orig_addr;
* R_local_iface_addr := selected local address for N_orig_addr; * R_local_iface_addr := selected local address for N_orig_addr;
* R_metric := N_out_metric; * R_metric := N_out_metric;
* R_dist := 1. * R_dist := 1.
B.3. Add Remote Routers B.3. Add Remote Routers
The following procedure is executed for each value of h, starting The following procedure is executed once.
with h := 1 and incrementing by 1 for each iteration. The execution
MUST stop if no Routing Tuples are added or modified in an iteration.
1. For each Router Topology Tuple, if: 1. Add a label that may be "used" or "unused" to each Routing Tuple,
with all initial values equal to unused. (Note that this label
is only required during this algorithm.)
* TR_from_orig_addr is equal to the R_dest_addr of a Routing 2. If there are no unused Routing Tuples then this stage is
Tuple with R_dist = h (the "previous Routing Tuple"), complete, otherwise repeat the following until that is the case.
then consider the candidate Routing Tuple with: 1. Find the unused Routing Tuple with minimum R_metric (if more
than one, pick any) and denote it the "current Routing
Tuple".
* R_dest_addr := TR_to_orig_addr; 2. Mark the current Routing Tuple as used.
* R_next_iface_addr := R_next_iface_addr of the previous Routing 3. For each Router Topology Tuple, with:
Tuple;
* R_local_iface_addr := R_local_iface_addr of the previous + TR_from_orig_addr = R_dest_addr of the current Routing
Routing Tuple; Tuple.
* R_metric := R_metric of the previous Routing Tuple + 2. Define:
TR_metric;
* R_dist := h+1. - new_metric := R_metric of the current Routing Tuple +
TR_metric;
This candidate Routing Tuple MUST be added to the Routing Set if - new_dist := R_dist of the current Routing Tuple + 1.
there is no existing Routing Tuple with the same R_dest_addr.
Otherwise this candidate Routing Tuple MUST replace the existing 3. If there is no Routing Tuple with R_dest_addr =
Routing Tuple with the same R_dest_addr if this candidate Routing TR_to_orig_addr, then create an unused Routing Tuple
Tuple has a smaller R_metric, this candidate Routing Tuple SHOULD with:
replace the existing Routing Tuple with the same R_dest_addr if
this candidate Routing Tuple has an equal R_metric and is - R_dest_addr := TR_to_orig_addr;
preferred to the existing Routing Tuple.
- R_next_iface_addr := R_next_iface_addr of the current
Routing Tuple;
- R_local_iface_addr := R_local_iface_addr of the
current Routing Tuple;
- R_metric := new_metric;
- R_dist := new_dist.
4. Otherwise, if there is an unused Routing Tuple with
R_dest_addr = TR_to_orig_addr, and either new_metric <
R_metric or (new_metric = R_metric and the updated
Routing Tuple would be preferred) then update this
Routing Tuple to have:
- R_next_iface_addr := R_next_iface_addr of the current
Routing Tuple;
- R_local_iface_addr := R_local_iface_addr of the
current Routing Tuple;
- R_metric := new_metric;
- R_dist := new_dist.
B.4. Add Neighbor Addresses B.4. Add Neighbor Addresses
The following procedure is executed once. The following procedure is executed once.
1. For each Neighbor Tuple with N_symmetric = true: 1. For each Neighbor Tuple with N_symmetric = true:
1. For each network address (the "neighbor address") in 1. For each network address (the "neighbor address") in
N_neighbor_addr_list, if the neighbor address is not equal to N_neighbor_addr_list, if the neighbor address is not equal to
the R_dest_addr of any Routing Tuple, then add a new Routing the R_dest_addr of any Routing Tuple, then add a new Routing
skipping to change at page 91, line 25 skipping to change at page 96, line 47
TC messages are instances of [RFC5444] messages. This specification TC messages are instances of [RFC5444] messages. This specification
requires that TC messages contains <msg-hop-limit> and <msg-orig- requires that TC messages contains <msg-hop-limit> and <msg-orig-
addr> fields. It supports TC messages with any combination of addr> fields. It supports TC messages with any combination of
remaining message header options and address encodings, enabled by remaining message header options and address encodings, enabled by
[RFC5444] that convey the required information. As a consequence, [RFC5444] that convey the required information. As a consequence,
there is no single way to represent how all TC messages look. This there is no single way to represent how all TC messages look. This
appendix illustrates a TC message, the exact values and content appendix illustrates a TC message, the exact values and content
included are explained in the following text. included are explained in the following text.
The TC message's four bit Message Flags (MF) field has value 15 The TC message's four bit Message Flags (MF) field has value 15
indicating that the message header contains originaor address, hop indicating that the message header contains originator address, hop
limit, hop count, and message sequence number fields. Its four bit limit, hop count, and message sequence number fields. Its four bit
Message Address Length (MAL) field has value 3, indicating addresses Message Address Length (MAL) field has value 3, indicating addresses
in the message have a length of four octets, here being IPv4 in the message have a length of four octets, here being IPv4
addresses. The overall message length is 71 octets. addresses. The overall message length is 71 octets.
The message has a Message TLV Block with content length 13 octets The message has a Message TLV Block with content length 13 octets
containing three TLVs. The first two TLVs are validity and interval containing three TLVs. The first two TLVs are validity and interval
times for the message. The third TLV is the content sequence number times for the message. The third TLV is the content sequence number
TLV used to carry the 2 octet ANSN, and (with default type extension TLV used to carry the 2 octet ANSN, and (with default type extension
zero, i.e., COMPLETE) indicating that the TC message is complete. zero, i.e., COMPLETE) indicating that the TC message is complete.
skipping to change at page 95, line 10 skipping to change at page 100, line 10
Network Tuple. Network Tuple.
o If N_orig_addr != unknown, then N_orig_addr MUST NOT equal the o If N_orig_addr != unknown, then N_orig_addr MUST NOT equal the
N_orig_addr in any other Neighbor Tuple. N_orig_addr in any other Neighbor Tuple.
o N_neighbor_addr_list MUST NOT contain any network address which o N_neighbor_addr_list MUST NOT contain any network address which
includes this router's originator address, the O_orig_addr in any includes this router's originator address, the O_orig_addr in any
Originator Tuple, or equal or have as a sub-range the AL_net_addr Originator Tuple, or equal or have as a sub-range the AL_net_addr
in any Local Attached Network Tuple. in any Local Attached Network Tuple.
o If N_orig_addr = unknown, then N_willingness = WILL_NEVER, N_mpr = o If N_orig_addr = unknown, then N_will_flooding = WILL_NEVER,
N_will_routing = WILL_NEVER, N_flooding_mpr, N_routing_mpr =
false, N_mpr_selector = false, and N_advertised = false. false, N_mpr_selector = false, and N_advertised = false.
o N_in_metric MUST equal the minimum value of the L_in_metric values o N_in_metric MUST equal the minimum value of the L_in_metric values
of all corrsponding Link Tuples, if any, otherwise N_in_metric = of all corresponding Link Tuples, if any, otherwise N_in_metric =
UNKNOWN_METRIC. UNKNOWN_METRIC.
o N_out_metric MUST equal the minimum value of the L_out_metric o N_out_metric MUST equal the minimum value of the L_out_metric
values of all corrsponding Link Tuples, if any, otherwise values of all corresponding Link Tuples, if any, otherwise
N_out_metric = UNKNOWN_METRIC. N_out_metric = UNKNOWN_METRIC.
o N_will_flooding and N_will_routing MUST be in the range from o N_will_flooding and N_will_routing MUST be in the range from
WILL_NEVER to WILL_ALWAYS, inclusive. WILL_NEVER to WILL_ALWAYS, inclusive.
o If N_flooding_mpr = true, then N_symmetric MUST be true and o If N_flooding_mpr = true, then N_symmetric MUST be true and
N_will_flooding MUST NOT equal WILL_NEVER. N_will_flooding MUST NOT equal WILL_NEVER.
o If N_routing_mpr = true, then N_symmetric MUST be true and o If N_routing_mpr = true, then N_symmetric MUST be true and
N_will_routing MUST NOT equal WILL_NEVER. N_will_routing MUST NOT equal WILL_NEVER.
o If N_symmetric = true and N_mpr_flooding = false, then o If N_symmetric = true and N_flooding_mpr = false, then
N_will_flooding MUST NOT equal WILL_ALWAYS. N_will_flooding MUST NOT equal WILL_ALWAYS.
o If N_symmetric = true and N_mpr_routing = false, then o If N_symmetric = true and N_routing_mpr = false, then
N_will_routing MUST NOT equal WILL_ALWAYS. N_will_routing MUST NOT equal WILL_ALWAYS.
o If N_mpr_selector = true, then N_advertised MUST be true. o If N_mpr_selector = true, then N_advertised MUST be true.
o If N_advertised = true, then N_symmetric MUST be true. o If N_advertised = true, then N_symmetric MUST be true.
In each Lost Neighbor Tuple: In each Lost Neighbor Tuple:
o NL_neighbor_addr MUST NOT include this router's originator o NL_neighbor_addr MUST NOT include this router's originator
address, the O_orig_addr in any Originator Tuple, or equal or have address, the O_orig_addr in any Originator Tuple, or equal or have
 End of changes. 236 change blocks. 
665 lines changed or deleted 889 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/