# Hide the second PF on host pf_hidden=$(mlxconfig -d "$mst_dev" q HIDE_PORT2_PF | grep True) if [ -z "$pf_hidden" ]; then echo y | mlxconfig -d "$mst_dev" s HIDE_PORT2_PF=True echo Please power cycle host server to hide the second unused host representative fi
Reboot the bluefield NIC
2. config the bond interface
2.1 command:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
ip link add bond0 type bond ip link set bond0 down ip link set bond0 type bond miimon 100 mode 4 ip link set p0 down ip link set p1 down ip link set p0 master bond0 ip link set p1 master bond0 ip link set p0 up ip link set p1 up ip link set bond0 up ovs-vsctl add-br bf-lag ovs-vsctl add-port bf-lag bond0 ovs-vsctl add-port bf-lag pf0hpf ip link set bf-lag up
Bonding Mode: IEEE 802.3ad Dynamic link aggregation Transmit Hash Policy: layer3+4 (1) MII Status: up MII Polling Interval (ms): 1 Up Delay (ms): 0 Down Delay (ms): 0 Peer Notification Delay (ms): 0
802.3ad info LACP rate: fast Min links: 0 Aggregator selection policy (ad_select): stable System priority: 65535 System MAC address: 7a:3f:79:7b:96:fb Active Aggregator Info: Aggregator ID: 1 Number of ports: 2 Actor Key: 15 Partner Key: 32 Partner Mac Address: c0:42:d0:08:9a:80
Slave Interface: p1 MII Status: up Speed: 10000 Mbps Duplex: full Link Failure Count: 1 Permanent HW addr: 08:c0:eb:2b:18:11 Slave queue ID: 0 Aggregator ID: 1 Actor Churn State: none Partner Churn State: none Actor Churned Count: 0 Partner Churned Count: 0 details actor lacp pdu: system priority: 65535 system mac address: 7a:3f:79:7b:96:fb port key: 15 port priority: 255 port number: 1 port state: 63 details partner lacp pdu: system priority: 127 system mac address: c0:42:d0:08:9a:80 oper key: 32 port priority: 127 port number: 16 port state: 63
Slave Interface: p0 MII Status: up Speed: 10000 Mbps Duplex: full Link Failure Count: 1 Permanent HW addr: 08:c0:eb:2b:18:10 Slave queue ID: 0 Aggregator ID: 1 Actor Churn State: none Partner Churn State: none Actor Churned Count: 0 Partner Churned Count: 0 details actor lacp pdu: system priority: 65535 system mac address: 7a:3f:79:7b:96:fb port key: 15 port priority: 255 port number: 2 port state: 63 details partner lacp pdu: system priority: 127 system mac address: c0:42:d0:08:9a:80 oper key: 32 port priority: 127 port number: 2 port state: 63
2.4 remove or add slave interface to bonding
remove
1
echo"-p0" > /sys/class/net/bond0/bonding/slaves
add
1
echo"+p0" > /sys/class/net/bond0/bonding/slaves
3. use tc to copy arp packets
1 2 3
tc qdisc add dev pf0hpf handle ffff: ingress
tc filter add dev pf0hpf parent ffff: protocol arp prio 1 flower skip_hw dst_mac ff:ff:ff:ff:ff:ff action mirred egress mirror dev p0 pipe action mirred egress mirror dev p1
or only match arp request packets
1
tc filter add dev pf0hpf parent ffff: protocol arp prio 1 flower skip_hw arp_op request action mirred egress mirror dev p0 pipe action mirred egress mirror dev p1
802.1Q vlan
1 2
tc filter add dev pf0hpf parent ffff: protocol 802.1Q prio 1 flower skip_hw vlan_ethtype arp action mirred egress mirror dev p0 pipe action mirred egress mirror dev p1
networkd-dispatcher.service - Dispatcher daemon for systemd-networkd Loaded: loaded (/lib/systemd/system/networkd-dispatcher.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2021-12-30 01:59:25 UTC; 1h 46min ago Main PID: 1402437 (networkd-dispat) Tasks: 1 (limit: 19076) Memory: 12.4M CGroup: /system.slice/networkd-dispatcher.service └─1402437 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers --script-dir /etc/networkd-dispatcher
Dec 30 03:24:14 localhost.localdomain networkd-dispatcher[1449900]: p1 change to enslaved, add tc filter rule Dec 30 03:31:35 localhost.localdomain networkd-dispatcher[1402437]: INFO:Invoking '/etc/networkd-dispatcher/no-carrier.d/50arp-mirror.sh'for interface p0 Dec 30 03:31:51 localhost.localdomain networkd-dispatcher[1402437]: INFO:Invoking '/etc/networkd-dispatcher/enslaved.d/50arp-mirror.sh'for interface p0 Dec 30 03:31:51 localhost.localdomain networkd-dispatcher[1454738]: p0 change to enslaved, add tc filter rule Dec 30 03:32:23 localhost.localdomain networkd-dispatcher[1402437]: INFO:Invoking '/etc/networkd-dispatcher/no-carrier.d/50arp-mirror.sh'for interface p0 Dec 30 03:32:32 localhost.localdomain networkd-dispatcher[1402437]: INFO:Invoking '/etc/networkd-dispatcher/enslaved.d/50arp-mirror.sh'for interface p0 Dec 30 03:32:32 localhost.localdomain networkd-dispatcher[1455161]: p0 change to enslaved, add tc filter rule Dec 30 03:32:41 localhost.localdomain networkd-dispatcher[1402437]: INFO:Invoking '/etc/networkd-dispatcher/no-carrier.d/50arp-mirror.sh'for interface p0 Dec 30 03:32:47 localhost.localdomain networkd-dispatcher[1402437]: INFO:Invoking '/etc/networkd-dispatcher/enslaved.d/50arp-mirror.sh'for interface p0 Dec 30 03:32:47 localhost.localdomain networkd-dispatcher[1455339]: p0 change to enslaved, add tc filter rule
4.2 modify networkd-dispatcher configure
1 2 3 4 5 6 7
cat /etc/default/networkd-dispatcher # Specify command line options here. This config file is used # by the included systemd service file. networkd_dispatcher_args="--run-startup-triggers --script-dir /etc/networkd-dispatcher"
#!/bin/bash if [[ $IFACE == "p0" || $IFACE == "p1" ]]; then echo"$IFACE change to enslaved, add tc filter rule" | tee -a /var/log/syslog; tc filter add dev pf0hpf parent ffff: protocol 802.1Q prio 2 flower skip_hw vlan_ethtype arp action mirred egress mirror dev p0 pipe action mirred egress mirror dev p1; tc filter add dev pf0hpf parent ffff: protocol arp prio 3 flower skip_hw arp_op request action mirred egress mirror dev p0 pipe action mirred egress mirror dev p1; fi
no-carrier.d/50arp-mirror.sh
1 2 3 4 5 6
#!/bin/bash if [[ $IFACE == "p0" || $IFACE == "p1" ]]; then echo"$IFACE change to no-carrie, delete tc filter rule" | tee -a /var/log/syslog; tc filter del dev pf0hpf parent ffff: protocol 802.1Q prio 2; tc filter del dev pf0hpf parent ffff: protocol arp prio 3; fi