From a2accbd50cc61ac6c1552e811ff36cb6cecacf4d Mon Sep 17 00:00:00 2001 From: Hirki Shirokura Date: Sun, 30 Dec 2018 12:52:14 +0900 Subject: [PATCH] WIP SRv6 eval (2018.12.30-12:52) * Add transit * Add vrf_redirect * Add binding_sid (WIP: End.B6.Insert isn't working fine) --- bin/tn | 17 +- examples/basic_srv6/README.md | 124 ++++++ examples/basic_srv6/binding_sid/README.md | 16 + examples/basic_srv6/binding_sid/spec.yaml | 225 +++++++++++ examples/basic_srv6/binding_sid/topo.jpeg | Bin 0 -> 1240387 bytes examples/basic_srv6/l2vpn/README.md | 15 + examples/basic_srv6/l2vpn/spec.yaml | 109 +++++ examples/basic_srv6/l2vpn/topo.jpeg | Bin 0 -> 984947 bytes examples/basic_srv6/{ => old}/spec.yaml | 0 examples/basic_srv6/{ => old}/topo.jpeg | Bin examples/basic_srv6/{ => old}/topo.png | Bin examples/basic_srv6/transit/README.md | 18 + examples/basic_srv6/transit/spec.yaml | 403 +++++++++++++++++++ examples/basic_srv6/transit/topo.jpeg | Bin 0 -> 839978 bytes examples/basic_srv6/vpn_v4_per_ce/README.md | 15 + examples/basic_srv6/vpn_v4_per_ce/spec.yaml | 107 +++++ examples/basic_srv6/vpn_v4_per_ce/topo.jpeg | Bin 0 -> 518743 bytes examples/basic_srv6/vpn_v4_per_vrf/README.md | 19 + examples/basic_srv6/vpn_v4_per_vrf/spec.yaml | 169 ++++++++ examples/basic_srv6/vpn_v4_per_vrf/topo.jpeg | Bin 0 -> 835443 bytes examples/basic_srv6/vpn_v6_per_ce/README.md | 15 + examples/basic_srv6/vpn_v6_per_ce/spec.yaml | 127 ++++++ examples/basic_srv6/vpn_v6_per_ce/topo.jpeg | Bin 0 -> 896462 bytes examples/basic_srv6/vpn_v6_per_vrf/README.md | 15 + examples/basic_srv6/vpn_v6_per_vrf/spec.yaml | 161 ++++++++ examples/basic_srv6/vpn_v6_per_vrf/topo.jpeg | Bin 0 -> 810854 bytes examples/basic_srv6/vrf_redirect/README.md | 16 + examples/basic_srv6/vrf_redirect/spec.yaml | 148 +++++++ examples/basic_srv6/vrf_redirect/topo.jpeg | Bin 0 -> 359272 bytes examples/basic_xdp/spec.yaml | 38 +- projects/srv6_demo_l3vpn/README.md | 17 + projects/srv6_demo_l3vpn/spec.yaml | 230 +++++++++++ projects/srv6_eval/README.md | 44 -- projects/srv6_eval/spec.yaml | 117 ------ 34 files changed, 1983 insertions(+), 182 deletions(-) create mode 100644 examples/basic_srv6/README.md create mode 100644 examples/basic_srv6/binding_sid/README.md create mode 100644 examples/basic_srv6/binding_sid/spec.yaml create mode 100644 examples/basic_srv6/binding_sid/topo.jpeg create mode 100644 examples/basic_srv6/l2vpn/README.md create mode 100644 examples/basic_srv6/l2vpn/spec.yaml create mode 100644 examples/basic_srv6/l2vpn/topo.jpeg rename examples/basic_srv6/{ => old}/spec.yaml (100%) rename examples/basic_srv6/{ => old}/topo.jpeg (100%) rename examples/basic_srv6/{ => old}/topo.png (100%) create mode 100644 examples/basic_srv6/transit/README.md create mode 100644 examples/basic_srv6/transit/spec.yaml create mode 100644 examples/basic_srv6/transit/topo.jpeg create mode 100644 examples/basic_srv6/vpn_v4_per_ce/README.md create mode 100644 examples/basic_srv6/vpn_v4_per_ce/spec.yaml create mode 100644 examples/basic_srv6/vpn_v4_per_ce/topo.jpeg create mode 100644 examples/basic_srv6/vpn_v4_per_vrf/README.md create mode 100644 examples/basic_srv6/vpn_v4_per_vrf/spec.yaml create mode 100644 examples/basic_srv6/vpn_v4_per_vrf/topo.jpeg create mode 100644 examples/basic_srv6/vpn_v6_per_ce/README.md create mode 100644 examples/basic_srv6/vpn_v6_per_ce/spec.yaml create mode 100644 examples/basic_srv6/vpn_v6_per_ce/topo.jpeg create mode 100644 examples/basic_srv6/vpn_v6_per_vrf/README.md create mode 100644 examples/basic_srv6/vpn_v6_per_vrf/spec.yaml create mode 100644 examples/basic_srv6/vpn_v6_per_vrf/topo.jpeg create mode 100644 examples/basic_srv6/vrf_redirect/README.md create mode 100644 examples/basic_srv6/vrf_redirect/spec.yaml create mode 100644 examples/basic_srv6/vrf_redirect/topo.jpeg create mode 100644 projects/srv6_demo_l3vpn/README.md create mode 100644 projects/srv6_demo_l3vpn/spec.yaml delete mode 100644 projects/srv6_eval/README.md delete mode 100644 projects/srv6_eval/spec.yaml diff --git a/bin/tn b/bin/tn index 7304a19..2ce14ab 100755 --- a/bin/tn +++ b/bin/tn @@ -62,9 +62,14 @@ node_configs: echo slnakdev test: - - cmds: + - name: p2p + cmds: - cmd: docker exec C0 ping -c2 10.0.0.2 - cmd: echo slankdev slankdev + - name: lo + cmds: + - cmd: docker exec C0 ping -c2 10.255.0.1 + - cmd: echo slankdev slankdev ''' text__mount_docker_netns=''' @@ -473,6 +478,10 @@ def command_conf(args): print('echo {}::[config]::fin'.format(node['name'])) postconf(appinfo.data) +def command_upconf(args): + command_up(args) + command_conf(args) + def command_reconf(args): command_reup(args) command_conf(args) @@ -588,6 +597,10 @@ def main(): help='Execute config-cmd in a running container') parser_conf.set_defaults(func=command_conf) + parser_reconf = subparsers.add_parser('upconf', + help='Create, start and config') + parser_reconf.set_defaults(func=command_upconf) + parser_reconf = subparsers.add_parser('reconf', help='Stop, remove, create, start and config') parser_reconf.set_defaults(func=command_reconf) @@ -630,7 +643,7 @@ def main(): appinfo.command=args.command need_data = {'ps', 'up', 'down', 'pull', 'exec', - 'build', 'conf', 'reconf', 'reup', 'test', 'img'} + 'build', 'conf', 'upconf', 'reconf', 'reup', 'test', 'img'} if args.command in need_data: try: filename = appinfo.specfile diff --git a/examples/basic_srv6/README.md b/examples/basic_srv6/README.md new file mode 100644 index 0000000..8c66d32 --- /dev/null +++ b/examples/basic_srv6/README.md @@ -0,0 +1,124 @@ + +# Segment Routing IPv6 Examples + +- **vpn-v4-per-ce**: IPv4 L3VPN [T.Encaps, End, End.DX4] +- **vpn-v6-per-ce**: IPv6 L3VPN [T.Encaps, End, End.DX6] +- **vpn-v4-per-vrf**: IPv4 L3VPN [T.Encaps, End, End.DT4] (WIP) +- **vpn-v6-per-vrf**: IPv6 L3VPN [T.Encaps, End, End.DT6] +- **l2vpn**: L2VPN [T.Encaps.L2, End, End.DX4] (XXX) +- **transit**: Transit Function Test with FRR, [T.Encaps, T.Insert, End, End.X] +- **vrf-redirect**: End.T Evaluation linux only without FRR, [End.T] (XXX) +- **binding-sid**: End.B6,End.B6.Encaps Evaluation. [End.B6, End.B6.Encaps] (WIP End.B6.Insert) + + +## Functions I want to test on linux +- [x] T.Insert: I don't understand how-to-use +- [x] T.Encaps +- [x] T.Encaps.L2: I don't understand how-to-use +- [x] End +- [x] End.X +- [ ] End.T: linux kernel can't perform End.T fine. (XXX) +- [x] End.DX6 +- [x] End.DX4 +- [x] End.DX2 +- [x] End.DT6 +- [ ] End.DT4: linux kernel isn't support yet +- [x] End.B6: linux kernel isn't working fine..? or I don't understand how-to-use. +- [x] End.B6.Encaps +- [ ] End.AM: linux kernel isn't support yet. **srext only** masquerading proxy +- [ ] End.AD: linux kernel isn't support yes. **srext only** dynamic proxy +- [ ] End.AS2: linux kernel isn't support yes. static proxy +- [ ] End.AS4: linux kernel isn't support yes. static proxy +- [ ] End.AS6: linux kernel isn't support yes. static proxy + +## Funcに関しての説明 +- **T.Encaps:**
+ この操作はトランジットノード + (すなわち、パケットを通してSRv6をサポートするルーターですが、 + ノード自体はSegmentリストにありません)で実行され、 + IPv6ヘッダーとSRHヘッダーをパケットの外側の層に追加し、 + 新しいものを定義できます。セグメントのリスト。 + パケットは、新しいIPv6ヘッダーのSRHに従って最初に転送されます。 +- **End:**
+ この操作では、Segment Leftを0(最後のホップではない) + にする必要があります。これにより、Segment Leftが1減少し、 + IPv6パケットの宛先アドレスが最も一般的なSRv6操作である次の + Segmentに更新されます。SR MPLSのプレフィックスSIDと同等です。 +- **End.X:**
+ この操作は基本的にEnd操作と同じですが、 + 処理したパケットを指定したネクストホップアドレスに + 送信できる点が異なります。 + SR MPLSのAdj-SIDと同じです。 +- **End.DX4:**
+ この操作ではSegment Leftが0であり、 + パケットがIPv4パケットをカプセル化しているため、 + 外側のIPv6ヘッダーは削除され、内部のIPv4パケットは + 指定されたネクストホップアドレスに転送されます。 + VPNv4のCEごとのラベルに相当します。 +- **End.DX6:**
+ この操作では、Segment Leftを0にしてIPv6パケットを + パケットにカプセル化し、外側のIPv6ヘッダーを削除して、 + 内部IPv6パケットを指定されたネクストホップアドレスに転送します。 + VPNv6 Per-CEラベルと同等です。 +- **End.B6:**
+ 既存のSRHに基づいて新しいSRHを挿入し、 + 新しいSegment listを定義すると、挿入された新しいSRHに + 従ってデータパケットが最初に転送されます。Binding-SIDと同等です。 +- **End.B6.Encaps:**
+ この操作は基本的にEnd.B6と同じですが、違いは、 + この操作では単にSRHルーティングヘッダーを追加するのではなく、 + 新しいIPv6ヘッダーとSRHをパケットの外側のレイヤーに追加することです。 + +## 参照 + +**Funcの概要に関してはこれらの画像がわかりやすい.(thx kamataさん)**
+ +| Function | Location | Description | Works-for | +| :------- | :------- | :---------- | :-------- | +| End | Core | DestとSRHを書き換えて, Next-hopをRIBから探して送る | Prefix-SID | +| End.X | Core | DestとSRHを書き換えて, 決められたNextHopへ送る | Adjacency-SID | +| End.T | Core | DestとSRHを書き換えて, NextHopを指定したRIBから探して送る | Multi-table Operation | +| End.DX2 | Edge | SRHを外して, 決められた送信IFへ送る (NH=59) | L2VPN | +| End.DX6 | Edge | SRHを外して, 決められたIPv6 NextHopへ送る (NH=41) | VPNv6 Per-CE Label | +| End.DX4 | Edge | SRHを外して, 決められたIPv4 NextHopへ送る (NH=4) | VPNv4 Per-CE Label | +| End.DT6 | Edge | SRHを外して, IPv6 NextHopを指定したRIBから探して送る (NH=41) | VPNv6 Per-VRF Label | +| End.DT4 | Edge | SRHを外して, IPv4 NextHopを指定したRIBから探して送る (NH=4) | VPNv4 Per-VRF Label | +| End.B6 | Edge | SRHは触らず, 新しいSID List(SRH)を挿入して, その先頭に送る | Binding SID | +| End.B6.Encaps | Edge | SRHを書き換えて, 新しいSID List(OuterHdr)でEncapして, その先頭に送る | Binding SID (Encap) | +| End.BM | Edge | DestとSRHを書き換えて, Labelを付与して, その先頭に送る | SRv6/SR-MPLS Binding | +| End.S | Core | 一番最後(or複数)のSIDでTable検索し, NextHopを探して送る | ICN | +| End.AS | Core | OuterHdrを外して, 決められた送信IFへ送る.
決められた受信IFに入ってきたPktにOuterHdrを付与し, その先頭へ送る| Service-Chaining (Proxy) | +| End.AM | Core | DestとSRHを書き換えて, 決められた送信IFへ送る.
決められた受信IFに入ってきたPktにSRHを付与し, その先頭に送る. | Service-Chaining (Masq) | +| T | Core | 通常のIPv6 Routing | - | +| T.Insert | Core | 新しいSRHを挿入して, その先頭に送る | - | +| T.Encaps | Core | 新しいIPv6 Hdr(SRHつき)を挿入して, その先頭に送る(L3)􏲟| - | +| T.Encaps.L2 | Core | 新しいIPv6 Hdr(SRHつき)を挿入して, その先頭に送る(L2)􏲟| - | + +**iproute2 CLIに関してはこれらがわかりやすい.(thx ebikenさん)**
+``` +# ip -6 route add encap seg6local action (dev | via ) [table localsid] +# ip -6 route add fc00::1/128 encap seg6local \ + action End via 2001:db8::1 + action End.X nh6 fc00::1:1 via 2001:db8::1 + action End.T table 100 via 2001:db8::1 + action End.DX2 oif lxcbr0 via 2001:db8::1 + action End.DX4 nh4 10.0.3.254 via 2001:db8::1 + action End.DX6 nh6 fc00::1:1 via 2001:db8::1 + action End.DT6 table 100 via 2001:db8::1 + action End.B6 srh segs beaf::1,beaf::2 via 2001:db8::1 + action End.B6.Encaps srh segs beaf::1,beaf::2 via 2001:db8::1 + +# ip -6 route add encap seg6 mode segs [hmac ] (dev | via ) +# ip -6 route add fc00:b::10/128 encap seg6 mode inline segs fc00:3::11,fc00:3::12,fc00:3::13 via fc00:a::a +# ip -6 route add fc00:b::10/128 encap seg6 mode encap segs fc00:3::11,fc00:3::12,fc00:3::13 via fc00:a::a + +# ip sr tunsrc set +# ip sr hmac set +``` + +- https://www.sdnlab.com/22842.html +- https://www.janog.gr.jp/meeting/janog40/application/files/2415/0051/7614/janog40-sr-kamata-takeda-00.pdf +- https://www.slideshare.net/kentaroebisawa/zebra-srv6-cli-on-linux-dataplane-enog49 +- http://www.segment-routing.net/open-software/linux/ +- http://www.segment-routing.net/open-software/vpp/ + diff --git a/examples/basic_srv6/binding_sid/README.md b/examples/basic_srv6/binding_sid/README.md new file mode 100644 index 0000000..3237930 --- /dev/null +++ b/examples/basic_srv6/binding_sid/README.md @@ -0,0 +1,16 @@ + +# VRF Redirect +- Hiroki Shirokura +- 2018.12.31 + +![](topo.jpeg) + +``` +$ cd +$ tn up | sudo sh +$ tn conf | sudo sh +$ tn test p2p | sudo sh +$ tn test blue | sudo sh +$ tn test green | sudo sh +``` + diff --git a/examples/basic_srv6/binding_sid/spec.yaml b/examples/basic_srv6/binding_sid/spec.yaml new file mode 100644 index 0000000..22c19a8 --- /dev/null +++ b/examples/basic_srv6/binding_sid/spec.yaml @@ -0,0 +1,225 @@ + +postinit: + - cmds: + - cmd: make -C /home/vagrant/git/srdump install_docker + +nodes: + - name: R1 + image: slankdev/frr + interfaces: + - { name: net0, type: direct, args: R2#net0 } + - { name: net1, type: direct, args: R3#net0 } + - name: R2 + image: slankdev/frr + interfaces: + - { name: net0, type: direct, args: R1#net0 } + - { name: net1, type: direct, args: R4#net0 } + - name: R3 + image: slankdev/frr + interfaces: + - { name: net0, type: direct, args: R1#net1 } + - { name: net1, type: direct, args: S11#net0 } + - { name: net2, type: direct, args: S21#net0 } + - name: R4 + image: slankdev/frr + interfaces: + - { name: net0, type: direct, args: R2#net1 } + - { name: net1, type: direct, args: S12#net0 } + - { name: net2, type: direct, args: S22#net0 } + - name: S11 + image: slankdev/frr + interfaces: + - { name: net0, type: direct, args: R3#net1 } + - name: S12 + image: slankdev/frr + interfaces: + - { name: net0, type: direct, args: R4#net1 } + - name: S21 + image: slankdev/frr + interfaces: + - { name: net0, type: direct, args: R3#net2 } + - name: S22 + image: slankdev/frr + interfaces: + - { name: net0, type: direct, args: R4#net2 } + +node_configs: + - name: R1 + cmds: + - cmd: sysctl -w 'net.ipv6.conf.all.forwarding=1' + - cmd: sysctl -w 'net.ipv6.conf.all.disable_ipv6=0' + - cmd: sysctl -w 'net.ipv6.conf.all.seg6_enabled=1' + - cmd: sysctl -w 'net.ipv4.conf.all.rp_filter=0' + - cmd: sysctl -w 'net.ipv6.conf.default.forwarding=1' + - cmd: sysctl -w 'net.ipv6.conf.default.disable_ipv6=0' + - cmd: sysctl -w 'net.ipv6.conf.default.seg6_enabled=1' + - cmd: sysctl -w 'net.ipv4.conf.default.rp_filter=0' + - cmd: sysctl -w 'net.ipv6.conf.lo.seg6_enabled=1' + - cmd: sysctl -w 'net.ipv4.conf.lo.rp_filter=0' + - cmd: sysctl -w 'net.ipv6.conf.net0.seg6_enabled=1' + - cmd: sysctl -w 'net.ipv4.conf.net0.rp_filter=0' + - cmd: sysctl -w 'net.ipv6.conf.net1.seg6_enabled=1' + - cmd: sysctl -w 'net.ipv4.conf.net1.rp_filter=0' + - cmd: ip addr add fc00:1::1/64 dev lo + - cmd: ip addr add 2000::1/64 dev net0 + - cmd: ip addr add 2001::1/64 dev net1 + - cmd: ip -6 route add fc00:2::/64 via 2000::2 + - cmd: ip -6 route add fc00:3::/64 via 2001::2 + ## + - cmd: ip sr tunsrc set fc00:1::1 + - cmd: ip -6 route add fc00:1::10 encap seg6local action End.B6.Encaps srh segs fc00:2::10 dev net0 + - cmd: ip -6 route add fc00:1::11 encap seg6local action End.DX6 nh6 2001::2 dev net0 + ## + # ip -6 route add fc00:1::20 encap seg6local action End.B6 srh segs fc00:2::20 dev net0 + - name: R2 + cmds: + - cmd: sysctl -w 'net.ipv6.conf.all.forwarding=1' + - cmd: sysctl -w 'net.ipv6.conf.all.disable_ipv6=0' + - cmd: sysctl -w 'net.ipv6.conf.all.seg6_enabled=1' + - cmd: sysctl -w 'net.ipv4.conf.all.rp_filter=0' + - cmd: sysctl -w 'net.ipv6.conf.default.forwarding=1' + - cmd: sysctl -w 'net.ipv6.conf.default.disable_ipv6=0' + - cmd: sysctl -w 'net.ipv6.conf.default.seg6_enabled=1' + - cmd: sysctl -w 'net.ipv4.conf.default.rp_filter=0' + - cmd: sysctl -w 'net.ipv6.conf.lo.seg6_enabled=1' + - cmd: sysctl -w 'net.ipv4.conf.lo.rp_filter=0' + - cmd: sysctl -w 'net.ipv6.conf.net0.seg6_enabled=1' + - cmd: sysctl -w 'net.ipv4.conf.net0.rp_filter=0' + - cmd: sysctl -w 'net.ipv6.conf.net1.seg6_enabled=1' + - cmd: sysctl -w 'net.ipv4.conf.net1.rp_filter=0' + - cmd: ip addr add fc00:2::1/64 dev lo + - cmd: ip addr add 2000::2/64 dev net0 + - cmd: ip addr add 2001::10/64 dev net1 + - cmd: ip -6 route add fc00:1::/64 via 2000::1 + - cmd: ip -6 route add fc00:4::/64 via 2001::20 + ## + - cmd: ip sr tunsrc set fc00:2::1 + - cmd: ip -6 route add fc00:2::10 encap seg6local action End.DX6 nh6 2001::20 dev net1 + - cmd: ip -6 route add fc00:2::11 encap seg6local action End.B6.Encaps srh segs fc00:1::11 dev net0 + ## + #?XXX ip -6 route add fc00:2::20 encap seg6local action End via 2001::20 + - name: R3 + cmds: + - cmd: sysctl -w 'net.ipv6.conf.all.forwarding=1' + - cmd: sysctl -w 'net.ipv6.conf.all.disable_ipv6=0' + - cmd: sysctl -w 'net.ipv6.conf.all.seg6_enabled=1' + - cmd: sysctl -w 'net.ipv4.conf.all.rp_filter=0' + - cmd: sysctl -w 'net.ipv6.conf.default.forwarding=1' + - cmd: sysctl -w 'net.ipv6.conf.default.disable_ipv6=0' + - cmd: sysctl -w 'net.ipv6.conf.default.seg6_enabled=1' + - cmd: sysctl -w 'net.ipv4.conf.default.rp_filter=0' + - cmd: sysctl -w 'net.ipv6.conf.lo.seg6_enabled=1' + - cmd: sysctl -w 'net.ipv4.conf.lo.rp_filter=0' + - cmd: sysctl -w 'net.ipv6.conf.net0.seg6_enabled=1' + - cmd: sysctl -w 'net.ipv4.conf.net0.rp_filter=0' + - cmd: sysctl -w 'net.ipv6.conf.net1.seg6_enabled=1' + - cmd: sysctl -w 'net.ipv4.conf.net1.rp_filter=0' + - cmd: sysctl -w 'net.ipv6.conf.net2.seg6_enabled=1' + - cmd: sysctl -w 'net.ipv4.conf.net2.rp_filter=0' + - cmd: ip addr add fc00:3::1/64 dev lo + - cmd: ip addr add 2001::2/64 dev net0 + - cmd: ip addr add 10.10.1.1/24 dev net1 + - cmd: ip addr add 10.20.1.1/24 dev net2 + - cmd: ip -6 route add fc00:1::/64 via 2001::1 + ## + - cmd: ip sr tunsrc set fc00:3::1 + - cmd: ip route add 10.10.2.0/24 encap seg6 mode encap segs fc00:1::10,fc00:4::10 dev net0 + - cmd: ip -6 route add fc00:3::11 encap seg6local action End.DX4 nh4 10.10.1.2 dev net0 + ## + # ip route add 10.20.2.0/24 encap seg6 mode encap segs fc00:1::20,fc00:4::20 dev net0 + - name: R4 + cmds: + - cmd: sysctl -w 'net.ipv6.conf.all.forwarding=1' + - cmd: sysctl -w 'net.ipv6.conf.all.disable_ipv6=0' + - cmd: sysctl -w 'net.ipv6.conf.all.seg6_enabled=1' + - cmd: sysctl -w 'net.ipv4.conf.all.rp_filter=0' + - cmd: sysctl -w 'net.ipv6.conf.default.forwarding=1' + - cmd: sysctl -w 'net.ipv6.conf.default.disable_ipv6=0' + - cmd: sysctl -w 'net.ipv6.conf.default.seg6_enabled=1' + - cmd: sysctl -w 'net.ipv4.conf.default.rp_filter=0' + - cmd: sysctl -w 'net.ipv6.conf.lo.seg6_enabled=1' + - cmd: sysctl -w 'net.ipv4.conf.lo.rp_filter=0' + - cmd: sysctl -w 'net.ipv6.conf.net0.seg6_enabled=1' + - cmd: sysctl -w 'net.ipv4.conf.net0.rp_filter=0' + - cmd: sysctl -w 'net.ipv6.conf.net1.seg6_enabled=1' + - cmd: sysctl -w 'net.ipv4.conf.net1.rp_filter=0' + - cmd: sysctl -w 'net.ipv6.conf.net2.seg6_enabled=1' + - cmd: sysctl -w 'net.ipv4.conf.net2.rp_filter=0' + - cmd: ip addr add fc00:4::1/64 dev lo + - cmd: ip addr add 2001::20/64 dev net0 + - cmd: ip addr add 10.10.2.1/24 dev net1 + - cmd: ip addr add 10.20.2.1/24 dev net2 + - cmd: ip -6 route add fc00:2::/64 via 2001::10 + ## + - cmd: ip sr tunsrc set fc00:4::1 + - cmd: ip -6 route add fc00:4::10 encap seg6local action End.DX4 nh4 10.10.2.2 dev net0 + - cmd: ip route add 10.10.1.0/24 encap seg6 mode encap segs fc00:2::11,fc00:3::11 dev net0 + + - name: S11 + cmds: + - cmd: ip addr add 10.10.1.2/24 dev net0 + - cmd: ip route replace default via 10.10.1.1 + - name: S12 + cmds: + - cmd: ip addr add 10.10.2.2/24 dev net0 + - cmd: ip route replace default via 10.10.2.1 + - name: S21 + cmds: + - cmd: ip addr add 10.20.1.2/24 dev net0 + - cmd: ip route replace default via 10.20.1.1 + - name: S22 + cmds: + - cmd: ip addr add 10.20.2.2/24 dev net0 + - cmd: ip route replace default via 10.20.2.1 + +test: + - name: p2p + cmds: + - cmd: docker exec S11 ping -c2 10.10.1.1 + - cmd: docker exec S11 ping -c2 10.10.1.2 + - cmd: docker exec S12 ping -c2 10.10.2.1 + - cmd: docker exec S12 ping -c2 10.10.2.2 + - cmd: docker exec S21 ping -c2 10.20.1.1 + - cmd: docker exec S21 ping -c2 10.20.1.2 + - cmd: docker exec S22 ping -c2 10.20.2.1 + - cmd: docker exec S22 ping -c2 10.20.2.2 + - cmd: docker exec R1 ping -c2 2000::1 + - cmd: docker exec R1 ping -c2 2000::2 + - cmd: docker exec R1 ping -c2 2001::1 + - cmd: docker exec R1 ping -c2 2001::2 + - cmd: docker exec R2 ping -c2 2000::1 + - cmd: docker exec R2 ping -c2 2000::2 + - cmd: docker exec R2 ping -c2 2001::10 + - cmd: docker exec R2 ping -c2 2001::20 + - cmd: docker exec R3 ping -c2 2001::1 + - cmd: docker exec R3 ping -c2 2001::2 + - cmd: docker exec R3 ping -c2 10.10.1.1 + - cmd: docker exec R3 ping -c2 10.10.1.2 + - cmd: docker exec R3 ping -c2 10.20.1.1 + - cmd: docker exec R3 ping -c2 10.20.1.2 + - cmd: docker exec R4 ping -c2 2001::10 + - cmd: docker exec R4 ping -c2 2001::20 + - cmd: docker exec R4 ping -c2 10.10.2.1 + - cmd: docker exec R4 ping -c2 10.10.2.2 + - cmd: docker exec R4 ping -c2 10.20.2.1 + - cmd: docker exec R4 ping -c2 10.20.2.2 + - name: bb + cmds: + - cmd: docker exec R1 ping -c2 fc00:1::1 + - cmd: docker exec R1 ping -c2 fc00:2::1 + - cmd: docker exec R1 ping -c2 fc00:3::1 + - cmd: docker exec R2 ping -c2 fc00:1::1 + - cmd: docker exec R2 ping -c2 fc00:2::1 + - cmd: docker exec R2 ping -c2 fc00:4::1 + - cmd: docker exec R3 ping -c2 fc00:1::1 + - cmd: docker exec R3 ping -c2 fc00:3::1 + - cmd: docker exec R4 ping -c2 fc00:2::1 + - cmd: docker exec R4 ping -c2 fc00:4::1 + - name: vpn + cmds: + - cmd: docker exec S11 ping -c2 10.10.2.2 + # - cmd: docker exec S12 ping -c2 10.10.1.2 + # - cmd: docker exec S21 ping -c2 10.20.2.2 + # - cmd: docker exec S22 ping -c2 10.20.1.2 + + diff --git a/examples/basic_srv6/binding_sid/topo.jpeg b/examples/basic_srv6/binding_sid/topo.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..5b9b543bd5f1900c695ca93e71112491222a684b GIT binary patch literal 1240387 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