Go to file
ckishimo ab1464ddb0 ospfd: flush type 5 when type 7 is removed
When the ASBR stops announcing a prefix into the NSSA area, the LSA
type 7 is removed from the area. However the ABR is refreshing the
type 5 in its LSDB while removing the Type 7 LSA. Routers outside
the area do not get an update.

With the following topology: r1---r2---r3, with r3 being the ASBR
announcing type 7 LSA:

r3 configuration
router ospf
 redistribute static
 network 10.0.23.0/24 area 1
 area 1 nssa
!

We stop announcing prefix 3.3.3.3 in the ASBR
r3# conf
r3(config)# router ospf
r3(config-router)# no redistribute static
r3(config-router)#

r2 (ABR)
r2# sh ip os database

                NSSA-external Link States (Area 0.0.0.1 [NSSA])

Link ID         ADV Router      Age  Seq#       CkSum  Route
3.3.3.3         33.33.33.33     3600 0x8000002f 0x13be E2 3.3.3.3/32 [0x0]  <-- flushed

                AS External Link States

Link ID         ADV Router      Age  Seq#       CkSum  Route
3.3.3.3         10.0.25.2          7 0x8000002f 0x73c7 E2 3.3.3.3/32 [0x0]  <-- refreshed(?)

With PR#7086 the LSA type 5 is flushed from the LSDB in r2 and the change is
announced to routers outside the area (r1)

r2# sh ip os da

                NSSA-external Link States (Area 0.0.0.1 [NSSA])

Link ID         ADV Router      Age  Seq#       CkSum  Route
3.3.3.3         33.33.33.33     3600 0x80000002 0x6d91 E2 3.3.3.3/32 [0x0]  <-- flushed

                AS External Link States

Link ID         ADV Router      Age  Seq#       CkSum  Route
3.3.3.3         10.0.25.2       3600 0x80000002 0xcd9a E2 3.3.3.3/32 [0x0]  <-- flushed

r1# sh ip os da

                AS External Link States

Link ID         ADV Router      Age  Seq#       CkSum  Route
3.3.3.3         10.0.25.2       3600 0x80000002 0xcd9a E2 3.3.3.3/32 [0x0]  <-- flushed

Unfortunately I just realized that with PR#7086 I'm introducing a new bug, as Type-5 LSA
are not being refreshed when reaching MaxAge

r2# sh ip os da

                NSSA-external Link States (Area 0.0.0.1 [NSSA])

Link ID         ADV Router      Age  Seq#       CkSum  Route
3.3.3.3         33.33.33.33       35 0x80000002 0x6d91 E2 3.3.3.3/32 [0x0]  <--- refreshed

                AS External Link States

Link ID         ADV Router      Age  Seq#       CkSum  Route
3.3.3.3         10.0.25.2       3600 0x80000002 0xcd9a E2 3.3.3.3/32 [0x0]  <--- not refreshed!

So this PR should fix the original issue and the bug introduced later, so when stopping
redistribution in the ASBR, both type 5 and type 7 are flushed:

r2# sh ip os da

                NSSA-external Link States (Area 0.0.0.1 [NSSA])

Link ID         ADV Router      Age  Seq#       CkSum  Route
3.3.3.3         33.33.33.33     3600 0x80000002 0x6d91 E2 3.3.3.3/32 [0x0]

                AS External Link States

Link ID         ADV Router      Age  Seq#       CkSum  Route
3.3.3.3         10.0.25.2       3600 0x80000002 0xcd9a E2 3.3.3.3/32 [0x0]

Routers outside the area are also notified

r1# sh ip os da

Link ID         ADV Router      Age  Seq#       CkSum  Route
3.3.3.3         10.0.25.2       3600 0x80000002 0xcd9a E2 3.3.3.3/32 [0x0]

Re-enabling redistribution, both LSA will be advertised again

r3# conf
r3(config)# router ospf
r3(config-router)# no redistribute static
r3(config-router)# redistribute static
r3(config-router)#

r2# sh ip os da

                NSSA-external Link States (Area 0.0.0.1 [NSSA])

