Last active
February 22, 2019 02:04
-
-
Save taruta811/e745c8874f4e4ab1a3afcbf31a4ec7de to your computer and use it in GitHub Desktop.
End.DX4
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
## | |
# ping client1(192.168.1.100) to client2(192.168.2.100) | |
# | |
# eth0 eth0 eth1 eth1 eth0 eth0 | |
# (client1) ----------- (sr1) ----------- (sr2) ---------- (client2) | |
# 192.168.1.100/24 192.168.2.100/24 | |
## | |
# netns | |
ip netns add client1 | |
ip netns add sr1 | |
ip netns add sr2 | |
ip netns add client2 | |
# veth | |
ip link add name eth0 netns client1 type veth peer name eth0 netns sr1 | |
ip link add name eth1 netns sr1 type veth peer name eth1 netns sr2 | |
ip link add name eth0 netns sr2 type veth peer name eth0 netns client2 | |
ip netns exec client1 ip link set up dev eth0 | |
ip netns exec sr1 ip link set up dev eth0 | |
ip netns exec sr1 ip link set up dev eth1 | |
ip netns exec sr1 ip link set up dev lo | |
ip netns exec sr2 ip link set up dev eth1 | |
ip netns exec sr2 ip link set up dev eth0 | |
ip netns exec sr2 ip link set up dev lo | |
ip netns exec client2 ip link set up dev eth0 | |
ip netns exec client1 ip address add 192.168.1.100/24 dev eth0 | |
ip netns exec client1 ip route add default dev eth0 via 192.168.1.1 | |
ip netns exec sr1 ip address add 192.168.1.1/24 dev eth0 | |
ip netns exec sr1 ip -6 address add fc00::1/64 dev eth1 | |
ip netns exec sr1 ip -6 address add fc00:1::1/128 dev lo | |
ip netns exec sr1 ip -6 route add fc00:2::1/128 dev eth1 via fc00::2 | |
ip netns exec sr2 ip address add 192.168.2.1/24 dev eth0 | |
ip netns exec sr2 ip -6 address add fc00::2/64 dev eth1 | |
ip netns exec sr2 ip -6 address add fc00:2::1/128 dev lo | |
ip netns exec sr2 ip -6 route add fc00:1::1/128 dev eth1 via fc00::1 | |
ip netns exec client2 ip address add 192.168.2.100/24 dev eth0 | |
ip netns exec client2 ip route add default dev eth0 via 192.168.2.1 | |
# seg6 enable | |
ip netns exec sr1 sysctl -w net.ipv6.conf.all.seg6_enabled=1 | |
ip netns exec sr1 sysctl -w net.ipv6.conf.default.seg6_enabled=1 | |
ip netns exec sr1 sysctl -w net.ipv6.conf.eth0.seg6_enabled=1 | |
ip netns exec sr1 sysctl -w net.ipv6.conf.eth1.seg6_enabled=1 | |
ip netns exec sr1 sysctl -w net.ipv4.conf.all.rp_filter=0 | |
ip netns exec sr1 sysctl -w net.ipv6.conf.all.forwarding=1 | |
ip netns exec sr1 sysctl -w net.ipv4.conf.all.forwarding=1 | |
ip netns exec sr2 sysctl -w net.ipv6.conf.all.seg6_enabled=1 | |
ip netns exec sr2 sysctl -w net.ipv6.conf.default.seg6_enabled=1 | |
ip netns exec sr2 sysctl -w net.ipv6.conf.eth0.seg6_enabled=1 | |
ip netns exec sr2 sysctl -w net.ipv6.conf.eth1.seg6_enabled=1 | |
ip netns exec sr2 sysctl -w net.ipv4.conf.all.rp_filter=0 | |
ip netns exec sr2 sysctl -w net.ipv6.conf.all.forwarding=1 | |
ip netns exec sr2 sysctl -w net.ipv4.conf.all.forwarding=1 | |
## sr1 encap, decap | |
# encap | |
ip netns exec sr1 ip route add 192.168.2.0/24 encap seg6 mode encap segs fc00:2::1 dev eth1 | |
# decap | |
ip netns exec sr1 ip -6 route del local fc00:1::1 # 最初から設定されているloopback宛のlocal routeを削除 | |
ip netns exec sr1 ip -6 route add local fc00:1::1 encap seg6local action End.DX4 nh4 192.168.1.100 dev eth0 | |
## sr2 encap, decap | |
# encap | |
ip netns exec sr2 ip route add 192.168.1.0/24 encap seg6 mode encap segs fc00:1::1 dev eth1 | |
# decap | |
ip netns exec sr2 ip -6 route del local fc00:2::1 # 最初から設定されているloopback宛のlocal routeを削除 | |
ip netns exec sr2 ip -6 route add local fc00:2::1 encap seg6local action End.DX4 nh4 192.168.2.100 dev eth0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
## | |
# ping client1(192.168.1.100) to client2(192.168.3.100) | |
# | |
# eth0 eth0 eth1 eth1 eth0 eth1 eth0 eth0 | |
# (client1) ----------- (sr1) ----------- (sr2) ---------- (router1) --------- (client2) | |
# 192.168.1.100/24 192.168.3.100/24 | |
## | |
# netns | |
ip netns add client1 | |
ip netns add sr1 | |
ip netns add sr2 | |
ip netns add router1 | |
ip netns add client2 | |
# veth | |
ip link add name eth0 netns client1 type veth peer name eth0 netns sr1 | |
ip link add name eth1 netns sr1 type veth peer name eth1 netns sr2 | |
ip link add name eth0 netns sr2 type veth peer name eth1 netns router1 | |
ip link add name eth0 netns router1 type veth peer name eth0 netns client2 | |
ip netns exec client1 ip link set up dev eth0 | |
ip netns exec sr1 ip link set up dev eth0 | |
ip netns exec sr1 ip link set up dev eth1 | |
ip netns exec sr1 ip link set up dev lo | |
ip netns exec sr2 ip link set up dev eth1 | |
ip netns exec sr2 ip link set up dev eth0 | |
ip netns exec sr2 ip link set up dev lo | |
ip netns exec router1 ip link set up dev eth0 | |
ip netns exec router1 ip link set up dev eth1 | |
ip netns exec client2 ip link set up dev eth0 | |
ip netns exec client1 ip address add 192.168.1.100/24 dev eth0 | |
ip netns exec client1 ip route add default dev eth0 via 192.168.1.1 | |
ip netns exec sr1 ip address add 192.168.1.1/24 dev eth0 | |
ip netns exec sr1 ip -6 address add fc00::1/64 dev eth1 | |
ip netns exec sr1 ip -6 address add fc00:1::1/128 dev lo | |
ip netns exec sr1 ip -6 route add fc00:2::1/128 dev eth1 via fc00::2 | |
ip netns exec sr2 ip address add 192.168.2.1/24 dev eth0 | |
ip netns exec sr2 ip -6 address add fc00::2/64 dev eth1 | |
ip netns exec sr2 ip -6 address add fc00:2::1/128 dev lo | |
ip netns exec sr2 ip -6 route add fc00:1::1/128 dev eth1 via fc00::1 | |
ip netns exec sr2 ip route add 192.168.3.0/24 dev eth0 via 192.168.2.100 | |
ip netns exec router1 ip address add 192.168.2.100/24 dev eth1 | |
ip netns exec router1 ip address add 192.168.3.1/24 dev eth0 | |
ip netns exec router1 ip route add default dev eth1 via 192.168.2.1 | |
ip netns exec client2 ip address add 192.168.3.100/24 dev eth0 | |
ip netns exec client2 ip route add default dev eth0 via 192.168.3.1 | |
# seg6 enable | |
ip netns exec sr1 sysctl -w net.ipv6.conf.all.seg6_enabled=1 | |
ip netns exec sr1 sysctl -w net.ipv6.conf.default.seg6_enabled=1 | |
ip netns exec sr1 sysctl -w net.ipv6.conf.eth0.seg6_enabled=1 | |
ip netns exec sr1 sysctl -w net.ipv6.conf.eth1.seg6_enabled=1 | |
ip netns exec sr1 sysctl -w net.ipv4.conf.all.rp_filter=0 | |
ip netns exec sr1 sysctl -w net.ipv6.conf.all.forwarding=1 | |
ip netns exec sr1 sysctl -w net.ipv4.conf.all.forwarding=1 | |
ip netns exec sr2 sysctl -w net.ipv6.conf.all.seg6_enabled=1 | |
ip netns exec sr2 sysctl -w net.ipv6.conf.default.seg6_enabled=1 | |
ip netns exec sr2 sysctl -w net.ipv6.conf.eth0.seg6_enabled=1 | |
ip netns exec sr2 sysctl -w net.ipv6.conf.eth1.seg6_enabled=1 | |
ip netns exec sr2 sysctl -w net.ipv4.conf.all.rp_filter=0 | |
ip netns exec sr2 sysctl -w net.ipv6.conf.all.forwarding=1 | |
ip netns exec sr2 sysctl -w net.ipv4.conf.all.forwarding=1 | |
ip netns exec router1 sysctl -w net.ipv4.conf.all.rp_filter=0 | |
ip netns exec router1 sysctl -w net.ipv4.conf.all.forwarding=1 | |
## sr1 encap, decap | |
# encap | |
ip netns exec sr1 ip route add 192.168.3.0/24 encap seg6 mode encap segs fc00:2::1 dev eth1 | |
# decap | |
ip netns exec sr1 ip -6 route del local fc00:1::1 | |
ip netns exec sr1 ip -6 route add local fc00:1::1 encap seg6local action End.DX4 nh4 192.168.1.100 dev eth0 | |
## sr2 encap, decap | |
# encap | |
ip netns exec sr2 ip route add 192.168.1.0/24 encap seg6 mode encap segs fc00:1::1 dev eth1 | |
# decap | |
ip netns exec sr2 ip -6 route del local fc00:2::1 | |
ip netns exec sr2 ip -6 route add local fc00:2::1 encap seg6local action End.DX4 nh4 192.168.3.100 dev eth1 | |
## default route をrouter1に向けていいのであれば、下のような設定でも動く (10.1.1.1はダミーのアドレスで実際にはどのinterfaceにも設定されていない) | |
# ip netns exec sr2 ip route add default dev eth0 via 192.168.2.100 | |
# ip -6 r a local fc00:2::1 encap seg6local action End.DX4 nh4 10.1.1.1 dev lo | |
#補足 | |
# ip netns exec sr2 ip -6 route add local fc00:2::1 encap seg6local action End.DX4 nh4 192.168.2.100 dev eth1 | |
# この設定を入れた状態でclient1からclient2(192.168.3.100)にpingを打つと、192.168.2.100宛に192.168.3.100のARP requestを投げる |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
env.sh
の構成 (inner packetの宛先がSR nodeとconnectedな場合)はわりと素直に設定すれば動くenv2.sh
の構成 (inner packetの宛先がSR nodeとconnectedではない場合)に同じ設定だとうまく動かないのでdirty hackっぽい設定が要る
end.dt4があればもう少し綺麗にできるのかも
※ end functionをlocal routeとして設定しているが、SID用のtableを用意するのが正しい設定方法なのかも