summaryrefslogtreecommitdiffstats
path: root/docs
AgeCommit message (Expand)AuthorFilesLines
2019-12-05classify: vpp packet tracer supportDave Barach1-3/+10
2019-11-20classify: per-interface rx/tx pcap capture filtersDave Barach1-5/+13
2019-11-12docs: update logging configuration section.Paul Vinciguerra1-10/+10
2019-11-06docs: Rewrite the what is VPP (first) section, also fix the buildJohn DeNisco32-555/+161
2019-11-06docs: add spellcheck to 'make docs' sphinx docsPaul Vinciguerra17-59/+91
2019-10-29docs: Fix warning with sphinx build, add script to publish docsJohn DeNisco2-1/+73
2019-10-28docs: cleanup typos on readthroughPaul Vinciguerra51-102/+101
2019-10-09docs: Add macos build documentationNathan Skrzypczak2-0/+58
2019-10-07docs: grammar police raidDave Barach1-7/+9
2019-10-04docs: add packet-generator writeupDave Barach1-0/+183
2019-09-26misc: add vnet classify filter set supportDave Barach1-7/+20
2019-09-23misc: unify pcap rx / tx / drop traceDave Barach1-8/+16
2019-09-20misc: classifier-based packet trace filterDave Barach1-0/+108
2019-09-11docs: run-sphinx-docs-mergedjdenisco2-3/+3
2019-09-09docs: improve unformat documentationDave Barach1-8/+120
2019-08-26misc: 19.08 new featuresAndrew Yourtchenko2-0/+141
2019-08-08docs: Add Ray's ACL use casejdenisco5-0/+489
2019-08-08api: api socket respect unix runtime directoryOle Troan1-2/+2
2019-08-05docs: Add more quic plugin documentationNathan Skrzypczak4-0/+2
2019-08-01docs: Small fixes and orderingNathan Skrzypczak3-0/+20
2019-07-26docs: add binary api trace replay detailsDave Barach1-7/+81
2019-07-22docs: improve home gateway use-case documentationDave Barach1-18/+131
2019-07-19docs: Fix conf.py for read the docsjdenisco2-3/+2
2019-07-12docs: add compressed core file descriptionDave Barach1-0/+27
2019-07-12docs: how to enable coredump with systemdBenoƮt Ganne1-0/+4
2019-06-27docs: Update the vhost sectionjdenisco4-8/+11
2019-05-30FIB: correctly report IPv6 FIB Unicast and Multicast memory usage (VPP-1578)"Neale Ranns3-2/+286
2019-05-28docs: Add some packages for building the docsjdenisco2-2/+13
2019-05-17docs: Fix Versions and Titlesjdenisco4-7/+7
2019-05-16docs: Update sphinx, requirements, support markdown tablesjdenisco9-30/+50
2019-05-16DOC ONLY: document VLIB_INIT_FUNCTION schemeDave Barach1-4/+49
2019-05-10docs: Add 1904jdenisco6-17/+133
2019-04-30Sphinx docs: Fix security vulnerability (VPP-1655)Dave Wallace1-1/+1
2019-04-29DOC ONLY: add a buffer metadata writeupDave Barach2-1/+192
2019-04-25docs: Add VPP inside the CloudFrancesco Spinelli9-4/+805
2019-04-08fixing typosJim Thompson1-1/+1
2019-03-22DOC-ONLY: improve multi-arch documentationDave Barach2-0/+88
2019-03-21docs: break up long lines in vmxnet3.rst to avoid line wrapSteven Luong1-21/+34
2019-03-19docs: Update vmxnet3 usecaseSteven Luong1-12/+36
2019-03-15DOC ONLY: fix g2 build documentationDave Barach2-49/+44
2019-03-12DOC ONLY: add packet handoff docDave Barach1-11/+117
2019-02-27Fix centos build and build documentationjdenisco3-4/+4
2019-02-27DOC ONLY: update bug report sectionDave Barach1-31/+58
2019-02-23Add support for 19.01jdenisco3-74/+15
2019-02-20docs: use python3 for make docs.Paul Vinciguerra1-3/+3
2019-02-19VPP-1504: Remove JVPPMichal Cmarada8-61/+6
2019-01-31docs: Instructions for using vmxnet3 on macjdenisco2-2/+24
2019-01-20buffers: don't init metadata, as it is already initializedDamjan Marion1-3/+0
2019-01-17DOC ONLY: wireshark dissector upstreamedDave Barach2-58/+48
2019-01-07Update tcpdump / wireshark packet format writeupDave Barach1-6/+14
span class="n">IP].dst, type(self).mcast_ip4) # Verify UDP destination port is VXLAN-GPE 4790, source UDP port # could be arbitrary. self.assertEqual(pkt[UDP].dport, type(self).dport) # Verify VNI self.assertEqual(pkt[VXLAN].VNI, vni) def test_decap(self): """ Decapsulation test Send encapsulated frames from pg0 Verify receipt of decapsulated frames on pg1 """ encapsulated_pkt = self.encapsulate(self.frame_request, self.single_tunnel_bd) self.pg0.add_stream([encapsulated_pkt, ]) self.pg1.enable_capture() self.pg_start() # Pick first received frame and check if it's the non-encapsulated # frame out = self.pg1.get_capture(1) pkt = out[0] self.assert_eq_pkts(pkt, self.frame_request) def test_encap(self): """ Encapsulation test Send frames from pg1 Verify receipt of encapsulated frames on pg0 """ self.pg1.add_stream([self.frame_reply]) self.pg0.enable_capture() self.pg_start() # Pick first received frame and check if it's corectly encapsulated. out = self.pg0.get_capture(1) pkt = out[0] self.check_encapsulation(pkt, self.single_tunnel_bd) # payload = self.decapsulate(pkt) # self.assert_eq_pkts(payload, self.frame_reply) def test_ucast_flood(self): """ Unicast flood test Send frames from pg3 Verify receipt of encapsulated frames on pg0 """ self.pg3.add_stream([self.frame_reply]) self.pg0.enable_capture() self.pg_start() # Get packet from each tunnel and assert it's corectly encapsulated. out = self.pg0.get_capture(self.n_ucast_tunnels) for pkt in out: self.check_encapsulation(pkt, self.ucast_flood_bd, True) # payload = self.decapsulate(pkt) # self.assert_eq_pkts(payload, self.frame_reply) def test_mcast_flood(self): """ Multicast flood test Send frames from pg2 Verify receipt of encapsulated frames on pg0 """ self.pg2.add_stream([self.frame_reply]) self.pg0.enable_capture() self.pg_start() # Pick first received frame and check if it's corectly encapsulated. out = self.pg0.get_capture(1) pkt = out[0] self.check_encapsulation(pkt, self.mcast_flood_bd, local_only=False, mcast_pkt=True) # payload = self.decapsulate(pkt) # self.assert_eq_pkts(payload, self.frame_reply) @classmethod def create_vxlan_gpe_flood_test_bd(cls, vni, n_ucast_tunnels): # Create 10 ucast vxlan_gpe 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_ip4n in ip4n_range(next_hop_address, ip_range_start, ip_range_end): # add host route so dest_ip4n will not be resolved cls.vapi.ip_add_del_route(dest_ip4n, 32, next_hop_address) r = cls.vapi.vxlan_gpe_add_del_tunnel( src_addr=cls.pg0.local_ip4n, dst_addr=dest_ip4n, vni=vni) cls.vapi.sw_interface_set_l2_bridge(r.sw_if_index, bd_id=vni) @classmethod def add_del_shared_mcast_dst_load(cls, is_add): """ add or del tunnels sharing the same mcast dst to test vxlan_gpe ref_count mechanism """ n_shared_dst_tunnels = 20 vni_start = 1000 vni_end = vni_start + n_shared_dst_tunnels for vni in range(vni_start, vni_end): r = cls.vapi.vxlan_gpe_add_del_tunnel( src_addr=cls.pg0.local_ip4n, dst_addr=cls.mcast_ip4n, mcast_sw_if_index=1, vni=vni, is_add=is_add) if r.sw_if_index == 0xffffffff: raise "bad sw_if_index" @classmethod def add_shared_mcast_dst_load(cls): cls.add_del_shared_mcast_dst_load(is_add=1) @classmethod def del_shared_mcast_dst_load(cls): cls.add_del_shared_mcast_dst_load(is_add=0) @classmethod 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_ip4n in ip4n_range(cls.mcast_ip4n, ip_range_start, ip_range_end): vni = bytearray(dest_ip4n)[3] cls.vapi.vxlan_gpe_add_del_tunnel( src_addr=cls.pg0.local_ip4n, dst_addr=dest_ip4n, mcast_sw_if_index=1, vni=vni, is_add=is_add) @classmethod def add_mcast_tunnels_load(cls): cls.add_del_mcast_tunnels_load(is_add=1) @classmethod def del_mcast_tunnels_load(cls): cls.add_del_mcast_tunnels_load(is_add=0) # Class method to start the VXLAN-GPE test case. # Overrides setUpClass method in VppTestCase class. # Python try..except statement is used to ensure that the tear down of # the class will be executed even if exception is raised. # @param cls The class pointer. @classmethod def setUpClass(cls): super(TestVxlanGpe, cls).setUpClass() try: cls.dport = 4790 cls.flags = 0xc # Create 2 pg interfaces. cls.create_pg_interfaces(range(4)) for pg in cls.pg_interfaces: pg.admin_up() # Configure IPv4 addresses on VPP pg0. cls.pg0.config_ip4() # Resolve MAC address for VPP's IP address on pg0. cls.pg0.resolve_arp() # Our Multicast address cls.mcast_ip4 = '239.1.1.1' cls.mcast_ip4n = socket.inet_pton(socket.AF_INET, cls.mcast_ip4) iplong = atol(cls.mcast_ip4) cls.mcast_mac = "01:00:5e:%02x:%02x:%02x" % ( (iplong >> 16) & 0x7F, (iplong >> 8) & 0xFF, iplong & 0xFF) # Create VXLAN-GPE VTEP on VPP pg0, and put vxlan_gpe_tunnel0 # and pg1 into BD. cls.single_tunnel_bd = 11 r = cls.vapi.vxlan_gpe_add_del_tunnel( src_addr=cls.pg0.local_ip4n, dst_addr=cls.pg0.remote_ip4n, vni=cls.single_tunnel_bd) cls.vapi.sw_interface_set_l2_bridge(r.sw_if_index, bd_id=cls.single_tunnel_bd) cls.vapi.sw_interface_set_l2_bridge(cls.pg1.sw_if_index, bd_id=cls.single_tunnel_bd) # Setup vni 2 to test multicast flooding cls.n_ucast_tunnels = 10 cls.mcast_flood_bd = 12 cls.create_vxlan_gpe_flood_test_bd(cls.mcast_flood_bd, cls.n_ucast_tunnels) r = cls.vapi.vxlan_gpe_add_del_tunnel( src_addr=cls.pg0.local_ip4n, dst_addr=cls.mcast_ip4n, mcast_sw_if_index=1, vni=cls.mcast_flood_bd) cls.vapi.sw_interface_set_l2_bridge(r.sw_if_index, bd_id=cls.mcast_flood_bd) cls.vapi.sw_interface_set_l2_bridge(cls.pg2.sw_if_index, bd_id=cls.mcast_flood_bd) # Add and delete mcast tunnels to check stability cls.add_shared_mcast_dst_load() cls.add_mcast_tunnels_load() cls.del_shared_mcast_dst_load() cls.del_mcast_tunnels_load() # Setup vni 3 to test unicast flooding cls.ucast_flood_bd = 13 cls.create_vxlan_gpe_flood_test_bd(cls.ucast_flood_bd, cls.n_ucast_tunnels) cls.vapi.sw_interface_set_l2_bridge(cls.pg3.sw_if_index, bd_id=cls.ucast_flood_bd) except Exception: super(TestVxlanGpe, cls).tearDownClass() raise # Method to define VPP actions before tear down of the test case. # Overrides tearDown method in VppTestCase class. # @param self The object pointer. def tearDown(self): super(TestVxlanGpe, self).tearDown() if not self.vpp_dead: self.logger.info(self.vapi.cli("show bridge-domain 11 detail")) self.logger.info(self.vapi.cli("show bridge-domain 12 detail")) self.logger.info(self.vapi.cli("show bridge-domain 13 detail")) self.logger.info(self.vapi.cli("show int")) self.logger.info(self.vapi.cli("show vxlan-gpe tunnel")) self.logger.info(self.vapi.cli("show trace")) if __name__ == '__main__': unittest.main(testRunner=VppTestRunner)