네트워크 트래픽을 제한하기 위해 tc를 가져올 수 없습니다.

네트워크 트래픽을 제한하기 위해 tc를 가져올 수 없습니다.

이 섹션을 기반으로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 형성/규제에 대한 "이론적" 논의젠투 웹사이트에서.

관련 정보