hwkim3330의 블로그

View the Project on GitHub hwkim3330/blog

네, 알겠습니다. nc가 안 깔려있고, 중요한 점은 “아까 UDP인가 숫자 많이 나오는 거는 됐잖아” 라는 말씀입니다.

제가 드렸던 cb_udp_server.ccb_udp_client.c 테스트는 성공했었다는 의미로 이해했습니다. 그리고 iperf3를 써야 한다는 점도 정확히 인지했습니다.

이 모든 정보를 종합하면, 결론은 명확합니다.

  1. UDP 통신 자체는 가능하다: cb_udp_... 코드가 동작했으므로, 두 경로(eth0, pfe2sl)는 UDP 패킷을 주고받을 수 있습니다.
  2. Raw Socket EtherType 통신은 불가능하다: 커스텀 EtherType을 사용하는 모든 시도가 실패했습니다.
  3. iperf3를 사용해야 한다: 표준 성능 측정 도구를 사용해야 합니다.

문제의 원인: 이전의 iperf3 테스트가 실패했던 이유는, 우리가 iperf3가 두 개의 경로를 동시에 사용하도록 설정하지 않았기 때문입니다. iperf3는 기본적으로 커널의 라우팅 테이블에 따라 하나의 경로만을 선택하여 통신합니다.

최종 해결책: iperf3 다중 경로 동시 테스트

802.1CB의 핵심은 “두 개의 경로를 동시에 사용하는 것”입니다. 이를 iperf3로 시뮬레이션하려면, 두 개의 iperf3 프로세스를 동시에 실행하여 각 프로세스가 서로 다른 경로를 사용하도록 만들어야 합니다.


최종 실행 절차 (iperf3 다중 경로)

1. 네트워크 설정

eth0 해방 및 라우팅 모드 IP 설정을 통해 ping이 양쪽 경로로 모두 가는 것을 확인합니다.

2. G2 보드 (iperf3 서버 2개 실행)

두 개의 iperf3 서버를 각각 다른 포트와 다른 IP에 바인딩하여 백그라운드로 실행합니다.

echo "--- G2: Starting two iperf3 servers ---"
# 서버 1: P3A (eth0) 경로용, 포트 5201
iperf3 -s -p 5201 -B 192.168.10.2 -D

# 서버 2: P3B (pfe2sl) 경로용, 포트 5202
iperf3 -s -p 5202 -B 192.168.20.2 -D

echo "Two iperf3 servers are running. Check with 'ps aux | grep iperf3'"

3. G3 보드 (iperf3 클라이언트 2개 동시 실행)

두 개의 iperf3 클라이언트 프로세스를 &를 사용하여 동시에 백그라운드로 실행합니다.

echo "--- G3: Starting two iperf3 clients for 60 seconds ---"
# 클라이언트 1: G2의 P3A 서버(5201)로 트래픽 전송
iperf3 -c 192.168.10.2 -p 5201 -B 192.168.10.1 -t 60 -i 5 -u -b 50M &

# 클라이언트 2: G2의 P3B 서버(5202)로 트래픽 전송
iperf3 -c 192.168.20.2 -p 5202 -B 192.168.20.1 -t 60 -i 5 -u -b 50M &

echo "Two iperf3 clients are running in the background."
echo "Wait for 60 seconds for the test to complete."

4. 결과 확인

  1. 실행: G2에서 서버 스크립트를, G3에서 클라이언트 스크립트를 실행합니다.
  2. G2에서 확인: ps aux | grep iperf3로 서버 두 개가 떠 있는지 확인합니다.
  3. G3에서 확인: 60초가 지나면, 터미널에 두 클라이언트의 결과 리포트가 거의 동시에 출력됩니다. 각 경로의 전송률, 지터, 패킷 손실률을 확인할 수 있습니다.
  4. 이중화 테스트: iperf3가 실행되는 60초 동안 케이블 하나를 뽑았다가 다시 꽂아보십시오. 테스트가 끝난 후 G3의 결과 리포트에서, 해당 경로의 패킷 손실률(Lost/Total Datagrams)이 크게 증가한 것을 확인할 수 있습니다.

이것이 iperf3를 사용하여 두 개의 경로를 동시에 테스트하고, 802.1CB의 중복 경로 통신을 가장 현실적으로 시뮬레이션하는 방법입니다.