X-Git-Url: https://gerrit.fd.io/r/gitweb?p=vpp.git;a=blobdiff_plain;f=test%2Ftest_dvr.py;h=cf411bb0cb1694a3bb597ae5b601ced236d19bbd;hp=5bdc3b2312e0687a3c19a5e6e63797780f2d20f3;hb=8feeaff56;hpb=c8efa29b6f9a91381897b54f1147daf922ed7164 diff --git a/test/test_dvr.py b/test/test_dvr.py index 5bdc3b2312e..cf411bb0cb1 100644 --- a/test/test_dvr.py +++ b/test/test_dvr.py @@ -1,18 +1,14 @@ #!/usr/bin/env python -import random -import socket import unittest from framework import VppTestCase, VppTestRunner -from vpp_sub_interface import VppSubInterface, VppDot1QSubint -from vpp_ip_route import VppIpRoute, VppRoutePath, DpoProto, VppIpMRoute, \ - VppMRoutePath, MRouteEntryFlags, MRouteItfFlags -from vpp_papi_provider import L2_VTR_OP +from vpp_sub_interface import VppDot1QSubint +from vpp_ip_route import VppIpRoute, VppRoutePath +from vpp_papi_provider import L2_VTR_OP, L2_PORT_TYPE from scapy.packet import Raw -from scapy.layers.l2 import Ether, Dot1Q, ARP +from scapy.layers.l2 import Ether, Dot1Q from scapy.layers.inet import IP, UDP -from util import ppp from socket import AF_INET, inet_pton @@ -23,7 +19,7 @@ class TestDVR(VppTestCase): super(TestDVR, self).setUp() self.create_pg_interfaces(range(4)) - self.create_loopback_interfaces(range(1)) + self.create_loopback_interfaces(1) for i in self.pg_interfaces: i.admin_up() @@ -88,18 +84,24 @@ class TestDVR(VppTestCase): # # Put all the interfaces into a new bridge domain # - self.vapi.sw_interface_set_l2_bridge(self.pg0.sw_if_index, 1) - self.vapi.sw_interface_set_l2_bridge(self.pg1.sw_if_index, 1) - self.vapi.sw_interface_set_l2_bridge(sub_if_on_pg2.sw_if_index, 1) - self.vapi.sw_interface_set_l2_bridge(sub_if_on_pg3.sw_if_index, 1) - self.vapi.sw_interface_set_l2_bridge(self.loop0.sw_if_index, 1, bvi=1) - - self.vapi.sw_interface_set_l2_tag_rewrite(sub_if_on_pg2.sw_if_index, - L2_VTR_OP.L2_POP_1, - 92) - self.vapi.sw_interface_set_l2_tag_rewrite(sub_if_on_pg3.sw_if_index, - L2_VTR_OP.L2_POP_1, - 93) + self.vapi.sw_interface_set_l2_bridge( + rx_sw_if_index=self.pg0.sw_if_index, bd_id=1) + self.vapi.sw_interface_set_l2_bridge( + rx_sw_if_index=self.pg1.sw_if_index, bd_id=1) + self.vapi.sw_interface_set_l2_bridge( + rx_sw_if_index=sub_if_on_pg2.sw_if_index, bd_id=1) + self.vapi.sw_interface_set_l2_bridge( + rx_sw_if_index=sub_if_on_pg3.sw_if_index, bd_id=1) + self.vapi.sw_interface_set_l2_bridge( + rx_sw_if_index=self.loop0.sw_if_index, bd_id=1, + port_type=L2_PORT_TYPE.BVI) + + self.vapi.l2_interface_vlan_tag_rewrite( + sw_if_index=sub_if_on_pg2.sw_if_index, vtr_op=L2_VTR_OP.L2_POP_1, + push_dot1q=92) + self.vapi.l2_interface_vlan_tag_rewrite( + sw_if_index=sub_if_on_pg3.sw_if_index, vtr_op=L2_VTR_OP.L2_POP_1, + push_dot1q=93) # # Add routes to bridge the traffic via a tagged an nontagged interface @@ -203,16 +205,17 @@ class TestDVR(VppTestCase): 0, []) self.vapi.acl_del(acl.acl_index) - self.vapi.sw_interface_set_l2_bridge(self.pg0.sw_if_index, 1, - enable=0) - self.vapi.sw_interface_set_l2_bridge(self.pg1.sw_if_index, 1, - enable=0) - self.vapi.sw_interface_set_l2_bridge(sub_if_on_pg2.sw_if_index, - 1, enable=0) - self.vapi.sw_interface_set_l2_bridge(sub_if_on_pg3.sw_if_index, - 1, enable=0) - self.vapi.sw_interface_set_l2_bridge(self.loop0.sw_if_index, - 1, bvi=1, enable=0) + self.vapi.sw_interface_set_l2_bridge( + rx_sw_if_index=self.pg0.sw_if_index, bd_id=1, enable=0) + self.vapi.sw_interface_set_l2_bridge( + rx_sw_if_index=self.pg1.sw_if_index, bd_id=1, enable=0) + self.vapi.sw_interface_set_l2_bridge( + rx_sw_if_index=sub_if_on_pg2.sw_if_index, bd_id=1, enable=0) + self.vapi.sw_interface_set_l2_bridge( + rx_sw_if_index=sub_if_on_pg3.sw_if_index, bd_id=1, enable=0) + self.vapi.sw_interface_set_l2_bridge( + rx_sw_if_index=self.loop0.sw_if_index, bd_id=1, + port_type=L2_PORT_TYPE.BVI, enable=0) # # Do a FIB dump to make sure the paths are correctly reported as DVR @@ -289,22 +292,27 @@ class TestDVR(VppTestCase): # # Put all the interfaces into a new bridge domain # - self.vapi.sw_interface_set_l2_bridge(self.pg0.sw_if_index, 1) - self.vapi.sw_interface_set_l2_bridge(self.pg1.sw_if_index, 1) - self.vapi.sw_interface_set_l2_bridge(sub_if_on_pg2.sw_if_index, 1) - self.vapi.sw_interface_set_l2_bridge(sub_if_on_pg3.sw_if_index, 1) - self.vapi.sw_interface_set_l2_tag_rewrite(sub_if_on_pg2.sw_if_index, - L2_VTR_OP.L2_POP_1, - 92) - self.vapi.sw_interface_set_l2_tag_rewrite(sub_if_on_pg3.sw_if_index, - L2_VTR_OP.L2_POP_1, - 93) - - # - # Disable UU flooding, learning and ARP terminaation. makes this test + self.vapi.sw_interface_set_l2_bridge( + rx_sw_if_index=self.pg0.sw_if_index, bd_id=1) + self.vapi.sw_interface_set_l2_bridge( + rx_sw_if_index=self.pg1.sw_if_index, bd_id=1) + self.vapi.sw_interface_set_l2_bridge( + rx_sw_if_index=sub_if_on_pg2.sw_if_index, bd_id=1) + self.vapi.sw_interface_set_l2_bridge( + rx_sw_if_index=sub_if_on_pg3.sw_if_index, bd_id=1) + self.vapi.l2_interface_vlan_tag_rewrite( + sw_if_index=sub_if_on_pg2.sw_if_index, vtr_op=L2_VTR_OP.L2_POP_1, + push_dot1q=92) + self.vapi.l2_interface_vlan_tag_rewrite( + sw_if_index=sub_if_on_pg3.sw_if_index, vtr_op=L2_VTR_OP.L2_POP_1, + push_dot1q=93) + + # + # Disable UU flooding, learning and ARP termination. makes this test # easier as unicast packets are dropped if not extracted. # - self.vapi.bridge_flags(1, 0, (1 << 0) | (1 << 3) | (1 << 4)) + self.vapi.bridge_flags(bd_id=1, is_set=0, + flags=(1 << 0) | (1 << 3) | (1 << 4)) # # Add a DVR route to steer traffic at L3 @@ -328,10 +336,10 @@ class TestDVR(VppTestCase): # # Enable L3 extraction on pgs # - self.vapi.sw_interface_set_l2_emulation(self.pg0.sw_if_index) - self.vapi.sw_interface_set_l2_emulation(self.pg1.sw_if_index) - self.vapi.sw_interface_set_l2_emulation(sub_if_on_pg2.sw_if_index) - self.vapi.sw_interface_set_l2_emulation(sub_if_on_pg3.sw_if_index) + self.vapi.l2_emulation(self.pg0.sw_if_index) + self.vapi.l2_emulation(self.pg1.sw_if_index) + self.vapi.l2_emulation(sub_if_on_pg2.sw_if_index) + self.vapi.l2_emulation(sub_if_on_pg3.sw_if_index) # # now we expect the packet forward according to the DVR route @@ -360,23 +368,23 @@ class TestDVR(VppTestCase): # # cleanup # - self.vapi.sw_interface_set_l2_emulation(self.pg0.sw_if_index, - enable=0) - self.vapi.sw_interface_set_l2_emulation(self.pg1.sw_if_index, - enable=0) - self.vapi.sw_interface_set_l2_emulation(sub_if_on_pg2.sw_if_index, - enable=0) - self.vapi.sw_interface_set_l2_emulation(sub_if_on_pg3.sw_if_index, - enable=0) - - self.vapi.sw_interface_set_l2_bridge(self.pg0.sw_if_index, - 1, enable=0) - self.vapi.sw_interface_set_l2_bridge(self.pg1.sw_if_index, - 1, enable=0) - self.vapi.sw_interface_set_l2_bridge(sub_if_on_pg2.sw_if_index, - 1, enable=0) - self.vapi.sw_interface_set_l2_bridge(sub_if_on_pg3.sw_if_index, - 1, enable=0) + self.vapi.l2_emulation(self.pg0.sw_if_index, + enable=0) + self.vapi.l2_emulation(self.pg1.sw_if_index, + enable=0) + self.vapi.l2_emulation(sub_if_on_pg2.sw_if_index, + enable=0) + self.vapi.l2_emulation(sub_if_on_pg3.sw_if_index, + enable=0) + + self.vapi.sw_interface_set_l2_bridge( + rx_sw_if_index=self.pg0.sw_if_index, bd_id=1, enable=0) + self.vapi.sw_interface_set_l2_bridge( + rx_sw_if_index=self.pg1.sw_if_index, bd_id=1, enable=0) + self.vapi.sw_interface_set_l2_bridge( + rx_sw_if_index=sub_if_on_pg2.sw_if_index, bd_id=1, enable=0) + self.vapi.sw_interface_set_l2_bridge( + rx_sw_if_index=sub_if_on_pg3.sw_if_index, bd_id=1, enable=0) route_1.remove_vpp_config() route_2.remove_vpp_config()