Link ID         ADV Router      Age  Seq#       CkSum  Route
3.3.3.3         33.33.33.33       19 0x80000001 0x6f90 E2 3.3.3.3/32 [0x0]

                AS External Link States

Link ID         ADV Router      Age  Seq#       CkSum  Route
3.3.3.3         10.0.25.2         11 0x80000001 0xcf99 E2 3.3.3.3/32 [0x0]

and they are refreshed when reaching MaxAge

                NSSA-external Link States (Area 0.0.0.1 [NSSA])

Link ID         ADV Router      Age  Seq#       CkSum  Route
3.3.3.3         33.33.33.33       10 0x80000002 0x6d91 E2 3.3.3.3/32 [0x0] <-- Seq 2

                AS External Link States

Link ID         ADV Router      Age  Seq#       CkSum  Route
3.3.3.3         10.0.25.2          2 0x80000002 0xcd9a E2 3.3.3.3/32 [0x0] <-- Seq 2

Signed-off-by: ckishimo <carles.kishimoto@gmail.com>
2020-09-29 13:58:49 -07:00
.github github: Add lost chapter witch issue template 2020-08-25 21:44:13 +03:00
alpine alpine: enable multi-arch builds 2020-06-24 16:33:18 -04:00
babeld *: un-split strings across lines 2020-07-14 10:37:25 +02:00
bfdd bfdd: fix parameter length 2020-08-24 18:45:53 +03:00
bgpd bgpd: Remove dest variable from route_out_vty_flowspec 2020-09-24 08:20:24 -04:00
debian build, yang: bump libyang minimum required version to 1.0.184 2020-08-07 14:07:46 -03:00
doc Merge pull request #7067 from donaldsharp/remove_solaris 2020-09-22 17:04:19 -04:00
docker docker: don't fail on chown /etc/frr 2020-06-10 00:20:04 -04:00
eigrpd eigrpd: make show ip eigrp vrf all neighbor work correctly 2020-08-31 14:42:09 -04:00
fpm *: Replace sizeof something to sizeof(something) 2020-03-08 21:44:53 +02:00
gdb bgpd: Convert binfo to path 2018-10-09 14:26:30 -04:00
grpc lib: don't ignore error messages generated during the commit apply phase 2020-08-14 21:37:14 -03:00
include Merge pull request #7155 from donaldsharp/TRAP 2020-09-23 16:06:37 -04:00
isisd isisd: Prevent usage after free 2020-09-24 07:56:13 -04:00
ldpd Merge pull request #6789 from volta-networks/feat_ldp_igp_sync 2020-09-11 15:55:04 -03:00
lib lib: Tell the compiler we don't care about the return code 2020-09-24 07:52:20 -04:00
m4 build: find all future minor versions of python3 2020-07-09 06:47:31 +02:00
mlag zebra: Do not build mlag protobuf support if version 3 is not avail 2019-12-15 09:37:51 -05:00
nhrpd lib: fix crashes with leafrefs that point to non-implemented modules 2020-09-11 14:42:35 -03:00
ospf6d ospf6d: fix SA warning 2020-09-03 12:57:36 -04:00
ospfclient *: Replace s_addr 0 => INADDR_ANY 2020-02-06 09:00:12 +02:00
ospfd ospfd: flush type 5 when type 7 is removed 2020-09-29 13:58:49 -07:00
pbrd Merge pull request #7093 from donaldsharp/pbr_flapping 2020-09-14 08:13:48 -04:00
pimd pimd: When bind fails we could leave an open socket 2020-09-24 08:12:49 -04:00
pkgsrc *: cleanup .gitignore files 2018-09-08 21:30:42 +02:00
python python: Make FRR build compatible with python 2.7 and 3.x 2020-08-19 19:38:28 +02:00
qpb build: add LLVM bitcode targets 2020-05-05 14:39:12 +02:00
redhat build, yang: bump libyang minimum required version to 1.0.184 2020-08-07 14:07:46 -03:00
ripd ripd, ripngd: info -> debug 2020-09-21 07:55:36 -04:00
ripngd ripd, ripngd: info -> debug 2020-09-21 07:55:36 -04:00
sharpd sharpd: add a command to send ARP/NDP requests 2020-08-12 23:20:04 +02:00
snapcraft snapcraft: Update libyang version 2020-09-10 09:13:36 -04:00
staticd staticd: fix display of the "nexthop-vrf" parameter of static routes 2020-09-11 15:13:22 -03:00
tests Merge pull request #7155 from donaldsharp/TRAP 2020-09-23 16:06:37 -04:00
tools tools: fix vtysh failure error handling 2020-09-17 15:53:42 -04:00
vrrpd Merge pull request #6908 from qlyoung/vrrp-add-vrf-module 2020-08-13 11:10:03 -03:00
vtysh doc, yang, isisd : Support for different VRF in isisd 2020-09-01 00:48:05 -07:00
watchfrr watchfrr: add (network) namespace support 2020-07-22 12:56:04 +02:00
yang Merge pull request #7069 from opensourcerouting/fix-set-metric 2020-09-19 08:06:36 -04:00
zebra Merge pull request #7169 from donaldsharp/some_code_cleanup 2020-09-25 10:19:34 +03:00
.clang-format clang-format: add FOREACH_SAFI to the ForEachMacros list 2020-08-03 12:18:24 -03:00
.dir-locals.el tools: fix emacs configuration file 2019-11-04 11:45:52 -03:00
.dockerignore docker: Make docker image on CentOS 7 2019-11-26 19:29:30 +00:00
.git-blame-ignore-revs *: Give git a clue about our whitespace changes 2020-08-18 07:54:07 -04:00
.gitignore python: add graphviz callgraphs 2020-05-05 14:39:12 +02:00
bootstrap.sh autoreconf -i 2007-02-06 19:28:28 +00:00
buildtest.sh config: switch a few references to say FRR 2017-07-12 11:25:33 -05:00
changelog-auto.in debian: cleanly split off from dist tarball 2019-02-19 21:31:18 +01:00
config.version.in build: carry --with-pkg-extra-version into tarballs 2018-10-24 15:11:50 +02:00
configure.ac doc: Update Documentation to note Solaris Unsupported status 2020-09-21 10:02:20 -04:00
COPYING *: make consistent & update GPLv2 file headers 2017-05-15 16:37:41 +02:00
COPYING-LGPLv2.1 build: remove LGPL v2.0, add LGPL v2.1 2016-11-15 17:19:38 +09:00
Makefile.am *: Remove solaris from FRR 2020-09-21 10:02:20 -04:00
README.md doc: Update Documentation to note Solaris Unsupported status 2020-09-21 10:02:20 -04:00
stamp-h.in Initial revision 2002-12-13 20:15:29 +00:00

