Skip to content

Instantly share code, notes, and snippets.

@Shikugawa
Last active June 27, 2022 16:39
Show Gist options
  • Save Shikugawa/441741f3c43559560fdfaeb336e94cd5 to your computer and use it in GitHub Desktop.
Save Shikugawa/441741f3c43559560fdfaeb336e94cd5 to your computer and use it in GitHub Desktop.
nodes:
- name: C1
image: alpine:latest
interfaces:
- { name: net1, type: direct, args: R1#net1 }
- name: C2
image: alpine:latest
interfaces:
- { name: net2, type: direct, args: R1#net2 }
- name: C3
image: alpine:latest
interfaces:
- { name: net3, type: direct, args: R2#net3 }
- name: C4
image: alpine:latest
interfaces:
- { name: net4, type: direct, args: R2#net4 }
- name: R1
image: frrouting/frr:v8.1.0
docker_run_extra_args: --entrypoint bash
interfaces:
- { name: net1, type: direct, args: C1#net1 }
- { name: net2, type: direct, args: C2#net2 }
- { name: net0, type: direct, args: R2#net0 }
sysctls:
- sysctl: net.ipv6.conf.all.disable_ipv6=0
- sysctl: net.ipv6.conf.default.disable_ipv6=0
- sysctl: net.ipv4.ip_forward=1
- name: R2
image: frrouting/frr:v8.1.0
docker_run_extra_args: --entrypoint bash
interfaces:
- { name: net3, type: direct, args: C3#net3 }
- { name: net4, type: direct, args: C4#net4 }
- { name: net0, type: direct, args: R1#net0 }
sysctls:
- sysctl: net.ipv6.conf.all.disable_ipv6=0
- sysctl: net.ipv6.conf.default.disable_ipv6=0
- sysctl: net.ipv4.ip_forward=1
node_configs:
- name: C1
cmds:
- cmd: ip addr add 10.0.1.1/24 dev net1
- cmd: ip route add default via 10.0.1.2
- name: C2
cmds:
- cmd: ip addr add 10.0.2.1/24 dev net2
- cmd: ip route add default via 10.0.2.2
- name: C3
cmds:
- cmd: ip addr add 10.0.3.1/24 dev net3
- cmd: ip route add default via 10.0.3.2
- name: C4
cmds:
- cmd: ip addr add 10.0.4.1/24 dev net4
- cmd: ip route add default via 10.0.4.2
- name: R1
cmds:
- cmd: ip addr add 10.0.0.1/24 dev net0
- cmd: ip addr add 10.0.1.2/24 dev net1
- cmd: ip addr add 10.0.2.1/24 dev net2
- cmd: ip link add dev vrf10 type vrf table 10
- cmd: ip link set vrf10 up
- cmd: ip link add dev vrf20 type vrf table 20
- cmd: ip link set vrf20 up
- cmd: ip link set dev net1 master vrf10 up
- cmd: ip link set dev net2 master vrf20 up
- cmd: ip link add link net0 name net0.100 type vlan id 100
- cmd: ip link set dev net0.100 up
- cmd: ip link add link net0 name net0.200 type vlan id 200
- cmd: ip link set dev net0.200 up
- cmd: ip link set dev net0.100 master vrf10 up
- cmd: ip link set dev net0.200 master vrf20 up
- cmd: sed -i -e 's/bgpd=no/bgpd=yes/g' /etc/frr/daemons
- cmd: /usr/lib/frr/frrinit.sh start
- cmd: >-
vtysh -c 'conf t'
-c 'interface net0.100 vrf vrf10'
-c ' ip address 10.0.0.1/24'
-c '!'
-c 'interface net0.200 vrf vrf20'
-c ' ip address 10.0.0.1/24'
-c '!'
-c 'interface net1 vrf vrf10'
-c ' ip address 10.0.1.2/24'
-c '!'
-c 'interface net2 vrf vrf20'
-c ' ip address 10.0.2.2/24'
-c '!'
-c 'ip prefix-list OUT_PL1 permit 10.0.1.0/24'
-c 'ip prefix-list OUT_PL2 permit 10.0.2.0/24'
-c 'ip prefix-list IN_PL1 deny 10.0.3.0/24'
-c 'ip prefix-list IN_PL2 permit 10.0.4.0/24'
-c '!'
-c 'route-map OUT_RM1 permit 10'
-c ' match ip address prefix-list OUT_PL1'
-c '!'
-c 'route-map OUT_RM2 permit 10'
-c ' match ip address prefix-list OUT_PL2'
-c '!'
-c 'route-map IN_RM1 permit 10'
-c ' match ip address prefix-list IN_PL1'
-c '!'
-c 'route-map IN_RM2 permit 10'
-c ' match ip address prefix-list IN_PL2'
-c '!'
-c 'router bgp 65001 vrf vrf10'
-c ' no bgp ebgp-requires-policy'
-c ' bgp router-id 10.0.0.1'
-c ' neighbor 10.0.0.2 remote-as 65002'
-c ' neighbor 10.0.0.2 route-map OUT_RM1 out'
-c ' neighbor 10.0.0.2 route-map IN_RM1 in'
-c ' address-family ipv4 unicast'
-c ' redistribute connected'
-c ' exit-address-family'
-c '!'
-c 'router bgp 65001 vrf vrf20'
-c ' no bgp ebgp-requires-policy'
-c ' bgp router-id 10.0.0.1'
-c ' neighbor 10.0.0.2 remote-as 65002'
-c ' neighbor 10.0.0.2 route-map OUT_RM2 out'
-c ' neighbor 10.0.0.2 route-map IN_RM1 in'
-c ' address-family ipv4 unicast'
-c ' redistribute connected'
-c ' exit-address-family'
-c '!'
- cmd: vtysh -c 'write mem'
- name: R2
cmds:
- cmd: ip addr add 10.0.0.2/24 dev net0
- cmd: ip addr add 10.0.3.2/24 dev net3
- cmd: ip addr add 10.0.4.1/24 dev net4
- cmd: ip link add dev vrf10 type vrf table 10
- cmd: ip link set vrf10 up
- cmd: ip link add dev vrf20 type vrf table 20
- cmd: ip link set vrf20 up
- cmd: ip link set dev net3 master vrf10 up
- cmd: ip link set dev net4 master vrf20 up
- cmd: ip link add link net0 name net0.100 type vlan id 100
- cmd: ip link set dev net0.100 up
- cmd: ip link add link net0 name net0.200 type vlan id 200
- cmd: ip link set dev net0.200 up
- cmd: ip link set dev net0.100 master vrf10 up
- cmd: ip link set dev net0.200 master vrf20 up
- cmd: sed -i -e 's/bgpd=no/bgpd=yes/g' /etc/frr/daemons
- cmd: /usr/lib/frr/frrinit.sh start
- cmd: >-
vtysh -c 'conf t'
-c 'interface net0.100 vrf vrf10'
-c ' ip address 10.0.0.2/24'
-c '!'
-c 'interface net0.200 vrf vrf20'
-c ' ip address 10.20.255.2/24'
-c '!'
-c 'interface net3 vrf vrf10'
-c ' ip address 10.0.3.2/24'
-c '!'
-c 'interface net4 vrf vrf20'
-c ' ip address 10.0.4.2/24'
-c '!'
-c 'ip prefix-list PL1 permit any'
-c '!'
-c 'route-map RM1 permit 10'
-c ' match ip address prefix-list PL1'
-c '!'
-c 'router bgp 65002 vrf vrf10'
-c ' no bgp ebgp-requires-policy'
-c ' bgp router-id 10.0.0.2'
-c ' neighbor 10.0.0.1 remote-as 65001'
-c ' neighbor 10.0.0.1 route-map RM1 out'
-c ' address-family ipv4 unicast'
-c ' redistribute connected'
-c ' exit-address-family'
-c '!'
-c 'router bgp 65002 vrf vrf20'
-c ' no bgp ebgp-requires-policy'
-c ' bgp router-id 10.0.0.2'
-c ' neighbor 10.0.0.1 remote-as 65001'
-c ' neighbor 10.0.0.1 route-map RM1 out'
-c ' address-family ipv4 unicast'
-c ' redistribute connected'
-c ' exit-address-family'
-c '!'
- cmd: vtysh -c 'write mem'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment