aboutsummaryrefslogtreecommitdiffstats
path: root/docs
AgeCommit message (Expand)AuthorFilesLines
2018-09-12Always use 'lib' instead of 'lib64'Damjan Marion3-4/+4
2018-09-07docs: what is vpp and features and performanceScott Keeler10-29/+54
2018-09-06DOC ONLY: cmake / ninja build system docDave Barach2-1/+188
2018-08-31Docs: update MPLS FIB section with text from the wikiNeale Ranns1-49/+152
2018-08-30docs: Add features by release sectionScitt Keeler12-0/+706
2018-08-30docs: FIB 2.0 startjdenisco26-1/+745
2018-08-27docs: Finish event logger, viewer and cleanup.John DeNisco17-142/+346
2018-08-17docs: Moved installing up a level, removed guides.John DeNisco14-98/+25
2018-08-17Update AArch64 CSIT machines into FD.io VPP docsLijian Zhang2-2/+11
2018-08-17docs: Rework the VPP progressive Tutorial.John DeNisco21-471/+394
2018-08-14DOCS: Moved multiarch and build system, Incorprated Scott's changesJohn DeNisco25-101/+130
2018-08-14DOCS: Updated startup.conf parametersandrew1-69/+174
2018-08-13DOCS: Cleanup Getting StartedJohn DeNisco11-253/+97
2018-08-10DOC-ONLY: document latest multi-arch support schemeDave Barach3-0/+172
2018-08-10DOC-ONLY: build system detailsDave Barach5-0/+382
2018-08-10docs: A little cleanup and added some gdb examples.andrew4-18/+210
2018-08-09DOCS: General cleanup (did not move any sections)andrew7-53/+60
2018-08-09DOCS: modified writing docs sectionjavierfernandezvalles1-1/+1
2018-08-09DOCS: Restructure EventsJohn DeNisco93-866/+270
2018-08-08DOC ONLY: Add a new doc for integrating a plugin with VPPandrew4-0/+710
2018-08-07docs: Cleaned up a little removed instructions for mac.andrew1-22/+89
2018-08-07DOC ONLY: document bihash table walker rulesDave Barach1-0/+35
2018-08-03Added missing fileJohn DeNisco13-1352/+1372
2018-08-03docs: Incororate Scott's overall reviewJohn DeNisco22-78/+146
2018-08-01docs: change code blocks from "shell" to "console"John DeNisco7-47/+47
2018-07-27Fix .gitignore so docs/Makefile is not ignored. Add README and Makefile. Fis ...John DeNisco3-11/+80
2018-07-26Initial commit of Sphinx docsJohn DeNisco237-56/+12729
2018-07-11Documentation: Placeholder directory and filesEd Kern1-0/+56
pan>\xa5' * 100)) @abstractmethod def encap_mcast(self, pkt, src_ip, src_mac, vni): """ Encapsulate mcast packet """ pass @abstractmethod def encapsulate(self, pkt, vni): """ Encapsulate packet """ pass @abstractmethod def decapsulate(self, pkt): """ Decapsulate packet """ pass @abstractmethod def check_encapsulation(self, pkt, vni, local_only=False): """ Verify the encapsulation """ pass def assert_eq_pkts(self, pkt1, pkt2): """ Verify the Ether, IP, UDP, payload are equal in both packets """ self.assertEqual(pkt1[Ether].src, pkt2[Ether].src) self.assertEqual(pkt1[Ether].dst, pkt2[Ether].dst) self.assertEqual(pkt1[IP].src, pkt2[IP].src) self.assertEqual(pkt1[IP].dst, pkt2[IP].dst) self.assertEqual(pkt1[UDP].sport, pkt2[UDP].sport) self.assertEqual(pkt1[UDP].dport, pkt2[UDP].dport) self.assertEqual(pkt1[Raw], pkt2[Raw]) 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, True) payload = self.decapsulate(pkt) self.assert_eq_pkts(payload, self.frame_reply) 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)