Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) #!/bin/bash
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) # SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) function config_device {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) 	ip netns add at_ns0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) 	ip netns add at_ns1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) 	ip netns add at_ns2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) 	ip link add veth0 type veth peer name veth0b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 	ip link add veth1 type veth peer name veth1b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) 	ip link add veth2 type veth peer name veth2b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) 	ip link set veth0b up
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) 	ip link set veth1b up
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) 	ip link set veth2b up
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) 	ip link set dev veth0b mtu 1500
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) 	ip link set dev veth1b mtu 1500
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) 	ip link set dev veth2b mtu 1500
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 	ip link set veth0 netns at_ns0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) 	ip link set veth1 netns at_ns1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) 	ip link set veth2 netns at_ns2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) 	ip netns exec at_ns0 ip addr add 172.16.1.100/24 dev veth0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) 	ip netns exec at_ns0 ip addr add 2401:db00::1/64 dev veth0 nodad
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) 	ip netns exec at_ns0 ip link set dev veth0 up
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 	ip netns exec at_ns1 ip addr add 172.16.1.101/24 dev veth1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 	ip netns exec at_ns1 ip addr add 2401:db00::2/64 dev veth1 nodad
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 	ip netns exec at_ns1 ip link set dev veth1 up
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 	ip netns exec at_ns2 ip addr add 172.16.1.200/24 dev veth2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 	ip netns exec at_ns2 ip addr add 2401:db00::3/64 dev veth2 nodad
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 	ip netns exec at_ns2 ip link set dev veth2 up
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 	ip link add br0 type bridge
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) 	ip link set br0 up
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 	ip link set dev br0 mtu 1500
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 	ip link set veth0b master br0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) 	ip link set veth1b master br0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 	ip link set veth2b master br0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) function add_ipip_tunnel {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 	ip netns exec at_ns0 \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 		ip link add dev $DEV_NS type ipip local 172.16.1.100 remote 172.16.1.200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 	ip netns exec at_ns0 ip link set dev $DEV_NS up
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 	ip netns exec at_ns0 ip addr add dev $DEV_NS 10.1.1.100/24
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 	ip netns exec at_ns1 \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 		ip link add dev $DEV_NS type ipip local 172.16.1.101 remote 172.16.1.200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 	ip netns exec at_ns1 ip link set dev $DEV_NS up
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 	# same inner IP address in at_ns0 and at_ns1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 	ip netns exec at_ns1 ip addr add dev $DEV_NS 10.1.1.100/24
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 	ip netns exec at_ns2 ip link add dev $DEV type ipip external
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 	ip netns exec at_ns2 ip link set dev $DEV up
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 	ip netns exec at_ns2 ip addr add dev $DEV 10.1.1.200/24
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) function add_ipip6_tunnel {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 	ip netns exec at_ns0 \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 		ip link add dev $DEV_NS type ip6tnl mode ipip6 local 2401:db00::1/64 remote 2401:db00::3/64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 	ip netns exec at_ns0 ip link set dev $DEV_NS up
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 	ip netns exec at_ns0 ip addr add dev $DEV_NS 10.1.1.100/24
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 	ip netns exec at_ns1 \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 		ip link add dev $DEV_NS type ip6tnl mode ipip6 local 2401:db00::2/64 remote 2401:db00::3/64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 	ip netns exec at_ns1 ip link set dev $DEV_NS up
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 	# same inner IP address in at_ns0 and at_ns1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 	ip netns exec at_ns1 ip addr add dev $DEV_NS 10.1.1.100/24
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 	ip netns exec at_ns2 ip link add dev $DEV type ip6tnl mode ipip6 external
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 	ip netns exec at_ns2 ip link set dev $DEV up
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 	ip netns exec at_ns2 ip addr add dev $DEV 10.1.1.200/24
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) function add_ip6ip6_tunnel {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 	ip netns exec at_ns0 \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 		ip link add dev $DEV_NS type ip6tnl mode ip6ip6 local 2401:db00::1/64 remote 2401:db00::3/64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 	ip netns exec at_ns0 ip link set dev $DEV_NS up
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 	ip netns exec at_ns0 ip addr add dev $DEV_NS 2601:646::1/64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 	ip netns exec at_ns1 \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 		ip link add dev $DEV_NS type ip6tnl mode ip6ip6 local 2401:db00::2/64 remote 2401:db00::3/64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 	ip netns exec at_ns1 ip link set dev $DEV_NS up
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 	# same inner IP address in at_ns0 and at_ns1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 	ip netns exec at_ns1 ip addr add dev $DEV_NS 2601:646::1/64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 	ip netns exec at_ns2 ip link add dev $DEV type ip6tnl mode ip6ip6 external
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 	ip netns exec at_ns2 ip link set dev $DEV up
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 	ip netns exec at_ns2 ip addr add dev $DEV 2601:646::2/64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) function attach_bpf {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 	DEV=$1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 	SET_TUNNEL=$2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 	GET_TUNNEL=$3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 	ip netns exec at_ns2 tc qdisc add dev $DEV clsact
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 	ip netns exec at_ns2 tc filter add dev $DEV egress bpf da obj tcbpf2_kern.o sec $SET_TUNNEL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 	ip netns exec at_ns2 tc filter add dev $DEV ingress bpf da obj tcbpf2_kern.o sec $GET_TUNNEL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) function test_ipip {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 	DEV_NS=ipip_std
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 	DEV=ipip_bpf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 	config_device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) #	tcpdump -nei br0 &
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 	cat /sys/kernel/debug/tracing/trace_pipe &
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 	add_ipip_tunnel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 	attach_bpf $DEV ipip_set_tunnel ipip_get_tunnel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 	ip netns exec at_ns0 ping -c 1 10.1.1.200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 	ip netns exec at_ns2 ping -c 1 10.1.1.100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 	ip netns exec at_ns0 iperf -sD -p 5200 > /dev/null
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 	ip netns exec at_ns1 iperf -sD -p 5201 > /dev/null
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 	sleep 0.2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 	# tcp check _same_ IP over different tunnels
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 	ip netns exec at_ns2 iperf -c 10.1.1.100 -n 5k -p 5200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 	ip netns exec at_ns2 iperf -c 10.1.1.100 -n 5k -p 5201
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 	cleanup
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) # IPv4 over IPv6 tunnel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) function test_ipip6 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 	DEV_NS=ipip_std
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 	DEV=ipip_bpf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) 	config_device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) #	tcpdump -nei br0 &
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) 	cat /sys/kernel/debug/tracing/trace_pipe &
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 	add_ipip6_tunnel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 	attach_bpf $DEV ipip6_set_tunnel ipip6_get_tunnel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 	ip netns exec at_ns0 ping -c 1 10.1.1.200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 	ip netns exec at_ns2 ping -c 1 10.1.1.100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) 	ip netns exec at_ns0 iperf -sD -p 5200 > /dev/null
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) 	ip netns exec at_ns1 iperf -sD -p 5201 > /dev/null
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 	sleep 0.2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 	# tcp check _same_ IP over different tunnels
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) 	ip netns exec at_ns2 iperf -c 10.1.1.100 -n 5k -p 5200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 	ip netns exec at_ns2 iperf -c 10.1.1.100 -n 5k -p 5201
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) 	cleanup
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) # IPv6 over IPv6 tunnel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) function test_ip6ip6 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) 	DEV_NS=ipip_std
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) 	DEV=ipip_bpf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) 	config_device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) #	tcpdump -nei br0 &
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) 	cat /sys/kernel/debug/tracing/trace_pipe &
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) 	add_ip6ip6_tunnel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) 	attach_bpf $DEV ip6ip6_set_tunnel ip6ip6_get_tunnel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) 	ip netns exec at_ns0 ping -6 -c 1 2601:646::2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) 	ip netns exec at_ns2 ping -6 -c 1 2601:646::1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) 	ip netns exec at_ns0 iperf -6sD -p 5200 > /dev/null
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) 	ip netns exec at_ns1 iperf -6sD -p 5201 > /dev/null
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) 	sleep 0.2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) 	# tcp check _same_ IP over different tunnels
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) 	ip netns exec at_ns2 iperf -6c 2601:646::1 -n 5k -p 5200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) 	ip netns exec at_ns2 iperf -6c 2601:646::1 -n 5k -p 5201
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) 	cleanup
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) function cleanup {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) 	set +ex
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) 	pkill iperf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) 	ip netns delete at_ns0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) 	ip netns delete at_ns1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) 	ip netns delete at_ns2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) 	ip link del veth0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) 	ip link del veth1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) 	ip link del veth2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) 	ip link del br0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) 	pkill tcpdump
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) 	pkill cat
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) 	set -ex
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) cleanup
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) echo "Testing IP tunnels..."
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) test_ipip
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) test_ipip6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) test_ip6ip6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) echo "*** PASS ***"