mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-04-28 15:36:25 +00:00
![]() When ospf6 is started up and SPF is run depending on which route is selected as the parent route we could miss adding a NH. If one possible parent route has two equal cost paths and the second possible parent route has only one depending on which one is selected first determines if we have have one or two NHs. In the network below when creating a route 2001:db8:3:4::/64 in R2. When SPF is run there are two possible parent routes R3 and R4. 2001:db8:1:2 +-----+ 2001:db8:2:5 +--------------+ 2 +---------------+ | ::2 | | ::2 | | +-----+ | | | ::1| | +-----+ |::5 | 1 |2001:db8:1:3+-----+2001:db8:3:5+-----+2001:db8:5:6+-----+ | +------------+ 3 +------------+ 5 +------------+ 6 | +-----+ ::1 ::3 | |::3 ::5 | |::5 ::6| | ::1| +-----+ +-----+ +-----+ | |::3 | | 2001:db8:3:4 | | | |::4 | 2001:db8:1:4 +-----+ +--------------+ 4 | ::4 | | +-----+ The problem was if we first created the route to 2001:db8:3:4::/64 with R3 as the parent route all is fine. The code was merging the NH from the parent route and R3 has 2 NH, one pointing to R1 and one to R5. But if route 2001:db8:3:4::/64 was first created with parent as R4, it has only one NH pointing to R1, and then later a new vertex was created pointing to R3 the code would only copy the nhs from the vertex not from the parent route. The vertex always has just one NH. But the parent route could have more. So when we would bringup this setup one time we would see one NH for 2001:db8:3:4::/64 and the next time we would see two NHs. The code has been modified so that it behaves the same when the route is first created, or when a vertex is created, it selects the NHs from the parent route. Signed-off-by: Lynne Morrison <lynne@voltanet.io> |
||
---|---|---|
.. | ||
.gitignore | ||
Makefile | ||
ospf6_abr.c | ||
ospf6_abr.h | ||
ospf6_area.c | ||
ospf6_area.h | ||
ospf6_asbr.c | ||
ospf6_asbr.h | ||
ospf6_auth_trailer.c | ||
ospf6_auth_trailer.h | ||
ospf6_bfd.c | ||
ospf6_bfd.h | ||
ospf6_flood.c | ||
ospf6_flood.h | ||
ospf6_gr_helper.c | ||
ospf6_gr.c | ||
ospf6_gr.h | ||
ospf6_interface.c | ||
ospf6_interface.h | ||
ospf6_intra.c | ||
ospf6_intra.h | ||
ospf6_lsa.c | ||
ospf6_lsa.h | ||
ospf6_lsdb.c | ||
ospf6_lsdb.h | ||
ospf6_main.c | ||
ospf6_message.c | ||
ospf6_message.h | ||
ospf6_neighbor.c | ||
ospf6_neighbor.h | ||
ospf6_network.c | ||
ospf6_network.h | ||
ospf6_nssa.c | ||
ospf6_nssa.h | ||
ospf6_proto.c | ||
ospf6_proto.h | ||
ospf6_route.c | ||
ospf6_route.h | ||
ospf6_routemap_nb_config.c | ||
ospf6_routemap_nb.c | ||
ospf6_routemap_nb.h | ||
ospf6_snmp.c | ||
ospf6_spf.c | ||
ospf6_spf.h | ||
ospf6_top.c | ||
ospf6_top.h | ||
ospf6_zebra.c | ||
ospf6_zebra.h | ||
ospf6d.c | ||
ospf6d.h | ||
README | ||
subdir.am |
Zebra OSPF daemon for IPv6 network 2003/08/18 README for newer code is not yet. General usage should remain the same. For further usage, see command helps by typing '?' in vty, and then imagin ! ;p) Previous README contents follows. Zebra OSPF daemon for IPv6 network 2001/12/20 Zebra OSPF6d is OSPF version 3 daemon which is specified by "OSPF for IPv6" (RFC 2740). *** NOTE *** Zebra ospf6d is in development yet. It may lack some functionalities, and may have some bugs. Use the latest version from the anoncvs repository (http://www.zebra.org/cvs.html) ! This file README is like memo yet, so please feel free to ask <yasu@sfc.wide.ad.jp> by E-mail. Patches will be appriciated. ospf6d's vty port was default to 2606/tcp. Use commands below. VIEW NODE: show ipv6 ospf6 To see Router-ID, uptime of ospf6d, some statistics. show ipv6 ospf6 database ... This command shows LSA database. You can specify LS-type/LS-ID/Advertising-Router of LSAs. '*' is recognized. show ipv6 ospf6 interface ... To see the status of the OSPF interface, and the configuration like interface costs. show ipv6 ospf6 neighbor ... Shows state of neighbors and choosed (Backup) DR on the I/F. show ipv6 ospf6 route (X::X) This command shows internal routing table of the ospf6d. Routes not calculated by OSPFv3 (like connected routes) are not shown. If Address is specified (X::X), shows the route that the address matches. show ipv6 ospf6 route redistribute (X::X) Shows the routes advertised as AS-External routes by the router itself. If Address is specified (X::X), shows the route that the address matches. CONFIG NODE: interface NAME To enter INTERFACE NODE router ospf6 ... To enter OSPF6 NODE INTERFACE NODE: ipv6 ospf6 cost COST Sets the interface's output cost. Depends on interface bandwidth by default. ipv6 ospf6 hello-interval HELLOINTERVAL Sets the interface's Hello Interval. default 10 ipv6 ospf6 dead-interval DEADINTERVAL Sets the interface's Router Dead Interval. default 40 ipv6 ospf6 retransmit-interval RETRANSMITINTERVAL Sets the interface's Rxmt Interval. default 5 ipv6 ospf6 priority PRIORITY Sets the interface's Router Priority. default 1 ipv6 ospf6 transmit-delay TRANSMITDELAY Sets the interface's Inf-Trans-Delay. default 1 OSPF6 NODE: router-id A.B.C.D Sets the router's Router-ID interface NAME area AREA Binds interface to specified Area, and start sending OSPFv3 packets. auto-cost reference-bandwidth COST Sets the reference bandwidth for cost calculations, where this bandwidth is considered equivalent to an OSPF cost of 1, specified in Mbits/s. The default is 100Mbit/s (i.e. a link of bandwidth 100Mbit/s or higher will have a cost of 1. Cost of lower bandwidth links will be scaled with reference to this cost). This configuration setting MUST be consistent across all routers within the OSPF domain. Sample configuration is in ospf6d.conf.sample. -- Yasuhiro Ohara <yasu@sfc.wide.ad.jp> Kunihiro Ishiguro <kunihiro@zebra.org>