Skip to content

Instantly share code, notes, and snippets.

@rwestphal
Created November 28, 2018 15:03
Show Gist options
  • Save rwestphal/931f070240ffffebc2213f5d5fbefcb7 to your computer and use it in GitHub Desktop.
Save rwestphal/931f070240ffffebc2213f5d5fbefcb7 to your computer and use it in GitHub Desktop.
# +---------+ +---------+
# | | | |
# | CE1 | | CE2 |
# | | | |
# +---------+ +---------+
# ce1-eth0| |ce2-eth0
# | |
# 172.16.1.0/24| |172.16.2.0/24
# | |
# rt1-eth0| 10.0.1.0/24 10.0.3.0/24 |rt3-eth0
# +---------+ +---------+ +---------+
# | | | | | |
# | RT1 |rt1-eth1 rt2-eth0| RT2 |rt2-eth2 rt3-eth1| RT3 |
# | 1.1.1.1 +-------------------+ 2.2.2.2 +-------------------+ 3.3.3.3 |
# | | | | | |
# +---------+ +---------+ +---------+
# 10.0.2.0/24 10.0.4.0/24
---
routers:
ce1:
links:
ce1-eth0:
peer: [rt1, rt1-eth0]
ipv4: 172.16.1.1/24
frr:
zebra:
config: |
staticd:
delay: 1
config: |
ip route 0.0.0.0/0 172.16.1.10
ce2:
links:
ce2-eth0:
peer: [rt3, rt3-eth0]
ipv4: 172.16.2.1/24
frr:
zebra:
config: |
staticd:
delay: 1
config: |
ip route 0.0.0.0/0 172.16.2.10
rt1:
links:
rt1-RED:
type: vrf
table: 10
rt1-lo1:
ipv4: 1.1.1.1/32
rt1-eth0:
vrf: rt1-RED
peer: [ce1, ce1-eth0]
ipv4: 172.16.1.10/24
rt1-eth1:
peer: [rt2, rt2-eth0]
mpls: yes
ipv4: 10.0.1.1/24
shell: |
ip tunnel add gre1 mode gre remote 10.0.3.3 local 10.0.1.1 ttl 64
ip link set gre1 up
ip addr add 40.0.0.1/24 dev gre1
sysctl -w net.mpls.conf.gre1.input=1
frr:
zebra:
config: |
interface rt1-eth0
no link-detect
!
interface rt1-eth1
no link-detect
!
staticd:
delay: 1
config: |
ip route 3.3.3.3/32 40.0.0.2 gre1
ospfd:
config: |
interface rt1-lo1
ip ospf area 0
!
interface rt1-eth1
ip ospf area 0
ip ospf hello-interval 1
ip ospf dead-interval 3
!
router ospf
ip ospf area 0
router-id 1.1.1.1
!
ldpd:
config: |
mpls ldp
router-id 1.1.1.1
!
address-family ipv4
discovery transport-address 1.1.1.1
label local allocate host-routes
!
interface gre1
!
!
!
bgpd:
config: |
router bgp 1
neighbor 3.3.3.3 remote-as 1
neighbor 3.3.3.3 update-source rt1-lo1
!
address-family ipv4 vpn
neighbor 3.3.3.3 activate
exit-address-family
!
!
router bgp 1 vrf rt1-RED
address-family ipv4 unicast
rd vpn export 1:1
rt vpn both 1:1
label vpn export auto
redistribute connected
import vpn
export vpn
exit-address-family
!
rt2:
links:
rt2-lo1:
ipv4: 2.2.2.2/32
rt2-eth0:
peer: [rt1, rt1-eth1]
mpls: yes
ipv4: 10.0.1.2/24
rt2-eth2:
peer: [rt3, rt3-eth1]
mpls: yes
ipv4: 10.0.3.2/24
frr:
zebra:
config: |
interface rt2-eth0
no link-detect
!
interface rt2-eth2
no link-detect
!
ospfd:
config: |
interface rt2-lo1
ip ospf area 0
!
interface rt2-eth0
ip ospf area 0
ip ospf hello-interval 1
ip ospf dead-interval 3
!
interface rt2-eth2
ip ospf area 0
ip ospf hello-interval 1
ip ospf dead-interval 3
!
router ospf
router-id 2.2.2.2
!
rt3:
links:
rt3-RED:
type: vrf
table: 10
rt3-lo1:
ipv4: 3.3.3.3/32
rt3-eth0:
vrf: rt3-RED
peer: [ce2, ce2-eth0]
ipv4: 172.16.2.10/24
rt3-eth1:
peer: [rt2, rt2-eth2]
mpls: yes
ipv4: 10.0.3.3/24
shell: |
ip tunnel add gre1 mode gre remote 10.0.1.1 local 10.0.3.3 ttl 64
ip link set gre1 up
ip addr add 40.0.0.2/24 dev gre1
sysctl -w net.mpls.conf.gre1.input=1
frr:
zebra:
config: |
interface rt3-eth0
no link-detect
!
interface rt3-eth1
no link-detect
!
staticd:
delay: 1
config: |
ip route 1.1.1.1/32 40.0.0.1 gre1
ospfd:
config: |
interface rt3-lo1
ip ospf area 0
!
interface rt3-eth1
ip ospf area 0
ip ospf hello-interval 1
ip ospf dead-interval 3
!
router ospf
router-id 3.3.3.3
!
ldpd:
config: |
mpls ldp
router-id 3.3.3.3
!
address-family ipv4
discovery transport-address 3.3.3.3
label local allocate host-routes
!
interface gre1
!
!
!
bgpd:
config: |
router bgp 1
neighbor 1.1.1.1 remote-as 1
neighbor 1.1.1.1 update-source rt3-lo1
!
address-family ipv4 vpn
neighbor 1.1.1.1 activate
exit-address-family
!
!
router bgp 1 vrf rt3-RED
address-family ipv4 unicast
rd vpn export 1:1
rt vpn both 1:1
label vpn export auto
redistribute connected
import vpn
export vpn
exit-address-family
!
switches:
frr:
base-configs:
all: |
hostname %(node)-%(daemon)
password 1
log file %(logdir)/%(node)-%(daemon).log
log commands
zebra: |
!debug zebra kernel
debug zebra rib detailed
debug zebra rib
debug zebra nht
debug zebra pseudowires
debug zebra packet
ospfd: |
debug ospf zebra
ldpd: |
debug mpls ldp zebra
debug mpls ldp event
debug mpls ldp errors
debug mpls ldp messages recv
debug mpls ldp messages sent
debug mpls ldp discovery hello recv
bgpd: |
debug bgp zebra
debug bgp nht
debug bgp update in
debug bgp neighbor-events
@prakash12305
Copy link

Hi @rwestphal

I am new to this FRR routing, I have installed the FRR routing and all daemons running, I would like to recreate your scenario in my local environment,
could you please provide me step by step guide how to use this "frr-bgp-l3vpn-gre.yml" file with FRR routing ? do you have any documentation or procedure. really appreciate your help

Thank you

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment