TC가 IP 헤더의 Qos 필드로 대역폭을 제한할 수 있습니까?

TC가 IP 헤더의 Qos 필드로 대역폭을 제한할 수 있습니까?

우리는 클라이언트/서버 애플리케이션을 개발 중입니다. 서버 앱에는 세 가지 유형의 네트워크 데이터가 있습니다. 비디오/오디오와 같은 실시간 데이터, 데이터베이스 데이터와 같은 중요 데이터, 일반 파일 전송과 같은 BestEfforts 데이터입니다.

우리는 각 IP 패킷의 QOS 필드를 설정하여 IP 패킷이 위의 세 가지 데이터 유형 중 어떤 데이터 유형에 속하는지 나타내고, TC를 사용하여 이 세 가지 유형의 데이터에 대해 서로 다른 최대 속도를 설정할 계획입니다.

내가 아는 한 qos 필드 설정은 가능하지만 qos 값(IP 헤더의 QOS 필드 값)을 지정하여 IP 패킷의 속도를 제한할 수 있는지 궁금합니다.

답변1

TOSIPv4 패킷 헤더의 8비트 필드를 의미하는 것 같습니다 . 이미 읽어 보셨나요?LARTC 하우투? 반드시 읽어야 할 가이드입니다. 간단히 말해서, 당신은

1) 정의 QDISCs하고CLASSes트래픽을 분류하고, 우선순위를 정하고 형성합니다(송신 트래픽만 형성할 수 있습니다!!!). 일반적으로 전송해야 하는 모든 패킷은 QDISC네트워크 인터페이스의 대기열에 추가됩니다.

CEIL=10
tc qdisc add dev eth0 root handle 1: htb default 15
tc class add dev eth0 parent 1: classid 1:1 htb rate ${CEIL}mbit ceil ${CEIL}mbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 4mbit ceil ${CEIL}mbit prio 0
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 1mbit ceil ${CEIL}mbit prio 1
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 6mbit ceil ${CEIL}mbit prio 2
tc qdisc add dev eth0 parent 1:11 handle 110: sfq perturb 10
tc qdisc add dev eth0 parent 1:12 handle 120: sfq perturb 10

필드 가 낮은 클래스가 prio먼저 시도됩니다. 따라서 클래스 1:10은 예를 들어 최소 지연이 필요한 패킷 전용으로 사용될 수 있습니다. 1:11 및 1:12 클래스에는 SFQ보다 공정한 대역폭 공유를 보장하기 위해 대기열 규칙이 첨부되어 있습니다.

2) 필터 정의오른쪽에 패킷을 대기열에 넣습니다 CLASS.

tc filter add dev eth0 parent 1:0 protocol ip prio 1 handle 10 fw classid 1:10
tc filter add dev eth0 parent 1:0 protocol ip prio 2 handle 11 fw classid 1:11
tc filter add dev eth0 parent 1:0 protocol ip prio 3 handle 12 fw classid 1:12

이는 단순히 마크 10이 있는 패킷이 클래스 10으로 이동한다는 것을 알려줍니다.

3) iptables 규칙 정의패킷을 오른쪽에 대기열에 넣도록 표시하려면CLASS

iptables -t mangle -A PREROUTING -m tos --tos Minimize-Delay -j MARK --set-mark 0x10
iptables -t mangle -A PREROUTING -m tos --tos Minimize-Cost -j MARK --set-mark 0x11
iptables -t mangle -A PREROUTING -m tos --tos Maximize-Throughput -j MARK --set-mark 0x12

나는 필드의 특정 값을 일치시키고 그에 따라 표시하는 tos방법을 보여주기 위해 의도적으로 iptables 모듈을 사용합니다 . TOS이 모듈에 대한 자세한 내용을 보려면 다음을 실행하세요.

iptables -m tos --help

관련 정보