วิธีการเร่งความเร็วแบนด์วิธบนเครือข่ายอินเตอร์เฟส Linux?


คำตอบ:


32

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)


ใช่นี่เป็นโมดูลที่ดีมากสำหรับสิ่งเหล่านี้แน่นอน ฉันไม่สามารถเชื่อว่าไม่มีใครตอบนี้จนถึงขณะนี้ ...

ฉันใช้สิ่งนี้สำหรับการทดสอบเซิร์ฟเวอร์ในพื้นที่ (บน localhost) เนื่องจากเป็นมาตรฐานสำหรับ distros ทั้งหมดเป็นเวลาหลายปี หากต้องการเพิ่ม 20ms delay "tc qdisc เพิ่ม dev lo root หมายเลขอ้างอิง 1: 0 netem delay 20msec" และเพื่อลบ "tc qdisc del dev lo root"
pixelbeat

1
ทราบอย่างรวดเร็ว: sch_netemเคอร์เนลโมดูลคือ โดยทั่วไปไม่จำเป็นต้องโหลดด้วยตนเองมันจะถูกโหลดโดยอัตโนมัติตามต้องการ
sleske


รุ่นของฉัน netem (Ubuntu 13.10) นอกจากนี้ยังมีตัวเลือกที่จะ จำกัด แบนด์วิดธ์โดยใช้ตัวเลือก: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
z0r

27

ฝั่งไคลเอ็นต์ใช่ไหม

หยดควรทำในสิ่งที่คุณต้องการ หากคุณใช้งาน Ubuntu (หรือ Debian ฉันคิดว่า) คุณสามารถติดตั้งได้sudo apt-get install trickleแล้วเปิดใช้งาน trickle -s -d 10 -u 10 firefox(หรือมากกว่านั้นฉันไม่ได้ใช้งานมาระยะหนึ่งแล้ว) จะเรียกใช้ Firefox โดย จำกัด การดาวน์โหลดและอัปโหลดที่ความเร็ว 10 กิโลไบต์ต่อวินาที


ขอบคุณสำหรับเคล็ดลับนี้ ด้วยเหตุผลบางอย่างหยดจะไม่ทำงานสำหรับฉันกับ Firefox แต่มันทำงานได้ดีกับ google-chrome (Ubuntu 9.10 64 บิต)
Tom

6
หยดทำงานโดยการสกัดการเรียกไปยังลิงก์ในฟังก์ชั่นไลบรารีมาตรฐานสำหรับการถ่ายโอน TCP - ถ้าแอพมีฟังก์ชั่นเหล่านี้เชื่อมโยงแบบคงที่ในเวลารวบรวมแล้วสิ่งนี้ไม่สามารถใช้งานได้
David Spillett

16

ฉันพบวิธีหลีกเลี่ยงกล่องของฉันจากการกินแบนด์วิธทั้งหมดที่มีในเครือข่ายโดยใช้เครื่องมือที่เรียกว่า 'wondershaper' ใน Ubuntu ฉันหวังว่ามันจะมีอยู่ในลินุกซ์ destros อื่น ๆ เช่นกัน ฉันสามารถ จำกัด แบนด์วิดธ์ที่ linux พีซีของฉันใช้ในบ้านได้ด้วยคำสั่ง

sudo wondershaper eth0 1000 200

สิ่งนี้ จำกัด การ จำกัด การดาวน์โหลดไว้ที่ 1,000 กิโลบิตและสูงถึง 200 กิโลบิต ดูหน้า man ของ wondershaper สำหรับข้อมูลเพิ่มเติม / ตัวเลือก


1
นี่ไม่ใช่สิ่งที่ OP กำลังมองหา (มันเกี่ยวกับการอนุรักษ์แบนด์วิดท์ที่ไม่เกี่ยวกับการลดการเชื่อมต่ออย่างมีจุดมุ่งหมาย) แต่ก็ยังดีที่จะรู้
sleske

1
BTW: เป็นแพ็คเกจwondershaperใน Debian
sleske

b / c rocked นี้เรามีปัญหาที่สำนักงานที่มีความอิ่มตัวของแบนด์วิดท์มีการสำรองข้อมูลที่ฉันไม่สามารถขัดจังหวะได้และฉันสามารถแก้ไขปัญหานี้ในสองบรรทัดง่ายๆ: # apt-get wondershaper ติดตั้งแล้ว # wondershaper eth0 9999999 500 ขอบคุณอีกครั้ง!
orange80

4
ดูเหมือนว่า wondershaper จะมีปัญหาทางคณิตศาสตร์ เพื่อให้ได้เส้นทาง 1Mb / s ขึ้น / ลงเราลงเอยด้วยการใช้ 28096 แทน 1024 ไม่ทราบว่าทำไมสิ่งนี้ถึงเกิดขึ้น
boatcoder

ในการรีเซ็ตให้ใช้:sudo wondershaper clear eth0
Léo Lam

8

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 เพิ่มตัวกระวนกระวายใจแพ็คเก็ตจะช่วยให้คุณทราบว่าคุณสามารถรับมือกับแพ็คเก็ตที่ล้าสมัยได้หรือไม่


NistNet ไม่ได้รับการอัพเดตในเวลานานใช่ไหม? IMO วิธีที่ดีที่สุดคือโมดูล netem ซึ่งมีอยู่ในเมล็ดล่าสุดทั้งหมดแล้ว

คุณอาจจำลองเครื่องที่มี 2 NIC ได้โดยใช้ VM
Scott

การเชื่อมโยงไม่ทำงาน
hasen

ลิงก์ใช้งานได้สำหรับฉัน
tripleee

4

ฉันเคยใช้wondershaperเป็นการส่วนตัวในอดีตสำหรับเรื่องนี้ถึงแม้ว่ามันจะถูกเขียนขึ้นสำหรับกรณีการใช้งานตรงกันข้าม - ใช้ประโยชน์จากการเชื่อมต่อ ADSL ของคุณให้เกิดประโยชน์สูงสุด

ฉันจะต้องลองคนอื่น ๆ ที่กล่าวถึงที่นี่แม้ว่า


3

คุณสามารถใช้proxy squid proxy ที่ติดตั้งในเครื่องเพื่อ จำกัด แบนด์วิดท์เพื่อทดสอบเว็บเพจที่ลิงค์ช้า:

  1. ติดตั้งพร็อกซี่ปลาหมึกจากการกระจายของคุณ - ใน Fedora yum install squidของฉันมันเป็นเรื่องง่ายเหมือนการ

  2. เพิ่มรายการต่อไปนี้ใน/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)

  3. เริ่มปลาหมึก :/etc/init.d/squid start

  4. กำหนดค่าเบราว์เซอร์ของคุณเพื่อใช้พร็อกซีเซิร์ฟเวอร์พอร์ตlocalhost3128



3

ยังไม่มีใครพูดถึงip_relayชื่อ "iprelay" ในที่เก็บ Debian การทำงานเป็นพร็อกซี่ TCP มากกว่าที่ขัดขวางการโทรทางหยดไม่และจะทำงานร่วมกับแอพลิเคชันใด ๆ ที่สามารถใช้พร็อกซี่ (เช่นเว็บเบราเซอร์) หรือยอมรับพอร์ตปลายทางที่ผู้ใช้กำหนด (Telnet, SSH, FTP, ขดและอื่น ๆ )

การตั้งค่ายากขึ้นเล็กน้อย แต่มักจะทำงานในสถานการณ์ที่ไม่หยดน้ำ


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