Go to file
Donatas Abraitis ef56aee47c bgpd: Add BGP Extended message support
Implement https://www.rfc-editor.org/rfc/rfc8654.txt

```
> | jq '."192.168.10.25".neighborCapabilities.extendedMessage'
"advertisedAndReceived"
```

Another side is Bird:

```
BIRD 2.0.7 ready.
Name       Proto      Table      State  Since         Info
v4         BGP        ---        up     19:39:15.689  Established
  BGP state:          Established
    Neighbor address: 192.168.10.123
    Neighbor AS:      65534
    Local AS:         65025
    Neighbor ID:      192.168.100.1
    Local capabilities
      Multiprotocol
        AF announced: ipv4
      Route refresh
      Extended message
      Graceful restart
      4-octet AS numbers
      Enhanced refresh
      Long-lived graceful restart
    Neighbor capabilities
      Multiprotocol
        AF announced: ipv4
      Route refresh
      Extended message
      Graceful restart
      4-octet AS numbers
      ADD-PATH
        RX: ipv4
        TX:
      Enhanced refresh
    Session:          external AS4
    Source address:   192.168.10.25
    Hold timer:       140.139/180
    Keepalive timer:  9.484/60
  Channel ipv4
    State:          UP
    Table:          master4
    Preference:     100
    Input filter:   ACCEPT
    Output filter:  ACCEPT
    Routes:         9 imported, 3 exported, 8 preferred
    Route change stats:     received   rejected   filtered    ignored   accepted
      Import updates:              9          0          0          0          9
      Import withdraws:            2          0        ---          2          0
      Export updates:             11          8          0        ---          3
      Export withdraws:            0        ---        ---        ---          0
    BGP Next hop:   192.168.10.25
```

Tested at least as well with to make sure it works with backward compat.:
	ExaBGP 4.0.2-1c737d99.
	Arista vEOS 4.21.14M

Testing by injecint 10k routes with:
```
sharp install routes 172.16.0.1 nexthop 192.168.10.123 10000
```

Before extended message support:
```
2021/03/01 07:18:51 BGP: u1:s1 send UPDATE len 4096 (max message len: 4096) numpfx 809
2021/03/01 07:18:51 BGP: u1:s1 send UPDATE len 4096 (max message len: 4096) numpfx 809
2021/03/01 07:18:51 BGP: u1:s1 send UPDATE len 4096 (max message len: 4096) numpfx 809
2021/03/01 07:18:51 BGP: u1:s1 send UPDATE len 4096 (max message len: 4096) numpfx 809
2021/03/01 07:18:51 BGP: u1:s1 send UPDATE len 4096 (max message len: 4096) numpfx 809
2021/03/01 07:18:51 BGP: u1:s1 send UPDATE len 4096 (max message len: 4096) numpfx 809
2021/03/01 07:18:52 BGP: u1:s1 send UPDATE len 4096 (max message len: 4096) numpfx 809
2021/03/01 07:18:52 BGP: u1:s1 send UPDATE len 4096 (max message len: 4096) numpfx 809
2021/03/01 07:18:52 BGP: u1:s1 send UPDATE len 4096 (max message len: 4096) numpfx 809
2021/03/01 07:18:52 BGP: u1:s1 send UPDATE len 4096 (max message len: 4096) numpfx 809
2021/03/01 07:18:52 BGP: u1:s1 send UPDATE len 4096 (max message len: 4096) numpfx 809
2021/03/01 07:18:52 BGP: u1:s1 send UPDATE len 2186 (max message len: 4096) numpfx 427
2021/03/01 07:18:53 BGP: u1:s1 send UPDATE len 3421 (max message len: 4096) numpfx 674
```

