Exemplo n.º 1
0
    def create_vxlan_gpe_flood_test_bd(cls, vni, n_ucast_tunnels, port):
        # Create 10 ucast vxlan tunnels under bd
        ip_range_start = 10
        ip_range_end = ip_range_start + n_ucast_tunnels
        next_hop_address = cls.pg0.remote_ip4
        for dest_ip4 in ip4_range(next_hop_address, ip_range_start,
                                  ip_range_end):
            # add host route so dest_ip4n will not be resolved
            rip = VppIpRoute(
                cls,
                dest_ip4,
                32,
                [VppRoutePath(next_hop_address, INVALID_INDEX)],
                register=False,
            )
            rip.add_vpp_config()

            r = VppVxlanGpeTunnel(
                cls,
                src_addr=cls.pg0.local_ip4,
                dst_addr=dest_ip4,
                src_port=port,
                dst_port=port,
                vni=vni,
            )
            r.add_vpp_config()
            cls.vapi.sw_interface_set_l2_bridge(rx_sw_if_index=r.sw_if_index,
                                                bd_id=vni)
Exemplo n.º 2
0
 def create_vxlan_gbp_flood_test_bd(cls, vni, n_ucast_tunnels):
     # Create 2 ucast vxlan tunnels under bd
     ip_range_start = 10
     ip_range_end = ip_range_start + n_ucast_tunnels
     next_hop_address = cls.pg0.remote_ip4
     for dest_ip4 in ip4_range(cls.pg0.remote_ip4,
                               ip_range_start,
                               ip_range_end):
         # add host route so dest_ip4 will not be resolved
         rip = VppIpRoute(cls, dest_ip4, 32,
                          [VppRoutePath(next_hop_address,
                                        INVALID_INDEX)],
                          register=False)
         rip.add_vpp_config()
         r = cls.vapi.vxlan_gbp_tunnel_add_del(
             tunnel={
                 'src': cls.pg0.local_ip4,
                 'dst': dest_ip4,
                 'vni': vni,
                 'instance': INVALID_INDEX,
                 'mcast_sw_if_index': INVALID_INDEX,
                 'mode': 1,
             },
             is_add=1
         )
         cls.vapi.sw_interface_set_l2_bridge(rx_sw_if_index=r.sw_if_index,
                                             bd_id=vni)
Exemplo n.º 3
0
 def create_gtpu_flood_test_bd(cls, teid, n_ucast_tunnels):
     # Create 10 ucast gtpu tunnels under bd
     ip_range_start = 10
     ip_range_end = ip_range_start + n_ucast_tunnels
     next_hop_address = cls.pg0.remote_ip4
     for dest_ip4 in ip4_range(next_hop_address, ip_range_start,
                               ip_range_end):
         # add host route so dest_ip4 will not be resolved
         rip = VppIpRoute(
             cls,
             dest_ip4,
             32,
             [VppRoutePath(next_hop_address, INVALID_INDEX)],
             register=False,
         )
         rip.add_vpp_config()
         r = cls.vapi.gtpu_add_del_tunnel(
             is_add=True,
             mcast_sw_if_index=0xFFFFFFFF,
             decap_next_index=0xFFFFFFFF,
             src_address=cls.pg0.local_ip4,
             dst_address=dest_ip4,
             teid=teid,
         )
         cls.vapi.sw_interface_set_l2_bridge(rx_sw_if_index=r.sw_if_index,
                                             bd_id=teid)
Exemplo n.º 4
0
 def add_del_mcast_tunnels_load(cls, is_add):
     """
     add or del tunnels to test geneve stability
     """
     n_distinct_dst_tunnels = 10
     ip_range_start = 10
     ip_range_end = ip_range_start + n_distinct_dst_tunnels
     for dest_ip4 in ip4_range(cls.mcast_ip4, ip_range_start, ip_range_end):
         vni = int(dest_ip4.split('.')[3])
         cls.vapi.geneve_add_del_tunnel(local_address=cls.pg0.local_ip4,
                                        remote_address=dest_ip4,
                                        mcast_sw_if_index=1,
                                        is_add=is_add,
                                        vni=vni)
