TOS 0x08을 사용하여 사용자 정의 오버레이 네트워크의 컨테이너에서 패킷을 보냈습니다 docker create network --driver=overlay
. 그러나 Docker 오버레이는 외부 UDP, IP 및 이더넷과 함께 VXLAN 헤더를 사용하여 이 L2 패킷을 래핑합니다. 따라서 외부 IP 패킷의 TOS는 더 이상 내부 IP 패킷의 TOS와 일치하지 않으므로 물리적 NIC로 이동하면 해당 패킷은 더 이상 원래 흐름 제어 규칙에 따라 처리될 수 없습니다(제어 트래픽은 다른 IP 패킷으로 이동). 대기줄). 예를 들어. tshark를 사용하여 캡처한 패킷은 다음과 같습니다.
그림과 같이 이제 외부 IP TOS가 T0으로 설정되었습니다.
TC qdisc에 도달하기 전에 외부 IP TOS를 어떻게 변경합니까?나는 iptables를 살펴보았고 아래와 같이 필터의 테이블 체인 OUTPUT
및/또는 맹글의 테이블 체인을 전달할 수 있음을 발견했습니다.POSTROUTING
# mangle
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
POSTROUTING_direct all -- anywhere anywhere
# filter
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
OUTPUT_direct all -- anywhere anywhere
나는 많은 패킷을 보내고 있고 이 테이블에 패킷 카운터가 올라가는 것을 보고 있기 때문이라고 생각합니다. 그러나 iptables에 대한 나의 지식은 내가 원하는 것을 달성할 만큼 충분히 발전하지 않았습니다. 다른 방법이 있나요?