diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/test_mpls.py | 39 | ||||
-rw-r--r-- | test/vpp_interface.py | 12 |
2 files changed, 49 insertions, 2 deletions
diff --git a/test/test_mpls.py b/test/test_mpls.py index ebeea5fb367..8ed047df5f4 100644 --- a/test/test_mpls.py +++ b/test/test_mpls.py @@ -154,7 +154,8 @@ class TestMPLS(VppTestCase): pkts.append(p) return pkts - def create_stream_ip4(self, src_if, dst_ip, ip_ttl=64, ip_dscp=0): + def create_stream_ip4(self, src_if, dst_ip, ip_ttl=64, + ip_dscp=0, payload_size=None): self.reset_packet_infos() pkts = [] for i in range(0, 257): @@ -166,6 +167,8 @@ class TestMPLS(VppTestCase): UDP(sport=1234, dport=1234) / Raw(payload)) info.data = p.copy() + if payload_size: + self.extend_packet(p, payload_size) pkts.append(p) return pkts @@ -911,7 +914,7 @@ class TestMPLS(VppTestCase): """ MPLS Tunnel Tests - Pipe """ # - # Create a tunnel with a single out label + # Create a tunnel with two out labels # mpls_tun = VppMPLSTunnelInterface( self, @@ -964,6 +967,38 @@ class TestMPLS(VppTestCase): VppMplsLabel(46), VppMplsLabel(33, ttl=255)]) + # + # change tunnel's MTU to a low value + # + mpls_tun.set_l3_mtu(1200) + + # send IP into the tunnel to be fragmented + tx = self.create_stream_ip4(self.pg0, "10.0.0.3", + payload_size=1500) + rx = self.send_and_expect(self.pg0, tx, self.pg0, len(tx)*2) + + fake_tx = [] + for p in tx: + fake_tx.append(p) + fake_tx.append(p) + self.verify_capture_tunneled_ip4(self.pg0, rx, fake_tx, + [VppMplsLabel(44), + VppMplsLabel(46)]) + + # send MPLS into the tunnel to be fragmented + tx = self.create_stream_ip4(self.pg0, "10.0.0.4", + payload_size=1500) + rx = self.send_and_expect(self.pg0, tx, self.pg0, len(tx)*2) + + fake_tx = [] + for p in tx: + fake_tx.append(p) + fake_tx.append(p) + self.verify_capture_tunneled_ip4(self.pg0, rx, fake_tx, + [VppMplsLabel(44), + VppMplsLabel(46), + VppMplsLabel(33, ttl=255)]) + def test_tunnel_uniform(self): """ MPLS Tunnel Tests - Uniform """ diff --git a/test/vpp_interface.py b/test/vpp_interface.py index 431a03a6858..a5f6f45fdaf 100644 --- a/test/vpp_interface.py +++ b/test/vpp_interface.py @@ -495,3 +495,15 @@ class VppInterface(object): def get_tx_stats(self): c = self.test.statistics.get_counter("^/if/tx$") return c[0][self.sw_if_index] + + def set_l3_mtu(self, mtu): + self.test.vapi.sw_interface_set_mtu(self.sw_if_index, [mtu, 0, 0, 0]) + + def set_ip4_mtu(self, mtu): + self.test.vapi.sw_interface_set_mtu(self.sw_if_index, [0, mtu, 0, 0]) + + def set_ip6_mtu(self, mtu): + self.test.vapi.sw_interface_set_mtu(self.sw_if_index, [0, 0, mtu, 0]) + + def set_mpls_mtu(self, mtu): + self.test.vapi.sw_interface_set_mtu(self.sw_if_index, [0, 0, 0, mtu]) |