__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
#
# Test VxLAN flooding. The device stores flood records in a singly linked list
# where each record stores up to three IPv4 addresses of remote VTEPs. The test
# verifies that packets are correctly flooded in various cases such as deletion
# of a record in the middle of the list.
#
# +--------------------+
# | H1 (vrf)           |
# |    + $h1           |
# |    | 203.0.113.1/24|
# +----|---------------+
#      |
# +----|----------------------------------------------------------------------+
# | SW |                                                                      |
# | +--|--------------------------------------------------------------------+ |
# | |  + $swp1                   BR0 (802.1d)                               | |
# | |                                                                       | |
# | |  + vxlan0 (vxlan)                                                     | |
# | |    local 198.51.100.1                                                 | |
# | |    remote 198.51.100.{2..13}                                          | |
# | |    id 10 dstport 4789                                                 | |
# | +-----------------------------------------------------------------------+ |
# |                                                                           |
# |  198.51.100.0/24 via 192.0.2.2                                            |
# |                                                                           |
# |    + $rp1                                                                 |
# |    | 192.0.2.1/24                                                         |
# +----|----------------------------------------------------------------------+
#      |
# +----|--------------------------------------------------------+
# |    |                                               R2 (vrf) |
# |    + $rp2                                                   |
# |      192.0.2.2/24                                           |
# |                                                             |
# +-------------------------------------------------------------+

lib_dir=$(dirname $0)/../../../net/forwarding

ALL_TESTS="flooding_test"
NUM_NETIFS=4
source $lib_dir/tc_common.sh
source $lib_dir/lib.sh

h1_create()
{
	simple_if_init $h1 203.0.113.1/24
}

h1_destroy()
{
	simple_if_fini $h1 203.0.113.1/24
}

switch_create()
{
	# Make sure the bridge uses the MAC address of the local port and
	# not that of the VxLAN's device
	ip link add dev br0 type bridge mcast_snooping 0
	ip link set dev br0 address $(mac_get $swp1)

	ip link add name vxlan0 type vxlan id 10 nolearning noudpcsum \
		ttl 20 tos inherit local 198.51.100.1 dstport 4789

	ip address add 198.51.100.1/32 dev lo

	ip link set dev $swp1 master br0
	ip link set dev vxlan0 master br0

	ip link set dev br0 up
	ip link set dev $swp1 up
	ip link set dev vxlan0 up
}

switch_destroy()
{
	ip link set dev vxlan0 down
	ip link set dev $swp1 down
	ip link set dev br0 down

	ip link set dev vxlan0 nomaster
	ip link set dev $swp1 nomaster

	ip address del 198.51.100.1/32 dev lo

	ip link del dev vxlan0

	ip link del dev br0
}

router1_create()
{
	# This router is in the default VRF, where the VxLAN device is
	# performing the L3 lookup
	ip link set dev $rp1 up
	ip address add 192.0.2.1/24 dev $rp1
	ip route add 198.51.100.0/24 via 192.0.2.2
}

router1_destroy()
{
	ip route del 198.51.100.0/24 via 192.0.2.2
	ip address del 192.0.2.1/24 dev $rp1
	ip link set dev $rp1 down
}

router2_create()
{
	# This router is not in the default VRF, so use simple_if_init()
	simple_if_init $rp2 192.0.2.2/24
}

router2_destroy()
{
	simple_if_fini $rp2 192.0.2.2/24
}

setup_prepare()
{
	h1=${NETIFS[p1]}
	swp1=${NETIFS[p2]}

	rp1=${NETIFS[p3]}
	rp2=${NETIFS[p4]}

	vrf_prepare

	h1_create

	switch_create

	router1_create
	router2_create

	forwarding_enable
}

cleanup()
{
	pre_cleanup

	forwarding_restore

	router2_destroy
	router1_destroy

	switch_destroy

	h1_destroy

	vrf_cleanup
}

flooding_remotes_add()
{
	local num_remotes=$1
	local lsb
	local i

	for i in $(eval echo {1..$num_remotes}); do
		lsb=$((i + 1))

		bridge fdb append 00:00:00:00:00:00 dev vxlan0 self \
			dst 198.51.100.$lsb
	done
}

flooding_filters_add()
{
	local num_remotes=$1
	local lsb
	local i

	# Prevent unwanted packets from entering the bridge and interfering
	# with the test.
	tc qdisc add dev br0 clsact
	tc filter add dev br0 egress protocol all pref 1 handle 1 \
		matchall skip_hw action drop
	tc qdisc add dev $h1 clsact
	tc filter add dev $h1 egress protocol all pref 1 handle 1 \
		flower skip_hw dst_mac de:ad:be:ef:13:37 action pass
	tc filter add dev $h1 egress protocol all pref 2 handle 2 \
		matchall skip_hw action drop

	tc qdisc add dev $rp2 clsact

	for i in $(eval echo {1..$num_remotes}); do
		lsb=$((i + 1))

		tc filter add dev $rp2 ingress protocol ip pref $i handle $i \
			flower ip_proto udp dst_ip 198.51.100.$lsb \
			dst_port 4789 skip_sw action drop
	done
}

