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 70e34291f6
Rockchip Anroid14_SDK 20241219-rkr6 (2f87fee1)
11 months ago
..
.gitignore Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
Makefile Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
README Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
bridge_igmp.sh Rockchip Anroid14_SDK 20241219-rkr6 (2f87fee1) 11 months ago
bridge_locked_port.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
bridge_mdb.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
bridge_mdb_port_down.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
bridge_mld.sh Rockchip Anroid14_SDK 20241219-rkr6 (2f87fee1) 11 months ago
bridge_port_isolation.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
bridge_sticky_fdb.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
bridge_vlan_aware.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
bridge_vlan_mcast.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
bridge_vlan_unaware.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
config Rockchip Anroid14_SDK 20241219-rkr6 (2f87fee1) 11 months ago
custom_multipath_hash.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
devlink_lib.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
dual_vxlan_bridge.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
ethtool.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
ethtool_extended_state.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
ethtool_lib.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
fib_offload_lib.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
forwarding.config.sample Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
gre_custom_multipath_hash.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
gre_inner_v4_multipath.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
gre_inner_v6_multipath.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
gre_multipath.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
gre_multipath_nh.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
gre_multipath_nh_res.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
hw_stats_l3.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
hw_stats_l3_gre.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
ip6_forward_instats_vrf.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
ip6gre_custom_multipath_hash.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
ip6gre_flat.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
ip6gre_flat_key.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
ip6gre_flat_keys.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
ip6gre_hier.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
ip6gre_hier_key.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
ip6gre_hier_keys.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
ip6gre_inner_v4_multipath.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
ip6gre_inner_v6_multipath.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
ip6gre_lib.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
ipip_flat_gre.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
ipip_flat_gre_key.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
ipip_flat_gre_keys.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
ipip_hier_gre.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
ipip_hier_gre_key.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
ipip_hier_gre_keys.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
ipip_lib.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
lib.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
local_termination.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
loopback.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
mirror_gre.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
mirror_gre_bound.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
mirror_gre_bridge_1d.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
mirror_gre_bridge_1d_vlan.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
mirror_gre_bridge_1q.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
mirror_gre_bridge_1q_lag.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
mirror_gre_changes.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
mirror_gre_flower.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
mirror_gre_lag_lacp.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
mirror_gre_lib.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
mirror_gre_neigh.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
mirror_gre_nh.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
mirror_gre_topo_lib.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
mirror_gre_vlan.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
mirror_gre_vlan_bridge_1q.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
mirror_lib.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
mirror_topo_lib.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
mirror_vlan.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
no_forwarding.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
pedit_dsfield.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
pedit_ip.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
pedit_l4port.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
q_in_vni.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
q_in_vni_ipv6.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
router.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
router_bridge.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
router_bridge_vlan.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
router_broadcast.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
router_mpath_nh.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
router_mpath_nh_res.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
router_multicast.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
router_multipath.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
router_nh.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
router_vid_1.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
sch_ets.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
sch_ets_core.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
sch_ets_tests.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
sch_red.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
sch_tbf_core.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
sch_tbf_ets.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
sch_tbf_etsprio.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
sch_tbf_prio.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
sch_tbf_root.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
settings Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
skbedit_priority.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
tc_actions.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
tc_chains.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
tc_common.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
tc_flower.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
tc_flower_router.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
tc_mpls_l2vpn.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
tc_police.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
tc_shblocks.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
tc_vlan_modify.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
tsn_lib.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
vxlan_asymmetric.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
vxlan_asymmetric_ipv6.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
vxlan_bridge_1d.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
vxlan_bridge_1d_ipv6.sh Rockchip Anroid14_SDK 20241219-rkr6 (2f87fee1) 11 months ago
vxlan_bridge_1d_port_8472.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
vxlan_bridge_1d_port_8472_ipv6.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
vxlan_bridge_1q.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
vxlan_bridge_1q_ipv6.sh Rockchip Anroid14_SDK 20241219-rkr6 (2f87fee1) 11 months ago
vxlan_bridge_1q_port_8472.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
vxlan_bridge_1q_port_8472_ipv6.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
vxlan_symmetric.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
vxlan_symmetric_ipv6.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year 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/