# What's `runner.py` doing? ## Common configurations ### VPP1 ``` create host-interface name eth1 set int ip addr host-eth1 A1::1/120 set int state host-eth1 up ip route add ::/0 via host-eth1 A1::2 ``` ### VPP2 ``` create host-interface name eth1 set int ip addr host-eth1 A1::2/120 create host-interface name eth2 set int ip addr host-eth2 A2::1/120 set int state host-eth1 up set int state host-eth2 up ip route add ::/0 via host-eth2 A2::2 ``` ### VPP3 ``` create host-interface name eth1 set int ip addr host-eth1 A2::2/120 create host-interface name eth2 set int ip addr host-eth2 A3::1/120 set int state host-eth1 up set int state host-eth2 up ip route add ::/0 via host-eth1 A2::1 ``` ### VPP4 ``` create host-interface name eth1 set int ip addr host-eth1 A3::2/120 set int state host-eth1 up ip route add ::/0 via host-eth1 A3::1 ``` ## Drop-in for GTP-U over IPv4 What's happened when you run `test tmap`: $ ./runner.py test tmap Setting up a virtual interface of packet generator: #### VPP1 ``` create packet-generator interface pg0 set int mac address pg0 aa:bb:cc:dd:ee:01 set int ip addr pg0 172.16.0.1/30 set ip arp pg0 172.16.0.2/30 aa:bb:cc:dd:ee:02 ``` #### VPP4 ``` create packet-generator interface pg0 set int mac address pg0 aa:bb:cc:dd:ee:11 set int ip addr pg0 1.0.0.2/30 set ip arp pg0 1.0.0.1 aa:bb:cc:dd:ee:22 ``` SRv6 and IP routing settings: #### VPP1 ``` sr policy add bsid D1:: next D2:: next D3:: gtp4_removal sr_prefix D4::/32 v6src_prefix C1::/64 sr steer l3 172.20.0.1/32 via bsid D1:: ``` #### VPP2 ``` sr localsid address D2:: behavior end ip route add D3::/128 via host-eth2 A2::2 ``` #### VPP3 ``` sr localsid address D3:: behavior end ip route add D4::/32 via host-eth2 A3::2 ``` #### VPP4 ``` sr localsid prefix D4::/32 behavior end.m.gtp4.e v4src_position 64 ip route add 172.20.0.1/32 via pg0 1.0.0.1 ``` ## Packet generator and testing Example how to build custom SRv6 packet in scapy and ipaddress pkgs s = '\x11' * 4 + IPv4Address(u"192.168.192.10").packed + '\x11' * 8 ip6 = IPv6Address(s) IPv6(dst=ip6, src=ip6) ## end.m.gtp4.e First set behavior so our localsid node is called with the packet matching C1::1 in fib table sr localsid address C1::1 behavior end.m.gtp4.ess show sr localsids behaviors show sr localsid We should send a well formated packet to C::1 destination address that contains the correct spec as for end.m.gtp4.e with encapsulated ipv4 src and dst address and teid with port for the conversion to GTPU IPv4 packet ## additional commands gdb - breakpoint break sr_policy_rewrite.c:1620 break src/plugins/srv6-end/node.c:84 TMAP Linux: ip link add tmp1 type veth peer name tmp2 ip link set dev tmp1 up ip link set dev tmp2 up ip addr add 172.20.0.2/24 dev tmp2 create host-interface name tmp1 set int mac address host-tmp1 02:fe:98:c6:c8:7b set interface ip address host-tmp1 172.20.0.1/24 set interface state host-tmp1 up VPP set sr encaps source addr C1:: sr policy add bsid D1::999:2 next D2:: next D3:: gtp4_removal sr-prefix fc34:5678::/64 local-prefix C1::/64 sr steer l3 172.21.0.0/24 via bsid d1::999:2 END Linux create host-interface name tmp1 set int mac address host-tmp1 02:fe:98:c6:c8:7b set interface ip address host-tmp1 A1::1/64 set interface state host-tmp1 up VPP sr localsid address 1111:1111:c0a8:c00a:1122:1111:1111:1111 behavior end.m.gtp4.e trace add af-packet-input 10 sr localsid address C3:: behavior end.m.gtp4.e sr localsid address 2001:200:0:1ce1:3000:757f:0:2 behavior end.m.gtp4.e