리눅스에서 들어오고 나가는 대역폭과 레이턴시 제한


15

비슷한 질문이 많이 있었지만 지금까지 내 문제에 대한 해결책을 찾지 못했습니다.

나는 웹 사이트의로드 시간 증가 및 감소를 측정하기 위해 웹 사이트 속도 테스트에 사용하는 가상 Linux 서버 (Debian Squeeze 실행)를 가지고 있습니다. 웹 사이트에서 실제로드 시간에 근접 할 수 있도록이 서버의 대역폭과 대기 시간을 제한하려고했지만 지금까지 실패했습니다.

내가 구체적으로 원하는 것은 다음과 같습니다.

  • 수신 및 발신 대기 시간을 50ms로 설정합니다.
  • 수신 대역폭 제한을 512kbps로 설정합니다.
  • 발신 대역폭 제한을 4096kbps로 설정합니다.

나는 netem을 읽고 tc명령을 사용 했지만 여전히 내 머리 위로 조금 있습니다. 작동하는 것처럼 보이는 대기 시간을 제어하기 위해이 명령을 구성했지만 나가는 대기 시간 만 처리하는지 또는 둘 다 처리하는지 확실하지 않습니다.

tc qdisc add dev eth0 root netem delay 50ms

주변의 네트워크 전문가가 나를 도울 수 있습니까?

편집하다:

추가 조사를 한 후이 목표를 반쯤 달성 한 후이 명령을 사용하면 나가는 모든 트래픽이 원하는대로 동작합니다.

tc qdisc add dev eth0 root tbf rate 4.0mbit latency 50ms burst 50kb mtu 10000

그러나 여전히 들어오는 트래픽을 제대로 조절할 수 없었습니다. 나는 "Ingress Policer filter"를 사용해야한다는 것을 배웠다. 나는 아래의 명령으로 다른 값을 가지고 놀고 있지만 운이없는 것을 시도하고있다.

tc qdisc add dev eth0 ingress
tc filter add dev eth0 parent ffff: protocol ip u32 match ip src 0.0.0.0/0 flowid :1 police rate 1.0mbit mtu 10000 burst 10k drop

대역폭은 명령의 영향을받으며, 위의 값은 2MB / s에서 속도를 시작하고 전송이 진행됨에 따라 전송 속도가 약 30 초 후에 도달하는 약 80-90kB / s로 천천히 내려갑니다.

내가 뭘 잘못하고 있는지에 대한 아이디어가 있습니까?


netem delay 50ms대기 시간을 제한하지 않습니다. 50ms그렇지 않은 경우와 비교 하여 대기 시간이 증가합니다 .
kasperd

실제로 당신이 옳습니다. 내가 실제로 찾고 있던 50ms 증가했기 때문에 단어 제한을 제거했습니다. (동일한 컴퓨터의 가상 컴퓨터이므로 원래 대기 시간은 0에 가까웠습니다)
yzfr1

답변:


12

마지막으로 서버에서 나가는 대역폭 / 대기 시간을 설정 한 다음 클라이언트에서 동일한 결과를 달성하는 것으로 결정했습니다.

다음은 목표를 달성하기 위해 서버와 클라이언트에서 각각 실행 한 명령입니다.

서버 : 4Mbit 50ms

tc qdisc add dev eth0 handle 1: root htb default 11
tc class add dev eth0 parent 1: classid 1:1 htb rate 1000Mbps
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 4Mbit
tc qdisc add dev eth0 parent 1:11 handle 10: netem delay 50ms

클라이언트 : 512 kbit 50 ms

tc qdisc add dev vmnet1 handle 1: root htb default 11
tc class add dev vmnet1 parent 1: classid 1:1 htb rate 1000Mbps
tc class add dev vmnet1 parent 1:1 classid 1:11 htb rate 512kbit
tc qdisc add dev vmnet1 parent 1:11 handle 10: netem delay 50ms

나는 이것을 몇 달 동안 찾고 있었다. 감사. 하나의 질문? 규칙을 어떻게 삭제합니까? tc class del dev eth0 root는 RTNETLINK 답변을 보여줍니다 : 그러한 파일이나 디렉토리가 없습니다
Nur

그것은 몇 달 전,하지만 나는 그것이 qdisc를 제거하기에 충분 것을 기억하는 것 : TC qdisc는 델 dev에 eth0를 루트
yzfr1

2

약 80-90 kByte / s는

    tc filter add ... police rate 1.0mbit ...

들어오는 데이터가 1 ​​mBit / s에 도달하면 버려야합니다. 약 125 kByte / s입니다. 그런 다음 원격 서버는 그보다 상당히 낮게 떨어질 것입니다 (반쯤 확실하지 않을 수도 있음). 그 후 모든 패킷이 통과하므로 원격 끝은 125 kByte / s에 다시 도달 할 때까지 천천히 속도를 듭니다. 125 kByte / s보다 상당히 낮은 평균 처리량을 얻습니다. 이는 일반적으로 수신 쉐이핑입니다.

수신 정책 필터가 이미 설치된 상태에서 속도가 2MByte / s에 도달해야한다는 것에 약간 놀랐습니다. 다운 스트림 클라이언트 (프로그램) 또는 일부 업스트림 라우터에서 어디에서 측정 했습니까? 아니면 처음 연결을 시작한 후에 만 ​​수신 정책 필터를 시작한 것일까 요?

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.