Exemplo n.º 5
0
 def add_del_mcast_tunnels_load(cls, is_add):
     """
     add or del tunnels to test vxlan_gpe stability
     """
     n_distinct_dst_tunnels = 20
     ip_range_start = 10
     ip_range_end = ip_range_start + n_distinct_dst_tunnels
     for dest_ip4 in ip4_range(cls.mcast_ip4, ip_range_start, ip_range_end):
         vni = int(dest_ip4.split(".")[3])
         cls.vapi.vxlan_gpe_add_del_tunnel(src_addr=cls.pg0.local_ip4,
                                           dst_addr=dest_ip4,
                                           mcast_sw_if_index=1,
                                           vni=vni,
                                           is_add=is_add)
Exemplo n.º 6
0
 def add_del_mcast_tunnels_load(cls, is_add):
     """
     add or del tunnels to test gtpu stability
     """
     n_distinct_dst_tunnels = 20
     ip_range_start = 10
     ip_range_end = ip_range_start + n_distinct_dst_tunnels
     for dest_ip4 in ip4_range(cls.mcast_ip4, ip_range_start, ip_range_end):
         teid = int(dest_ip4.split('.')[3])
         cls.vapi.gtpu_add_del_tunnel(decap_next_index=0xFFFFFFFF,
                                      src_address=cls.pg0.local_ip4,
                                      dst_address=dest_ip4,
                                      mcast_sw_if_index=1,
                                      teid=teid,
                                      is_add=is_add)
Exemplo n.º 7
0
 def create_vxlan_gbp_flood_test_bd(cls, vni, n_ucast_tunnels):
     # Create 2 ucast vxlan tunnels under bd
     ip_range_start = 10
     ip_range_end = ip_range_start + n_ucast_tunnels
     next_hop_address = cls.pg0.remote_ip4n
     for dest_ip4 in ip4_range(cls.pg0.remote_ip4, ip_range_start,
                               ip_range_end):
         # add host route so dest_ip4n will not be resolved
         vip = VppIpAddress(dest_ip4)
         cls.vapi.ip_add_del_route(vip.bytes, 32, next_hop_address)
         r = cls.vapi.vxlan_gbp_tunnel_add_del(VppIpAddress(
             cls.pg0.local_ip4).encode(),
                                               vip.encode(),
                                               vni=vni)
         cls.vapi.sw_interface_set_l2_bridge(r.sw_if_index, bd_id=vni)
Exemplo n.º 8
0
 def add_del_mcast_tunnels_load(cls, is_add):
     """
     add or del tunnels to test vxlan stability
     """
     n_distinct_dst_tunnels = 200
     ip_range_start = 10
     ip_range_end = ip_range_start + n_distinct_dst_tunnels
     for dest_ip4 in ip4_range(cls.mcast_ip4, ip_range_start, ip_range_end):
         vni = bytearray(socket.inet_pton(socket.AF_INET, dest_ip4))[3]
         r = VppVxlanTunnel(cls,
                            src=cls.pg0.local_ip4,
                            dst=dest_ip4,
                            mcast_sw_if_index=1,
                            vni=vni)
         if is_add:
             r.add_vpp_config()
         else:
             r.remove_vpp_config()
Exemplo n.º 9
0
 def create_geneve_flood_test_bd(cls, vni, n_ucast_tunnels):
     # Create 10 ucast geneve tunnels under bd
     ip_range_start = 10
     ip_range_end = ip_range_start + n_ucast_tunnels
     next_hop_address = cls.pg0.remote_ip4
     for dest_ip4 in ip4_range(next_hop_address, ip_range_start,
                               ip_range_end):
         # add host route so dest_ip4 will not be resolved
         rip = VppIpRoute(cls, dest_ip4, 32,
                          [VppRoutePath(next_hop_address,
                                        INVALID_INDEX)],
                          register=False)
         rip.add_vpp_config()
         r = cls.vapi.geneve_add_del_tunnel(
             local_address=cls.pg0.local_ip4, remote_address=dest_ip4,
             vni=vni)
         cls.vapi.sw_interface_set_l2_bridge(rx_sw_if_index=r.sw_if_index,
                                             bd_id=vni)
