QortalOS Brooklyn for Raspberry Pi 4
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.
 
 
 
 
 
 
Scare Crowe 105fe4b2bf initial commit 3 years ago
..
.gitignore initial commit 3 years ago
Makefile initial commit 3 years ago
README initial commit 3 years ago
bridge_igmp.sh initial commit 3 years ago
bridge_mld.sh initial commit 3 years ago
bridge_port_isolation.sh initial commit 3 years ago
bridge_sticky_fdb.sh initial commit 3 years ago
bridge_vlan_aware.sh initial commit 3 years ago
bridge_vlan_unaware.sh initial commit 3 years ago
config initial commit 3 years ago
devlink_lib.sh initial commit 3 years ago
ethtool.sh initial commit 3 years ago
ethtool_extended_state.sh initial commit 3 years ago
ethtool_lib.sh initial commit 3 years ago
fib_offload_lib.sh initial commit 3 years ago
forwarding.config.sample initial commit 3 years ago
gre_inner_v4_multipath.sh initial commit 3 years ago
gre_inner_v6_multipath.sh initial commit 3 years ago
gre_multipath.sh initial commit 3 years ago
gre_multipath_nh.sh initial commit 3 years ago
ip6gre_inner_v4_multipath.sh initial commit 3 years ago
ip6gre_inner_v6_multipath.sh initial commit 3 years ago
ipip_flat_gre.sh initial commit 3 years ago
ipip_flat_gre_key.sh initial commit 3 years ago
ipip_flat_gre_keys.sh initial commit 3 years ago
ipip_hier_gre.sh initial commit 3 years ago
ipip_hier_gre_key.sh initial commit 3 years ago
ipip_hier_gre_keys.sh initial commit 3 years ago
ipip_lib.sh initial commit 3 years ago
lib.sh initial commit 3 years ago
loopback.sh initial commit 3 years ago
mirror_gre.sh initial commit 3 years ago
mirror_gre_bound.sh initial commit 3 years ago
mirror_gre_bridge_1d.sh initial commit 3 years ago
mirror_gre_bridge_1d_vlan.sh initial commit 3 years ago
mirror_gre_bridge_1q.sh initial commit 3 years ago
mirror_gre_bridge_1q_lag.sh initial commit 3 years ago
mirror_gre_changes.sh initial commit 3 years ago
mirror_gre_flower.sh initial commit 3 years ago
mirror_gre_lag_lacp.sh initial commit 3 years ago
mirror_gre_lib.sh initial commit 3 years ago
mirror_gre_neigh.sh initial commit 3 years ago
mirror_gre_nh.sh initial commit 3 years ago
mirror_gre_topo_lib.sh initial commit 3 years ago
mirror_gre_vlan.sh initial commit 3 years ago
mirror_gre_vlan_bridge_1q.sh initial commit 3 years ago
mirror_lib.sh initial commit 3 years ago
mirror_topo_lib.sh initial commit 3 years ago
mirror_vlan.sh initial commit 3 years ago
pedit_dsfield.sh initial commit 3 years ago
pedit_l4port.sh initial commit 3 years ago
q_in_vni.sh initial commit 3 years ago
router.sh initial commit 3 years ago
router_bridge.sh initial commit 3 years ago
router_bridge_vlan.sh initial commit 3 years ago
router_broadcast.sh initial commit 3 years ago
router_mpath_nh.sh initial commit 3 years ago
router_multicast.sh initial commit 3 years ago
router_multipath.sh initial commit 3 years ago
router_nh.sh initial commit 3 years ago
router_vid_1.sh initial commit 3 years ago
sch_ets.sh initial commit 3 years ago
sch_ets_core.sh initial commit 3 years ago
sch_ets_tests.sh initial commit 3 years ago
sch_red.sh initial commit 3 years ago
sch_tbf_core.sh initial commit 3 years ago
sch_tbf_ets.sh initial commit 3 years ago
sch_tbf_etsprio.sh initial commit 3 years ago
sch_tbf_prio.sh initial commit 3 years ago
sch_tbf_root.sh initial commit 3 years ago
skbedit_priority.sh initial commit 3 years ago
tc_actions.sh initial commit 3 years ago
tc_chains.sh initial commit 3 years ago
tc_common.sh initial commit 3 years ago
tc_flower.sh initial commit 3 years ago
tc_flower_router.sh initial commit 3 years ago
tc_mpls_l2vpn.sh initial commit 3 years ago
tc_police.sh initial commit 3 years ago
tc_shblocks.sh initial commit 3 years ago
tc_vlan_modify.sh initial commit 3 years ago
vxlan_asymmetric.sh initial commit 3 years ago
vxlan_bridge_1d.sh initial commit 3 years ago
vxlan_bridge_1d_port_8472.sh initial commit 3 years ago
vxlan_bridge_1q.sh initial commit 3 years ago
vxlan_bridge_1q_port_8472.sh initial commit 3 years ago
vxlan_symmetric.sh initial commit 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/