mirror_frr/ospf6d
Renato Westphal e23e568319 ospf6d: update DR election to handle GR corner case
Consider the case where a DR router is performing a graceful restart,
and all neighbors attached to the DR network have their priorities
set to zero.

According to RFC 3623, the router should reclaim its DR status while
coming back up once it receives a Hello packet from a neighbor
listing the router as the DR, and the associated interface is in
Waiting state.

The problem arises when the DR election starts. Since the router
is already elected the DR, and no BDR will be elected (since all
neighbors have their priorities set to zero), the AdjOk event won't
be triggered at the end of the DR election as it would normally
happen. That causes all neighbors reachable over the broadcast
interface to get stuck in the 2-Way state.

Fix this corner case by always triggering the AdjOk event at the
end of the DR election process when a GR is in progress. Triggering
the AdjOk event when not necessary should never be a problem as
the neighbor FSM is already prepared to deal with that.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2023-03-02 19:38:03 -03:00
..
.gitignore *: cleanup .gitignore files 2018-09-08 21:30:42 +02:00
Makefile build: non-recursive ospf* 2017-08-04 11:09:50 +02:00
ospf6_abr.c ospf6d: fix processing of inter-area-prefix-LSAs with the LA-bit set 2023-03-02 19:38:03 -03:00
ospf6_abr.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_area.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_area.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_asbr.c ospf6d: handle redistributed routes without nexthop addresses 2023-03-02 19:38:03 -03:00
ospf6_asbr.h ospf6d: handle redistributed routes without nexthop addresses 2023-03-02 19:38:03 -03:00
ospf6_auth_trailer.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_auth_trailer.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_bfd.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_bfd.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_flood.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_flood.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_gr_helper.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_gr.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_gr.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_interface.c ospf6d: update DR election to handle GR corner case 2023-03-02 19:38:03 -03:00
ospf6_interface.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_intra.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_intra.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_lsa.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_lsa.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_lsdb.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_lsdb.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_main.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_message.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_message.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_neighbor.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_neighbor.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_network.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_network.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_nssa.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_nssa.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_proto.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_proto.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_route.c ospf6d: handle redistributed routes without nexthop addresses 2023-03-02 19:38:03 -03:00
ospf6_route.h ospf6d: handle redistributed routes without nexthop addresses 2023-03-02 19:38:03 -03:00
ospf6_routemap_nb_config.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_routemap_nb.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_routemap_nb.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_snmp.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_spf.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_spf.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_top.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_top.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6_zebra.c ospf6d: handle redistributed routes without nexthop addresses 2023-03-02 19:38:03 -03:00
ospf6_zebra.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6d.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ospf6d.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
README ospf6d: add "auto-cost reference-bandwidth" command 2014-03-21 06:28:48 +01:00
subdir.am build, vtysh: extract vtysh commands from .xref 2022-10-26 17:12:34 +01:00

		  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>