After extended message support:
```
2021/03/01 07:20:11 BGP: u1:s1 send UPDATE len 50051 (max message len: 65535) numpfx 10000
```

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2021-03-04 21:32:36 +02:00
.github .github: improve bug report template 2020-10-20 16:12:03 -04:00
alpine alpine: Remove old docker deps for alpine 2020-10-22 03:03:53 -04:00
babeld *: remove tabs & newlines from log messages 2021-02-14 15:36:51 +01:00
bfdd *: fix format string SNAFUs 2021-02-16 00:47:51 +01:00
bgpd bgpd: Add BGP Extended message support 2021-03-04 21:32:36 +02:00
debian debian: work around NetDef CI missing lua packages 2020-12-10 13:09:56 -05:00
doc doc: Add rfc8654 to supported RFCs list 2021-03-03 22:21:08 +02:00
docker docker: centos 7, 8 yang bump and repo fixes 2021-01-22 07:32:17 -05:00
eigrpd Merge pull request #7987 from donaldsharp/eigrp_mtu_correct 2021-02-02 07:31:55 -05: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 zebra: move from NDA_NOTIFY to NDA_FDB_EXT_ATTRS 2020-12-11 12:13:36 -08:00
isisd isisd: handle corner case involving TI-LFA and the SR No-PHP flag 2021-02-26 15:54:01 -03:00
ldpd ldpd: fix sporadic failures in the ldp-topo1 topotest 2021-01-15 17:44:46 -03:00
lib Merge pull request #8175 from mjstapp/fix_printfrr_nulls 2021-03-02 11:36:49 -05: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 nhrpd: Fix clang SA about null deref 2021-02-14 16:04:16 -05:00
ospf6d ospf6d: Json support added for command "show ipv6 ospf6 spf tree [json]" 2021-03-02 02:14:57 -08:00
ospfclient lib/xref: put setup calls in libraries 2021-02-01 17:18:51 +01:00
ospfd ospfd: don't rely on instance existence in vty 2021-02-24 15:31:20 +03:00
pathd pathd: add meaningful names to threads 2021-01-19 11:42:48 +01:00
pbrd *: remove tabs & newlines from log messages 2021-02-14 15:36:51 +01:00
pimd bgpd, pimd: fix coverity SA warnings 2021-03-01 08:46:29 -05:00
pkgsrc *: cleanup .gitignore files 2018-09-08 21:30:42 +02:00
python *: reformat python files 2020-10-07 17:22:26 -04:00
qpb build: add LLVM bitcode targets 2020-05-05 14:39:12 +02:00
redhat pathd: New SR-TE policy management daemon 2020-12-18 16:34:02 +01:00
ripd ripd: #if 0 we know what you are up to. 2021-01-28 13:40:05 -05:00
ripngd ripngd: Remove #if 0 code 2021-01-28 13:43:46 -05:00
sharpd sharpd: don't send invalid nexthop-groups to zebra 2021-01-21 10:13:57 -05:00
snapcraft snapcraft: Update rtrlib to 0.7.0 2021-01-07 02:16:19 +01:00
staticd Merge pull request #8095 from idryzhov/fix-nb-stale-pointers 2021-02-23 11:15:31 -05:00
tests tests: Use BGP Extended Message length 2021-03-03 22:21:08 +02:00
tools Merge pull request #7942 from donaldsharp/rpki_reload_fix 2021-02-18 09:34:27 +02:00
vrrpd *: remove tabs & newlines from log messages 2021-02-14 15:36:51 +01:00
vtysh Merge pull request #8073 from idryzhov/vtysh-show-config 2021-03-01 18:40:06 +05:30
watchfrr watchfrr: fix SA warning 2021-01-26 14:13:07 -03:00
yang isisd: Fix Attach-bit processing 2021-01-20 09:24:35 -05:00
zebra Merge pull request #8152 from idryzhov/fix-zebra-blackhole 2021-03-02 11:50:46 -05: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 *: Add another commit to .git-blame-ignore-revs 2021-02-16 16:09:41 -05:00
.gitignore Revert "debian: Adjust tarsource.sh to use native debian/changelog" 2020-11-19 17:12:41 -05: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 Revert "debian: Adjust tarsource.sh to use native debian/changelog" 2020-11-19 17:12:41 -05:00
config.version.in build: carry --with-pkg-extra-version into tarballs 2018-10-24 15:11:50 +02:00
configure.ac build: detect ICC, only try ICC options if ICC 2021-02-15 13:59:02 -05: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 pathd: New SR-TE policy management daemon 2020-12-18 16:34:02 +01: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