จำลองการเชื่อมต่อที่ช้าด้วย tc


9

ฉันมีกล่อง linux (Centos 5.5) ที่ฉันต้องการ จำกัด ปริมาณการใช้เครือข่าย ฉันมีแอปพลิเคชันที่เราแจกจ่ายให้กับลูกค้าและฉันต้องการทดสอบด้วยแบนด์วิดธ์ต่ำสุดที่แนะนำของ 256Mbit / วินาที จนถึงตอนนี้บทเรียน tc ที่ฉันได้เห็นดูเหมือนจะอนุญาตให้คุณ จำกัด แบนด์วิดท์ตามเกณฑ์ที่กำหนด แต่ฉันต้องการ จำกัด แบนด์วิดท์ในทุกสถานการณ์ (ไปยัง / จากที่อยู่ IP ทั้งหมด

ฉันแนะนำให้ใช้แบบฝึกหัดหนึ่ง:

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

แต่ฉันได้รับข้อผิดพลาดต่อไปนี้:

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

ความคิดใด ๆ เกี่ยวกับวิธี จำกัด แบนด์วิดท์เข้า / ออกจาก eth0 ในทุกสถานการณ์?

คำตอบ:


11

หากคุณต้องการ จำกัด การรับส่งข้อมูลขาออกทั้งหมดคุณไม่จำเป็นต้องใช้ตัวกรองเลย เพียงเพิ่ม qdisc ของคุณไปยังส่วนจัดการรูทของอินเตอร์เฟสดังนี้:

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

หากคุณต้องการกำหนดรูปร่าง / การจราจรขาเข้าของตำรวจมันซับซ้อนกว่าเล็กน้อย คุณจะต้องใช้เช่นส่วนต่อประสาน 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

นี่คือวิธีการที่แตกต่างกันโดยใช้ตัวกรองแบบง่ายสองตัว:

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

ฉันแฮ็คที่โซลูชันของคุณแล้ว แต่ไม่สามารถใช้งานได้ ฉันใช้คำสั่งของคุณเปิด Firefox เริ่มต้นดาวน์โหลดและดาวน์โหลดเร็วเกินไป เมื่อฉันกำหนดค่าฉันควรจะเห็นบางแพ็กเก็ต RX และ TX ภายใต้ ifb0 (เพราะฉันไม่ได้)? ขอบคุณ
rancidfishbreath

ฉันได้เพิ่มวิธีการอื่นที่ทำงานได้โดยไม่ต้องใช้อินเตอร์เฟส ifb
อัล

วิธีที่สองที่ใช้ตัวกรองแบบง่ายสองอย่างนั้นใช้งานได้ดี! ขอบคุณมาก. ฉันชอบโซลูชันนี้มากเพราะง่ายและเข้าใจง่าย
rancidfishbreath

ขอบคุณใหม่คำถามฉันจะลบขีด จำกัด หลังจากใช้งานได้tc qdisc add dev eth0 root handle 1: tbf rate 256mbit latency 1ms burst 1540อย่างไร: ขอบคุณ!
SSH

ทำอย่างไรจึงจะปิดการควบคุมปริมาณและเปลี่ยนกลับเป็นแบบเดิมได้? กรุณาตอบสนองต่อ "วิธีการที่แตกต่างกันโดยใช้สองตัวกรองแบบง่าย" ถ้าคุณจะใจดี "man tc" คือ ... ล้นหลามเช่นเคย
Geoffrey Anderson

1

นี่อาจจะไม่อยู่ในขอบเขตของคุณ แต่ WAN-emu เก่งมากในการเลียนแบบสภาพแวดล้อมที่มีข้อกำหนดแปลก ๆ สำหรับปริมาณงานและความล่าช้า [1]

[1]: http://speed.cis.nctu.edu.tw/wanemu/ WAN-emu


ลิงค์แฝงหรือความสูญเสียสูงสามารถจำลองได้อย่างสะดวกสบายโดยใช้โมดูล netem tc เช่นกัน: linuxfoundation.org/collaborate/workgroups/networking/netem
al

0

คุณได้เพิ่มผู้ปกครอง 1 คนเช่นนี้ tc qdisc เพิ่ม dev eth0 root handle 10: htb default 20

พูดอย่างนั้น

tc filter เพิ่ม dev eth0 ip ip parent 10: prio 2 flowid 10: 2

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.