flooding_filters_del()
{
	local num_remotes=$1
	local i

	for i in $(eval echo {1..$num_remotes}); do
		tc filter del dev $rp2 ingress protocol ip pref $i \
			handle $i flower
	done

	tc qdisc del dev $rp2 clsact

	tc filter del dev $h1 egress protocol all pref 2 handle 2 matchall
	tc filter del dev $h1 egress protocol all pref 1 handle 1 flower
	tc qdisc del dev $h1 clsact
	tc filter del dev br0 egress protocol all pref 1 handle 1 matchall
	tc qdisc del dev br0 clsact
}

flooding_check_packets()
{
	local packets=("$@")
	local num_remotes=${#packets[@]}
	local i

	for i in $(eval echo {1..$num_remotes}); do
		tc_check_packets "dev $rp2 ingress" $i ${packets[i - 1]}
		check_err $? "remote $i - did not get expected number of packets"
	done
}

flooding_test()
{
	# Use 12 remote VTEPs that will be stored in 4 records. The array
	# 'packets' will store how many packets are expected to be received
	# by each remote VTEP at each stage of the test
	declare -a packets=(1 1 1 1 1 1 1 1 1 1 1 1)
	local num_remotes=12

	RET=0

	# Add FDB entries for remote VTEPs and corresponding tc filters on the
	# ingress of the nexthop router. These filters will count how many
	# packets were flooded to each remote VTEP
	flooding_remotes_add $num_remotes
	flooding_filters_add $num_remotes

	# Send one packet and make sure it is flooded to all the remote VTEPs
	$MZ $h1 -q -p 64 -b de:ad:be:ef:13:37 -t ip -c 1
	flooding_check_packets "${packets[@]}"
	log_test "flood after 1 packet"

	# Delete the third record which corresponds to VTEPs with LSB 8..10
	# and check that packet is flooded correctly when we remove a record
	# from the middle of the list
	RET=0

	packets=(2 2 2 2 2 2 1 1 1 2 2 2)
	bridge fdb del 00:00:00:00:00:00 dev vxlan0 self dst 198.51.100.8
	bridge fdb del 00:00:00:00:00:00 dev vxlan0 self dst 198.51.100.9
	bridge fdb del 00:00:00:00:00:00 dev vxlan0 self dst 198.51.100.10

	$MZ $h1 -q -p 64 -b de:ad:be:ef:13:37 -t ip -c 1
	flooding_check_packets "${packets[@]}"
	log_test "flood after 2 packets"

	# Delete the first record and make sure the packet is flooded correctly
	RET=0

	packets=(2 2 2 3 3 3 1 1 1 3 3 3)
	bridge fdb del 00:00:00:00:00:00 dev vxlan0 self dst 198.51.100.2
	bridge fdb del 00:00:00:00:00:00 dev vxlan0 self dst 198.51.100.3
	bridge fdb del 00:00:00:00:00:00 dev vxlan0 self dst 198.51.100.4

	$MZ $h1 -q -p 64 -b de:ad:be:ef:13:37 -t ip -c 1
	flooding_check_packets "${packets[@]}"
	log_test "flood after 3 packets"

	# Delete the last record and make sure the packet is flooded correctly
	RET=0

	packets=(2 2 2 4 4 4 1 1 1 3 3 3)
	bridge fdb del 00:00:00:00:00:00 dev vxlan0 self dst 198.51.100.11
	bridge fdb del 00:00:00:00:00:00 dev vxlan0 self dst 198.51.100.12
	bridge fdb del 00:00:00:00:00:00 dev vxlan0 self dst 198.51.100.13

	$MZ $h1 -q -p 64 -b de:ad:be:ef:13:37 -t ip -c 1
	flooding_check_packets "${packets[@]}"
	log_test "flood after 4 packets"

	# Delete the last record, one entry at a time and make sure single
	# entries are correctly removed
	RET=0

	packets=(2 2 2 4 5 5 1 1 1 3 3 3)
	bridge fdb del 00:00:00:00:00:00 dev vxlan0 self dst 198.51.100.5

	$MZ $h1 -q -p 64 -b de:ad:be:ef:13:37 -t ip -c 1
	flooding_check_packets "${packets[@]}"
	log_test "flood after 5 packets"

	RET=0

	packets=(2 2 2 4 5 6 1 1 1 3 3 3)
	bridge fdb del 00:00:00:00:00:00 dev vxlan0 self dst 198.51.100.6

	$MZ $h1 -q -p 64 -b de:ad:be:ef:13:37 -t ip -c 1
	flooding_check_packets "${packets[@]}"
	log_test "flood after 6 packets"

	RET=0

	packets=(2 2 2 4 5 6 1 1 1 3 3 3)
	bridge fdb del 00:00:00:00:00:00 dev vxlan0 self dst 198.51.100.7

	$MZ $h1 -q -p 64 -b de:ad:be:ef:13:37 -t ip -c 1
	flooding_check_packets "${packets[@]}"
	log_test "flood after 7 packets"

	flooding_filters_del $num_remotes
}

trap cleanup EXIT

setup_prepare
setup_wait

tests_run

exit $EXIT_STATUS

Filemanager

Name Type Size Permission Actions
spectrum Folder 0755
spectrum-2 Folder 0755
blackhole_routes.sh File 4.96 KB 0755
devlink_linecard.sh File 7.5 KB 0755
devlink_trap.sh File 1.86 KB 0755
devlink_trap_acl_drops.sh File 2.4 KB 0755
devlink_trap_control.sh File 18.22 KB 0755
devlink_trap_l2_drops.sh File 12.87 KB 0755
devlink_trap_l3_drops.sh File 16.38 KB 0755
devlink_trap_l3_exceptions.sh File 13.64 KB 0755
devlink_trap_policer.sh File 9.75 KB 0755
devlink_trap_tunnel_ipip.sh File 5.24 KB 0755
devlink_trap_tunnel_ipip6.sh File 5.31 KB 0755
devlink_trap_tunnel_vxlan.sh File 8.84 KB 0755
devlink_trap_tunnel_vxlan_ipv6.sh File 9.32 KB 0755
egress_vid_classification.sh File 6.55 KB 0755
ethtool_lanes.sh File 4.02 KB 0755
extack.sh File 3.74 KB 0755
fib.sh File 5.43 KB 0755
fib_offload.sh File 9.93 KB 0755
hw_stats_l3.sh File 410 B 0755
ingress_rif_conf_1d.sh File 6.15 KB 0755
ingress_rif_conf_1q.sh File 6.23 KB 0755
ingress_rif_conf_vxlan.sh File 8.44 KB 0755
mirror_gre.sh File 3.78 KB 0755
mirror_gre_scale.sh File 5.43 KB 0644
mlxsw_lib.sh File 1.43 KB 0644
one_armed_router.sh File 6.82 KB 0755
pci_reset.sh File 1.27 KB 0755
port_range_occ.sh File 2.33 KB 0755
port_range_scale.sh File 1.51 KB 0644
port_scale.sh File 1.36 KB 0644
q_in_q_veto.sh File 8.06 KB 0755
qos_defprio.sh File 2.33 KB 0755
qos_dscp_bridge.sh File 4.14 KB 0755
qos_dscp_router.sh File 6.43 KB 0755
qos_ets_strict.sh File 9.09 KB 0755
qos_headroom.sh File 8.19 KB 0755
qos_lib.sh File 1.27 KB 0644
qos_max_descriptors.sh File 6.14 KB 0755
qos_mc_aware.sh File 9.54 KB 0755
qos_pfc.sh File 11.36 KB 0755
rif_bridge.sh File 4.12 KB 0755
rif_counter_scale.sh File 1.71 KB 0644
rif_lag.sh File 2.98 KB 0755
rif_lag_vlan.sh File 3.24 KB 0755
rif_mac_profile_scale.sh File 1.64 KB 0644
rif_mac_profiles.sh File 4.65 KB 0755
rif_mac_profiles_occ.sh File 2.87 KB 0755
router_bridge_lag.sh File 786 B 0755
router_scale.sh File 2.09 KB 0644
rtnetlink.sh File 26.93 KB 0755
sch_ets.sh File 2.3 KB 0755
sch_offload.sh File 5.25 KB 0755
sch_red_core.sh File 20.75 KB 0644
sch_red_ets.sh File 3.12 KB 0755
sch_red_prio.sh File 81 B 0755
sch_red_root.sh File 1.25 KB 0755
sch_tbf_ets.sh File 216 B 0755
sch_tbf_prio.sh File 217 B 0755
sch_tbf_root.sh File 217 B 0755
sharedbuffer.sh File 5.24 KB 0755
tc_action_hw_stats.sh File 2.24 KB 0755
tc_flower_scale.sh File 2.81 KB 0644
tc_police_occ.sh File 2.07 KB 0755
tc_police_scale.sh File 1.62 KB 0644
tc_restrictions.sh File 11.58 KB 0755
tc_sample.sh File 17.38 KB 0755
vxlan.sh File 30.19 KB 0755
vxlan_fdb_veto.sh File 3.11 KB 0755
vxlan_fdb_veto_ipv6.sh File 250 B 0755
vxlan_flooding.sh File 8.64 KB 0755
vxlan_ipv6.sh File 1.39 KB 0755
Filemanager