Mô phỏng kết nối chậm với tc


9

Tôi có một hộp linux (Centos 5.5) mà tôi muốn giới hạn lưu lượng mạng. Tôi có một ứng dụng mà chúng tôi phân phối cho khách hàng và tôi muốn thử nghiệm nó trên băng thông được đề xuất tối thiểu là 256Mbit / giây. Cho đến nay các hướng dẫn tc mà tôi đã thấy dường như cho phép bạn giới hạn băng thông theo các tiêu chí nhất định, nhưng tôi muốn giới hạn băng thông trong mọi tình huống (đến / từ tất cả địa chỉ IP, bất kể tiêu đề IP trông như thế nào, v.v.).

Một hướng dẫn gợi ý tôi sử dụng:

tc filter add dev eth0 protocol ip parent 10: prio 2 flowid 10:2

nhưng tôi nhận được lỗi sau:

Unknown filter "flowid", hence option 10:2 is unparsable

Có ý tưởng nào về cách hạn chế băng thông đi vào / ra khỏi eth0 trong mọi trường hợp không?

Câu trả lời:


11

Nếu bạn muốn áp dụng giới hạn cho tất cả lưu lượng truy cập đi, bạn hoàn toàn không cần bộ lọc. Chỉ cần thêm qdisc của bạn vào giao diện gốc xử lý như vậy:

tc qdisc add dev eth0 root handle 1: tbf rate 256mbit latency 1ms burst 1540

Nếu bạn muốn định hình / cảnh sát giao thông trong nước, nó phức tạp hơn một chút. Bạn sẽ cần sử dụng ví dụ: giao diện IFB:

modprobe ifb
ip link set dev ifb0 up
tc qdisc add dev eth0 ingress
tc filter add dev eth0 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0
#  ^- this is a dummy filter, match u32 0 0 matches all traffic
tc qdisc add dev ifb0 root handle 1: tbf rate 256mbit latency 1ms burst 1540

Đây là một cách tiếp cận khác nhau, sử dụng hai bộ lọc đơn giản:

tc qdisc add dev eth0 ingress
tc filter add dev eth0 root         protocol ip u32 match u32 0 0 police rate 256mbit burst 10k drop flowid :1
tc filter add dev eth0 parent ffff: protocol ip u32 match u32 0 0 police rate 256mbit burst 10k drop flowid :1

Tôi đã hack giải pháp của bạn nhưng tôi không thể làm cho nó hoạt động được. Tôi đang chạy các lệnh của bạn, mở Firefox, bắt đầu tải xuống và tải xuống quá nhanh. Khi tôi thực hiện ifconfig, tôi có nên xem một số gói RX và TX trong ifb0 (vì tôi không)? Cảm ơn.
rancidfishbreath

Tôi đã thêm một cách tiếp cận khác hoạt động mà không có giao diện ifb.
al.

Cách tiếp cận thứ hai sử dụng hai bộ lọc đơn giản đang hoạt động rất tốt! Cám ơn rất nhiều. Tôi thực sự thích giải pháp này vì nó đơn giản và dễ hiểu.
rancidfishbreath

Tuyệt vời cảm ơn bạn, câu hỏi newb, làm thế nào tôi có thể loại bỏ giới hạn sau khi chạy : tc qdisc add dev eth0 root handle 1: tbf rate 256mbit latency 1ms burst 1540? Cảm ơn!
SSH này

Làm thế nào để tắt điều tiết và hoàn nguyên nó trở lại như cũ? Xin trả lời phiên bản "cách tiếp cận khác nhau bằng hai bộ lọc đơn giản" nếu bạn thật tử tế. "Người đàn ông tc" vẫn ... áp đảo như thường lệ.
Geoffrey Anderson


0

Bạn đã thêm 1 thước như thế này tc qdisc thêm dev eth0 root xử lý 10: htb mặc định 20

giống như của bạn

Bộ lọc tc thêm giao thức dev eth0 ip cha mẹ 10: Prio 2 Flowid 10: 2

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.