Petr Machata 372809055f selftests: forwarding: Have lldpad_app_wait_set() wait for unknown, too 7 жил өмнө
..
.gitignore 73bae6736b selftests: forwarding: Add initial testing framework 7 жил өмнө
README 18ec44f6ef selftests: forwarding: README: Require diagrams 7 жил өмнө
bridge_port_isolation.sh a14e9fafaa selftests: forwarding: test for bridge port isolation 7 жил өмнө
bridge_sticky_fdb.sh a804e5e218 selftests: forwarding: test for bridge sticky flag 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 жил өмнө
devlink_lib.sh bc7cbb1e9f selftests: forwarding: Add devlink_lib.sh 7 жил өмнө
forwarding.config.sample 59be45c375 selftests: forwarding: Allow creation of interfaces without a config file 7 жил өмнө
gre_multipath.sh 541ad323db selftests: forwarding: gre_multipath: Update next-hop statistics match criteria 7 жил өмнө
lib.sh 372809055f selftests: forwarding: Have lldpad_app_wait_set() wait for unknown, too 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.sh 35c31d5c32 selftests: forwarding: Test mirror-to-gretap w/ UL 802.1d 7 жил өмнө
mirror_gre_bridge_1d_vlan.sh ec9fdc99f5 selftests: forwarding: Tweak tc filters for mirror-to-gretap tests 7 жил өмнө
mirror_gre_bridge_1q.sh 239e754af8 selftests: forwarding: Test mirror-to-gretap w/ UL 802.1q 7 жил өмнө
mirror_gre_bridge_1q_lag.sh a9b33b2001 selftests: forwarding: Test mirror-to-gretap w/ UL team 7 жил өмнө
mirror_gre_changes.sh 4e74cc7c5d selftests: forwarding: mirror_gre_changes: Fix waiting for neighbor 7 жил өмнө
mirror_gre_flower.sh a96d81a20b selftests: forwarding: Test removal of mirroring 7 жил өмнө
mirror_gre_lag_lacp.sh 541c6ce30f selftests: forwarding: Test mirror-to-gretap w/ UL team LACP 7 жил өмнө
mirror_gre_lib.sh e88bc0f25b selftests: forwarding: Allow importing dependent libraries 7 жил өмнө
mirror_gre_neigh.sh 0eb8053c14 selftests: forwarding: Allow running specific tests 7 жил өмнө
mirror_gre_nh.sh 4280129838 selftests: forwarding: mirror_gre_nh: Unset rp_filter on host VRF 7 жил өмнө
mirror_gre_topo_lib.sh e88bc0f25b selftests: forwarding: Allow importing dependent libraries 7 жил өмнө
mirror_gre_vlan.sh a08fb9f1ad selftests: forwarding: Test mirror-to-gre w/ UL VLAN 7 жил өмнө
mirror_gre_vlan_bridge_1q.sh ca70a56238 selftests: forwarding: Introduce $ARPING 7 жил өмнө
mirror_lib.sh db560d1612 selftests: forwarding: mirror_lib: Tighten up 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_bridge.sh 5b1e7f9ebd selftests: forwarding: Test routed bridge interface 7 жил өмнө
router_bridge_vlan.sh 5b1e7f9ebd selftests: forwarding: Test routed bridge interface 7 жил өмнө
router_broadcast.sh 40f98b9af9 selftests: add a selftest for directed broadcast forwarding 7 жил өмнө
router_multipath.sh b2c478723c selftests: forwarding: Move multipath_eval() to lib.sh 7 жил өмнө
tc_actions.sh 0eb8053c14 selftests: forwarding: Allow running specific tests 7 жил өмнө
tc_chains.sh 5a967512bb selftests: forwarding: add tests for TC chain get and dump operations 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 7f333cbf2b selftests: forwarding: move shblock tc support check to a separate helper 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 Tests that use anything but the most trivial topologies should include
an ASCII art showing the 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/