IPv6-only BGP/OSPF/RIPNG/ISIS lab
This lab has been done with BSDRP under bhyve and it show an example of BGP/ISIS/RIPNG/OSPF interactions with IPv6 only.
Presentation¶
Network diagram¶
Here is the logical and physical view:

Description and limitations¶
This lab has been done to improve IPv6 use and routing experience. The routers have been configured int the simpliest way. No authentication or log have been configured (and this is bad !!!)
I also tried to make some “funnies” BGP interconnections. - The IGP protocol do not send routes to the EGP protocol - Inside an area, BGP border routers exchange their routes
The LAB_v6only_GW is a router used to make an interconnexion with a global lab network
The host are not described here but a simple host vith ipv6 auto-configuration is enough
Setting-up the lab¶
Downloading BSD Router Project images¶
Download BSDRP serial image (prevent to have to use an X display) on Sourceforge.
Configure lab with netlab¶
Quick installation of netlab¶
Pull the repository https://github.com/stardco/netlab.git In root mode :
make install
Information to add on templates.conf¶
BSDRP-1.96-full-amd64-serial.img must be on /usr/local/etc/netlab/templates/
BSDRP_196:BSD:BSDRP-1.96-full-amd64-serial.img:
Information to add on areas.conf¶
LAB_v6only:LAB_v6only_GW BGP_R1 BGP_R2 BGP_R3 BGP_R4 BGPC_H1 ISIS_R1 ISIS_R2 ISIS_R3 ISIS_R4 ISISC_H1 OSPF_R1 OSPF_R2 OSPF_R3 OSPF_R4 OSPFC_H1 RIPNG_R1 RIPNG_R2 RIPNG_R3 RIPNG_R4 RIPNGC_H1:
Information to add on switches.conf¶
L2:ogb1:ogb1p1 ogb1p2
L2:bgb1:bgb1p1 bgb1p2
L2:borb1:borb1p1 borb1p2
L2:brb1:brb1p1 brb1p2 brb1p3 brb1p4
L2:bcb1:bcb1p1 bcb1p2
L2:birb1:birb1p1 birb1p2
L2:irb1:irb1p1 irb1p2
L2:irb2:irb2p1 irb2p2
L2:irb3:irb3p1 irb3p2
L2:irb4:irb4p1 irb4p2
L2:icb1:icb1p1 icb1p2
L2:irrb1:irrb1p1 irrb1p2
L2:orb1:orb1p1 orb1p2
L2:orb2:orb2p1 orb2p2
L2:orb3:orb3p1 orb3p2
L2:orb4:orb4p1 orb4p2
L2:ocb1:ocb1p1 ocb1p2
L2:orrb1:orrb1p1 orrb1p2
L2:rrb1:rrb1p1 rrb1p2
L2:rrb2:rrb2p1 rrb2p2
L2:rrb3:rrb3p1 rrb3p2
L2:rrb4:rrb4p1 rrb4p2
L2:rcb1:rcb1p1 rcb1p2
Information to add on machines.conf¶
LAB_v6only_GW:BSDRP_196:1:256:3003:bbb1p3 ogb1p1 bgb1p1:
BGP_R1:BSDRP_196:1:256:3200:brb1p1 borb1p1 bgb1p2:
BGP_R2:BSDRP_196:1:256:3201:brb1p2 bcb1p1:
BGP_R3:BSDRP_196:1:256:3202:brb1p3 birb1p1:
BGP_R4:BSDRP_196:1:256:3203:brb1p4:
BGPC_H1:BSDRP_196:1:256:3204:bcb1p2:
ISIS_R1:BSDRP_196:1:256:3205:irb1p1 irb4p2 birb1p2:
ISIS_R2:BSDRP_196:1:256:3206:irb1p2 irb2p1 icb1p1:
ISIS_R3:BSDRP_196:1:256:3207:irb2p2 irb3p1 irrb1p1:
ISIS_R4:BSDRP_196:1:256:3208:irb4p1 irb2p2:
ISISC_H1:BSDRP_196:1:256:3209:icb1p2:
OSPF_R1:BSDRP_196:1:256:3210:orb1p1 orb4p2 borb1p2 ogb1p2:
OSPF_R2:BSDRP_196:1:256:3211:orb1p2 orb2p1 ocb1p1:
OSPF_R3:BSDRP_196:1:256:3212:orb2p2 orb3p1 orrb1p1:
OSPF_R4:BSDRP_196:1:256:3213:orb3p2 orb4p1:
OSPFC_H1:BSDRP_196:1:256:3214:ocb1p2:
RIPNG_R1:BSDRP_196:1:256:3215:rrb1p1 rrb4p2 orrb1p2:
RIPNG_R2:BSDRP_196:1:256:3216:rrb1p2 rrb2p1 rcb1p1:
RIPNG_R3:BSDRP_196:1:256:3217:rrb2p2 rrb3p1 irrb1p2:
RIPNG_R4:BSDRP_196:1:256:3218:rrb4p1 rrb3p2:
RIPNGC_H1:BSDRP_196:1:256:3219:rcb1p2:
Launch the lab¶
In root mode !
netlab load -a LAB_v6only
Routers configuration¶
OSPF_R1¶
sysrc hostname=OSPF_R1
sysrc ifconfig_vtnet0_ipv6="up"
sysrc ifconfig_vtnet1_ipv6="up"
sysrc frr_enable=yes
cat > /usr/local/etc/frr/frr.conf <<EOF
frr version 7.2
frr defaults traditional
hostname OSPF_R1
!
interface lo0
ipv6 address 2001:db8:1:fff1::1/128
!
interface vtnet2
ipv6 address 2001:db8:1:ffff::5/127
!
interface vtnet3
ipv6 address 2001:db8:1:ffff::3/127
!
router bgp 65001
bgp router-id 0.0.1.1
neighbor 2001:db8:1:fff1::3 remote-as 65001
neighbor 2001:db8:1:fff1::3 interface lo0
neighbor 2001:db8:1:ffff::2 remote-as 65500
neighbor 2001:db8:1:ffff::4 remote-as 65000
!
address-family ipv4 unicast
no neighbor 2001:db8:1:fff1::3 activate
no neighbor 2001:db8:1:ffff::2 activate
no neighbor 2001:db8:1:ffff::4 activate
exit-address-family
!
address-family ipv6 unicast
network 2001:db8:1:1afe::/64
network 2001:db8:1:fff1::/64
network 2001:db8:1:ffff::2/127
network 2001:db8:1:ffff::4/127
neighbor 2001:db8:1:fff1::3 activate
neighbor 2001:db8:1:fff1::3 route-map Tag_Internal in
neighbor 2001:db8:1:ffff::2 activate
neighbor 2001:db8:1:ffff::2 prefix-list receive_from_65500 in
neighbor 2001:db8:1:ffff::2 prefix-list send_to_65500 out
neighbor 2001:db8:1:ffff::2 route-map IPv6_Set-Nexthop_65500 out
neighbor 2001:db8:1:ffff::4 activate
neighbor 2001:db8:1:ffff::4 prefix-list receive_from_65000 in
neighbor 2001:db8:1:ffff::4 prefix-list send_to_65000 out
neighbor 2001:db8:1:ffff::4 route-map IPv6_Set-Nexthop_65000 out
exit-address-family
!
router ospf6
ospf6 router-id 0.0.1.1
redistribute connected
redistribute bgp route-map Exclude_Internal
interface vtnet0 area 0.0.0.0
interface vtnet1 area 0.0.0.0
!
ipv6 access-list all seq 5 permit any
!
ipv6 prefix-list receive_from_65000 seq 100 permit any
ipv6 prefix-list receive_from_65500 seq 100 permit any
ipv6 prefix-list send_to_65000 seq 100 permit any
ipv6 prefix-list send_to_65500 seq 100 permit any
!
route-map Exclude_Internal deny 65001
match tag 65001
!
route-map Exclude_Internal permit 65535
match ipv6 address any
!
route-map IPv6_Set-Nexthop_65000 permit 65535
match ipv6 address all
set ipv6 next-hop peer-address
!
route-map IPv6_Set-Nexthop_65500 permit 65535
match ipv6 address all
set ipv6 next-hop peer-address
!
route-map Tag_Internal permit 65535
match ipv6 address all
set tag 65001
!
line vty
!
EOF
hostname OSPF_R1
service netif restart
service frr start
config save
OSPF_R2¶
sysrc hostname=OSPF_R3
sysrc ifconfig_vtnet0_ipv6="up"
sysrc ifconfig_vtnet1_ipv6="up"
sysrc frr_enable=yes
cat > /usr/local/etc/frr/frr.conf <<EOF
frr version 7.2
frr defaults traditional
hostname OSPF_R2
!
interface lo0
ipv6 address 2001:db8:1:fff1::2/128
!
interface vtnet2
ipv6 address 2001:db8:1:1afe::/64
ipv6 nd prefix 2001:db8:1:1afe::/64
ipv6 nd ra-interval 5
no ipv6 nd suppress-ra
!
router ospf6
ospf6 router-id 0.0.1.2
redistribute connected
interface vtnet0 area 0.0.0.0
interface vtnet1 area 0.0.0.0
!
line vty
!
EOF
hostname OSPF_R3
service netif restart
service frr start
config save
OSPF_R3¶
sysrc hostname=OSPF_R3
sysrc ifconfig_vtnet0_ipv6="up"
sysrc ifconfig_vtnet1_ipv6="up"
sysrc frr_enable=yes
cat > /usr/local/etc/frr/frr.conf <<EOF
frr version 7.2
frr defaults traditional
hostname OSPF_R3
!
interface lo0
ipv6 address 2001:db8:1:fff1::3/128
!
interface vtnet2
ipv6 address 2001:db8:1:ffff::6/127
!
router bgp 65001
bgp router-id 0.0.1.3
neighbor 2001:db8:1:fff1::1 remote-as 65001
neighbor 2001:db8:1:fff1::1 interface lo0
neighbor 2001:db8:1:ffff::7 remote-as 65003
!
address-family ipv4 unicast
no neighbor 2001:db8:1:fff1::1 activate
no neighbor 2001:db8:1:ffff::7 activate
exit-address-family
!
address-family ipv6 unicast
network 2001:db8:1:1afe::/64
network 2001:db8:1:fff1::/64
network 2001:db8:1:ffff::6/127
neighbor 2001:db8:1:fff1::1 activate
neighbor 2001:db8:1:fff1::1 route-map Tag_Internal in
neighbor 2001:db8:1:ffff::7 activate
neighbor 2001:db8:1:ffff::7 prefix-list receive_from_65003 in
neighbor 2001:db8:1:ffff::7 prefix-list send_to_65003 out
neighbor 2001:db8:1:ffff::7 route-map IPv6_Set-Nexthop_65003 out
exit-address-family
!
router ospf6
ospf6 router-id 0.0.1.3
redistribute connected
redistribute bgp route-map Exclude_Internal
interface vtnet0 area 0.0.0.0
interface vtnet1 area 0.0.0.0
!
ipv6 access-list all seq 5 permit any
!
ipv6 prefix-list receive_from_65003 seq 100 permit any
ipv6 prefix-list send_to_65003 seq 100 permit any
!
route-map Exclude_Internal deny 65001
match tag 65001
!
route-map Exclude_Internal permit 65535
match ipv6 address any
!
route-map IPv6_Set-Nexthop_65003 permit 65535
match ipv6 address all
set ipv6 next-hop peer-address
!
route-map Tag_Internal permit 65535
match ipv6 address all
set tag 65001
!
line vty
!
EOF
hostname OSPF_R3
service netif restart
service frr start
config save
OSPF_R4¶
sysrc hostname=OSPF_R4
sysrc ifconfig_vtnet0_ipv6="up"
sysrc ifconfig_vtnet1_ipv6="up"
sysrc frr_enable=yes
cat > /usr/local/etc/frr/frr.conf <<EOF
frr version 7.2
frr defaults traditional
hostname OSPF_R4
!
interface lo0
ipv6 address 2001:db8:1:fff1::4/128
!
router ospf6
ospf6 router-id 0.0.1.4
redistribute connected
interface vtnet0 area 0.0.0.0
interface vtnet1 area 0.0.0.0
!
line vty
!
EOF
hostname OSPF_R4
service netif restart
service frr start
config save
RIPNG_R1¶
sysrc hostname=RIPNG_R1
sysrc ifconfig_vtnet0_ipv6="up"
sysrc ifconfig_vtnet1_ipv6="up"
sysrc frr_enable=yes
cat > /usr/local/etc/frr/frr.conf <<EOF
frr version 7.2
frr defaults traditional
hostname RIPNG_R1
!
interface lo0
ipv6 address 2001:db8:1:fff3::1/128
!
interface vtnet2
ipv6 address 2001:db8:1:ffff::7/127
!
router-id 0.0.3.1
!
router ripng
network vtnet1
network vtnet0
redistribute connected
redistribute bgp route-map Exclude_Internal
!
router bgp 65003
bgp router-id 0.0.3.1
neighbor 2001:db8:1:fff3::3 remote-as 65003
neighbor 2001:db8:1:fff3::3 interface lo0
neighbor 2001:db8:1:ffff::6 remote-as 65001
!
address-family ipv4 unicast
no neighbor 2001:db8:1:fff3::3 activate
no neighbor 2001:db8:1:ffff::6 activate
exit-address-family
!
address-family ipv6 unicast
network 2001:db8:1:3afe::/64
network 2001:db8:1:fff3::/64
network 2001:db8:1:ffff::6/127
neighbor 2001:db8:1:fff3::3 activate
neighbor 2001:db8:1:fff3::3 route-map Tag_Internal in
neighbor 2001:db8:1:ffff::6 activate
neighbor 2001:db8:1:ffff::6 prefix-list receive_from_65001 in
neighbor 2001:db8:1:ffff::6 prefix-list send_to_65001 out
neighbor 2001:db8:1:ffff::6 route-map IPv6_Set-Nexthop_65001 out
exit-address-family
!
ipv6 access-list all seq 5 permit any
!
ipv6 prefix-list receive_from_65001 seq 100 permit any
ipv6 prefix-list send_to_65001 seq 100 permit any
!
route-map Exclude_Internal deny 65003
match tag 65003
!
route-map Exclude_Internal permit 65535
!
route-map IPv6_Set-Nexthop_65001 permit 65535
match ipv6 address all
set ipv6 next-hop peer-address
!
route-map Tag_Internal permit 65535
match ipv6 address all
set tag 65003
!
line vty
!
EOF
hostname RIPNG_R1
service netif restart
service frr start
config save
RIPNG_R2¶
sysrc hostname=RIPNG_R2
sysrc ifconfig_vtnet0_ipv6="up"
sysrc ifconfig_vtnet1_ipv6="up"
sysrc frr_enable=yes
cat > /usr/local/etc/frr/frr.conf <<EOF
frr version 7.2
frr defaults traditional
hostname RIPNG_R2
!
interface lo0
ipv6 address 2001:db8:1:fff3::2/128
!
interface vtnet2
ipv6 address 2001:db8:1:3afe::/64
ipv6 nd prefix 2001:db8:1:3afe::/64
ipv6 nd ra-interval 5
no ipv6 nd suppress-ra
!
router-id 0.0.3.2
!
router ripng
network vtnet1
network vtnet0
redistribute connected
!
line vty
!
EOF
hostname RIPNG_R2
service netif restart
service frr start
config save
RIPNG_R3¶
sysrc hostname=RIPNG_R3
sysrc ifconfig_vtnet0_ipv6="up"
sysrc ifconfig_vtnet1_ipv6="up"
sysrc frr_enable=yes
cat > /usr/local/etc/frr/frr.conf <<EOF
frr version 7.2
frr defaults traditional
hostname RIPNG_R3
!
interface lo0
ipv6 address 2001:db8:1:fff3::3/128
!
interface vtnet2
ipv6 address 2001:db8:1:ffff::8/127
!
router-id 0.0.3.3
!
router ripng
network vtnet1
network vtnet0
redistribute connected
redistribute bgp route-map Exclude_Internal
!
router bgp 65003
bgp router-id 0.0.3.3
neighbor 2001:db8:1:fff3::1 remote-as 65003
neighbor 2001:db8:1:fff3::1 interface lo0
neighbor 2001:db8:1:ffff::9 remote-as 65002
!
address-family ipv4 unicast
no neighbor 2001:db8:1:fff3::1 activate
no neighbor 2001:db8:1:ffff::9 activate
exit-address-family
!
address-family ipv6 unicast
network 2001:db8:1:3afe::/64
network 2001:db8:1:fff3::/64
network 2001:db8:1:ffff::8/127
neighbor 2001:db8:1:fff3::1 activate
neighbor 2001:db8:1:fff3::1 route-map Tag_Internal in
neighbor 2001:db8:1:ffff::9 activate
neighbor 2001:db8:1:ffff::9 prefix-list receive_from_65002 in
neighbor 2001:db8:1:ffff::9 prefix-list send_to_65002 out
neighbor 2001:db8:1:ffff::9 route-map IPv6_Set-Nexthop_65002 out
exit-address-family
!
ipv6 access-list all seq 5 permit any
!
ipv6 prefix-list receive_from_65002 seq 100 permit any
ipv6 prefix-list send_to_65002 seq 100 permit any
!
route-map Exclude_Internal deny 65003
match tag 65003
!
route-map Exclude_Internal permit 65535
!
route-map IPv6_Set-Nexthop_65002 permit 65535
match ipv6 address all
set ipv6 next-hop peer-address
!
route-map Tag_Internal permit 65535
match ipv6 address all
set tag 65003
!
line vty
!
EOF
hostname RIPNG_R3
service netif restart
service frr start
config save
RIPNG_R4¶
sysrc hostname=RIPNG_R4
sysrc ifconfig_vtnet0_ipv6="up"
sysrc ifconfig_vtnet1_ipv6="up"
sysrc frr_enable=yes
cat > /usr/local/etc/frr/frr.conf <<EOF
frr version 7.2
frr defaults traditional
hostname RIPNG_R4
!
interface lo0
ipv6 address 2001:db8:1:fff3::4/128
!
router-id 0.0.3.4
!
router ripng
network vtnet1
network vtnet0
redistribute connected
!
line vty
!
EOF
hostname RIPNG_R4
service netif restart
service frr start
config save
ISIS_R1¶
sysrc hostname=ISIS_R1
sysrc ifconfig_vtnet0_ipv6="up"
sysrc ifconfig_vtnet1_ipv6="up"
sysrc frr_enable=yes
cat > /usr/local/etc/frr/frr.conf <<EOF
frr version 7.2
frr defaults traditional
hostname ISIS_R1
!
interface lo0
ipv6 address 2001:db8:1:fff2::1/128
!
interface vtnet0
ipv6 router isis 65002
isis circuit-type level-2-only
!
interface vtnet1
ipv6 router isis 65002
isis circuit-type level-2-only
!
interface vtnet2
ipv6 address 2001:db8:1:ffff::10/127
!
router bgp 65002
bgp router-id 0.0.2.1
neighbor 2001:db8:1:ffff::11 remote-as 65000
!
address-family ipv4 unicast
no neighbor 2001:db8:1:ffff::11 activate
exit-address-family
!
address-family ipv6 unicast
redistribute connected
redistribute isis
neighbor 2001:db8:1:ffff::11 activate
neighbor 2001:db8:1:ffff::11 prefix-list receive_from_65000 in
neighbor 2001:db8:1:ffff::11 prefix-list send_to_65000 out
neighbor 2001:db8:1:ffff::11 route-map IPv6_Set-Nexthop_65000 out
exit-address-family
!
router isis 65002
is-type level-2-only
net 47.0023.0000.0000.0000.fdea.0000.0000.0000.0201.00
redistribute ipv6 connected level-2
redistribute ipv6 bgp level-2
!
ipv6 access-list all seq 5 permit any
!
ipv6 prefix-list receive_from_65000 seq 100 permit any
ipv6 prefix-list send_to_65000 seq 100 permit any
!
route-map Exclude_Internal deny 65002
match tag 65002
!
route-map Exclude_Internal permit 65535
!
route-map IPv6_Set-Nexthop_65000 permit 65535
match ipv6 address all
set ipv6 next-hop peer-address
!
route-map Tag_Internal permit 65535
match ipv6 address all
set tag 65002
!
line vty
!
EOF
hostname ISIS_R1
service netif restart
service frr start
config save
ISIS_R2¶
sysrc hostname=ISIS_R2
sysrc ifconfig_vtnet0_ipv6="up"
sysrc ifconfig_vtnet1_ipv6="up"
sysrc frr_enable=yes
cat > /usr/local/etc/frr/frr.conf <<EOF
frr version 7.2
frr defaults traditional
hostname ISIS_R2
!
interface lo0
ipv6 address 2001:db8:1:fff2::2/128
!
interface vtnet0
ipv6 router isis 65002
isis circuit-type level-2-only
!
interface vtnet1
ipv6 router isis 65002
isis circuit-type level-2-only
!
interface vtnet2
ipv6 address 2001:db8:1:2afe::/64
ipv6 nd prefix 2001:db8:1:2afe::/64
ipv6 nd ra-interval 5
no ipv6 nd suppress-ra
!
router isis 65002
is-type level-2-only
net 47.0023.0000.0000.0000.fdea.0000.0000.0000.0202.00
redistribute ipv6 connected level-2
!
line vty
!
EOF
hostname ISIS_R2
service netif restart
service frr start
config save
ISIS_R3¶
sysrc hostname=ISIS_R3
sysrc ifconfig_vtnet0_ipv6="up"
sysrc ifconfig_vtnet1_ipv6="up"
sysrc frr_enable=yes
cat > /usr/local/etc/frr/frr.conf <<EOF
frr version 7.2
frr defaults traditional
hostname ISIS_R3
!
interface lo0
ipv6 address 2001:db8:1:fff2::3/128
!
interface vtnet0
ipv6 router isis 65002
isis circuit-type level-2-only
!
interface vtnet1
ipv6 router isis 65002
isis circuit-type level-2-only
!
interface vtnet2
ipv6 address 2001:db8:1:ffff::9/127
shutdown
!
router bgp 65002
bgp router-id 0.0.2.3
neighbor 2001:db8:1:ffff::8 remote-as 65003
!
address-family ipv4 unicast
no neighbor 2001:db8:1:ffff::8 activate
exit-address-family
!
address-family ipv6 unicast
redistribute connected
redistribute isis
neighbor 2001:db8:1:ffff::8 activate
neighbor 2001:db8:1:ffff::8 prefix-list receive_from_65003 in
neighbor 2001:db8:1:ffff::8 prefix-list send_to_65003 out
neighbor 2001:db8:1:ffff::8 route-map IPv6_Set-Nexthop_65003 out
exit-address-family
!
router isis 65002
is-type level-2-only
net 47.0023.0000.0000.0000.fdea.0000.0000.0000.0203.00
default-information originate ipv6 level-2
redistribute ipv6 connected level-2
redistribute ipv6 bgp level-2
!
ipv6 access-list all seq 5 permit any
!
ipv6 prefix-list receive_from_65003 seq 100 permit any
ipv6 prefix-list send_to_65003 seq 100 permit any
!
route-map Exclude_Internal deny 65002
match tag 65002
!
route-map Exclude_Internal permit 65535
!
route-map IPv6_Set-Nexthop_65003 permit 65535
match ipv6 address all
set ipv6 next-hop peer-address
!
route-map Tag_Internal permit 65535
match ipv6 address all
set tag 65002
!
line vty
!
EOF
hostname ISIS_R3
service netif restart
service frr start
config save
ISIS_R4¶
sysrc hostname=ISIS_R4
sysrc ifconfig_vtnet0_ipv6="up"
sysrc ifconfig_vtnet1_ipv6="up"
sysrc frr_enable=yes
cat > /usr/local/etc/frr/frr.conf <<EOF
frr version 7.2
frr defaults traditional
hostname ISIS_R4
!
interface lo0
ipv6 address 2001:db8:1:fff2::4/128
!
interface vtnet0
ipv6 router isis 65002
isis circuit-type level-2-only
!
interface vtnet1
ipv6 router isis 65002
isis circuit-type level-2-only
!
router isis 65002
is-type level-2-only
net 47.0023.0000.0000.0000.fdea.0000.0000.0000.0204.00
redistribute ipv6 connected level-2
!
line vty
!
EOF
hostname ISIS_R4
service netif restart
service frr start
config save
BGP_R1¶
sysrc hostname=BGP_R1
sysrc frr_enable=yes
cat > /usr/local/etc/frr/frr.conf <<EOF
frr version 7.2
frr defaults traditional
hostname BGP_R1
!
interface lo0
ipv6 address 2001:db8:1:fff0::1/128
!
interface vtnet0
ipv6 address 2001:db8:1::1/64
!
interface vtnet1
ipv6 address 2001:db8:1:ffff::4/127
!
interface vtnet2
ipv6 address 2001:db8:1:ffff::1/127
!
router bgp 65000
bgp router-id 0.0.0.1
neighbor 2001:db8:1::2 remote-as 65000
neighbor 2001:db8:1::3 remote-as 65000
neighbor 2001:db8:1::4 remote-as 65000
neighbor 2001:db8:1:ffff:: remote-as 65500
neighbor 2001:db8:1:ffff::5 remote-as 65001
!
address-family ipv4 unicast
no neighbor 2001:db8:1::2 activate
no neighbor 2001:db8:1::3 activate
no neighbor 2001:db8:1::4 activate
no neighbor 2001:db8:1:ffff:: activate
no neighbor 2001:db8:1:ffff::5 activate
exit-address-family
!
address-family ipv6 unicast
redistribute connected
neighbor 2001:db8:1::2 activate
neighbor 2001:db8:1::3 activate
neighbor 2001:db8:1::4 activate
neighbor 2001:db8:1:ffff:: activate
neighbor 2001:db8:1:ffff:: prefix-list receive_from_65500 in
neighbor 2001:db8:1:ffff:: prefix-list send_to_65500 out
neighbor 2001:db8:1:ffff:: route-map IPv6_Set-Nexthop_65500 out
neighbor 2001:db8:1:ffff::5 activate
neighbor 2001:db8:1:ffff::5 prefix-list receive_from_65001 in
neighbor 2001:db8:1:ffff::5 prefix-list send_to_65001 out
neighbor 2001:db8:1:ffff::5 route-map IPv6_Set-Nexthop_65001 out
exit-address-family
!
ipv6 access-list all seq 5 permit any
!
ipv6 prefix-list receive_from_65001 seq 100 permit any
ipv6 prefix-list receive_from_65500 seq 100 permit any
ipv6 prefix-list send_to_65001 seq 100 permit any
ipv6 prefix-list send_to_65500 seq 100 permit any
!
route-map IPv6_Set-Nexthop_65001 permit 65535
match ipv6 address all
set ipv6 next-hop peer-address
!
route-map IPv6_Set-Nexthop_65500 permit 65535
match ipv6 address all
set ipv6 next-hop peer-address
!
line vty
!
EOF
hostname BGP_R1
service netif restart
service frr start
config save
BGP_R2¶
sysrc hostname=BGP_R2
sysrc frr_enable=yes
cat > /usr/local/etc/frr/frr.conf <<EOF
frr version 7.2
frr defaults traditional
hostname BGP_R2
!
interface lo0
ipv6 address 2001:db8:1:fff0::2/128
!
interface vtnet0
ipv6 address 2001:db8:1::2/64
!
interface vtnet1
ipv6 address 2001:db8:1:afe::/64
ipv6 nd prefix 2001:db8:1:afe::/64
ipv6 nd ra-interval 5
no ipv6 nd suppress-ra
!
router bgp 65000
bgp router-id 0.0.0.2
neighbor 2001:db8:1::1 remote-as 65000
neighbor 2001:db8:1::3 remote-as 65000
neighbor 2001:db8:1::4 remote-as 65000
!
address-family ipv4 unicast
no neighbor 2001:db8:1::1 activate
no neighbor 2001:db8:1::3 activate
no neighbor 2001:db8:1::4 activate
exit-address-family
!
address-family ipv6 unicast
redistribute connected
neighbor 2001:db8:1::1 activate
neighbor 2001:db8:1::3 activate
neighbor 2001:db8:1::4 activate
exit-address-family
!
ipv6 access-list all seq 5 permit any
!
line vty
!
EOF
hostname BGP_R2
service netif restart
service frr start
config save
BGP_R3¶
sysrc hostname=BGP_R3
sysrc frr_enable=yes
cat > /usr/local/etc/frr/frr.conf <<EOF
frr version 7.2
frr defaults traditional
hostname BGP_R3
!
interface lo0
ipv6 address 2001:db8:1:fff0::3/128
!
interface vtnet0
ipv6 address 2001:db8:1::3/64
!
interface vtnet1
ipv6 address 2001:db8:1:ffff::11/127
!
router bgp 65000
bgp router-id 0.0.0.3
neighbor 2001:db8:1::1 remote-as 65000
neighbor 2001:db8:1::2 remote-as 65000
neighbor 2001:db8:1::4 remote-as 65000
neighbor 2001:db8:1:ffff::10 remote-as 65002
!
address-family ipv4 unicast
no neighbor 2001:db8:1::1 activate
no neighbor 2001:db8:1::2 activate
no neighbor 2001:db8:1::4 activate
no neighbor 2001:db8:1:ffff::10 activate
exit-address-family
!
address-family ipv6 unicast
redistribute connected
neighbor 2001:db8:1::1 activate
neighbor 2001:db8:1::2 activate
neighbor 2001:db8:1::4 activate
neighbor 2001:db8:1:ffff::10 activate
neighbor 2001:db8:1:ffff::10 prefix-list receive_from_65002 in
neighbor 2001:db8:1:ffff::10 prefix-list send_to_65002 out
neighbor 2001:db8:1:ffff::10 route-map IPv6_Set-Nexthop_65002 out
exit-address-family
!
ipv6 access-list all seq 5 permit any
!
ipv6 prefix-list receive_from_65002 seq 100 permit any
ipv6 prefix-list send_to_65002 seq 100 permit any
!
route-map IPv6_Set-Nexthop_65002 permit 65535
match ipv6 address all
set ipv6 next-hop peer-address
!
line vty
!
EOF
hostname BGP_R3
service netif restart
service frr start
config save
BGP_R4¶
sysrc hostname=BGP_R4
sysrc frr_enable=yes
cat > /usr/local/etc/frr/frr.conf <<EOF
frr version 7.2
frr defaults traditional
hostname BGP_R4
!
interface lo0
ipv6 address 2001:db8:1:fff0::4/128
!
interface vtnet0
ipv6 address 2001:db8:1::4/64
!
router bgp 65000
bgp router-id 0.0.0.4
neighbor 2001:db8:1::1 remote-as 65000
neighbor 2001:db8:1::2 remote-as 65000
neighbor 2001:db8:1::3 remote-as 65000
!
address-family ipv4 unicast
no neighbor 2001:db8:1::1 activate
no neighbor 2001:db8:1::2 activate
no neighbor 2001:db8:1::3 activate
exit-address-family
!
address-family ipv6 unicast
redistribute connected
neighbor 2001:db8:1::1 activate
neighbor 2001:db8:1::2 activate
neighbor 2001:db8:1::3 activate
exit-address-family
!
ipv6 access-list all seq 5 permit any
!
line vty
!
EOF
hostname BGP_R4
service netif restart
service frr start
config save
LAB_v6only_GW¶
sysrc hostname=LAB_v6only_GW
sysrc ifconfig_vtnet0_ipv6="up"
sysrc frr_enable=yes
cat > /usr/local/etc/frr/frr.conf <<EOF
frr version 7.2
frr defaults traditional
hostname LAB_v6only_GW
!
interface lo0
ip address 172.28.0.251/32
ipv6 address 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc/128
!
interface vtnet0
ip address 192.168.0.35/27
ip ospf area 0.0.0.0
!
interface vtnet1
ipv6 address 2001:db8:1:ffff::2/127
!
interface vtnet2
ipv6 address 2001:db8:1:ffff::/127
!
router bgp 65500
bgp router-id 0.0.6.251
neighbor 2001:db8:1:ffff::1 remote-as 65000
neighbor 2001:db8:1:ffff::1 interface vtnet2
neighbor 2001:db8:1:ffff::1 update-source 2001:db8:1:ffff::
neighbor 2001:db8:1:ffff::3 remote-as 65001
neighbor 2001:db8:1:ffff::3 interface vtnet1
neighbor 2001:db8:1:ffff::3 update-source 2001:db8:1:ffff::2
!
address-family ipv4 unicast
no neighbor 2001:db8:1:ffff::1 activate
no neighbor 2001:db8:1:ffff::3 activate
exit-address-family
!
address-family ipv6 unicast
network ::/0
network 2001:db8:1:ffff::/127
network 2001:db8:1:ffff::2/127
network 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc/128
neighbor 2001:db8:1:ffff::1 activate
neighbor 2001:db8:1:ffff::1 prefix-list receive_from_65000 in
neighbor 2001:db8:1:ffff::1 prefix-list send_to_65000 out
neighbor 2001:db8:1:ffff::1 route-map IPv6_Set-Nexthop_65000 out
neighbor 2001:db8:1:ffff::3 activate
neighbor 2001:db8:1:ffff::3 prefix-list receive_from_65001 in
neighbor 2001:db8:1:ffff::3 prefix-list send_to_65001 out
neighbor 2001:db8:1:ffff::3 route-map IPv6_Set-Nexthop_65001 out
exit-address-family
!
router ospf
ospf router-id 172.28.0.251
redistribute connected
!
router ospf6
ospf6 router-id 0.0.6.251
redistribute connected
redistribute bgp
interface vtnet0 area 0.0.0.0
!
ipv6 access-list all seq 5 permit any
!
ipv6 prefix-list ipv6_all seq 5 permit any
ipv6 prefix-list receive_from_65000 seq 100 permit any
ipv6 prefix-list receive_from_65001 seq 100 permit any
ipv6 prefix-list send_to_65000 seq 100 permit any
ipv6 prefix-list send_to_65001 seq 100 permit any
!
route-map IPv6_Set-Nexthop_65000 permit 65535
match ipv6 address all
set ipv6 next-hop peer-address
!
route-map IPv6_Set-Nexthop_65001 permit 65535
match ipv6 address all
set ipv6 next-hop peer-address
!
route-map IPv6_Set-Nexthop_65500 permit 65535
match ipv6 address all
set ipv6 next-hop peer-address
!
line vty
!
EOF
hostname LAB_v6only_GW
service netif restart
service frr start
config save
Final testing¶
Ping and traceroute from LAB_v6only_GW lo0 interface loopback from client interface:
root@RIPNGC_H1:~ # ping6 -c 5 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc
PING6(56=40+8+8 bytes) 2001:db8:1:3afe:2a0:98ff:fea0:e84c --> 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc
16 bytes from 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc, icmp_seq=0 hlim=59 time=2.229 ms
16 bytes from 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc, icmp_seq=1 hlim=59 time=2.054 ms
16 bytes from 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc, icmp_seq=2 hlim=59 time=2.134 ms
16 bytes from 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc, icmp_seq=3 hlim=59 time=1.872 ms
16 bytes from 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc, icmp_seq=4 hlim=59 time=2.038 ms
--- 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc ping6 statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 1.872/2.066/2.229/0.118 ms
root@RIPNGC_H1:~ # traceroute6 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc
traceroute6 to 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc (2001:db8:ffff:ffff:ffff:ffff:ffff:fffc) from 2001:db8:1:3afe:2a0:98ff:fea0:e84c, 64 hops max, 20 byte packets
1 2001:db8:1:3afe:: 0.533 ms 0.389 ms 0.261 ms
2 2001:db8:1:fff3::1 0.838 ms 0.559 ms 0.444 ms
3 2001:db8:1:ffff::6 0.815 ms 0.949 ms 0.737 ms
4 2001:db8:1:1afe:: 1.089 ms 1.100 ms 1.047 ms
5 2001:db8:1:fff1::1 1.357 ms 1.590 ms 1.349 ms
6 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc 1.697 ms 1.775 ms 1.726 ms
root@RIPNGC_H1:~ #
root@OSPFC_H1:~ # ping6 -c 5 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc
PING6(56=40+8+8 bytes) 2001:db8:1:1afe:2a0:98ff:fe25:f93e --> 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc
16 bytes from 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc, icmp_seq=0 hlim=62 time=1.285 ms
16 bytes from 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc, icmp_seq=1 hlim=62 time=0.951 ms
16 bytes from 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc, icmp_seq=2 hlim=62 time=1.101 ms
16 bytes from 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc, icmp_seq=3 hlim=62 time=1.005 ms
16 bytes from 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc, icmp_seq=4 hlim=62 time=0.996 ms
--- 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc ping6 statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.951/1.068/1.285/0.119 ms
root@OSPFC_H1:~ # traceroute6 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc
traceroute6 to 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc (2001:db8:ffff:ffff:ffff:ffff:ffff:fffc) from 2001:db8:1:1afe:2a0:98ff:fe25:f93e, 64 hops max, 20 byte packets
1 2001:db8:1:1afe:: 0.419 ms 0.305 ms 0.271 ms
2 2001:db8:1:fff1::1 0.534 ms 0.559 ms 0.514 ms
3 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc 0.720 ms 0.831 ms 0.719 ms
root@OSPFC_H1:~ #
root@ISISC_H1:~ # ping6 -c 5 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc
PING6(56=40+8+8 bytes) 2001:db8:1:2afe:2a0:98ff:fecc:620c --> 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc
16 bytes from 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc, icmp_seq=0 hlim=60 time=1.949 ms
16 bytes from 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc, icmp_seq=1 hlim=60 time=1.591 ms
16 bytes from 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc, icmp_seq=2 hlim=60 time=1.603 ms
16 bytes from 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc, icmp_seq=3 hlim=60 time=1.572 ms
16 bytes from 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc, icmp_seq=4 hlim=60 time=1.629 ms
--- 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc ping6 statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 1.572/1.669/1.949/0.141 ms
root@ISISC_H1:~ # traceroute6 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc
traceroute6 to 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc (2001:db8:ffff:ffff:ffff:ffff:ffff:fffc) from 2001:db8:1:2afe:2a0:98ff:fecc:620c, 64 hops max, 20 byte packets
1 2001:db8:1:2afe:: 0.475 ms 0.346 ms 0.311 ms
2 2001:db8:1:fff2::1 0.619 ms 0.541 ms 0.479 ms
3 2001:db8:1:ffff::11 0.790 ms 0.790 ms 0.794 ms
4 2001:db8:1::1 1.075 ms 1.037 ms 0.896 ms
5 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc 1.210 ms 1.545 ms 1.362 ms
root@ISISC_H1:~ #
root@BGPC_H1:~ # ping6 -c 5 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc
PING6(56=40+8+8 bytes) 2001:db8:1:afe:2a0:98ff:feef:16da --> 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc
16 bytes from 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc, icmp_seq=0 hlim=62 time=1.818 ms
16 bytes from 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc, icmp_seq=1 hlim=62 time=0.967 ms
16 bytes from 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc, icmp_seq=2 hlim=62 time=1.060 ms
16 bytes from 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc, icmp_seq=3 hlim=62 time=1.084 ms
16 bytes from 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc, icmp_seq=4 hlim=62 time=1.202 ms
--- 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc ping6 statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.967/1.226/1.818/0.305 ms
root@BGPC_H1:~ # traceroute6 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc
traceroute6 to 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc (2001:db8:ffff:ffff:ffff:ffff:ffff:fffc) from 2001:db8:1:afe:2a0:98ff:feef:16da, 64 hops max, 20 byte packets
1 2001:db8:1:afe:: 0.454 ms 0.373 ms 0.284 ms
2 2001:db8:1::1 0.534 ms 0.564 ms 0.508 ms
3 2001:db8:ffff:ffff:ffff:ffff:ffff:fffc 0.785 ms 0.846 ms 0.661 ms
root@BGPC_H1:~ #