Go to file
Philippe Guibert 1bb550b63c bgpd: add resolution for l3vpn traffic over gre interfaces
When a route imported from l3vpn is analysed, the nexthop from default
VRF is looked up against a valid MPLS path. Generally, this is done on
backbones with a MPLS signalisation transport layer like LDP. Generally,
the BGP connection is multiple hops away. That scenario is already
working.

There is case where it is possible to run L3VPN over GRE interfaces, and
where there is no LSP path over that GRE interface: GRE is just here to
tunnel MPLS traffic. On that case, the nexthop given in the path does not
have MPLS path, but should be authorized to convey MPLS traffic provided
that the user permits it via a configuration command.

That commit introduces a new command that can be activated in route-map:
 > set l3vpn next-hop encapsulation gre

That command authorizes the nexthop tracking engine to accept paths that
o have a GRE interface as output, independently of the presence of an LSP
path or not.

A configuration example is given below. When bgp incoming vpnv4 updates
are received, the nexthop of NLRI is 192.168.0.2. Based on nexthop
tracking service from zebra, BGP knows that the output interface to reach
192.168.0.2 is r1-gre0. Because that interface is not MPLS based, but is
a GRE tunnel, then the update will be using that nexthop to be installed.

    interface r1-gre0
     ip address 192.168.0.1/24
    exit
    router bgp 65500
     bgp router-id 1.1.1.1
     neighbor 192.168.0.2 remote-as 65500
     !
     address-family ipv4 unicast
      no neighbor 192.168.0.2 activate
     exit-address-family
     !
     address-family ipv4 vpn
      neighbor 192.168.0.2 activate
      neighbor 192.168.0.2 route-map rmap in
     exit-address-family
    exit
    !
    router bgp 65500 vrf vrf1
     bgp router-id 1.1.1.1
     no bgp network import-check
     !
     address-family ipv4 unicast
      network 10.201.0.0/24
      redistribute connected
      label vpn export 101
      rd vpn export 444:1
      rt vpn both 52:100
      export vpn
      import vpn
     exit-address-family
    exit
    !
    route-map rmap permit 1
     set l3vpn next-hop encapsulation gre
    exit

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2022-09-05 22:26:25 +02:00
.github github: Set strict permissions for stale actions for Github 2022-06-27 09:54:16 +03:00
alpine alpine, docker: Update APKBUILD for libyang 2022-07-17 19:14:28 -04:00
babeld babeld: Remove return value for gettime() 2022-08-24 08:30:27 -04:00
bfdd Merge pull request #11668 from rampxxxx/bfd_rtt_in_echo_pkt 2022-08-09 15:20:24 +00:00
bgpd bgpd: add resolution for l3vpn traffic over gre interfaces 2022-09-05 22:26:25 +02:00
debian debian: add lua _binary_ to build dependencies 2022-08-19 15:56:57 +02:00
doc bgpd: add resolution for l3vpn traffic over gre interfaces 2022-09-05 22:26:25 +02:00
docker docker: use Alpine-provided libyang 2022-07-17 19:14:28 -04:00
eigrpd eigrpd: vrf variable name hides a parameter of the same name 2022-06-16 16:31:35 -04:00
fpm build: fix AM_LDFLAGS usage (and gcov) 2021-07-21 17:10:08 +02:00
gdb gdb: Add a macro to walk memory allocations 2022-08-24 07:13:29 -04:00
grpc build: fix AM_LDFLAGS usage (and gcov) 2021-07-21 17:10:08 +02:00
include include: add linux header pkt_cls.h 2022-08-10 23:45:29 +08:00
isisd isisd: changes for code maintainability 2022-08-29 20:37:32 +05:30
ldpd ldpd: changes for code maintainability 2022-08-30 11:16:23 +05:30
lib bgpd: add resolution for l3vpn traffic over gre interfaces 2022-09-05 22:26:25 +02:00
m4 autoconf: do not .gitignore m4/ax_lua.m4 2022-03-26 15:05:54 +01:00
mlag build: fix AM_LDFLAGS usage (and gcov) 2021-07-21 17:10:08 +02:00
nhrpd nhrpd: Use nhrp_interface_update_nbma when source vrf was changed 2022-08-22 15:54:18 +03:00
ospf6d ospf6d: Don't remove summary route if it is a range 2022-08-19 23:26:06 -07:00
ospfclient ospfclient: condition optimization 2022-07-27 14:59:53 +05:30
ospfd ospfd: crash when router acts as GR helper upon a topo change 2022-08-30 00:48:32 -07:00
pathd pathd: Ensure path is free'd after we no longer need it. 2022-08-15 15:45:05 -04:00
pbrd pbrd: VTY_GET_CONTEXT can fail 2022-08-15 15:45:05 -04:00
pceplib *: Properly use memset() when zeroing 2022-05-11 14:08:47 +03:00
pimd pim6d: Fix the Code for MLD in the show pim state command 2022-08-30 03:13:42 -07:00
pkgsrc *: cleanup .gitignore files 2018-09-08 21:30:42 +02:00
python python: Remove redundant import of subprocess 2022-06-16 16:31:35 -04:00
qpb qpb: Tell coverity the actual size we are copying 2022-08-02 15:34:43 -04:00
redhat redhat: Drop --enable-systemd from build specification 2022-08-12 11:49:33 +03:00
ripd ripd: Use a sequence number instead of time 2022-08-24 08:30:42 -04:00
ripngd ripngd: Convert thread_cancel to THREAD_OFF 2022-07-21 08:27:35 -04:00
sharpd sharpd: Fix memory leaks related to SRv6 nexthops 2022-08-24 14:22:04 +02:00
snapcraft snapcraft: Version must be quoted in snap store 2022-07-07 12:31:03 +02:00
staticd staticd: When changing the underlying nh ensure it is reinstalled 2022-08-08 16:02:40 -04:00
tests Merge pull request #11833 from opensourcerouting/feature/bgp_neighbor_soo 2022-08-30 11:17:53 -04:00
tools tools: stop zebra daemon last 2022-08-15 16:40:08 -04:00
vrrpd lib, vrrpd: Use THREAD_ARG 2022-07-21 08:30:50 -04:00
vtysh vtysh: Handle SIGTSTP (C-z) without exiting the vty shell 2022-08-10 16:18:49 +03:00
watchfrr watchfrr: Check that the operational timeout specified is good. 2022-08-15 15:45:05 -04:00
yang bgpd: add resolution for l3vpn traffic over gre interfaces 2022-09-05 22:26:25 +02:00
zebra Merge pull request #11866 from anlancs/fix/evpn-l2vni 2022-08-30 18:13:02 +03:00
.clang-format lib: add _last and _prev on typesafe RB/DLIST 2022-03-12 13:23:36 +01:00
.dir-locals.el tests: remove python format block from dir-locals 2021-09-13 10:04:29 -04:00
.dockerignore docker: Make docker image on CentOS 7 2019-11-26 19:29:30 +00:00
.git-blame-ignore-revs tools: Ignore mass renaming of topotests for git blame 2021-05-11 14:14:26 +03:00
.gitignore *: Add some missed make check generated files in .gitignore 2021-09-16 08:13:17 -04:00
.pylintrc tests: micronet: update infra 2021-09-04 09:04:46 -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: remove --enable-exampledir 2021-06-24 16:42:58 +02:00
config.version.in build: carry --with-pkg-extra-version into tarballs 2018-10-24 15:11:50 +02:00
configure.ac pim6d: Disable pim6d compilation by default 2022-07-07 07:14:27 -07: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 build: fix AM_LDFLAGS usage (and gcov) 2021-07-21 17:10:08 +02: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