มีวิธี จำกัด แบนด์วิดท์ของ NIC ใน linux หรือไม่? ฉันต้องการที่จะจำลองการเชื่อมต่อที่ช้าโดยพลการ
มีวิธี จำกัด แบนด์วิดท์ของ NIC ใน linux หรือไม่? ฉันต้องการที่จะจำลองการเชื่อมต่อที่ช้าโดยพลการ
คำตอบ:
netemเคอร์เนลโมดูลควบคุมโดย iproute
คุณต้องรวบรวม Netem ด้วยเคอร์เนล:
Networking -->
Networking Options -->
QoS and/or fair queuing -->
Network emulator
เมื่อโหลดโมดูล netem แล้ว tc ของ iproute จะช่วยให้คุณ:
tc qdisc add dev tap0 root netem delay 50ms loss 50%
(การสูญเสียแพ็คเก็ต 50% หน่วงเวลาพิเศษ 50 ms)
sch_netem
เคอร์เนลโมดูลคือ โดยทั่วไปไม่จำเป็นต้องโหลดด้วยตนเองมันจะถูกโหลดโดยอัตโนมัติตามต้องการ
rate
tc qdisc add dev lo root handle 1:0 netem delay 10ms rate 1mbit limit 1000
โปรดทราบว่าสำหรับอุปกรณ์บางอย่างเช่นlo
(สำหรับการเข้าถึง localhost) ifconfig lo txqueuelen 1000
คุณจะต้องกำหนดความยาวคิวเช่นกัน: ดูserverfault.com/a/394949/76090
ฝั่งไคลเอ็นต์ใช่ไหม
หยดควรทำในสิ่งที่คุณต้องการ หากคุณใช้งาน Ubuntu (หรือ Debian ฉันคิดว่า) คุณสามารถติดตั้งได้sudo apt-get install trickle
แล้วเปิดใช้งาน trickle -s -d 10 -u 10 firefox
(หรือมากกว่านั้นฉันไม่ได้ใช้งานมาระยะหนึ่งแล้ว) จะเรียกใช้ Firefox โดย จำกัด การดาวน์โหลดและอัปโหลดที่ความเร็ว 10 กิโลไบต์ต่อวินาที
ฉันพบวิธีหลีกเลี่ยงกล่องของฉันจากการกินแบนด์วิธทั้งหมดที่มีในเครือข่ายโดยใช้เครื่องมือที่เรียกว่า 'wondershaper' ใน Ubuntu ฉันหวังว่ามันจะมีอยู่ในลินุกซ์ destros อื่น ๆ เช่นกัน ฉันสามารถ จำกัด แบนด์วิดธ์ที่ linux พีซีของฉันใช้ในบ้านได้ด้วยคำสั่ง
sudo wondershaper eth0 1000 200
สิ่งนี้ จำกัด การ จำกัด การดาวน์โหลดไว้ที่ 1,000 กิโลบิตและสูงถึง 200 กิโลบิต ดูหน้า man ของ wondershaper สำหรับข้อมูลเพิ่มเติม / ตัวเลือก
wondershaper
ใน Debian
sudo wondershaper clear eth0
NIST สร้างตัวจำลองเครือข่ายชื่อ NistNet
http://snad.ncsl.nist.gov/nistnet/ (ลิงค์ดูเหมือนจะตาย)
http://cs.ecs.baylor.edu/~donahoo/tools/nistnet/
NistNet ให้คุณสร้างเราเตอร์ที่เลียนแบบลิงค์ของการเลือกของคุณ
เพื่อการใช้งานที่ง่ายที่สุดคุณจะได้มันไว้ในกล่องที่มี NIC สองตัวระหว่างเครือข่ายสองเครือข่าย
ตัวอย่างเช่นฉันมีแอปพลิเคชันที่ต้องทำงานผ่านลิงก์ดาวเทียม
ข้อมูลสามารถผ่านลิงค์ 2Mbps ที่มีความหน่วงแฝงใหญ่ การควบคุมต้องผ่านลิงค์ขนาด 128kbps ด้วยเวลาแฝงที่เท่ากัน
NistNet ช่วยให้ทุกอย่างทำงานได้ถึง 128kbps
การใช้ NistNet ฉันสามารถจำลองไม่เพียง แต่แบนด์วิดท์ แต่ยังแฝงอยู่และมันจะวางแพ็กเก็ตสำหรับคุณจำลองลิงค์ที่ยุ่งหรือไม่น่าเชื่อถือ
หากคุณต้องการจำลองการเชื่อมต่อที่ไม่จำเป็นอย่า จำกัด แบนด์วิดท์เท่านั้นทำให้เวลาในการตอบสนองช้าลง
อย่าลืมแยกส่วนแพ็คเก็ตด้วย คุณสามารถตั้งค่า MTU ขนาดเล็กที่ดีบนลิงก์ปลอม
IIRC เพิ่มตัวกระวนกระวายใจแพ็คเก็ตจะช่วยให้คุณทราบว่าคุณสามารถรับมือกับแพ็คเก็ตที่ล้าสมัยได้หรือไม่
ฉันเคยใช้wondershaperเป็นการส่วนตัวในอดีตสำหรับเรื่องนี้ถึงแม้ว่ามันจะถูกเขียนขึ้นสำหรับกรณีการใช้งานตรงกันข้าม - ใช้ประโยชน์จากการเชื่อมต่อ ADSL ของคุณให้เกิดประโยชน์สูงสุด
ฉันจะต้องลองคนอื่น ๆ ที่กล่าวถึงที่นี่แม้ว่า
คุณสามารถใช้proxy squid proxy ที่ติดตั้งในเครื่องเพื่อ จำกัด แบนด์วิดท์เพื่อทดสอบเว็บเพจที่ลิงค์ช้า:
ติดตั้งพร็อกซี่ปลาหมึกจากการกระจายของคุณ - ใน Fedora yum install squid
ของฉันมันเป็นเรื่องง่ายเหมือนการ
เพิ่มรายการต่อไปนี้ใน/etc/squid/squid.conf
:
delay_pools 1
delay_class 1 1
delay_access 1 allow all
delay_parameters 1 16000/16000
สิ่งนี้จะ จำกัด แบนด์วิดท์ไว้ที่ประมาณ 128 kbps (16000 Bps)
เริ่มปลาหมึก :/etc/init.d/squid start
กำหนดค่าเบราว์เซอร์ของคุณเพื่อใช้พร็อกซีเซิร์ฟเวอร์พอร์ตlocalhost
3128
ยังไม่มีใครพูดถึงip_relayชื่อ "iprelay" ในที่เก็บ Debian การทำงานเป็นพร็อกซี่ TCP มากกว่าที่ขัดขวางการโทรทางหยดไม่และจะทำงานร่วมกับแอพลิเคชันใด ๆ ที่สามารถใช้พร็อกซี่ (เช่นเว็บเบราเซอร์) หรือยอมรับพอร์ตปลายทางที่ผู้ใช้กำหนด (Telnet, SSH, FTP, ขดและอื่น ๆ )
การตั้งค่ายากขึ้นเล็กน้อย แต่มักจะทำงานในสถานการณ์ที่ไม่หยดน้ำ