ospfv2 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/COPYING +674 -0
- data/LICENSE.txt +53 -0
- data/README +50 -0
- data/bin/ospfv2 +112 -105
- data/changelog.txt +7 -0
- data/gemspec +17 -0
- data/lib/ie/external_route.rb +9 -0
- data/lib/ie/id.rb +3 -4
- data/lib/ie/ie.rb +12 -0
- data/lib/ie/ls_age.rb +35 -5
- data/lib/ie/ls_type.rb +40 -37
- data/lib/ie/opaque_id.rb +46 -0
- data/lib/ie/opaque_type.rb +96 -0
- data/lib/ie/options.rb +5 -3
- data/lib/ie/router_link.rb +30 -7
- data/lib/ie/router_link_type.rb +116 -27
- data/lib/ie/sequence_number.rb +7 -3
- data/lib/infra/ospf_common.rb +1 -12
- data/lib/infra/ospf_io.rb +14 -8
- data/lib/infra/ospf_socket.rb +14 -14
- data/lib/infra/parse_options.rb +69 -25
- data/lib/ls_db/advertised_routers.rb +1 -1
- data/lib/ls_db/link_state_database.rb +74 -39
- data/lib/ls_db/link_state_database_build.rb +3 -3
- data/lib/ls_db/link_state_database_links.rb +7 -2
- data/lib/ls_db/lsdb_ios.rb +59 -0
- data/lib/lsa/external.rb +35 -2
- data/lib/lsa/lsa.rb +128 -35
- data/lib/lsa/lsa_factory.rb +20 -7
- data/lib/lsa/network.rb +44 -9
- data/lib/lsa/router.rb +14 -2
- data/lib/lsa/summary.rb +16 -3
- data/lib/lsa/tlv/color.rb +47 -0
- data/lib/lsa/tlv/link.rb +122 -0
- data/lib/lsa/tlv/link_id.rb +55 -0
- data/lib/lsa/tlv/link_type.rb +44 -0
- data/lib/lsa/tlv/local_interface.rb +56 -0
- data/lib/lsa/tlv/maximum_bandwidth.rb +55 -0
- data/lib/lsa/tlv/maximum_reservable_bandwidth.rb +52 -0
- data/lib/lsa/tlv/remote_interface.rb +58 -0
- data/lib/lsa/tlv/router_address.rb +57 -0
- data/lib/lsa/tlv/tlv.rb +32 -0
- data/lib/lsa/tlv/tlv_factory.rb +72 -0
- data/lib/lsa/tlv/traffic_engineering_metric.rb +52 -0
- data/lib/lsa/tlv/unreserved_bandwidth.rb +55 -0
- data/lib/lsa/traffic_engineering.rb +95 -0
- data/lib/neighbor/neighbor.rb +9 -9
- data/lib/packet/link_state_update.rb +16 -14
- data/lib/packet/ospf_packet.rb +13 -9
- data/test/unit/ie/au_type_test.rb +18 -0
- data/test/unit/ie/external_route_test.rb +51 -0
- data/test/unit/ie/id_test.rb +22 -0
- data/test/unit/ie/interface_mtu_test.rb +23 -0
- data/test/unit/ie/ls_age_test.rb +46 -0
- data/test/unit/ie/ls_type_test.rb +41 -0
- data/test/unit/ie/metric_test.rb +24 -0
- data/test/unit/ie/mt_metric_test.rb +27 -0
- data/test/unit/ie/opaque_id_test.rb +22 -0
- data/test/unit/ie/opaque_type_test.rb +22 -0
- data/test/unit/ie/options_test.rb +142 -0
- data/test/unit/ie/ospf_version_test.rb +0 -0
- data/test/unit/ie/packet_type_test.rb +33 -0
- data/test/unit/ie/router_link_factory_test.rb +26 -0
- data/test/unit/ie/router_link_test.rb +276 -0
- data/test/unit/ie/router_link_type_test.rb +24 -0
- data/test/unit/ie/sequence_number_test.rb +31 -0
- data/test/unit/ie/tos_metric_test.rb +27 -0
- data/test/unit/infra/ospf_common_test.rb +42 -0
- data/test/unit/infra/parse_options_test.rb +58 -0
- data/test/unit/infra/timer_test.rb +94 -0
- data/test/unit/ls_db/all +10 -0
- data/test/unit/ls_db/link_state_database_build_test.rb +140 -0
- data/test/unit/ls_db/link_state_database_links_tests.rb +74 -0
- data/test/unit/ls_db/link_state_database_test.rb +444 -0
- data/test/unit/ls_db/links_test.rb +49 -0
- data/test/unit/lsa/all +10 -0
- data/test/unit/lsa/external_test.rb +218 -0
- data/test/unit/lsa/lsa_factory_test.rb +314 -0
- data/test/unit/lsa/lsa_test.rb +191 -0
- data/test/unit/lsa/network_test.rb +107 -0
- data/test/unit/lsa/router_test.rb +614 -0
- data/test/unit/lsa/summary_test.rb +135 -0
- data/test/unit/lsa/tlv/color_test.rb +39 -0
- data/test/unit/lsa/tlv/link_id_test.rb +14 -0
- data/test/unit/lsa/tlv/link_test.rb +413 -0
- data/test/unit/lsa/tlv/link_type_test.rb +16 -0
- data/test/unit/lsa/tlv/local_interface_test.rb +15 -0
- data/test/unit/lsa/tlv/maximum_bandwidth_test.rb +14 -0
- data/test/unit/lsa/tlv/maximum_reservable_bandwidth_test.rb +13 -0
- data/test/unit/lsa/tlv/remote_interface_test.rb +14 -0
- data/test/unit/lsa/tlv/router_address_test.rb +16 -0
- data/test/unit/lsa/tlv/tlv_factory_test.rb +89 -0
- data/test/unit/lsa/tlv/traffic_engineering_metric_test.rb +15 -0
- data/test/unit/lsa/traffic_engineering_test.rb +65 -0
- data/test/unit/neighbor/neighbor_test.rb +82 -0
- data/test/unit/packet/all +10 -0
- data/test/unit/packet/database_description_test.rb +114 -0
- data/test/unit/packet/hello_test.rb +107 -0
- data/test/unit/packet/link_state_ack_test.rb +64 -0
- data/test/unit/packet/link_state_request_test.rb +168 -0
- data/test/unit/packet/link_state_update_test.rb +62 -0
- data/test/unit/packet/ospf_packet_test.rb +91 -0
- metadata +106 -51
- data/lib/infra/to_s.rb +0 -38
- data/lib/lsa/lsa_base.rb +0 -430
- data/lib/lsa/opaque.rb +0 -143
data/lib/lsa/opaque.rb
DELETED
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
# A.2. The Opaque LSA
|
|
2
|
-
#
|
|
3
|
-
# Opaque LSAs are Type 9, 10, and 11 link state advertisements. These
|
|
4
|
-
# advertisements MAY be used directly by OSPF or indirectly by some
|
|
5
|
-
# application wishing to distribute information throughout the OSPF
|
|
6
|
-
# domain. The function of the Opaque LSA option is to provide for
|
|
7
|
-
# future OSPF extensibility.
|
|
8
|
-
#
|
|
9
|
-
# Opaque LSAs contain some number of octets (of application-specific
|
|
10
|
-
# data) padded to 32-bit alignment. Like any other LSA, the Opaque LSA
|
|
11
|
-
# uses the link-state database distribution mechanism for flooding this
|
|
12
|
-
# information throughout the topology. However, the Opaque LSA has a
|
|
13
|
-
# flooding scope associated with it so that the scope of flooding may
|
|
14
|
-
# be link-local (type-9), area-local (type-10), or the entire OSPF
|
|
15
|
-
# routing domain (type-11). Section 3 of this document describes the
|
|
16
|
-
# flooding procedures for the Opaque LSA.
|
|
17
|
-
#
|
|
18
|
-
#
|
|
19
|
-
#
|
|
20
|
-
#
|
|
21
|
-
#
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
#
|
|
25
|
-
#
|
|
26
|
-
# Berger, et al. Standards Track [Page 14]
|
|
27
|
-
#
|
|
28
|
-
# RFC 5250 OSPF Opaque LSA Option July 2008
|
|
29
|
-
#
|
|
30
|
-
#
|
|
31
|
-
# 0 1 2 3
|
|
32
|
-
# 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
|
33
|
-
# +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
34
|
-
# | LS age | Options | 9, 10, or 11 |
|
|
35
|
-
# +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
36
|
-
# | Opaque Type | Opaque ID |
|
|
37
|
-
# +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
38
|
-
# | Advertising Router |
|
|
39
|
-
# +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
40
|
-
# | LS Sequence Number |
|
|
41
|
-
# +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
42
|
-
# | LS checksum | Length |
|
|
43
|
-
# +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
44
|
-
# | |
|
|
45
|
-
# + +
|
|
46
|
-
# | Opaque Information |
|
|
47
|
-
# + +
|
|
48
|
-
# | ... |
|
|
49
|
-
#
|
|
50
|
-
# Link-State Type
|
|
51
|
-
#
|
|
52
|
-
# The link-state type of the Opaque LSA identifies the LSA's range
|
|
53
|
-
# of topological distribution. This range is referred to as the
|
|
54
|
-
# flooding scope. The following explains the flooding scope of each
|
|
55
|
-
# of the link-state types.
|
|
56
|
-
#
|
|
57
|
-
# o A value of 9 denotes a link-local scope. Opaque LSAs with a
|
|
58
|
-
# link-local scope MUST NOT be flooded beyond the local
|
|
59
|
-
# (sub)network.
|
|
60
|
-
#
|
|
61
|
-
# o A value of 10 denotes an area-local scope. Opaque LSAs with an
|
|
62
|
-
# area-local scope MUST NOT be flooded beyond their area of
|
|
63
|
-
# origin.
|
|
64
|
-
#
|
|
65
|
-
# o A value of 11 denotes that the LSA is flooded throughout the
|
|
66
|
-
# Autonomous System (e.g., has the same scope as type-5 LSAs).
|
|
67
|
-
# Opaque LSAs with AS-wide scope MUST NOT be flooded into stub
|
|
68
|
-
# areas or NSSAs.
|
|
69
|
-
#
|
|
70
|
-
# Syntax of the Opaque LSA's Link-State ID
|
|
71
|
-
#
|
|
72
|
-
# The link-state ID of the Opaque LSA is divided into an Opaque Type
|
|
73
|
-
# field (the first 8 bits) and an Opaque ID (the remaining 24 bits).
|
|
74
|
-
# See section 7 of this document for a description of Opaque type
|
|
75
|
-
# allocation and assignment.
|
|
76
|
-
#
|
|
77
|
-
#
|
|
78
|
-
|
|
79
|
-
module OSPFv2
|
|
80
|
-
class Opaque_Base < Lsa
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
__END__
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
3. The Opaque LSA
|
|
88
|
-
|
|
89
|
-
Opaque LSAs are types 9, 10, and 11 link state advertisements.
|
|
90
|
-
Opaque LSAs consist of a standard LSA header followed by a 32-bit
|
|
91
|
-
aligned application-specific information field. Standard link-state
|
|
92
|
-
database flooding mechanisms are used for distribution of Opaque
|
|
93
|
-
LSAs. The range of topological distribution (i.e., the flooding
|
|
94
|
-
scope) of an Opaque LSA is identified by its link-state type. This
|
|
95
|
-
section documents the flooding of Opaque LSAs.
|
|
96
|
-
|
|
97
|
-
The flooding scope associated with each Opaque link-state type is
|
|
98
|
-
defined as follows.
|
|
99
|
-
|
|
100
|
-
o Link-state type-9 denotes a link-local scope. Type-9 Opaque LSAs
|
|
101
|
-
are not flooded beyond the local (sub)network.
|
|
102
|
-
|
|
103
|
-
o Link-state type-10 denotes an area-local scope. Type-10 Opaque
|
|
104
|
-
LSAs are not flooded beyond the borders of their associated area.
|
|
105
|
-
|
|
106
|
-
o Link-state type-11 denotes that the LSA is flooded throughout the
|
|
107
|
-
Autonomous System (AS). The flooding scope of type-11 LSAs are
|
|
108
|
-
equivalent to the flooding scope of AS-External (type-5) LSAs.
|
|
109
|
-
Specifically, type-11 Opaque LSAs are 1) flooded throughout all
|
|
110
|
-
transit areas, 2) not flooded into stub areas or Not-So-Stubby
|
|
111
|
-
Areas (NSSAs), see [NSSA], from the backbone, and 3) not
|
|
112
|
-
originated by routers into their connected stub areas or NSSAs.
|
|
113
|
-
As with type-5 LSAs, if a type-11 Opaque LSA is received in a stub
|
|
114
|
-
area or NSSA from a neighboring router within the stub area or
|
|
115
|
-
NSSA, the LSA is rejected.
|
|
116
|
-
|
|
117
|
-
The link-state ID of the Opaque LSA is divided into an Opaque type
|
|
118
|
-
field (the first 8 bits) and a type-specific ID (the remaining 24
|
|
119
|
-
bits). The packet format of the Opaque LSA is given in Appendix A.
|
|
120
|
-
Section 7 describes Opaque type allocation and assignment.
|
|
121
|
-
|
|
122
|
-
The responsibility for proper handling of the Opaque LSA's flooding
|
|
123
|
-
scope is placed on both the sender and receiver of the LSA. The
|
|
124
|
-
receiver must always store a valid received Opaque LSA in its link-
|
|
125
|
-
state database. The receiver must not accept Opaque LSAs that
|
|
126
|
-
violate the flooding scope (e.g., a type-11 (domain-wide) Opaque LSA
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
Berger, et al. Standards Track [Page 4]
|
|
133
|
-
|
|
134
|
-
RFC 5250 OSPF Opaque LSA Option July 2008
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
is not accepted in a stub area or NSSA). The flooding scope affects
|
|
138
|
-
both the synchronization of the link-state database and the flooding
|
|
139
|
-
procedure.
|
|
140
|
-
|
|
141
|
-
The following describes the modifications to these procedures that
|
|
142
|
-
are necessary to insure conformance to the Opaque LSA's Scoping
|
|
143
|
-
Rules.
|