Giới hạn băng thông giao diện với tc trong Linux


8

Tôi có một bộ định tuyến linux có giao diện 10GBe ở bên ngoài và giao diện Gigabit ethernet ngoại quan ở bên trong.

Chúng tôi hiện có ngân sách cho 2GBit / s. Nếu chúng tôi vượt quá tỷ lệ đó trung bình hơn 5% trong một tháng thì chúng tôi sẽ bị tính phí cho toàn bộ công suất 10Gbit / s. Khá là một bước lên về đồng đô la.

Vì vậy, tôi muốn giới hạn ở mức 2GBit / giây trên giao diện 10GBe.

Bộ lọc TBF có thể là lý tưởng, nhưng nhận xét này là mối quan tâm.

Trên tất cả các nền tảng ngoại trừ Alpha, nó có thể định hình lưu lượng truy cập bình thường lên tới 1mbit / giây với độ bùng nổ tối thiểu lý tưởng, gửi dữ liệu chính xác theo tỷ lệ được định cấu hình.

Tôi có nên sử dụng TBF hoặc một số bộ lọc khác để áp dụng tỷ lệ này cho giao diện không và tôi sẽ thực hiện như thế nào. Tôi không hiểu ví dụ được đưa ra ở đây: Kiểm soát giao thông HOWTO

Cụ thể là "Ví dụ 9. Tạo TBF 256kbit / s"

tc qdisc add dev eth0 handle 1:0 root dsmark indices 1 default_index 0
tc qdisc add dev eth0 handle 2:0 parent 1:0 tbf burst 20480 limit 20480 mtu 1514 rate 32000bps

Tốc độ 256K bit / s được tính như thế nào? Trong ví dụ này, 32000bps = 32k byte mỗi giây. Vì tc sử dụng bps = byte mỗi giây. Tôi đoán sự bùng nổ và giới hạn phát huy tác dụng nhưng làm thế nào bạn sẽ chọn về những con số hợp lý để đạt được tỷ lệ mong muốn?

Đây không phải là một sai lầm. Tôi đã thử nghiệm điều này và nó đã cho một tỷ lệ gần 256K nhưng không chính xác.


BIÊN TẬP

Sau khi đọc và kiểm tra rất nhiều, tôi đã đi đến kết luận rằng TBF không phù hợp vì băng thông liên quan. Bất cứ cài đặt nào tôi đã thử, tôi không thể lấy TBF để cung cấp băng thông> ~ 50Mbit / s. Theo lartc.org/lartc.pdf, phương pháp RED tốt hơn cho việc định hình băng thông> 100Mbit / s nên tôi sẽ cố gắng sử dụng phương pháp đó.

Tuy nhiên, việc chọn giá trị cho min (tức là kích thước hàng đợi trung bình mà tại đó việc đánh dấu trở thành khả năng). Ví dụ được đưa ra là:

Bạn nên đặt min bằng cách tính độ trễ hàng đợi cơ sở cao nhất có thể chấp nhận mà bạn muốn và nhân nó với băng thông của bạn. Chẳng hạn, trên liên kết ISDN 64kbit / s của tôi, tôi có thể muốn độ trễ hàng đợi cơ sở là 200ms vì vậy tôi đặt min thành 1600 byte.

  1. Làm thế nào bạn sẽ chọn độ trễ hàng đợi cơ sở cao nhất có thể chấp nhận? Ví dụ là cho 64kbit / s.

  2. Điều gì sẽ được chấp nhận cho 2Gbit / s?

Câu trả lời:


2
  1. Bạn nên chọn độ trễ hàng đợi chấp nhận được dựa trên loại lưu lượng.

    • Ví dụ, đối với việc xếp hàng bằng giọng nói, 200ms đã là một vấn đề.
    • Mặc dù có bộ đệm 500ms cho lưu lượng ftp / torrent không phải là vấn đề lớn.
  2. Độ trễ / chiến lược xếp hàng là một câu hỏi về loại lưu lượng truy cập không phải tốc độ giao diện. Ví dụ VOIP, có lẽ, không nên xếp hàng. Thật không may, tài liệu tc RED không rõ ràng lắm, tốt hơn bạn nên đọc một số thông tin về RED trên trang Juniper / Cisco và áp dụng kiến ​​thức đó cho tc.


1

Tốc độ 256K bit / s được tính như thế nào? Trong ví dụ này, 32.000bps = [32.000] byte mỗi giây.

Vâng, toán học là chính xác. Nếu bạn đang nhìn thấy một con số gần 256k, nó có thể hơi thấp hơn một chút. Bạn đang đo số đó từ đâu? Nếu đó là sự từ chối trình duyệt của bạn hoặc một cái gì đó tương tự, họ sẽ không tính chi phí chung của các tiêu đề gói, nhưng tcđếm tất cả mọi thứ.


Điểm tốt. Tôi đã sử dụng iperf.
Matt

1

Theo kinh nghiệm của tôi, qdisc TBF có thể dễ dàng giới hạn băng thông ở mức 1 Gbps, vì vậy tôi đoán nó cũng sẽ mở rộng thành 2 Gbps. Tuy nhiên, có lẽ bạn sẽ cần một CPU thực sự cho công việc thay vì một số bộ định tuyến cạnh thấp. Một cái gì đó như 4 GHz i3 chắc chắn sẽ là đủ.

Hãy thử một cái gì đó như

tc qdisc add dev "$DEV" root handle 1: \
  tbf rate "$UPLINK_RATE" burst "$UPLINK_BURST" latency "$TBF_LATENCY"

Ở đâu

DEV="$(ip route | grep "^default " | grep -Po "(?<=dev )[^ ]+")"
UPLINK_RATE="2000Mbit"
UPLINK_BURST="6500"
TBF_LATENCY="14ms"

Lưu ý rằng để sử dụng TBF có độ trễ thấp, bạn có thể cần phải chạy kernel PREEMPT (ví dụ: linux-lowlatency-hwe-*gói Ubuntu ) hoặc hệ thống có thể không xử lý tất cả các gói đó.

Xem thêm: https://networkengineering.stackexchange.com/a/54404/36597


Cảm ơn. Tôi quên mất câu hỏi này. Tôi đã tìm thấy một câu trả lời và có một kịch bản đã làm điều đó. Nhưng tôi đã rời công ty và không thể đăng giải pháp ngay bây giờ. Tuy nhiên, tôi tin rằng đó là TBF mà tôi đã sử dụng và có, bộ định tuyến là một máy chủ xeon nhanh.
Matt
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.