1
0
Fork 0
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hmz007 6d24f2138b
Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56)
3 years ago
..
.gitignore Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
README Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
bridge_igmp.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
bridge_port_isolation.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
bridge_sticky_fdb.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
bridge_vlan_aware.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
bridge_vlan_unaware.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
config Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
devlink_lib.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
ethtool.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
ethtool_lib.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
forwarding.config.sample Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
gre_inner_v4_multipath.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
gre_inner_v6_multipath.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
gre_multipath.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
ip6gre_inner_v4_multipath.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
ip6gre_inner_v6_multipath.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
ipip_flat_gre.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
ipip_flat_gre_key.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
ipip_flat_gre_keys.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
ipip_hier_gre.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
ipip_hier_gre_key.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
ipip_hier_gre_keys.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
ipip_lib.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
lib.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
loopback.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
mirror_gre.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
mirror_gre_bound.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
mirror_gre_bridge_1d.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
mirror_gre_bridge_1d_vlan.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
mirror_gre_bridge_1q.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
mirror_gre_bridge_1q_lag.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
mirror_gre_changes.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
mirror_gre_flower.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
mirror_gre_lag_lacp.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
mirror_gre_lib.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
mirror_gre_neigh.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
mirror_gre_nh.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
mirror_gre_topo_lib.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
mirror_gre_vlan.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
mirror_gre_vlan_bridge_1q.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
mirror_lib.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
mirror_topo_lib.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
mirror_vlan.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
router.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
router_bridge.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
router_bridge_vlan.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
router_broadcast.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
router_mpath_nh.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
router_multicast.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
router_multipath.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
router_vid_1.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
tc_actions.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
tc_chains.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
tc_common.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
tc_flower.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
tc_flower_router.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
tc_shblocks.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
tc_vlan_modify.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
vxlan_asymmetric.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
vxlan_bridge_1d.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
vxlan_bridge_1d_port_8472.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
vxlan_bridge_1q.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
vxlan_bridge_1q_port_8472.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
vxlan_symmetric.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago

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/