Go to file
Louis Scalbert 127e872fda bgpd: fix 6vpe nexthop
6vPE enables the announcement of IPv6 VPN prefixes through an IPv4 BGP
session. In this scenario, the next hop addresses for these prefixes are
represented in an IPv4-mapped IPv6 format, noted as ::ffff:[IPv4]. This
format indicates to the peer that it should route these IPv6 addresses
using information from the IPv4 nexthop. For example:

> Path Attribute - MP_REACH_NLRI
> [...]
>     Address family identifier (AFI): IPv6 (2)
>     Subsequent address family identifier (SAFI): Labeled VPN Unicast (128)
>     Next hop:  RD=0:0 IPv6=::ffff:192.0.2.5 RD=0:0 Link-local=fe80::501d:42ff:feef:b021
>     Number of Subnetwork points of attachment (SNPA): 0

This rule is set out in RFC4798:

> The IPv4 address of the egress 6PE router MUST be encoded as an
> IPv4-mapped IPv6 address in the BGP Next Hop field.

However, in some situations, bgpd sends a standard nexthop IPv6 address
instead of an IPv4-mapped IPv6 address because the outgoing interface for
the BGP session has a valid IPv6 address. This is problematic because
the peer router may not be able to route the nexthop IPv6 address (ie.
if the outgoing interface has not IPv6).

Fix the issue by always sending a IPv4-mapped IPv6 address as nexthop
when the BGP session is on IPv4 and address family IPv6.

