Petr Machata 6ebe5a7a66 selftests: forwarding: mirror_vlan: Change test description 7 жил өмнө
..
.gitignore 73bae6736b selftests: forwarding: Add initial testing framework 7 жил өмнө
README 73bae6736b selftests: forwarding: Add initial testing framework 7 жил өмнө
bridge_vlan_aware.sh 0eb8053c14 selftests: forwarding: Allow running specific tests 7 жил өмнө
bridge_vlan_unaware.sh 0eb8053c14 selftests: forwarding: Allow running specific tests 7 жил өмнө
config 73bae6736b selftests: forwarding: Add initial testing framework 7 жил өмнө
forwarding.config.sample 59be45c375 selftests: forwarding: Allow creation of interfaces without a config file 7 жил өмнө
lib.sh 2004a9bcb8 selftests: forwarding: lib: Move here vlan_capture_{, un}install() 7 жил өмнө
mirror_gre.sh 91bac7f997 selftests: forwarding: Add $h3's clsact to mirror_topo_lib.sh 7 жил өмнө
mirror_gre_bound.sh 0eb8053c14 selftests: forwarding: Allow running specific tests 7 жил өмнө
mirror_gre_bridge_1d_vlan.sh b5b029399f selftests: forwarding: mirror_gre_bridge_1d_vlan: Add STP test 7 жил өмнө
mirror_gre_changes.sh 91bac7f997 selftests: forwarding: Add $h3's clsact to mirror_topo_lib.sh 7 жил өмнө
mirror_gre_flower.sh a96d81a20b selftests: forwarding: Test removal of mirroring 7 жил өмнө
mirror_gre_lib.sh f52f460ca9 selftests: forwarding: mirror_gre_lib: Add STP test 7 жил өмнө
mirror_gre_neigh.sh 0eb8053c14 selftests: forwarding: Allow running specific tests 7 жил өмнө
mirror_gre_nh.sh 7eaaf0bc52 selftests: forwarding: mirror_gre_nh: Unset RP filter 7 жил өмнө
mirror_gre_topo_lib.sh 74ed089d48 selftests: forwarding: Split mirror_gre_topo_lib.sh 7 жил өмнө
mirror_gre_vlan.sh a08fb9f1ad selftests: forwarding: Test mirror-to-gre w/ UL VLAN 7 жил өмнө
mirror_gre_vlan_bridge_1q.sh 9c7c8a8244 selftests: forwarding: mirror_gre_vlan_bridge_1q: Add more tests 7 жил өмнө
mirror_lib.sh 275225fb4e selftests: forwarding: mirror_lib: skip_hw the VLAN capture 7 жил өмнө
mirror_topo_lib.sh 91bac7f997 selftests: forwarding: Add $h3's clsact to mirror_topo_lib.sh 7 жил өмнө
mirror_vlan.sh 6ebe5a7a66 selftests: forwarding: mirror_vlan: Change test description 7 жил өмнө
router.sh 0eb8053c14 selftests: forwarding: Allow running specific tests 7 жил өмнө
router_multipath.sh d51d10aa1d selftests: forwarding: Use sysctl_set(), sysctl_restore() 7 жил өмнө
tc_actions.sh 0eb8053c14 selftests: forwarding: Allow running specific tests 7 жил өмнө
tc_chains.sh 0eb8053c14 selftests: forwarding: Allow running specific tests 7 жил өмнө
tc_common.sh 198979be6c selftests: forwarding: Only check tc version for tc tests 7 жил өмнө
tc_flower.sh 0eb8053c14 selftests: forwarding: Allow running specific tests 7 жил өмнө
tc_shblocks.sh 0eb8053c14 selftests: forwarding: Allow running specific tests 7 жил өмнө

README

Motivation
==========

One of the nice things about network namespaces is that they allow one
to easily create and test complex environments.

Unfortunately, these namespaces can not be used with actual switching
ASICs, as their ports can not be migrated to other network namespaces
(NETIF_F_NETNS_LOCAL) and most of them probably do not support the
L1-separation provided by namespaces.

However, a similar kind of flexibility can be achieved by using VRFs and
by looping the switch ports together. For example:

br0
+
vrf-h1 | vrf-h2
+ +---+----+ +
| | | |
192.0.2.1/24 + + + + 192.0.2.2/24
swp1 swp2 swp3 swp4
+ + + +
| | | |
+--------+ +--------+

The VRFs act as lightweight namespaces representing hosts connected to
the switch.

This approach for testing switch ASICs has several advantages over the
traditional method that requires multiple physical machines, to name a
few:

1. Only the device under test (DUT) is being tested without noise from
other system.

2. Ability to easily provision complex topologies. Testing bridging
between 4-ports LAGs or 8-way ECMP requires many physical links that are
not always available. With the VRF-based approach one merely needs to
loopback more ports.

These tests are written with switch ASICs in mind, but they can be run
on any Linux box using veth pairs to emulate physical loopbacks.

Guidelines for Writing Tests
============================

o Where possible, reuse an existing topology for different tests instead
of recreating the same topology.
o Where possible, IPv6 and IPv4 addresses shall conform to RFC 3849 and
RFC 5737, respectively.
o Where possible, tests shall be written so that they can be reused by
multiple topologies and added to lib.sh.
o Checks shall be added to lib.sh for any external dependencies.
o Code shall be checked using ShellCheck [1] prior to submission.

1. https://www.shellcheck.net/