이 섹션을 기반으로Linux 고급 라우팅 및 트래픽 제어 방법tc
, 내 컴퓨터의 네트워크 속도를 제한 할 수 없습니다 .
라우터는 일부 라우팅 기능과 방화벽을 갖춘 Motorola SurfBoard 모뎀입니다. 트래픽을 제한하려는 머신은 다음과 같습니다.192.168.0.5, 스크립트도 실행 중입니다.192.168.0.5.
위 링크의 명령을 적용한 내용은 다음과 같습니다 /etc/NetworkManager/dispatcher.d/
.
#!/bin/sh -eu
# clear any previous queuing disciplines (qdisc)
tc qdisc del dev wlan0 root 2>/dev/null ||:
# add a cbq qdisc; see `man tc-cbq' for details
if [ $2 = up ]; then
# set to a 3mbit interface for more precise calculations
tc qdisc add dev wlan0 root handle 1: cbq avpkt 1000 \
bandwidth 3mbit
# leave 30KB (240kbps) to other machines in the network
tc class add dev wlan0 parent 1: classid 1:1 cbq \
rate 2832kbit allot 1500 prio 5 bounded isolated
# redirect all traffic on 192.168.0.5 to the previous class
tc filter add dev wlan0 parent 1: protocol ip prio 16 \
u32 match ip dst 192.168.0.5 flowid 1:1
# change the hashing algorithm every 10s to avoid collisions
tc qdisc add dev wlan0 parent 1:1 sfq perturb 10
fi
문제는 내가 설정을 시도했다는 것입니다2832kbit테스트할 때는 매우 작은 값을 사용하십시오(예:16kbit), 하지만 여전히 빠른 속도로 웹을 탐색할 수 있습니다. 문제는 NetworkManager
스크립트를 수동으로 테스트하고 있기 때문에 그게 아닙니다 .
편집하다:dst 192.168.0.5
으로 변경하면 업로드 속도가 안정적으로 조절되는 것을 발견했지만 src 192.168.0.5
나에게 가장 중요한 다운로드 속도를 작동시키는 방법을 아직 찾지 못했습니다.
답변1
대상 머신의 수신 트래픽은 이미 도착했기 때문에 제한할 수 없습니다.
원하는 작업을 제대로 수행하려면 이를 tc
게이트웨이에 배치해야 합니다. 이것은 당신에게 효과가 없을 수도 있지만 여기에 방법이 있습니다.
수신 트래픽은 속도 제한을 초과하는 패킷을 삭제하기 때문에 정책만 적용할 수 있습니다. 동일한 패킷을 다시 수신하려면 더 많은 대역폭이 필요하기 때문에 이는 비효율적입니다. 이것은 TCP가 패킷이 손실될 때 속도를 줄여 트래픽 손실을 처리하도록 설계되었기 때문에 대략적으로 작동하지만 TCP가 확장됨에 따라 최근 의견에서 알 수 있듯이 그런 식으로 경험하고 있는 것처럼 지속적인 속도 저하와 속도로 끝납니다.
그러나 시스템을 자체 게이트웨이로 만드는 방법이 있습니다."중간펑션블록장치"네트워크 경로를 입력하세요. 이 내용을 읽고 인바운드 속도 제한을 시도해 보는 것이 좋습니다.
이것 좀 봐INGRESS/EGRESS 형성/규제에 대한 "이론적" 논의젠투 웹사이트에서.