X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Ftest_nat.py;h=59d98d945699bbb85733d8739c3199b7af1907b2;hb=3d2df215bf1de516ffbd8ee3815091ca3c3a492f;hp=22e8903caf5cf093e53c8db4e3b4612f764f36b6;hpb=6c01dceea5c612373453db7f1ccda589a2cd782e;p=vpp.git diff --git a/test/test_nat.py b/test/test_nat.py index 22e8903caf5..59d98d94569 100644 --- a/test/test_nat.py +++ b/test/test_nat.py @@ -2111,7 +2111,7 @@ class TestNAT44(MethodHolder): # general user and session dump verifications users = self.vapi.nat44_user_dump() - self.assertTrue(len(users) >= 3) + self.assertGreaterEqual(len(users), 3) addresses = self.vapi.nat44_address_dump() self.assertEqual(len(addresses), 1) for user in users: @@ -2127,7 +2127,7 @@ class TestNAT44(MethodHolder): # pg4 session dump sessions = self.vapi.nat44_user_session_dump(self.pg4.remote_ip4n, 10) - self.assertTrue(len(sessions) >= 4) + self.assertGreaterEqual(len(sessions), 4) for session in sessions: self.assertFalse(session.is_static) self.assertEqual(session.inside_ip_address[0:4], @@ -2137,7 +2137,7 @@ class TestNAT44(MethodHolder): # pg6 session dump sessions = self.vapi.nat44_user_session_dump(self.pg6.remote_ip4n, 20) - self.assertTrue(len(sessions) >= 3) + self.assertGreaterEqual(len(sessions), 3) for session in sessions: self.assertTrue(session.is_static) self.assertEqual(session.inside_ip_address[0:4], @@ -3339,6 +3339,32 @@ class TestNAT44(MethodHolder): self.frag_in_order(proto=IP_PROTOS.udp) self.frag_in_order(proto=IP_PROTOS.icmp) + def test_frag_forwarding(self): + """ NAT44 forwarding fragment test """ + self.vapi.nat44_add_interface_addr(self.pg1.sw_if_index) + self.vapi.nat44_interface_add_del_feature(self.pg0.sw_if_index) + self.vapi.nat44_interface_add_del_feature(self.pg1.sw_if_index, + is_inside=0) + self.vapi.nat44_forwarding_enable_disable(1) + + data = "A" * 16 + "B" * 16 + "C" * 3 + pkts = self.create_stream_frag(self.pg1, + self.pg0.remote_ip4, + 4789, + 4789, + data, + proto=IP_PROTOS.udp) + self.pg1.add_stream(pkts) + self.pg_enable_capture(self.pg_interfaces) + self.pg_start() + frags = self.pg0.get_capture(len(pkts)) + p = self.reass_frags_and_verify(frags, + self.pg1.remote_ip4, + self.pg0.remote_ip4) + self.assertEqual(p[UDP].sport, 4789) + self.assertEqual(p[UDP].dport, 4789) + self.assertEqual(data, p[Raw].load) + def test_reass_hairpinning(self): """ NAT44 fragments hairpinning """ @@ -4120,7 +4146,7 @@ class TestNAT44EndpointDependent(MethodHolder): server1_n += 1 else: server2_n += 1 - self.assertTrue(server1_n > server2_n) + self.assertGreater(server1_n, server2_n) def test_static_lb_2(self): """ NAT44 local service load balancing (asymmetrical rule) """ @@ -5632,7 +5658,7 @@ class TestNAT44EndpointDependent(MethodHolder): pkts = [] for i in range(0, max_sessions): - src = "10.10.%u.%u" % ((i & 0xFF00) >> 8, i & 0xFF) + src = "10.11.%u.%u" % ((i & 0xFF00) >> 8, i & 0xFF) p = (Ether(dst=self.pg0.local_mac, src=self.pg0.remote_mac) / IP(src=src, dst=self.pg1.remote_ip4) / ICMP(id=1026, type='echo-request')) @@ -5648,6 +5674,42 @@ class TestNAT44EndpointDependent(MethodHolder): nsessions = nsessions + user.nsessions self.assertLess(nsessions, 2 * max_sessions) + @unittest.skipUnless(running_extended_tests(), "part of extended tests") + def test_session_rst_timeout(self): + """ NAT44 session RST timeouts """ + self.nat44_add_address(self.nat_addr) + self.vapi.nat44_interface_add_del_feature(self.pg0.sw_if_index) + self.vapi.nat44_interface_add_del_feature(self.pg1.sw_if_index, + is_inside=0) + self.vapi.nat_set_timeouts(tcp_transitory=5) + + self.initiate_tcp_session(self.pg0, self.pg1) + p = (Ether(src=self.pg0.remote_mac, dst=self.pg0.local_mac) / + IP(src=self.pg0.remote_ip4, dst=self.pg1.remote_ip4) / + TCP(sport=self.tcp_port_in, dport=self.tcp_external_port, + flags="R")) + self.pg0.add_stream(p) + self.pg_enable_capture(self.pg_interfaces) + self.pg_start() + self.pg1.get_capture(1) + + sleep(6) + + p = (Ether(src=self.pg0.remote_mac, dst=self.pg0.local_mac) / + IP(src=self.pg0.remote_ip4, dst=self.pg1.remote_ip4) / + TCP(sport=self.tcp_port_in + 1, dport=self.tcp_external_port + 1, + flags="S")) + self.pg0.add_stream(p) + self.pg_enable_capture(self.pg_interfaces) + self.pg_start() + self.pg1.get_capture(1) + + nsessions = 0 + users = self.vapi.nat44_user_dump() + self.assertEqual(len(users), 1) + self.assertEqual(users[0].ip_address, self.pg0.remote_ip4n) + self.assertEqual(users[0].nsessions, 1) + @unittest.skipUnless(running_extended_tests(), "part of extended tests") def test_session_limit_per_user(self): """ Maximum sessions per user limit """ @@ -5786,6 +5848,7 @@ class TestNAT44Out2InDPO(MethodHolder): '\x00\x00\x00\x00', 0, is_translation=1, is_rfc6052=1) + @unittest.skip('Temporary disabled') def test_464xlat_ce(self): """ Test 464XLAT CE with NAT44 """ @@ -5824,6 +5887,7 @@ class TestNAT44Out2InDPO(MethodHolder): self.vapi.nat44_add_del_address_range(self.nat_addr_n, self.nat_addr_n, is_add=0) + @unittest.skip('Temporary disabled') def test_464xlat_ce_no_nat(self): """ Test 464XLAT CE without NAT44 """