# Argument parsing: configure addresses if [[ "${IP}" == "4" ]]; then
readonly SADDR="${LPREFIX4}.1"
readonly DADDR="${LPREFIX4}.2"
readonly DUMMY_ADDR="${RPREFIX4}.1"
readonly DADDR_TXONLY="${RPREFIX4}.2"
readonly MASK="24" elif [[ "${IP}" == "6" ]]; then
readonly SADDR="${LPREFIX6}::1"
readonly DADDR="${LPREFIX6}::2"
readonly DUMMY_ADDR="${RPREFIX6}::1"
readonly DADDR_TXONLY="${RPREFIX6}::2"
readonly MASK="64"
readonly NODAD="nodad" else echo"Invalid IP version ${IP}"
exit 1 fi
# Argument parsing: select receive mode # # This differs from send mode for # - packet: use raw recv, because packet receives skb clones # - raw_hdrinc: use raw recv, because hdrincl is a tx-only option
case "${TXMODE}" in 'packet' | 'packet_dgram' | 'raw_hdrincl')
RXMODE='raw'
;;
*)
RXMODE="${TXMODE}"
;;
esac
# Start of state changes: install cleanup handler
cleanup() {
ip netns del"${NS2}"
ip netns del"${NS1}"
}
trap cleanup EXIT
# Create virtual ethernet pair between network namespaces
ip netns add "${NS1}"
ip netns add "${NS2}"
# Configure system settings
ip netns exec "${NS1}" sysctl -w -q "${path_sysctl_mem}=1000000"
ip netns exec "${NS2}" sysctl -w -q "${path_sysctl_mem}=1000000"
ip link add "${DEV}" mtu "${DEV_MTU}" netns "${NS1}" type veth \
peer name "${DEV}" mtu "${DEV_MTU}" netns "${NS2}"
ip link add "${DUMMY_DEV}" mtu "${DEV_MTU}" netns "${NS2}" type dummy
# Bring the devices up
ip -netns "${NS1}" link set "${DEV}" up
ip -netns "${NS2}" link set "${DEV}" up
ip -netns "${NS2}" link set "${DUMMY_DEV}" up
# Set fixed MAC addresses on the devices
ip -netns "${NS1}" link set dev "${DEV}" address 02:02:02:02:02:02
ip -netns "${NS2}" link set dev "${DEV}" address 06:06:06:06:06:06
# Add fixed IP addresses to the devices
ip -netns "${NS1}" addr add "${SADDR}/${MASK}" dev "${DEV}" ${NODAD}
ip -netns "${NS2}" addr add "${DADDR}/${MASK}" dev "${DEV}" ${NODAD}
ip -netns "${NS2}" addr add "${DUMMY_ADDR}/${MASK}" dev "${DUMMY_DEV}" ${NODAD}
ip -netns "${NS1}" route add default via "${DADDR}" dev "${DEV}"
ip -netns "${NS2}" route add default via "${DADDR_TXONLY}" dev "${DUMMY_DEV}"
ip netns exec "${NS2}" sysctl -wq net.ipv4.ip_forward=1
ip netns exec "${NS2}" sysctl -wq net.ipv6.conf.all.forwarding=1
# Optionally disable sg or csum offload to test edge cases # ip netns exec "${NS1}" ethtool -K "${DEV}" sg off
ret=0
do_test() {
local readonly ARGS="$1"
# tx-rx test # packets queued to a local socket are copied, # sender notification has SO_EE_CODE_ZEROCOPY_COPIED.
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.