htb -> netem -> pfifo_fast qdisc 트래픽이 많은 모든 패킷을 삭제합니다.

htb -> netem -> pfifo_fast qdisc 트래픽이 많은 모든 패킷을 삭제합니다.

내 로컬 컴퓨터에서 Mininet을 사용하여 OpenVSwitch 기반 토폴로지를 구성했습니다.

h1 (server) -------(eth1) s1 (eth2)--------------- h2 (client)
                         (eth3)
                          |
                          |
                         h3 (client)

모든 링크는 다음 qdisc/class를 사용하여 100Mbps 대역폭 + 1ms 대기 시간으로 구성됩니다.

qdisc htb 5: dev s1-eth1 root refcnt 2 r2q 10 default 1 direct_packets_stat 0 ver 3.17 direct_qlen 1000 
 Sent 15134395731 bytes 9999886 pkt (dropped 467, overlimits 1558696 requeues 0)                        
 backlog 0b 0p requeues 0                                                                                
qdisc netem 10: dev s1-eth1 parent 5:1 limit 1000 delay 1.0ms                                            
 Sent 15134395731 bytes 9999886 pkt (dropped 467, overlimits 0 requeues 0)                              
 backlog 0b 0p requeues 0

class htb 5:1 root leaf 10: prio quantum rate 100Mbit ceil 100Mbit linklayer ethernet burst 1600b/1 mpu 0b cburst 1600b/1 mpu 0b level 0                                                                         
 Sent 15134395731 bytes 9999886 pkt (dropped 0, overlimits 0 requeues 0)                                 
 rate 0bit 0pps                     
 rate 0bit 0ppsbacklog 0b 0p requeues 0                                                                  
 lended: 1123299 borrowed: 0 giants: 0                                                                   
 tokens: 1917 ctokens: 1917         

class netem 10:1 parent 10: leaf 8007:

2개의 iperf3 서버 와 2개의 클라이언트를 각각 h1시작 했는데 모든 것이 예상대로 작동했습니다.h2h3

그런 다음 QoS를 보장하고 기존 2개의 qdisc가 Mininet에 의해 설정되어 변경할 수 없다는 점을 고려하여 새 pfifo_fastqdisc를 netem상위로 추가했습니다.

qdisc pfifo_fast 8007: dev s1-eth1 parent 10:1 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 
 Sent 6278984495 bytes 4149415 pkt (dropped 467, overlimits 0 requeues 0)                                
 backlog 0b 0p requeues 0

처음에는 잘 작동하지만 몇 초 후에 s1-eth1이 모든 나가는 패킷을 삭제하기 시작합니다. tc보고서는 다음과 같습니다.

qdisc htb 5: dev s1-eth1 root refcnt 2 r2q 10 default 1 direct_packets_stat 0 direct_qlen 1000           
 Sent 14716440349 bytes 9723342 pkt (dropped 387, overlimits 1494731 requeues 0)                         
 backlog 641479b 332p requeues 0                                                                         
qdisc netem 10: dev s1-eth1 parent 5:1 limit 1000 delay 1.0ms                                            
 Sent 14716440349 bytes 9723342 pkt (dropped 387, overlimits 0 requeues 0)                               
 backlog 0b 0p requeues 0                                                                                
qdisc pfifo_fast 8007: dev s1-eth1 parent 10:1 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1          
 Sent 5861029113 bytes 3872871 pkt (dropped 387, overlimits 0 requeues 0)                                
 backlog 641479b 332p requeues 0

mininet> sh tc -s -d class show dev s1-eth1                                                              
class htb 5:1 root leaf 10: prio quantum rate 100Mbit ceil 100Mbit linklayer ethernet burst 15337b/1 mpu 
0b cburst 1600b/1 mpu 0b level 0 
 Sent 14717084878 bytes 9723917 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 0bit 0pps 
 rate 0bit 0ppsbacklog 0b 0p requeues 0
 lended: 1087545 borrowed: 0 giants: 0
 tokens: 19104 ctokens: 1917

내 구성이 합리적으로 보입니까? 그렇지 않은 경우 tc를 사용하여 대역폭 제한 + 시뮬레이션된 지연 + QoS를 구성하는 올바른 방법은 무엇입니까?

관련 정보