Link: https://datatracker.ietf.org/doc/html/rfc4798#section-2
Fixes: 92d6f76 ("lib,zebra,bgpd: Fix for nexthop as IPv4 mapped IPv6 address")
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
(cherry picked from commit 0325116a27)
2024-02-28 09:35:34 +00:00
.github github: Mark the build as failed if 'do not merge' label is set 2023-12-22 10:29:52 +02:00
alpine build: update packaging & docs for dir changes 2024-01-27 19:01:19 +01:00
babeld *: create a single registry of daemons' default port values 2024-02-01 11:40:02 -05:00
bfdd *: create a single registry of daemons' default port values 2024-02-01 11:40:02 -05:00
bgpd bgpd: fix 6vpe nexthop 2024-02-28 09:35:34 +00:00
debian Merge pull request #15163 from opensourcerouting/fix/pam_account 2024-01-30 10:24:57 -06:00
doc Merge pull request #15284 from opensourcerouting/feature/bgpd_announce_rpki_state_knob 2024-02-13 09:35:10 -05:00
docker doc: docker: update with new more strict protobuf requirements 2024-02-12 06:48:12 -05:00
eigrpd *: create a single registry of daemons' default port values 2024-02-01 11:40:02 -05:00
fpm *: create a single registry of daemons' default port values 2024-02-01 11:40:02 -05:00
gdb lib: add simplified native msg support 2023-12-26 08:34:56 -05:00
grpc *: manual SPDX License ID conversions 2023-02-09 14:09:07 +01:00
include bgpd,lib,sharpd,zebra: srv6 introduce multiple segs/SIDs in nexthop 2023-09-20 15:07:15 +02:00
isisd *: create a single registry of daemons' default port values 2024-02-01 11:40:02 -05:00
ldpd *: create a single registry of daemons' default port values 2024-02-01 11:40:02 -05:00
lib Merge pull request #15437 from FRRouting/mergify/bp/dev/10.0/pr-15427 2024-02-27 13:39:07 -05:00
m4 build: add recursion limit for AX_RECURSIVE_EVAL 2024-01-27 19:01:19 +01:00
mgmtd lib: mgmtd: add xpath arg to notification message 2024-02-20 17:14:55 +00:00
mlag build: fix AM_LDFLAGS usage (and gcov) 2021-07-21 17:10:08 +02:00
nhrpd nhrp: fix race condition 2024-02-07 23:05:20 +00:00
ospf6d *: use af-specific autocompletion for prefix-lists when possible 2024-02-04 22:26:48 +02:00
ospfclient *: Convert event.h to frrevent.h 2023-03-24 08:32:17 -04:00
ospfd ospfd: Solved crash in OSPF TE parsing 2024-02-27 15:42:54 +00:00
pathd *: create a single registry of daemons' default port values 2024-02-01 11:40:02 -05:00
pbrd *: create a single registry of daemons' default port values 2024-02-01 11:40:02 -05:00
pceplib Merge pull request #15215 from donaldsharp/pceplib_fixup 2024-01-25 09:59:59 +02:00
pimd pimd: re-evaluated S,G OILs upon RP changes and for empty SG upstream oils 2024-02-08 10:37:31 -08:00
pkgsrc build: homologize path handling 2024-01-27 19:02:52 +01:00
python build: remove mgmtd exception from xref2vtysh 2024-01-28 23:28:40 +02:00
qpb qpb: Add missing #include nexthop.h 2024-02-10 00:44:50 +01:00
redhat redhat: add option to include mgmtd_testc test client 2024-02-01 03:17:44 -05:00
ripd *: create a single registry of daemons' default port values 2024-02-01 11:40:02 -05:00
ripngd *: create a single registry of daemons' default port values 2024-02-01 11:40:02 -05:00
sharpd *: create a single registry of daemons' default port values 2024-02-01 11:40:02 -05:00
snapcraft zebra, build: disable irdp by default 2024-01-28 23:50:40 +02:00
staticd Merge pull request #15285 from idryzhov/staticd-nexthop-refcounter 2024-02-08 15:53:30 -05:00
tests topotests: add an ebgp 6vpe test 2024-02-28 09:35:34 +00:00
tools tools: add config-write callbacks to nb templates 2024-01-30 08:09:25 -05:00
vrrpd *: create a single registry of daemons' default port values 2024-02-01 11:40:02 -05:00
vtysh lib, mgmtd: rework processing of yang notifications 2024-02-11 13:26:52 +02:00
watchfrr build: homologize path handling 2024-01-27 19:02:52 +01:00
yang bgpd, yang: fix missing mandatory/default statements on some leafs 2024-02-26 07:44:44 +00:00
zebra zebra: fix crash if macvlan link in another netns 2024-02-27 16:32:23 +00:00
.clang-format tools: add more libyang iter macros to .clang-format 2023-12-28 17:52:57 +00:00
.dockerignore docker: Make docker image on CentOS 7 2019-11-26 19:29:30 +00:00
.flake8 style: add format checker config that matches FRR style standards 2023-04-18 05:18:26 -04:00
.git-blame-ignore-revs tools: Ignore mass renaming of topotests for git blame 2021-05-11 14:14:26 +03:00
.gitignore tests: add YANG notification test 2024-01-30 14:54:47 -05:00
.isort.cfg style: add format checker config that matches FRR style standards 2023-04-18 05:18:26 -04:00
.pylintrc style: add format checker config that matches FRR style standards 2023-04-18 05:18:26 -04:00
.travis.yml lib: libyang2 add missed conversion 2021-05-17 22:13:59 -04:00
bootstrap.sh build: turn on automake warnings (& symlinks) 2021-04-21 15:42:37 +02:00
buildtest.sh build: update packaging & docs for dir changes 2024-01-27 19:01:19 +01:00
config.version.in build: carry --with-pkg-extra-version into tarballs 2018-10-24 15:11:50 +02:00
configure.ac tools: Change the major version from 9 to 10 2024-02-13 21:20:41 +02:00
COPYING *: sort out & explain licenses used in FRR 2023-02-09 12:46:13 +01:00
Makefile.am build: homologize path handling 2024-01-27 19:02:52 +01:00
README.md doc: Fix the link that points to Slack invitation in README 2022-03-24 13:13:37 +02:00
stamp-h.in Initial revision 2002-12-13 20:15:29 +00:00
version.h build: make builddir include path consistent 2021-04-21 15:42:33 +02: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