mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-04 22:14:49 +00:00
"Masahiko Endo" < endo @ suri . co . jp >
- [zebra 15475] - MPLS-TE docs
This commit is contained in:
parent
0efa4d57e3
commit
8bddafc9d4
179
doc/mpls/ChangeLog.opaque.txt
Normal file
179
doc/mpls/ChangeLog.opaque.txt
Normal file
@ -0,0 +1,179 @@
|
|||||||
|
----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * -----
|
||||||
|
Changes 2001.12.03
|
||||||
|
|
||||||
|
1. Bug fixes
|
||||||
|
|
||||||
|
1.1 Though a new member "oi" has added to "struct ospf_lsa" to control
|
||||||
|
flooding scope of type-9 Opaque-LSAs, the value was always NULL
|
||||||
|
because no one set it.
|
||||||
|
|
||||||
|
1.2 In the function "show_ip_ospf_database_summary()" and "show_lsa_
|
||||||
|
detail_adv_router()", VTY output for type-11 Opaque-LSAs did not
|
||||||
|
work properly.
|
||||||
|
|
||||||
|
1.3 URL for the opaque-type assignment reference has changed.
|
||||||
|
|
||||||
|
1.4 In the file "ospf_mpls_te.c", printf formats have changed to
|
||||||
|
avoid compiler warning messages; "%lu" -> "%u", "%lx" -> "%x".
|
||||||
|
Note that this hack depends on OS, compiler and their versions.
|
||||||
|
|
||||||
|
1.5 One of attached documentation "opaque_lsa.txt" has changed to
|
||||||
|
reflect the latest coding.
|
||||||
|
|
||||||
|
2. Feature enhancements
|
||||||
|
|
||||||
|
2.1 Knowing that it is an ugly hack, an "officially unallocated"
|
||||||
|
opaque-type value 0 has newly introduced as a "wildcard",
|
||||||
|
which matches to all opaque-type.
|
||||||
|
This value must not be flooded to the network, of course.
|
||||||
|
|
||||||
|
2.2 The Opaque-core module makes use of newly introduced hooks to
|
||||||
|
dispatch every LSDB change (LSA installation and deletion) to
|
||||||
|
preregistered opaque users.
|
||||||
|
Therefore, by providing appropriate callback functions as new
|
||||||
|
parameters of "ospf_register_opaque_functab()", an opaque user
|
||||||
|
can refer to every LSA instance to be installed into, or to be
|
||||||
|
deleted from, the LSDB.
|
||||||
|
|
||||||
|
----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * -----
|
||||||
|
Changes 2001.10.31
|
||||||
|
|
||||||
|
1. Bug fixes
|
||||||
|
|
||||||
|
1.1 Since each LSA has their own lifetime, they will remain in a
|
||||||
|
routing domain (being stored in LSDB of each router), until their
|
||||||
|
age naturally reach to MaxAge or explicitly being flushed by the
|
||||||
|
originated router. Therefore, if a router restarted with a short
|
||||||
|
downtime, it is possible that previously flooded self-originated
|
||||||
|
LSAs might received if the NSM status is not less than Exchange.
|
||||||
|
|
||||||
|
There were some problems in the way of handling self-originated
|
||||||
|
Opaque-LSAs if they are contained in a received LSUpd message,
|
||||||
|
but not installed to the local LSDB yet.
|
||||||
|
Regardless of some conditions to start originating Opaque-LSAs
|
||||||
|
(there should be at least one opaque-capable full-state neighbor),
|
||||||
|
the function "ospf_flood()" will be called to flood and install
|
||||||
|
this brand-new looking LSA.
|
||||||
|
As the result, when the NSM of an opaque-capable neighbor gets
|
||||||
|
full, internal state inconsistency happens; a user of Opaque-LSA
|
||||||
|
such as MPLS-TE can refer to self-originated LSAs in the local
|
||||||
|
LSDB, but cannot modify their contents...
|
||||||
|
|
||||||
|
Above problems have fixed with a policy "flush it from the whole
|
||||||
|
routing domain and keep silent until the flushing completed".
|
||||||
|
By using this sweeping technique, we can be free from confusion
|
||||||
|
caused by self-originated LSAs received via network.
|
||||||
|
|
||||||
|
1.2 The function "ospf_opaque_type_name()" contained massive ifdefs
|
||||||
|
corresponding to each "opaque-type".
|
||||||
|
These unnecessary ifdefs are removed completely.
|
||||||
|
|
||||||
|
1.3 In the function "ospf_delete_opaque_functab()", there was an
|
||||||
|
improper loop control that causes illegal memory access.
|
||||||
|
Original coding was "next = nextnode (node)".
|
||||||
|
|
||||||
|
1.4 The function "ospf_mpls_te_ism_change()" could not handle the
|
||||||
|
case when the ISM changes from Waiting to DR/BDR/Other.
|
||||||
|
So, there was a case that even if one of an ISM become
|
||||||
|
operational and MPLS-TE module has started, the corresponding
|
||||||
|
Opaque-LSA cannot be originated.
|
||||||
|
|
||||||
|
1.5 The function "ospf_opaque_lsa_reoriginate_schedule()" did not
|
||||||
|
allow to be called multiple times, simply because handling
|
||||||
|
module for the given "lsa-type & opaque-type" already exists.
|
||||||
|
But this assumption seems to be wrong.
|
||||||
|
Change the policy to allow this function to be called multiple
|
||||||
|
times and let the caller to decide what should do when the
|
||||||
|
corresponding callback function "(* functab->lsa_originator)()"
|
||||||
|
is called.
|
||||||
|
|
||||||
|
2. Feature enhancements
|
||||||
|
|
||||||
|
2.1 The global bitmap "opaque" has introduced instead of former flag
|
||||||
|
"OpaqueCapable", to store complex conditions to handle Opaque-LSAs.
|
||||||
|
|
||||||
|
2.2 The MPLS-TE module now referes to "draft-katz-yeung-ospf-traffic
|
||||||
|
-06.txt", no significant changes with 05 version, though.
|
||||||
|
|
||||||
|
----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * -----
|
||||||
|
Changes 2001.08.03
|
||||||
|
|
||||||
|
1. Bug fixes
|
||||||
|
|
||||||
|
1.1 Even if the ospfd started with opaque capability enabled, when
|
||||||
|
the ospfd receives an unknown opaque-type (unregistered by the
|
||||||
|
function "ospf_register_opaque_functab()" beforehand), the LSA
|
||||||
|
was discarded. As the result, only the opaque-LSAs that have
|
||||||
|
commonly registered by opaque-capable ospf routers can be
|
||||||
|
flooded in a routing domain.
|
||||||
|
|
||||||
|
This behavior has fixed so that arbitrary opaque-type LSAs can
|
||||||
|
be flooded among opaque-capable ospf routers.
|
||||||
|
If the ospfd has opaque-LSA capability but disabled at runtime,
|
||||||
|
received opaque-LSAs can be accepted and registered to LSDB as
|
||||||
|
is, but not be flooded to the network; those opaque LSAs will
|
||||||
|
remain in LSDB until explicitly flushed by incoming LSUpd
|
||||||
|
messages with MaxAge, or their age naturally reaches to MaxAge.
|
||||||
|
|
||||||
|
1.2 The function "ospf_register_opaque_functab()" did not check
|
||||||
|
if the entry corresponding to the given "lsa-type, opaque-type"
|
||||||
|
combination already exists or not.
|
||||||
|
This problem has fixed not to allow multiple registration.
|
||||||
|
|
||||||
|
1.3 Since type-11 (AS external) LSAs will be flooded beyond areas,
|
||||||
|
there is little relationship between "struct lsa" and "struct
|
||||||
|
area". More specifically, the pointer address "lsa->area" can
|
||||||
|
be NULL if the lsa-type is 11, thus an illegal memory access
|
||||||
|
will happen. This problem has fixed.
|
||||||
|
|
||||||
|
1.4 When self-originated opaque-LSAs are received via network and
|
||||||
|
if the corresponding opaque-type functions are not available
|
||||||
|
(they have already deleted) at that time, those LSAs were
|
||||||
|
dropped due to "unknown opaque-type" error.
|
||||||
|
After the problem 1.1 has fixed, those "self-originated" LSAs
|
||||||
|
were registered to LSDB and then flooded to the network, even
|
||||||
|
if the processing functions did not exist...
|
||||||
|
|
||||||
|
After all, this problem has fixed so that those LSAs should
|
||||||
|
explicitly be flushed from the routing domain immediately, if
|
||||||
|
the processing functions cannot find at that time.
|
||||||
|
|
||||||
|
1.5 Some typo have fixed.
|
||||||
|
|
||||||
|
--- EXAMPLE ---
|
||||||
|
static int
|
||||||
|
opaque_lsa_originate_callback (list funclist, void *lsa_type_dependent)
|
||||||
|
^^^^^
|
||||||
|
--- EXAMPLE ---
|
||||||
|
|
||||||
|
2. Feature enhancements
|
||||||
|
|
||||||
|
2.1 According to the description of rfc2328 in section 10.8, any
|
||||||
|
change in the router's optional capabilities should trigger
|
||||||
|
the option re-negotiation procedures with neighbors.
|
||||||
|
|
||||||
|
--- EXCERPT ---
|
||||||
|
If for some reason the router's optional
|
||||||
|
capabilities change, the Database Exchange procedure should be
|
||||||
|
restarted by reverting to neighbor state ExStart.
|
||||||
|
--- EXCERPT ---
|
||||||
|
|
||||||
|
For the opaque-capability changes, this feature has implemented.
|
||||||
|
More specifically, if "ospf opaque-lsa" or "no ospf opaque-lsa"
|
||||||
|
VTY command is given at runtime, all self-originated LSAs will
|
||||||
|
be flushed immediately and then all neighbor status will be
|
||||||
|
forced to ExStart by generating SeqNumberMismatch events.
|
||||||
|
|
||||||
|
2.1 When we change opaque-capability dynamically (ON -> OFF -> ON),
|
||||||
|
there was no trigger at "OFF->ON" timing to reactivate opaque
|
||||||
|
LSA handling modules (such as MPLS-TE) that have once forcibly
|
||||||
|
stopped at "ON->OFF" timing.
|
||||||
|
Now this dynamic reactivation feature has added.
|
||||||
|
|
||||||
|
2.2 The MPLS-TE module now referes to "draft-katz-yeung-ospf-traffic
|
||||||
|
-05.txt", no significant changes with 04 version, though.
|
||||||
|
|
||||||
|
----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * -----
|
||||||
|
Changes 2001.03.28
|
||||||
|
|
||||||
|
Initial release of Opaque-LSA/MPLS-TE extensions for the zebra/ospfd.
|
90
doc/mpls/cli_summary.txt
Normal file
90
doc/mpls/cli_summary.txt
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
Summary of CLI commands, expanded for Opaque-LSA/MPLS-TE.
|
||||||
|
---------------------------------------------------------
|
||||||
|
|
||||||
|
router>
|
||||||
|
|
||||||
|
show ip ospf database (asbr-summary|external|max-age|network|router|self-originate|summary|opaque-link|opaque-area|opaque-external)
|
||||||
|
|
||||||
|
show ip ospf database (asbr-summary|external|network|router|summary|opaque-link|opaque-area|opaque-external) (self-originate|)
|
||||||
|
|
||||||
|
show ip ospf database (asbr-summary|external|network|router|summary|opaque-link|opaque-area|opaque-external) A.B.C.D
|
||||||
|
|
||||||
|
show ip ospf database (asbr-summary|external|network|router|summary|opaque-link|opaque-area|opaque-external) A.B.C.D (self-originate|)
|
||||||
|
|
||||||
|
show ip ospf database (asbr-summary|external|network|router|summary|opaque-link|opaque-area|opaque-external) A.B.C.D adv-router A.B.C.D
|
||||||
|
|
||||||
|
show ip ospf database (asbr-summary|external|network|router|summary|opaque-link|opaque-area|opaque-external) adv-router A.B.C.D
|
||||||
|
|
||||||
|
--> Add database items: opaque-link, opaque-area, opaque-external
|
||||||
|
|
||||||
|
show mpls-te interface [INTERFACE]
|
||||||
|
|
||||||
|
--> Show current MPLS-TE link-TLV parameters.
|
||||||
|
If [INTERFACE] is omitted, all interfaces will be displayed.
|
||||||
|
|
||||||
|
show mpls-te router
|
||||||
|
|
||||||
|
--> Show current MPLS-TE Router-TLV parameters.
|
||||||
|
|
||||||
|
router> enable
|
||||||
|
router#
|
||||||
|
router# configure terminal
|
||||||
|
router(config)# interface [INTERFACE]
|
||||||
|
router(config-if)#
|
||||||
|
|
||||||
|
mpls-te link max-bw BANDWIDTH
|
||||||
|
|
||||||
|
--> Set MPLS-TE link-TLV parameter: Maximum Bandwidth (Bytes/sec).
|
||||||
|
In integer or floating point format (1000, or 1.0e3)
|
||||||
|
|
||||||
|
mpls-te link max-rsv-bw BANDWIDTH
|
||||||
|
|
||||||
|
--> Set MPLS-TE link-TLV parameter: Maximum Reservable Bandwidth (Bytes/sec).
|
||||||
|
In integer or floating point format (1000, or 1.0e3)
|
||||||
|
|
||||||
|
mpls-te link metric <0-4294967295>
|
||||||
|
|
||||||
|
--> Set MPLS-TE link-TLV parameter: MPLS-TE metric.
|
||||||
|
|
||||||
|
mpls-te link rsc-clsclr BITPATTERN
|
||||||
|
|
||||||
|
--> Set MPLS-TE link-TLV parameter: Resource Class/Color.
|
||||||
|
In 32-bit hexadecimal format, with leading "0x" (0x0 - 0xffffffff)
|
||||||
|
|
||||||
|
mpls-te link unrsv-bw <0-7> BANDWIDTH
|
||||||
|
|
||||||
|
--> Set MPLS-TE link-TLV parameter: Unreserved Bandwidth (Bytes/sec).
|
||||||
|
In integer or floating point format (1000, or 1.0e3)
|
||||||
|
|
||||||
|
router(config-if)# exit
|
||||||
|
router(config)# router ospf
|
||||||
|
router(config-router)#
|
||||||
|
|
||||||
|
mpls-te
|
||||||
|
|
||||||
|
--> Enable MPLS-TE functionality.
|
||||||
|
Note that master-switch "ospf opaque-lsa" must also be specified.
|
||||||
|
|
||||||
|
mpls-te on
|
||||||
|
|
||||||
|
--> Alias of "mpls-te" command.
|
||||||
|
|
||||||
|
mpls-te router-address A.B.C.D
|
||||||
|
|
||||||
|
--> Set MPLS-TE Router-TLV parameter: Router Address.
|
||||||
|
|
||||||
|
no mpls-te
|
||||||
|
|
||||||
|
--> Disable MPLS-TE functionality.
|
||||||
|
|
||||||
|
no ospf opaque-lsa
|
||||||
|
|
||||||
|
--> Disable Opaque-LSAs capability.
|
||||||
|
This node behaves Opaque-incapable node.
|
||||||
|
|
||||||
|
ospf opaque-lsa
|
||||||
|
|
||||||
|
--> Enable Opaque-LSAs capability.
|
||||||
|
This is the master-switch to make this node Opaque-capable.
|
||||||
|
|
||||||
|
router# exit
|
365
doc/mpls/opaque_lsa.txt
Normal file
365
doc/mpls/opaque_lsa.txt
Normal file
@ -0,0 +1,365 @@
|
|||||||
|
1. List of "opaque-type dependent" callback functions per LSA-type.
|
||||||
|
|
||||||
|
<ospf_opaque_lsaN_functab> (N = 9,10,11)
|
||||||
|
|
|
||||||
|
| struct
|
||||||
|
| list struct struct
|
||||||
|
+-> +-------+ listnode listnode
|
||||||
|
| head |-----> +------+ +------
|
||||||
|
| tail | | next |--------------------> | next
|
||||||
|
| count | /--| prev |<---------------------| prev
|
||||||
|
+-------+ | data |----+ |
|
||||||
|
|///////| +------+ |
|
||||||
|
+-------+ |
|
||||||
|
|
|
||||||
|
struct |
|
||||||
|
ospf_opaque_tabent |
|
||||||
|
+----------------------+ <--+
|
||||||
|
| opaque_type |
|
||||||
|
+----------------------+
|
||||||
|
| (Callback functions) |
|
||||||
|
+----------------------+
|
||||||
|
|
||||||
|
|
||||||
|
2. Self-originated Opaque-LSAs per LSA-type.
|
||||||
|
|
||||||
|
2.1 Type-11 (AS-external) Opaque-LSAs
|
||||||
|
|
||||||
|
struct
|
||||||
|
ospf
|
||||||
|
+---> +-------------------+
|
||||||
|
| |///////////////////|
|
||||||
|
| +-------------------+
|
||||||
|
| | opaque |
|
||||||
|
| +-------------------+
|
||||||
|
| |///////////////////|
|
||||||
|
| +-------------------+
|
||||||
|
| | opaque_lsa_self |---+
|
||||||
|
| +-------------------+ |
|
||||||
|
| |///////////////////| |
|
||||||
|
| +-------------------+ |
|
||||||
|
| |
|
||||||
|
......|.............................|.......................................
|
||||||
|
: | | Almost common for type-9,10,11 LSA :
|
||||||
|
: | +-----------------------+ :
|
||||||
|
: | | :
|
||||||
|
: | | struct :
|
||||||
|
: | | list struct struct :
|
||||||
|
: | +-> +-------+ listnode listnode :
|
||||||
|
: | | head |-----> +------+ +------ :
|
||||||
|
: | | tail | | next |--------------------> | next :
|
||||||
|
: | | count | /--| prev |<---------------------| prev :
|
||||||
|
: | +-------+ | data |---+ | :
|
||||||
|
: | |///////| +------+ | :
|
||||||
|
: | +-------+ | :
|
||||||
|
: | | :
|
||||||
|
: | struct | :
|
||||||
|
: | opaque_info_per_type | :
|
||||||
|
: | +-------------------+ <--------+ :
|
||||||
|
: | | opaque_type | <------------+ :
|
||||||
|
: | +-------------------+ | :
|
||||||
|
: | | status | | :
|
||||||
|
: | +-------------------+ | :
|
||||||
|
: | | t_opaque_lsa_self | | :
|
||||||
|
: | +-------------------+ | :
|
||||||
|
: +-----| owner | | struct :
|
||||||
|
: +-------------------+ | ospf_opaque_tabent :
|
||||||
|
: | functab |-------------------> +---------------- :
|
||||||
|
: +-------------------+ | | opaque_type :
|
||||||
|
: | id_list |---+ | |(Callback Funcs) :
|
||||||
|
: +-------------------+ | | | :
|
||||||
|
: | | :
|
||||||
|
: +-----------------------+ | :
|
||||||
|
: | | :
|
||||||
|
: | struct | :
|
||||||
|
: | list struct | struct :
|
||||||
|
: +-> +-------+ listnode | listnode :
|
||||||
|
: | head |-----> +------+ | +------ :
|
||||||
|
: | tail | | next |--------------------> | next :
|
||||||
|
: | count | /--| prev |<---------------------| prev :
|
||||||
|
: +-------+ | data |---+ | | :
|
||||||
|
: |///////| +------+ | | :
|
||||||
|
: +-------+ | | :
|
||||||
|
: | | :
|
||||||
|
: struct | | :
|
||||||
|
: opaque_info_per_id | | :
|
||||||
|
: +-------------------+ <--------+ | :
|
||||||
|
: | opaque_id | | :
|
||||||
|
: +-------------------+ | :
|
||||||
|
: | t_opaque_lsa_self | | :
|
||||||
|
: +-------------------+ | :
|
||||||
|
: | opqctl_type |--------------+ :
|
||||||
|
: +-------------------+ :
|
||||||
|
: | lsa |---+ :
|
||||||
|
: +-------------------+ | :
|
||||||
|
: | :
|
||||||
|
: struct | :
|
||||||
|
: ospf_lsa | :
|
||||||
|
: +-------------+ <-------+ :
|
||||||
|
: |/////////////| struct :
|
||||||
|
: +-------------+ lsa_header :
|
||||||
|
: | data |--------------> +-------- :
|
||||||
|
: +-------------+ | :
|
||||||
|
: |/////////////| :
|
||||||
|
: +-------------+ :
|
||||||
|
: +--------| area | :
|
||||||
|
: | +-------------+ :
|
||||||
|
: --- |/////////////| :
|
||||||
|
: +-------------+ :
|
||||||
|
: +-----| oi | :
|
||||||
|
: | +-------------+ :
|
||||||
|
: --- :
|
||||||
|
:..........................................................................:
|
||||||
|
|
||||||
|
2.2 Type-10 (area-local) Opaque-LSAs
|
||||||
|
|
||||||
|
struct
|
||||||
|
ospf
|
||||||
|
+---------+ <-----------+
|
||||||
|
|/////////| |
|
||||||
|
+---------+ |
|
||||||
|
|
|
||||||
|
struct |
|
||||||
|
ospf_area |
|
||||||
|
+--+---> +-----------------+ |
|
||||||
|
| | | top |-----+
|
||||||
|
| | +-----------------+
|
||||||
|
| | |/////////////////| struct
|
||||||
|
| | +-----------------+ ospf_lsa
|
||||||
|
| | | router_lsa_self |-----------> +---------
|
||||||
|
| | +-----------------+ |
|
||||||
|
| | | opaque_lsa_self |-----+ |
|
||||||
|
| | +-----------------+ |
|
||||||
|
| | |/////////////////| |
|
||||||
|
| | +-----------------+ |
|
||||||
|
| | |
|
||||||
|
...|..|.............................|.......................................
|
||||||
|
: | | | Almost common for type-9,10,11 LSA :
|
||||||
|
: | | +-----------------------+ :
|
||||||
|
: | | | :
|
||||||
|
: | | | struct :
|
||||||
|
: | | | list struct struct :
|
||||||
|
: | | +-> +-------+ listnode listnode :
|
||||||
|
: | | | head |-----> +------+ +------ :
|
||||||
|
: | | | tail | | next |--------------------> | next :
|
||||||
|
: | | | count | /--| prev |<---------------------| prev :
|
||||||
|
: | | +-------+ | data |---+ | :
|
||||||
|
: | | |///////| +------+ | :
|
||||||
|
: | | +-------+ | :
|
||||||
|
: | | | :
|
||||||
|
: | | struct | :
|
||||||
|
: | | opaque_info_per_type | :
|
||||||
|
: | | +-------------------+ <--------+ :
|
||||||
|
: | | | opaque_type | <------------+ :
|
||||||
|
: | | +-------------------+ | :
|
||||||
|
: | | | status | | :
|
||||||
|
: | | +-------------------+ | :
|
||||||
|
: | | | t_opaque_lsa_self | | :
|
||||||
|
: | | +-------------------+ | :
|
||||||
|
: | +-----| owner | | struct :
|
||||||
|
: | +-------------------+ | ospf_opaque_tabent :
|
||||||
|
: | | functab |-------------------> +---------------- :
|
||||||
|
: | +-------------------+ | | opaque_type :
|
||||||
|
: | | id_list |---+ | |(Callback Funcs) :
|
||||||
|
: | +-------------------+ | | | :
|
||||||
|
: | | | :
|
||||||
|
: | +-----------------------+ | :
|
||||||
|
: | | | :
|
||||||
|
: | | struct | :
|
||||||
|
: | | list struct | struct :
|
||||||
|
: | +-> +-------+ listnode | listnode :
|
||||||
|
: | | head |-----> +------+ | +------ :
|
||||||
|
: | | tail | | next |--------------------> | next :
|
||||||
|
: | | count | /--| prev |<---------------------| prev :
|
||||||
|
: | +-------+ | data |---+ | | :
|
||||||
|
: | |///////| +------+ | | :
|
||||||
|
: | +-------+ | | :
|
||||||
|
: | | | :
|
||||||
|
: | struct | | :
|
||||||
|
: | opaque_info_per_id | | :
|
||||||
|
: | +-------------------+ <--------+ | :
|
||||||
|
: | | opaque_id | | :
|
||||||
|
: | +-------------------+ | :
|
||||||
|
: | | t_opaque_lsa_self | | :
|
||||||
|
: | +-------------------+ | :
|
||||||
|
: | | opqctl_type |--------------+ :
|
||||||
|
: | +-------------------+ :
|
||||||
|
: | | lsa |---+ :
|
||||||
|
: | +-------------------+ | :
|
||||||
|
: | | :
|
||||||
|
: | struct | :
|
||||||
|
: | ospf_lsa | :
|
||||||
|
: | +-------------+ <-------+ :
|
||||||
|
: | |/////////////| struct :
|
||||||
|
: | +-------------+ lsa_header :
|
||||||
|
: | | data |--------------> +-------- :
|
||||||
|
: | +-------------+ | :
|
||||||
|
: | |/////////////| :
|
||||||
|
: | +-------------+ :
|
||||||
|
: +--------| area | :
|
||||||
|
: +-------------+ :
|
||||||
|
: |/////////////| :
|
||||||
|
: +-------------+ :
|
||||||
|
: +-----| oi | :
|
||||||
|
: | +-------------+ :
|
||||||
|
: --- :
|
||||||
|
:..........................................................................:
|
||||||
|
|
||||||
|
2.3 Type-9 (link-local) Opaque-LSAs
|
||||||
|
|
||||||
|
struct
|
||||||
|
ospf_area
|
||||||
|
+------> +---------+ <---------+
|
||||||
|
| |/////////| |
|
||||||
|
| +---------+ |
|
||||||
|
| |
|
||||||
|
| struct |
|
||||||
|
| ospf_interface |
|
||||||
|
| +-+-> +-----------------+ |
|
||||||
|
| | | |/////////////////| |
|
||||||
|
| | | +-----------------+ |
|
||||||
|
| | | | area |---+
|
||||||
|
| | | +-----------------+
|
||||||
|
| | | |/////////////////| struct
|
||||||
|
| | | +-----------------+ ospf_lsa
|
||||||
|
| | | |network_lsa_self |-----------> +---------
|
||||||
|
| | | +-----------------+ |
|
||||||
|
| | | | opaque_lsa_self |-----+ |
|
||||||
|
| | | +-----------------+ |
|
||||||
|
| | | |/////////////////| |
|
||||||
|
| | | +-----------------+ |
|
||||||
|
| | | |
|
||||||
|
...|..|.|...........................|.......................................
|
||||||
|
: | | | | Almost common for type-9,10,11 LSA :
|
||||||
|
: | | | +-----------------------+ :
|
||||||
|
: | | | | :
|
||||||
|
: | | | | struct :
|
||||||
|
: | | | | list struct struct :
|
||||||
|
: | | | +-> +-------+ listnode listnode :
|
||||||
|
: | | | | head |-----> +------+ +------ :
|
||||||
|
: | | | | tail | | next |--------------------> | next :
|
||||||
|
: | | | | count | /--| prev |<---------------------| prev :
|
||||||
|
: | | | +-------+ | data |---+ | :
|
||||||
|
: | | | |///////| +------+ | :
|
||||||
|
: | | | +-------+ | :
|
||||||
|
: | | | | :
|
||||||
|
: | | | struct | :
|
||||||
|
: | | | opaque_info_per_type | :
|
||||||
|
: | | | +-------------------+ <--------+ :
|
||||||
|
: | | | | opaque_type | <------------+ :
|
||||||
|
: | | | +-------------------+ | :
|
||||||
|
: | | | | status | | :
|
||||||
|
: | | | +-------------------+ | :
|
||||||
|
: | | | | t_opaque_lsa_self | | :
|
||||||
|
: | | | +-------------------+ | :
|
||||||
|
: | | +---| owner | | struct :
|
||||||
|
: | | +-------------------+ | ospf_opaque_tabent :
|
||||||
|
: | | | functab |-------------------> +---------------- :
|
||||||
|
: | | +-------------------+ | | opaque_type :
|
||||||
|
: | | | id_list |---+ | |(Callback Funcs) :
|
||||||
|
: | | +-------------------+ | | | :
|
||||||
|
: | | | | :
|
||||||
|
: | | +-----------------------+ | :
|
||||||
|
: | | | | :
|
||||||
|
: | | | struct | :
|
||||||
|
: | | | list struct | struct :
|
||||||
|
: | | +-> +-------+ listnode | listnode :
|
||||||
|
: | | | head |-----> +------+ | +------ :
|
||||||
|
: | | | tail | | next |--------------------> | next :
|
||||||
|
: | | | count | /--| prev |<---------------------| prev :
|
||||||
|
: | | +-------+ | data |---+ | | :
|
||||||
|
: | | |///////| +------+ | | :
|
||||||
|
: | | +-------+ | | :
|
||||||
|
: | | | | :
|
||||||
|
: | | struct | | :
|
||||||
|
: | | opaque_info_per_id | | :
|
||||||
|
: | | +-------------------+ <--------+ | :
|
||||||
|
: | | | opaque_id | | :
|
||||||
|
: | | +-------------------+ | :
|
||||||
|
: | | | t_opaque_lsa_self | | :
|
||||||
|
: | | +-------------------+ | :
|
||||||
|
: | | | opqctl_type |--------------+ :
|
||||||
|
: | | +-------------------+ :
|
||||||
|
: | | | lsa |---+ :
|
||||||
|
: | | +-------------------+ | :
|
||||||
|
: | | | :
|
||||||
|
: | | struct | :
|
||||||
|
: | | ospf_lsa | :
|
||||||
|
: | | +-------------+ <-------+ :
|
||||||
|
: | | |/////////////| struct :
|
||||||
|
: | | +-------------+ lsa_header :
|
||||||
|
: | | | data |--------------> +-------- :
|
||||||
|
: | | +-------------+ | :
|
||||||
|
: | | |/////////////| :
|
||||||
|
: | | +-------------+ :
|
||||||
|
: +--|-----| area | :
|
||||||
|
: | +-------------+ :
|
||||||
|
: | |/////////////| :
|
||||||
|
: | +-------------+ :
|
||||||
|
: +-----| oi | :
|
||||||
|
: +-------------+ :
|
||||||
|
:..........................................................................:
|
||||||
|
|
||||||
|
|
||||||
|
3. Internal structures for MPLS-TE parameter management.
|
||||||
|
|
||||||
|
struct
|
||||||
|
ospf_mpls_te
|
||||||
|
+-------------+
|
||||||
|
| status |
|
||||||
|
+-------------+
|
||||||
|
| iflist |---+
|
||||||
|
+-------------+ |
|
||||||
|
|(Router-TLV) | |
|
||||||
|
+-------------+ |
|
||||||
|
|
|
||||||
|
+---------------------+
|
||||||
|
|
|
||||||
|
| struct
|
||||||
|
| list struct struct
|
||||||
|
+---> +-------+ listnode listnode
|
||||||
|
| head |-----> +------+ +------
|
||||||
|
| tail | | next |--------------------> | next
|
||||||
|
| count | /--| prev |<---------------------| prev
|
||||||
|
+-------+ | data |---+ |
|
||||||
|
|///////| +------+ |
|
||||||
|
+-------+ |
|
||||||
|
|
|
||||||
|
+--------------------------------+
|
||||||
|
|
|
||||||
|
| struct
|
||||||
|
| ospf_mpls_te_linkparms
|
||||||
|
+-> +----------------+
|
||||||
|
| instance | struct
|
||||||
|
+----------------+ interface
|
||||||
|
| ifp |--------------------> +----------+
|
||||||
|
+----------------+ +----> |//////////|
|
||||||
|
| area |----+ | +----------+
|
||||||
|
+----------------+ | | | info |-----+
|
||||||
|
| flags | | | +----------+ |
|
||||||
|
+----------------+ | | |//////////| |
|
||||||
|
| (Link-TLV) | | | +----------+ |
|
||||||
|
+----------------+ | | |
|
||||||
|
| (Link-SubTLVs) | | | struct |
|
||||||
|
+----------------+ | | ospf_if_info |
|
||||||
|
| | +----------+ <---+
|
||||||
|
| | |//////////|
|
||||||
|
struct | | +----------+
|
||||||
|
ospf_area | | | oifs |-----+
|
||||||
|
+-> +--------------+ <----+ | +----------+ |
|
||||||
|
| |//////////////| | |
|
||||||
|
| +--------------+ | struct |
|
||||||
|
| | route_table |
|
||||||
|
| struct | +-----------+ <--+
|
||||||
|
| ospf_interface | | route_top | - - - - -.
|
||||||
|
| +--------------+ <----+ | +-----------+ .
|
||||||
|
| |//////////////| | | .
|
||||||
|
| +--------------+ | | struct .
|
||||||
|
| | ifp |------|----------+ route_node .
|
||||||
|
| +--------------+ | +-----------+ < - - - -
|
||||||
|
| |//////////////| | |///////////|
|
||||||
|
| +--------------+ | +-----------+
|
||||||
|
+---| area | +-----------------| info |
|
||||||
|
+--------------+ +-----------+
|
||||||
|
|//////////////| |///////////|
|
||||||
|
+--------------+ +-----------+
|
75
doc/mpls/ospfd.conf
Normal file
75
doc/mpls/ospfd.conf
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
!
|
||||||
|
! Zebra configuration saved from vty
|
||||||
|
! 2001/03/16 22:07:53
|
||||||
|
!
|
||||||
|
hostname HOSTNAME
|
||||||
|
password PASSWORD
|
||||||
|
log file /var/log/ospfd.log
|
||||||
|
!
|
||||||
|
debug ospf ism
|
||||||
|
debug ospf nsm
|
||||||
|
debug ospf lsa
|
||||||
|
debug ospf zebra
|
||||||
|
debug ospf event
|
||||||
|
debug ospf packet all detail
|
||||||
|
!
|
||||||
|
!
|
||||||
|
interface fxp0
|
||||||
|
ip ospf hello-interval 60
|
||||||
|
ip ospf dead-interval 240
|
||||||
|
mpls-te link metric 999
|
||||||
|
mpls-te link max-bw 1.25e+06
|
||||||
|
mpls-te link max-rsv-bw 1.25e+06
|
||||||
|
mpls-te link unrsv-bw 0 1.25e+06
|
||||||
|
mpls-te link unrsv-bw 1 1.25e+06
|
||||||
|
mpls-te link unrsv-bw 2 1.25e+06
|
||||||
|
mpls-te link unrsv-bw 3 1.25e+06
|
||||||
|
mpls-te link unrsv-bw 4 1.25e+06
|
||||||
|
mpls-te link unrsv-bw 5 1.25e+06
|
||||||
|
mpls-te link unrsv-bw 6 1.25e+06
|
||||||
|
mpls-te link unrsv-bw 7 1.25e+06
|
||||||
|
mpls-te link rsc-clsclr 0xab
|
||||||
|
!
|
||||||
|
interface de1
|
||||||
|
ip ospf hello-interval 60
|
||||||
|
ip ospf dead-interval 240
|
||||||
|
mpls-te link metric 111
|
||||||
|
mpls-te link max-bw 1.25e+06
|
||||||
|
mpls-te link max-rsv-bw 1.25e+06
|
||||||
|
mpls-te link unrsv-bw 0 1.25e+06
|
||||||
|
mpls-te link unrsv-bw 1 1.25e+06
|
||||||
|
mpls-te link unrsv-bw 2 1.25e+06
|
||||||
|
mpls-te link unrsv-bw 3 1.25e+06
|
||||||
|
mpls-te link unrsv-bw 4 1.25e+06
|
||||||
|
mpls-te link unrsv-bw 5 1.25e+06
|
||||||
|
mpls-te link unrsv-bw 6 1.25e+06
|
||||||
|
mpls-te link unrsv-bw 7 1.25e+06
|
||||||
|
mpls-te link rsc-clsclr 0xcd
|
||||||
|
!
|
||||||
|
interface de0
|
||||||
|
mpls-te link metric 0
|
||||||
|
mpls-te link rsc-clsclr 0x0
|
||||||
|
!
|
||||||
|
interface lp0
|
||||||
|
ip ospf network point-to-point
|
||||||
|
!
|
||||||
|
interface tun0
|
||||||
|
ip ospf network point-to-point
|
||||||
|
!
|
||||||
|
interface sl0
|
||||||
|
ip ospf network point-to-point
|
||||||
|
!
|
||||||
|
interface ppp0
|
||||||
|
ip ospf network point-to-point
|
||||||
|
!
|
||||||
|
interface lo0
|
||||||
|
!
|
||||||
|
router ospf
|
||||||
|
compatible rfc1583
|
||||||
|
network 192.168.0.0/16 area 1
|
||||||
|
ospf opaque-lsa
|
||||||
|
mpls-te
|
||||||
|
mpls-te router-address 1.2.3.4
|
||||||
|
!
|
||||||
|
line vty
|
||||||
|
!
|
Loading…
Reference in New Issue
Block a user