Exemplo n.º 10
0
 def test_mcast_rcv(self):
     """ Multicast receive test
     Send 20 encapsulated frames from pg0 only 10 match unicast tunnels
     Verify receipt of 10 decap frames on pg2
     """
     mac = self.pg0.remote_mac
     ip_range_start = 10
     ip_range_end = 30
     mcast_stream = [
         self.encap_mcast(self.frame_request, ip, mac, self.mcast_flood_bd)
         for ip in ip4_range(self.pg0.remote_ip4,
                             ip_range_start, ip_range_end)]
     self.pg0.add_stream(mcast_stream)
     self.pg2.enable_capture()
     self.pg_start()
     out = self.pg2.get_capture(10)
     for pkt in out:
         self.assert_eq_pkts(pkt, self.frame_request)
Exemplo n.º 11
0
 def create_vxlan_gbp_flood_test_bd(cls, vni, n_ucast_tunnels):
     # Create 2 ucast vxlan tunnels under bd
     ip_range_start = 10
     ip_range_end = ip_range_start + n_ucast_tunnels
     next_hop_address = cls.pg0.remote_ip4n
     for dest_ip4 in ip4_range(cls.pg0.remote_ip4,
                               ip_range_start,
                               ip_range_end):
         # add host route so dest_ip4n will not be resolved
         vip = VppIpAddress(dest_ip4)
         cls.vapi.ip_add_del_route(dst_address=vip.bytes,
                                   dst_address_length=32,
                                   next_hop_address=next_hop_address)
         r = cls.vapi.vxlan_gbp_tunnel_add_del(
             VppIpAddress(cls.pg0.local_ip4).encode(),
             vip.encode(),
             vni=vni)
         cls.vapi.sw_interface_set_l2_bridge(rx_sw_if_index=r.sw_if_index,
                                             bd_id=vni)
Exemplo n.º 12
0
    def create_vxlan_flood_test_bd(cls, vni, n_ucast_tunnels):
        # Create 10 ucast vxlan tunnels under bd
        ip_range_start = 10
        ip_range_end = ip_range_start + n_ucast_tunnels
        next_hop_address = cls.pg0.remote_ip4
        for dest_ip4 in ip4_range(next_hop_address, ip_range_start,
                                  ip_range_end):
            # add host route so dest_ip4n will not be resolved
            rip = VppIpRoute(cls,
                             dest_ip4,
                             32,
                             [VppRoutePath(next_hop_address, INVALID_INDEX)],
                             register=False)
            rip.add_vpp_config()
            dest_ip4n = socket.inet_pton(socket.AF_INET, dest_ip4)

            r = cls.vapi.vxlan_add_del_tunnel(src_address=cls.pg0.local_ip4n,
                                              dst_address=dest_ip4n,
                                              vni=vni)
            cls.vapi.sw_interface_set_l2_bridge(r.sw_if_index, bd_id=vni)
Exemplo n.º 13
0
 def add_del_mcast_tunnels_load(cls, port, is_add):
     """
     add or del tunnels to test vxlan_gpe stability
     """
     n_distinct_dst_tunnels = 20
     ip_range_start = 10
     ip_range_end = ip_range_start + n_distinct_dst_tunnels
     for dest_ip4 in ip4_range(cls.mcast_ip4, ip_range_start, ip_range_end):
         vni = int(dest_ip4.split(".")[3])
         r = VppVxlanGpeTunnel(cls,
                               src_addr=cls.pg0.local_ip4,
                               dst_addr=dest_ip4,
                               src_port=port,
                               dst_port=port,
                               mcast_sw_if_index=1,
                               vni=vni)
         if is_add:
             r.add_vpp_config()
         else:
             r.remove_vpp_config()
Exemplo n.º 14
0
 def ip_range(self, start, end):
     """ range of remote ip's """
     return ip4_range(self.pg0.remote_ip4, start, end)
Exemplo n.º 15
0
 def ip_range(self, start, end):
     """ range of remote ip's """
     return ip4_range(self.pg0.remote_ip4, start, end)