| ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- |
| Changes 2013.07.01 |
| |
| 1. Feature enhancements |
| |
| 1.1 Update ospf_te.[c,h] in conformance to RFC3630 and clean the code. |
| Add new directive to enable MPLS-TE per interface instead of globally |
| |
| 1.2 Add support for RFC4970 "Router Information" and RFC5088 "PCE |
| Capabilities announcement". |
| |
| 1.3 Incorporate the mpls documentation into the main stream doc. |
| |
| ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- |
| 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. |