트래픽 형성을 위해 macvlan에서 tc-netem 사용

트래픽 형성을 위해 macvlan에서 tc-netem 사용

나는 macvlans를 사용하여 가상 네트워크를 설정하고 있으며 각 네트워크에 흐름 제어 TC가 연결되어 있습니다. 각 지연을 90밀리초로 설정했습니다. 하지만 핑에서 내가 얻는 시간은 0.02초입니다. macvlan에서 tc가 작동하지 않는 이유는 무엇입니까?

다음 명령을 사용하고 있습니다.

tc qdisc add dev m1 root netem delay 90ms
tc qdisc add dev m2 root netem delay 90ms

그런 다음 m1의 ip에서 m2의 ip로 ping을 보냅니다. m1과 m2는 macvlan입니다.

답변1

문제는 라우팅이 수행되는 방식과 관련이 있습니다.TC,네템또는맥에버랜드.

호스트에 속한 IP 주소에서 호스트에 속한 다른 IP 주소로 도착할 때 (루프백) 인터페이스를 사용하여 lo로컬 라우팅 테이블(hidden, try ip route show table local)을 쿼리하여 라우팅이 이루어지며 IP 주소가 있는 실제 인터페이스는 사용하지 않습니다. 할당됩니다.

어떤 경로를 선택할지 커널에 물어보면 이를 확인할 수 있습니다. 예를 들어, 주소가m1그리고평방 미터192.0.2.2/24 및 192.0.2.3/24입니다.

# ip route get from 192.0.2.2 to 192.0.2.3
local 192.0.2.3 from 192.0.2.2 dev lo table local uid 0 
    cache <local> 

테스트를 위해 이러한 인터페이스를 사용해야 하는 경우 이를 테스트하려면 자체 라우팅 스택이 있는 다른 시스템이 필요합니다. 시스템은 실제 호스트, 가상 머신, 컨테이너일 수도 있고, 원하는 대로 하나 이상의 추가 네트워크 네임스페이스를 사용할 수도 있습니다.

위의 가상 상황에서 192.0.2.1이 위치한 경우m1LAN(및평방 미터관련되지 않은 ARP 문제를 방지하기 위해 인터페이스가 종료됨) ping 192.0.2.1지연이 표시됩니다 .m1다음을 사용합니다:

# ip route get from 192.0.2.2 192.0.2.1
192.0.2.1 from 192.0.2.2 dev m1 uid 0 
    cache 

첫 번째 ping에서는 일반적으로 지연 시간 패널티가 두 배로 발생합니다. 왜냐하면 IP 링크를 확인하기 위해 이전에 ARP 요청이 완료되었고 이 역시 지연되었기 때문입니다.

관련 정보