아래 두 블록을 그대로 복사-붙여넣기 하면
순서 요약
- PC 터미널에 블록 ① 입력 → iperf 서버·캡처 대기
- 보드 터미널에 블록 ② 입력 → CBS 설정 + 100 Mb/s 두 스트림 전송
- 캡처가 끝나면 PC 측 pcap 확인, 보드에서
tc -s qdisc show dev end0
로 drops 확인
pc_recv_capture.sh
cat <<'EOF' > pc_recv_capture.sh
#!/bin/sh
IF=enp9s0
PC_IP=169.254.13.30
BOARD_IP=169.254.13.31
# IP 세팅
sudo ip addr flush dev $IF
sudo ip addr add ${PC_IP}/16 dev $IF
sudo ip link set $IF up
# pcap 캡처
CAP="$HOME/cbs_recv_$(date +%Y%m%d_%H%M%S).pcap"
sudo tcpdump -i $IF udp and \(port 6001 or port 6002\) -w $CAP &
TCPDUMP_PID=$!
# iperf3 서버 두 개
iperf3 -s -p 6001 -i 1 &
iperf3 -s -p 6002 -i 1 &
IPERF_PIDS="$!"
# 45초 뒤 종료(트래픽 40 s 전송 예정)
sleep 45
kill $IPERF_PIDS
sudo kill $TCPDUMP_PID
echo "=== pcap saved to $CAP ==="
EOF
chmod +x pc_recv_capture.sh
실행 → ./pc_recv_capture.sh
board_send_cbs.sh
cat <<'EOF' > board_send_cbs.sh
#!/bin/sh
IF=end0
BOARD_IP=169.254.13.31
PC_IP=169.254.13.30
######## 0. IP 설정 ########
ip addr flush dev $IF
ip addr add ${BOARD_IP}/16 dev $IF
ip link set $IF up
######## 1. MQPRIO (메뉴얼 맵) ########
tc qdisc del dev $IF root 2>/dev/null
tc qdisc add dev $IF root handle 1: mqprio \
hw 0 num_tc 5 \
map 1 1 2 3 4 \
queues 1@0 1@1 1@2 1@3 1@4
######## 2. CBS – TC2 20 Mb/s, TC3 10 Mb/s ########
tc qdisc replace dev $IF parent 1:2 cbs \
idleslope 20000 sendslope -980000 \
hicredit 2147483647 locredit -2147483648 offload 1
tc qdisc replace dev $IF parent 1:3 cbs \
idleslope 10000 sendslope -990000 \
hicredit 2147483647 locredit -2147483648 offload 1
######## 3. clsact + flower : 포트→SKB prio ########
tc qdisc add dev $IF clsact
tc filter add dev $IF egress protocol ip prio 10 flower ip_proto udp dst_port 6001 \
action skbedit priority 2 # TC2
tc filter add dev $IF egress protocol ip prio 10 flower ip_proto udp dst_port 6002 \
action skbedit priority 3 # TC3
######## 4. 100 Mb/s × 2 UDP 스트림 송신 ########
iperf3 -c ${PC_IP} -p 6001 -u -b 100M -l 1470 -t 40 -i 0 -f m &
iperf3 -c ${PC_IP} -p 6002 -u -b 100M -l 1470 -t 40 -i 0 -f m &
wait
echo "=== 송신 완료. 'tc -s qdisc show dev $IF' 로 드롭 확인 ==="
EOF
chmod +x board_send_cbs.sh
실행 → sudo ./board_send_cbs.sh
tc -s qdisc show dev end0
→
TC2/TC3 의 dropped
·overlimits
증가 == CBS가 초과 트래픽을 차단.