두 개의 로컬 이더넷 인터페이스를 사용한 처리량 테스트 설정

두 개의 로컬 이더넷 인터페이스를 사용한 처리량 테스트 설정

현재 다음 설정(모든 주소는 로 시작함 192.168.)을 사용하여 하드웨어 장치(DUT - Device Under Test)의 라우팅 성능을 테스트하고 있습니다.

eth0 (29.2) <---> eth1 (29.1)  eth2 (30.1) <---> eth0 (30.2)
HOST1             |~~~~~~~~~DUT~~~~~~~~~~|       HOST2

Iperf이 설정에서는 잘 작동합니다.

그러나 HOST1에 사용 가능한 다른 이더넷 카드가 있으므로 HOST2를 제거하고 싶습니다. 이것이 내가 달성하고 싶은 것입니다:

eth0 (29.2) <---> eth1 (29.1)  eth2 (30.1) <---> eth1 (30.2)
HOST1             |~~~~~~~~~DUT~~~~~~~~~~|       HOST1

eth0에서 eth1까지의 패킷이 내부적으로 커널을 통과하는 대신 DUT를 통과하도록 HOST1에서 Linux 라우팅을 구성하려면 어떻게 해야 합니까?

저는 3.0 커널로 데비안을 실행하고 있습니다. iproute2 버전은 ss110629.

답변1

snat/dnat와 결합된 라우팅이 효과적입니다. 여기서의 기본 아이디어는 HOST1의 각 장치에 두 번째 서브넷의 두 번째 "가상" IP 주소를 할당하는 것입니다. 가상 주소는 호스트1을 떠나거나 들어가기 전/후에 실제 주소로 변환됩니다. 다음 설정을 사용하고 iperf 트래픽을 192.168.9.2 또는 192.168.10.2로 지정합니다(원하는 트래픽 방향에 따라 다름).

IP 주소 할당

호스트 1

  • eth0 192.168.29.2/24 (이 장치의 "가상" 주소는 192.168.9.2입니다)

  • eth1 192.168.30.2/24 (이 장치의 "가상" 주소는 192.168.10.2입니다)

테스트 중인 장치

  • 이더넷 1 192.168.29.2/24
  • 이더리움 2 192.168.30.2/24

정적 라우팅

호스트 1

  • 192.168.10.2/24 경유 192.168.29.1
  • 192.168.30.1을 통한 192.168.9.2/24

테스트 중인 장치

  • 192.168.9.2/24(192.168.29.2 경유)
  • 192.168.10.3/24 경유 192.168.30.2

HOST1의 iptables 규칙

후면 배선

  • 192.168.9.2에서 192.168.10.2로 전송된 SNAT 패킷
  • 192.168.10.2에서 192.168.9.2로 전송된 SNAT 패킷

사전 라우팅

  • 192.168.9.2에서 192.168.29.2로 전송된 DNAT 패킷
  • 192.168.10.2에서 192.168.30.2로 전송된 DNAT 패킷

관련 정보