Icon

FRRouting

FRR is free software that implements and manages various IPv4 and IPv6 routing protocols. It runs on nearly all distributions of Linux and BSD and supports all modern CPU architectures.

FRR currently supports the following protocols:

  • BGP
  • OSPFv2
  • OSPFv3
  • RIPv1
  • RIPv2
  • RIPng
  • IS-IS
  • PIM-SM/MSDP
  • LDP
  • BFD
  • Babel
  • PBR
  • OpenFabric
  • VRRP
  • EIGRP (alpha)
  • NHRP (alpha)

Installation & Use

For source tarballs, see the releases page.

For Debian and its derivatives, use the APT repository at https://deb.frrouting.org/.

Instructions on building and installing from source for supported platforms may be found in the developer docs.

Once installed, please refer to the user guide for instructions on use.

Community

The FRRouting email list server is located here and offers the following public lists:

Topic List
Development dev@lists.frrouting.org
Users & Operators frog@lists.frrouting.org
Announcements announce@lists.frrouting.org

For chat, we currently use Slack. You can join by clicking the "Slack" link under the Participate section of our website.

Contributing

FRR maintains developer's documentation which contains the project workflow and expectations for contributors. Some technical documentation on project internals is also available.

We welcome and appreciate all contributions, no matter how small!

Security

To report security issues, please use our security mailing list:

security [at] lists.frrouting.org