Hạn chế băng thông đến và đi và độ trễ trong linux


15

Tôi nhận ra nhiều câu hỏi tương tự đã được hỏi, nhưng cho đến nay tôi vẫn chưa tìm ra giải pháp cho vấn đề của mình.

Tôi có một máy chủ linux ảo (chạy Debian Squeeze) mà tôi sử dụng để kiểm tra tốc độ trang web để đo thời gian tăng và giảm thời gian tải của các trang web nói trên. Tôi đang cố gắng giới hạn băng thông và độ trễ của máy chủ này để có thể đến gần thời gian tải trong thế giới thực trên các trang web, nhưng cho đến nay đã thất bại.

Những gì tôi muốn cụ thể là như sau:

  • Để đặt độ trễ đến và đi là 50 ms.
  • Để đặt giới hạn băng thông đến là 512 kbps.
  • Để đặt giới hạn băng thông đi là 4096 kbps.

Tôi đã đọc trên netem và sử dụng tclệnh, nhưng nó vẫn còn trên đầu tôi một chút. Tôi đã quản lý để kết hợp lệnh này để kiểm soát độ trễ dường như hoạt động, nhưng tôi thậm chí không chắc liệu điều đó chỉ xử lý độ trễ đi hay cả hai:

tc qdisc add dev eth0 root netem delay 50ms

Bất kỳ chuyên gia mạng nào xung quanh có thể giúp tôi ra?

Biên tập:

Sau khi nghiên cứu sâu hơn, tôi đã đạt được một nửa mục tiêu của mình, sử dụng lệnh này tất cả các hành vi giao thông đi ra ngoài như tôi muốn:

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

Tuy nhiên, tôi vẫn không thể điều tiết lưu lượng đến đúng cách. Tôi đã học được rằng tôi nên sử dụng "Bộ lọc Polress Ingress" Tôi đã cố gắng làm điều đó với lệnh bên dưới, chơi xung quanh với các giá trị khác nhau, nhưng không gặp may.

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

Băng thông bị ảnh hưởng bởi lệnh, mặc dù vậy, các giá trị ở trên làm cho tốc độ bắt đầu ở mức 2MB / s và, khi quá trình truyền tải, từ từ giảm xuống khoảng 80-90kB / giây mà nó đạt được sau khoảng 30 giây truyền.

Bất cứ ý tưởng về những gì tôi đang làm sai?


netem delay 50mskhông giới hạn độ trễ. Nó làm tăng độ trễ bằng cách 50msso sánh với những gì nó sẽ có.
kasperd

Quả thực bạn đúng. Đã xóa giới hạn từ vì nó tăng thêm 50ms tôi thực sự đang tìm kiếm (vì nó là một máy ảo trên cùng một máy tính, độ trễ ban đầu đủ gần bằng 0)
yzfr1 18/07/14

Câu trả lời:


12

Cuối cùng tôi đã giải quyết cho việc chỉ thiết lập băng thông / độ trễ trên máy chủ, và sau đó thực hiện tương tự trên máy khách, đạt được kết quả tương tự.

Đây là các lệnh tôi đã chạy trên máy chủ và máy khách tương ứng để đạt được mục tiêu của mình:

Máy chủ: 4 Mbit 50 ms

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

Khách hàng: 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

Tôi đã tìm kiếm điều này trong nhiều tháng. Cảm ơn. Một câu hỏi? Làm thế nào để bạn xóa quy tắc? tc class del dev eth0 root hiển thị câu trả lời RTNETLINK: Không có tệp hoặc thư mục như vậy
Nur

Đó là một vài tháng trước, nhưng tôi dường như nhớ nó là đủ để loại bỏ qdisc: tc qdisc del dev eth0 root
yzfr1

2

Một số 80-90 kByte / s là về những gì mong đợi từ

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

Bạn yêu cầu dữ liệu đến sẽ bị vứt đi khi nó đạt tốc độ 1 mBit / s, tức là khoảng 125 kByte / s. Sau đó, máy chủ từ xa sẽ giảm xuống thấp hơn đáng kể (có thể là một nửa, không chắc chắn). Sau đó, tất cả các gói đi qua, vì vậy đầu từ xa sẽ tăng tốc độ cho đến khi đạt được 125 kByte / s. Bạn nhận được thông lượng trung bình đáng kể dưới 125 kByte / s, đó là điển hình của việc định hình xâm nhập.

Tôi hơi ngạc nhiên khi tốc độ sẽ đạt 2 MByte / giây với bộ lọc chính sách xâm nhập đã có. Bạn đã đo ở đâu - tại máy khách xuôi dòng (chương trình) hoặc tại một số bộ định tuyến ngược dòng? Hoặc có thể lần đầu tiên bạn bắt đầu kết nối và chỉ sau đó bạn mới khởi động bộ lọc chính sách xâm nhập?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.