mirror of
https://github.com/openvswitch/ovs
synced 2025-08-22 01:51:26 +00:00
It's not a system test as it runs with dummy datapath and ports and it has nothing to do with layer 3 tunnels. It should be with other userspace tunnel tests. While moving also making it a little nicer visually and less error prone by requesting port numbers for all the ports. Acked-by: Mike Pattrick <mkp@redhat.com> Acked-by: Eelco Chaudron <echaudro@redhat.com> Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
196 lines
8.1 KiB
Plaintext
196 lines
8.1 KiB
Plaintext
AT_BANNER([layer3-tunnels])
|
|
|
|
AT_SETUP([layer3 - ping over VXLAN-GPE])
|
|
OVS_TRAFFIC_VSWITCHD_START([set Bridge br0 other-config:hwaddr="00:12:34:56:78:bb"])
|
|
OVS_CHECK_VXLAN_GPE()
|
|
OVS_CHECK_IPROUTE_ENCAP()
|
|
|
|
ADD_BR([br-underlay])
|
|
|
|
ADD_NAMESPACES(at_ns0)
|
|
|
|
dnl Set up underlay link from host into the namespace using veth pair.
|
|
ADD_VETH(p0, at_ns0, br-underlay, "172.31.1.1/24")
|
|
AT_CHECK([ip addr add dev br-underlay "172.31.1.100/24"])
|
|
AT_CHECK([ip link set dev br-underlay up])
|
|
|
|
dnl Set up tunnel endpoints on OVS outside the namespace and with a native
|
|
dnl linux device inside the namespace.
|
|
ADD_OVS_TUNNEL([vxlan], [br0], [at_vxlan0], [172.31.1.1], [10.1.1.2/24],
|
|
[options:packet_type=legacy_l3 options:exts=gpe])
|
|
AT_CHECK([ip neigh add 10.1.1.1 lladdr 00:12:34:56:78:aa dev br0])
|
|
NS_CHECK_EXEC([at_ns0], [ip link add dev at_vxlan1 type vxlan dstport 4789 external gpe])
|
|
NS_CHECK_EXEC([at_ns0], [ip addr add dev at_vxlan1 10.1.1.1/24])
|
|
NS_CHECK_EXEC([at_ns0], [ip link set dev at_vxlan1 mtu 1450 up])
|
|
NS_CHECK_EXEC([at_ns0], [ip route add 10.1.1.2/32 encap ip id 0 dst 172.31.1.100 dev at_vxlan1])
|
|
|
|
AT_CHECK([ovs-ofctl add-flow br-underlay "actions=normal"])
|
|
|
|
dnl Now add rules for OVS to forward to the tunnel and local port
|
|
AT_CHECK([ovs-ofctl add-flow br0 "priority=1 action=drop"])
|
|
AT_CHECK([ovs-ofctl add-flow br0 "priority=100 ip,nw_dst=10.1.1.1 action=output:at_vxlan0"])
|
|
AT_CHECK([ovs-ofctl add-flow br0 "priority=100 ip,nw_dst=10.1.1.2 action=mod_dl_src:00:12:34:56:78:aa,mod_dl_dst:00:12:34:56:78:bb,local"])
|
|
|
|
OVS_WAIT_UNTIL([ip netns exec at_ns0 ping -c 1 10.1.1.2])
|
|
|
|
dnl First, check the underlay
|
|
NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 172.31.1.100 | FORMAT_PING], [0], [dnl
|
|
3 packets transmitted, 3 received, 0% packet loss, time 0ms
|
|
])
|
|
|
|
dnl Okay, now check the overlay with different packet sizes
|
|
NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
|
|
3 packets transmitted, 3 received, 0% packet loss, time 0ms
|
|
])
|
|
NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
|
|
3 packets transmitted, 3 received, 0% packet loss, time 0ms
|
|
])
|
|
|
|
OVS_TRAFFIC_VSWITCHD_STOP
|
|
AT_CLEANUP
|
|
|
|
AT_SETUP([layer3 - ping over GRE])
|
|
OVS_TRAFFIC_VSWITCHD_START([set Bridge br0 other-config:hwaddr="00:12:34:56:78:bb"])
|
|
OVS_CHECK_GRE_L3()
|
|
OVS_CHECK_IPROUTE_ENCAP()
|
|
|
|
ADD_BR([br-underlay])
|
|
|
|
ADD_NAMESPACES(at_ns0)
|
|
|
|
dnl Set up underlay link from host into the namespace using veth pair.
|
|
ADD_VETH(p0, at_ns0, br-underlay, "172.31.1.1/24")
|
|
AT_CHECK([ip addr add dev br-underlay "172.31.1.100/24"])
|
|
AT_CHECK([ip link set dev br-underlay up])
|
|
|
|
dnl Set up tunnel endpoints on OVS outside the namespace and with a native
|
|
dnl linux device inside the namespace.
|
|
ADD_OVS_TUNNEL([gre], [br0], [at_gre0], [172.31.1.1], [10.1.1.2/24],
|
|
[options:packet_type=legacy_l3])
|
|
AT_CHECK([ip neigh add 10.1.1.1 lladdr 00:12:34:56:78:aa dev br0])
|
|
NS_CHECK_EXEC([at_ns0], [ip link add dev at_gre1 type gre remote 172.31.1.100])
|
|
NS_CHECK_EXEC([at_ns0], [ip addr add dev at_gre1 10.1.1.1/24])
|
|
NS_CHECK_EXEC([at_ns0], [ip link set dev at_gre1 mtu 1450 up])
|
|
NS_CHECK_EXEC([at_ns0], [ip route add 10.1.1.2/32 encap ip id 0 dst 172.31.1.100 dev at_gre1])
|
|
|
|
AT_CHECK([ovs-ofctl add-flow br-underlay "actions=normal"])
|
|
|
|
dnl Now add rules for OVS to forward to the tunnel and local port
|
|
AT_CHECK([ovs-ofctl add-flow br0 "priority=1 action=drop"])
|
|
AT_CHECK([ovs-ofctl add-flow br0 "priority=100 ip,nw_dst=10.1.1.1 action=output:at_gre0"])
|
|
AT_CHECK([ovs-ofctl add-flow br0 "priority=100 ip,nw_dst=10.1.1.2 action=mod_dl_src:00:12:34:56:78:aa,mod_dl_dst:00:12:34:56:78:bb,local"])
|
|
|
|
OVS_WAIT_UNTIL([ip netns exec at_ns0 ping -c 1 10.1.1.2])
|
|
|
|
dnl First, check the underlay
|
|
NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 172.31.1.100 | FORMAT_PING], [0], [dnl
|
|
3 packets transmitted, 3 received, 0% packet loss, time 0ms
|
|
])
|
|
|
|
dnl Okay, now check the overlay with different packet sizes
|
|
NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
|
|
3 packets transmitted, 3 received, 0% packet loss, time 0ms
|
|
])
|
|
NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
|
|
3 packets transmitted, 3 received, 0% packet loss, time 0ms
|
|
])
|
|
|
|
OVS_TRAFFIC_VSWITCHD_STOP
|
|
AT_CLEANUP
|
|
|
|
AT_SETUP([layer3 - ping over MPLS Bareudp])
|
|
OVS_CHECK_BAREUDP()
|
|
OVS_TRAFFIC_VSWITCHD_START([_ADD_BR([br1])])
|
|
ADD_NAMESPACES(at_ns0, at_ns1)
|
|
|
|
ADD_VETH(p0, at_ns0, br0, "10.1.1.1/24", "36:b1:ee:7c:01:01")
|
|
ADD_VETH(p1, at_ns1, br1, "10.1.1.2/24", "36:b1:ee:7c:01:02")
|
|
|
|
ADD_OVS_TUNNEL([bareudp], [br0], [at_bareudp0], [8.1.1.3], [8.1.1.2/24],
|
|
[ options:local_ip=8.1.1.2 options:packet_type="legacy_l3" options:payload_type=mpls options:dst_port=6635])
|
|
|
|
ADD_OVS_TUNNEL([bareudp], [br1], [at_bareudp1], [8.1.1.2], [8.1.1.3/24],
|
|
[options:local_ip=8.1.1.3 options:packet_type="legacy_l3" options:payload_type=mpls options:dst_port=6635])
|
|
|
|
AT_DATA([flows0.txt], [dnl
|
|
table=0,priority=100,dl_type=0x0800 actions=push_mpls:0x8847,set_mpls_label:3,output:at_bareudp0
|
|
table=0,priority=100,dl_type=0x8847 in_port=at_bareudp0 actions=pop_mpls:0x0800,set_field:36:b1:ee:7c:01:01->dl_dst,set_field:36:b1:ee:7c:01:02->dl_src,output:ovs-p0
|
|
table=0,priority=10 actions=normal
|
|
])
|
|
|
|
AT_DATA([flows1.txt], [dnl
|
|
table=0,priority=100,dl_type=0x0800 actions=push_mpls:0x8847,set_mpls_label:3,output:at_bareudp1
|
|
table=0,priority=100,dl_type=0x8847 in_port=at_bareudp1 actions=pop_mpls:0x0800,set_field:36:b1:ee:7c:01:02->dl_dst,set_field:36:b1:ee:7c:01:01->dl_src,output:ovs-p1
|
|
table=0,priority=10 actions=normal
|
|
])
|
|
|
|
AT_CHECK([ip link add patch0 type veth peer name patch1])
|
|
on_exit 'ip link del patch0'
|
|
|
|
AT_CHECK([ip link set dev patch0 up])
|
|
AT_CHECK([ip link set dev patch1 up])
|
|
AT_CHECK([ovs-vsctl add-port br0 patch0])
|
|
AT_CHECK([ovs-vsctl add-port br1 patch1])
|
|
|
|
|
|
AT_CHECK([ovs-ofctl -O OpenFlow13 add-flows br0 flows0.txt])
|
|
AT_CHECK([ovs-ofctl -O OpenFlow13 add-flows br1 flows1.txt])
|
|
|
|
NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
|
|
3 packets transmitted, 3 received, 0% packet loss, time 0ms
|
|
])
|
|
|
|
NS_CHECK_EXEC([at_ns1], [ping -q -c 3 -i 0.3 -W 2 10.1.1.1 | FORMAT_PING], [0], [dnl
|
|
3 packets transmitted, 3 received, 0% packet loss, time 0ms
|
|
])
|
|
OVS_TRAFFIC_VSWITCHD_STOP
|
|
AT_CLEANUP
|
|
|
|
AT_SETUP([layer3 - ping over Bareudp])
|
|
OVS_CHECK_BAREUDP()
|
|
OVS_TRAFFIC_VSWITCHD_START([_ADD_BR([br1])])
|
|
ADD_NAMESPACES(at_ns0, at_ns1)
|
|
|
|
ADD_VETH(p0, at_ns0, br0, "10.1.1.1/24", "36:b1:ee:7c:01:01")
|
|
ADD_VETH(p1, at_ns1, br1, "10.1.1.2/24", "36:b1:ee:7c:01:02")
|
|
|
|
ADD_OVS_TUNNEL([bareudp], [br0], [at_bareudp0], [8.1.1.3], [8.1.1.2/24],
|
|
[ options:local_ip=8.1.1.2 options:packet_type="legacy_l3" options:payload_type=ip options:dst_port=6636])
|
|
|
|
ADD_OVS_TUNNEL([bareudp], [br1], [at_bareudp1], [8.1.1.2], [8.1.1.3/24],
|
|
[options:local_ip=8.1.1.3 options:packet_type="legacy_l3" options:payload_type=ip options:dst_port=6636])
|
|
|
|
AT_DATA([flows0.txt], [dnl
|
|
table=0,priority=100,dl_type=0x0800 in_port=ovs-p0, actions=output:at_bareudp0
|
|
table=0,priority=100,dl_type=0x0800 in_port=at_bareudp0 actions=set_field:36:b1:ee:7c:01:01->dl_dst,set_field:36:b1:ee:7c:01:02->dl_src,output:ovs-p0
|
|
table=0,priority=10 actions=normal
|
|
])
|
|
|
|
AT_DATA([flows1.txt], [dnl
|
|
table=0,priority=100,dl_type=0x0800 in_port=ovs-p1 actions=output:at_bareudp1
|
|
table=0,priority=100,dl_type=0x0800 in_port=at_bareudp1 actions=set_field:36:b1:ee:7c:01:02->dl_dst,set_field:36:b1:ee:7c:01:01->dl_src,output:ovs-p1
|
|
table=0,priority=10 actions=normal
|
|
])
|
|
|
|
AT_CHECK([ip link add patch0 type veth peer name patch1])
|
|
on_exit 'ip link del patch0'
|
|
|
|
AT_CHECK([ip link set dev patch0 up])
|
|
AT_CHECK([ip link set dev patch1 up])
|
|
AT_CHECK([ovs-vsctl add-port br0 patch0])
|
|
AT_CHECK([ovs-vsctl add-port br1 patch1])
|
|
|
|
|
|
AT_CHECK([ovs-ofctl -O OpenFlow13 add-flows br0 flows0.txt])
|
|
AT_CHECK([ovs-ofctl -O OpenFlow13 add-flows br1 flows1.txt])
|
|
|
|
NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
|
|
3 packets transmitted, 3 received, 0% packet loss, time 0ms
|
|
])
|
|
|
|
NS_CHECK_EXEC([at_ns1], [ping -q -c 3 -i 0.3 -W 2 10.1.1.1 | FORMAT_PING], [0], [dnl
|
|
3 packets transmitted, 3 received, 0% packet loss, time 0ms
|
|
])
|
|
OVS_TRAFFIC_VSWITCHD_STOP
|
|
AT_CLEANUP
|