mirror_frr/ospf6d
radhika 055c4dfcde Support for multi-client and client reg msg
Ticket: CM-7615, CM-7773
Reviewed By: CCR-3610, CCR-3708
Testing Done: Unit, BGP Smoke and OSPF Smoke

Changes (70790261926b17200c8c9377c4576cd3b486fcef) ported from 2.5

Issue (related to CM-7615): 1. CM-7615: There is mismatch in the client name between ptm display of client BFD sessions and the zebra logs. For example, if bgpd added BFD session, zebra logs will show the client as “bgp” but the ptm display will show it as “quagga”
2. Bigger problem is when 2 clients (for example OSPF and BGP) from Quagga register for same BFD session and only one client de-registers the BFD session. This results in BFD session deletion from PTM even though other client still has the BFD registration.

Root Cause: Even though BGP, OSPF and OSPF6 are 3 different clients from Quagga that are trying to register/deregister BFD sessions with PTM, all 3 are represented as one client “quagga” from zebra. This makes it hard for PTM/BFD to distinguish between all three when BFD peer registration/deregistration happens from the clients.

Fix: Send the actual client name bgp, ospf or ospf6 from zebra with BFD reg/dereg messages instead of one unified client name “quagga”

CM-7773: BFD sessions are not getting cleaned from PTM even though no BGP peering exists in Quagga.

Root Cause: PTM cleans up stale BFD sessions from a client when it finds a change in seq id advertised by the client. But, if PTM never detects a change in the seq id then the stale BFD sessions never get cleaned up. The test restarts the quagga without saving the configuration, which results in no BGP peering. No BGP peers are registered with PTM after restart and PTM does not detect a client seq id change resulting in stale BFD sessions.

Fix: New client registration message was added in PTM. Every client that is interested in BFD monitoring will register with PTM with the client seq id. Client will register with a different seq id (typically pid) every time it restarts. This will help in detecting the change in seq id and cleanup of stale BFD sessions for a client.

Code Changes: To support the new client registration message following changes have been made
  - Added support for client registration messaging in zebra for sending messages to PTM.
  - Added support for client registration messaging between zebra and clients (BGP, OSPF and OSPF6) in BFD library.
  - Expanded the reg/de reg peer messaging between zebra and clients to support client specific seq id to distinguish between multiple clients registering for BFD peer rather than one “quagga” client.
  - Changes in bgpd, ospfd and ospf6d to send client registrations at the time of daemon initialization and on receiving BFD peer replay message.
2016-03-08 23:31:32 -08:00
..
.gitignore [administrivia] Update gitignore files 2008-08-22 20:02:08 +01:00
Makefile.am Add --enable-werror to configure 2015-07-25 16:05:56 -07:00
ospf6_abr.c ospf6d: Fix for crash when non area 0 network entered first 2016-02-23 18:47:55 -05:00
ospf6_abr.h ospf6d: ospfv3-stub-area-support.patch 2015-05-19 18:03:40 -07:00
ospf6_area.c Merge branch 'cmaster' of ssh://stash.cumulusnetworks.com:7999/quag/quagga into cmaster 2015-11-27 08:58:52 -08:00
ospf6_area.h ospf6d: ospfv3-stub-area-support.patch 2015-05-19 18:03:40 -07:00
ospf6_asbr.c Quagga: prefix2str fixup 2015-11-23 13:31:11 -08:00
ospf6_asbr.h ospf6d: ospfv3-stub-area-support.patch 2015-05-19 18:03:40 -07:00
ospf6_bfd.c Support for multi-client and client reg msg 2016-03-08 23:31:32 -08:00
ospf6_bfd.h Fix for IPv6 OSPF BFD session staying down when ifdown/ifup on logical interfaces 2015-10-09 13:44:32 -07:00
ospf6_flood.c ospfd: ospfd-warnings.patch 2015-05-19 18:29:14 -07:00
ospf6_flood.h ospf6d: ospfv3-stub-area-support.patch 2015-05-19 18:03:40 -07:00
ospf6_interface.c OSPFv3: Check area before scheduling SPF 2016-03-07 23:49:45 +00:00
ospf6_interface.h Support of BFD status in Quagga 2015-08-31 14:56:11 -07:00
ospf6_intra.c ospf6d: Fix double increment of Sequence Number 2016-01-18 16:27:45 -08:00
ospf6_intra.h *: nuke ^L (page feed) 2014-06-04 06:58:02 +02:00
ospf6_lsa.c Fixup compiler warnings for powerpc 2015-07-27 13:19:12 -07:00
ospf6_lsa.h Quagga: prefix2str fixup 2015-11-23 13:31:11 -08:00
ospf6_lsdb.c Quagga: prefix2str fixup 2015-11-23 13:31:11 -08:00
ospf6_lsdb.h ospf6d: ospfv3-abr-ecmp-support.patch 2015-05-19 18:03:39 -07:00
ospf6_main.c *: Modify protocols to have systemd integration 2016-02-10 15:07:05 -05:00
ospf6_message.c arm compilation failures. 2015-07-29 16:02:26 -07:00
ospf6_message.h ospf6d: decode message type with LOOKUP() 2011-12-13 19:27:34 +04:00
ospf6_neighbor.c Add "no debug ospf" and "no debug ospf6" commands to disable all ospf debugging 2015-11-03 10:37:25 -08:00
ospf6_neighbor.h Support of BFD status in Quagga 2015-08-31 14:56:11 -07:00
ospf6_network.c ospfd: ospfd-warnings.patch 2015-05-19 18:29:14 -07:00
ospf6_network.h ospf6d: ospfv3-setsocket-retry.patch 2015-05-19 18:03:40 -07:00
ospf6_proto.c ospf6d: fix out of bounds write in ospf6_prefix_apply_mask 2012-02-11 15:26:19 +01:00
ospf6_proto.h ospf6d/ospfd: refactor some common defines 2013-10-22 18:01:31 -07:00
ospf6_route.c Quagga: prefix2str fixup 2015-11-23 13:31:11 -08:00
ospf6_route.h ospfd: ospfd-warnings.patch 2015-05-19 18:29:14 -07:00
ospf6_snmp.c ospf6d: add "auto-cost reference-bandwidth" command 2014-03-21 06:28:48 +01:00
ospf6_snmp.h ospf6d: add SNMP notifications/traps support 2012-06-25 19:05:17 +02:00
ospf6_spf.c Should be able to "no" the full text of any config line 2015-11-23 18:05:03 +00:00
ospf6_spf.h ospf6d: ospfv3-abr-ecmp-support.patch 2015-05-19 18:03:39 -07:00
ospf6_top.c Enable OSPF "log-adjacency-changes" by default 2015-11-03 10:48:30 -08:00
ospf6_top.h Command to adjust min-arrival value in Milliseconds. 2015-05-19 18:04:07 -07:00
ospf6_zebra.c ospf6d: Ensure that ospf6d is actually running before handling default routes 2016-02-18 10:25:09 -05:00
ospf6_zebra.h *: add VRF ID in the API message header 2015-11-03 22:04:36 -08:00
ospf6d.c lib: zclient.c remove extern struct thread_master * 2015-09-23 13:26:56 -07:00
ospf6d.conf.sample Ospf6d merge from Zebra repository with added privs stuff and merged 2004-05-18 18:57:06 +00:00
ospf6d.h *: nuke ^L (page feed) 2014-06-04 06:58:02 +02:00
OSPFv3-MIB.txt snmp: fix OSPFV3-MIB implementation 2012-06-25 19:05:16 +02:00
README ospf6d: add "auto-cost reference-bandwidth" command 2014-03-21 06:28:48 +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>