วิธี จำกัด แบนด์วิดท์เครือข่าย


74

เรากำลังโฮสต์แอปพลิเคชันบนเซิร์ฟเวอร์ระยะไกล เราจำเป็นต้องทดสอบด้วยแบนด์วิดท์เครือข่ายที่ จำกัด (สำหรับผู้ใช้ที่มีการเข้าถึงอินเทอร์เน็ตไม่ดี)

ฉันสามารถ จำกัด แบนด์วิดท์อินเทอร์เน็ตของฉันได้หรือไม่ ตัวอย่างเช่น: 128 KB ต่อวินาที

คำตอบ:


67

คุณสามารถเค้นแบนด์วิดท์เครือข่ายบนอินเทอร์เฟซโดยใช้คำสั่งที่เรียกว่าtcMan page ที่http://linux.die.net/man/8/tc

สำหรับสคริปต์ง่ายลองwondershaper

ตัวอย่างจากการใช้ tc: tc qdisc add dev eth0 root tbf rate 1024kbit latency 50ms burst 1540


6
เชื่อมโยงไปยัง atmail.com แจ้งให้สำหรับการอนุมัติ username / password สำหรับฉัน ... :(
แอช

1
คุณสามารถรับเนื้อหา atmail ได้ที่นี่: web.archive.org/web/20130719031908/http://atmail.com/kb/2009/…
Tom Saleeba

ดีกว่าไม่สายหากคุณจะใช้เราเตอร์ busybox วิธีที่ดีกว่าคือtcคำสั่งคุณสามารถตรวจสอบการโพสต์ของ mark ได้ที่นี่mark.koli.ch/ … openvz wiki มีตัวอย่างเพิ่มเติมopenvz.org/Traffic_shaping_with_tc
nwgat

ดูเหมือนว่ามันจะเป็นไปได้ที่จะ จำกัด แบนด์วิดท์ด้วย iptables (คุณสามารถแก้ไขคำตอบหากจำเป็น): serverfault.com/questions/52027/…
baptx

62

ตามที่ระบุไว้ในคำตอบก่อนหน้า wondershaper ทำงานได้อย่างง่ายดาย ฉันรวมข้อมูลจากลิงค์ด้านบนโดยJwalanta Shrestha

apt-get install wondershaper

wondershaper - เครื่องมือง่าย ๆ ในการ จำกัด แบนด์วิดท์ของอินเทอร์เฟซเฉพาะ

$ sudo wondershaper {interface} {down} {up}

{down} และ {up} เป็นแบนด์วิดท์เป็น kpbs

ตัวอย่างเช่นหากคุณต้องการ จำกัด แบนด์วิดท์ของอินเตอร์เฟส eth1 ถึง 256kbps downlink และอัปลิงค์ 128kbps

$ sudo wondershaper eth1 256 128

เพื่อล้างขีด จำกัด

$ sudo wondershaper clear eth1 

2
เป็นการดีที่คุณควรแก้ไขคำตอบเดิมแทนที่จะเพิ่มคำตอบใหม่ นี่คือนโยบายมาตรฐาน อย่างไรก็ตาม +1 สำหรับคำตอบของคุณเพราะจะเพิ่มข้อมูลให้กับคำตอบ
shivams

2
สิ่งนี้มีประโยชน์มากหากคุณแชร์ข้อมูลมือถือและมีข้อ จำกัด ในการใช้งานอย่างยุติธรรม (และคุณต้องซื้อชุดใหม่หลังจากนั้นจึงเป็นกรณีของ Lycamobile) ในเว็บไซต์สตรีมมิ่งวิดีโอเช่น YouTube วิดีโอทั้งหมดจะถูกโหลดโดยตรงหากคุณมีแบนด์วิดท์เพียงพอ หากคุณ จำกัด แบนด์วิดท์วิดีโอจะเปลี่ยนเป็นความละเอียดต่ำโดยอัตโนมัติและดาวน์โหลดสิ่งที่คุณกำลังดูเท่านั้นซึ่งจะบันทึกข้อมูลหากคุณไม่ต้องการดูทุกอย่าง
baptx

2
มีประโยชน์สำหรับการอัปโหลดไฟล์ขนาดใหญ่เนื่องจากไม่เพียง แต่ จำกัด แบนด์วิดท์ แต่ยังจัดลำดับความสำคัญของทราฟฟิก ดังนั้นเมื่ออัปโหลดไฟล์ 10gb คุณยังคงสามารถใช้ SSH ได้
PeterM

5
Wondershaper ล้าสมัยมาก: Wondershaper Must Die (Bufferbloat.net)
Niklas Holm

10

จำกัด ทรัพยากรเครือข่ายขึ้นอยู่กับเกณฑ์บางอย่างเป็นเรื่องของQoS มีหลายวิธีในการควบคุมทราฟฟิกของผู้ใช้บนระบบ Linux

มีวิธีการที่ดีเกี่ยวกับเทคนิคการกำหนดเส้นทางขั้นสูงและการควบคุมปริมาณการใช้งานบน Linux โดย Bert Hubert


2
คุณอ้างถึงส่วนใดส่วนหนึ่งในนั้นหรือไม่?
rogerdpack

1
หากคุณไม่ต้องการเปลี่ยนการตั้งค่าระบบเพียงแค่ติดตั้ง squid3 proxy จากนั้นตั้งค่า aplication "จำกัด " ของคุณผ่าน proxy สำหรับแอป CLI ของคุณสามารถตั้งค่า torsocks หรือ proxychains และสำหรับ app GUI หนักของคุณยังสามารถติดตั้งซอโมโนดังนั้นใช่ ... มีบางวิธีที่จะควบคุมทุกอย่าง :)
erm3nda

(นี่เป็นลิงก์ตอบเท่านั้น)
Konrad Gajewski

7

หากคุณมีการติดตั้ง Apache อยู่แล้วคุณสามารถใช้mod_bwซึ่งสามารถใช้งานได้กับการเชื่อมต่อพร็อกซี (เช่น Apache ส่งต่อทุกอย่างไปยังเซิร์ฟเวอร์ที่เหมาะสม แต่จะทำให้การตอบสนองช้าลง)


6

Dummynetทำในสิ่งที่คุณต้องการและอีกมากมายคุณยังสามารถควบคุมเวลาแฝงการสูญเสียแพ็คเก็ตแบบสุ่มและอีกมากมาย


6

คุณยังสามารถใช้โมดูล hashlimit iptables นี่คือตัวอย่างง่ายๆ:

iptables -A ไปข้างหน้า -m hashlimit - hashlimit-above 512kb / วินาที - hashlimit-burst 1mb --hashlimit โหมด srcip, dstip - hashlimit-name bwlimit -j DROP

กฎนั้น จำกัด การรับส่งข้อมูลที่ผ่านห่วงโซ่ FORWARD เป็น 512kb / วินาทีโดยมีอัตราการระเบิด 1mb สำหรับแต่ละคู่ต้นทางและปลายทาง

ตรวจสอบส่วน hashlimit ของคู่มือ iptables สำหรับข้อมูลเพิ่มเติม

http://ipset.netfilter.org/iptables-extensions.man.html

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