ฉันจะจำลองแบนด์วิธต่ำสภาพแวดล้อมแฝงสูงได้อย่างไร


201

ฉันต้องการจำลองแบนด์วิธต่ำการเชื่อมต่อเวลาแฝงสูงกับเซิร์ฟเวอร์เพื่อเลียนแบบเงื่อนไขของ VPN ที่ไซต์ระยะไกล แบนด์วิดท์และเวลาแฝงควรปรับเปลี่ยนเพื่อให้ฉันสามารถค้นพบชุดค่าผสมที่ดีที่สุดเพื่อเรียกใช้แพคเกจซอฟต์แวร์ของเรา


7
เป็นคำถามที่ดีมาก! ฉันชอบที่จะได้ยินคำตอบบางอย่างที่เกี่ยวข้องกับการพัฒนาเว็บ ASP .NET
Carl

คำตอบ:


79

สำหรับmacOSมีNetwork Link Conditionerที่จำลองแบนด์วิดท์ที่กำหนดค่าได้ความหน่วงและการสูญหายของแพ็กเก็ต มันมีอยู่ในแพ็คเกจ เครื่องมือเพิ่มเติมสำหรับ Xcodeภาพหน้าจอ


12
บานหน้าต่างการกำหนดค่าตามความชอบ "Network Link Conditioner" เป็นส่วนหนึ่งของ Hardware IO Tools สำหรับ XCode ซึ่งคุณสามารถดาวน์โหลดได้จากdeveloper.apple.com/downloads
avernet

ดูเหมือนจะไม่ทำงานกับ Genymotion (หน้าจอสีดำ)
บรูโน่

1
ลิงค์ดาวน์โหลดสำหรับรุ่น XCode ที่ใหม่กว่า: developer.apple.com/download/more/?q=Additional%20Tools
jstorm31 31

@ jstorm31 ขอบคุณ ฉันได้อัพเดตคำตอบด้วยชื่อปัจจุบันของแพ็คเกจและลิงค์ปัจจุบัน
Jon Colverson

37

มีการเขียนที่ยอดเยี่ยมของการตั้งค่าเครื่อง FreeBSD เพื่อทำสิ่งนี้ - ใช้เดสก์ท็อปเก่ามาตรฐานของคุณโยน NIC เพิ่มเติมและสร้าง

เขียนขึ้นสามารถใช้ได้ที่http://www.freebsd.org/doc/en/articles/filtering-bridges/article.html

ในขั้นตอนที่ 5 ของคำแนะนำข้างต้นคุณเปิดใช้งานไฟร์วอลล์ สำหรับการจำลองการเชื่อมต่อ IP ที่แตกต่างกันคุณสามารถ (ตัวอย่าง) ทำสิ่งต่อไปนี้:

สร้างไฟล์/etc/rc.firewall.56kที่มีสิ่งต่อไปนี้:

ipfw add pipe 1 ip from any to any out
ipfw add pipe 2 ip from any to any in    
ipfw pipe 1 config bw 56Kbit/s   
ipfw pipe 2 config bw 56Kbit/s

และเปลี่ยน/etc/rc.conf... แทนที่บรรทัด

firewall_type="open"

กับ

firewall_type="/etc/rc.firewall.56k"

เริ่มต้นใหม่และคุณมีสะพาน 56K ด้วยตัวคุณเอง!

หากคุณบังเอิญทำงานจาก Macintosh ระบบปฏิบัติการนั้นจะมี ipfw อยู่ภายในแล้วตามค่าเริ่มต้น ฉันทำสิ่งเดียวกันโดยการกำหนดเส้นทางการรับส่งข้อมูลเครือข่ายผ่านสนามบินและผ่านทางอีเธอร์เน็ตการตั้งค่าเพื่อให้ทุกสิ่งที่เข้ามาในสนามบินมีลักษณะเดียวกับสิ่งที่ฉันพยายามเลียนแบบ คุณสามารถเรียกใช้คำสั่ง ipfw โดยตรงจากเทอร์มินัลและรับเอฟเฟกต์เดียวกัน


27

ในอดีตฉันใช้บริดจ์โดยใช้ฟังก์ชันการทำงานของ Linux Netem (Network Emulation) มันสามารถกำหนดค่าได้อย่างสูง - ช่วยให้การเปิดตัวของความล่าช้า (ตัวอย่างแรกสำหรับ WAN), การสูญเสียแพ็คเก็ต, ความเสียหาย ฯลฯ

แก้ไข: นอกจากนี้ยังมีเว็บอินเตอร์เฟสMasterShaperเพื่อควบคุมการตั้งค่า

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


สมบูรณ์แบบสำหรับความต้องการของฉันและวางจำหน่ายบนเซิร์ฟเวอร์ Ubuntu 14.04 ของฉัน!
RobM

21

ชาร์ลส์

ฉันเจอชาร์ลส์แอพพลิเคชั่นพร็อกซีดีบักเว็บและประสบความสำเร็จอย่างมากในการลอกเลียนแบบเครือข่ายแฝง มันทำงานบน Windows, Mac และ Linux

Charles บน Mac

Bandwidth throttle / Bandwidth Simulator

Charles สามารถใช้เพื่อปรับแบนด์วิดท์และเวลาแฝงของการเชื่อมต่ออินเทอร์เน็ตของคุณ สิ่งนี้ช่วยให้คุณจำลองสภาพของโมเด็มโดยใช้การเชื่อมต่อความเร็วสูง

แบนด์วิดท์อาจถูก จำกัด เป็นไบต์ใดก็ได้ต่อวินาที สิ่งนี้ทำให้สามารถจำลองความเร็วการเชื่อมต่อใด ๆ

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

DummyNet

คุณสามารถใช้ vmware เพื่อรัน BSD หรือ Linux และลองบทความนี้ (DummyNet)หรืออันนี้


2
Charles เป็นพร็อกซี HTTP ดังนั้นจึงเหมาะสำหรับการทดสอบแอพพลิเคชัน HTTP เท่านั้น สำหรับแต่ละคน แต่ในความคิดของฉันอาจเป็นซอฟต์แวร์ที่แย่ที่สุดที่ฉันเคยใช้ ฉันใช้มันเพียงช่วงสั้น ๆ ในขณะที่ต้องทำงานกับ Mac สำหรับผู้ใช้ Windows ฉันขอแนะนำ Fiddler หากคุณต้องการพร็อกซีการดีบัก HTTP น่าเสียดายที่ฉันไม่พบสิ่งใดนอกจาก Charles สำหรับ OSX
แบรด

6
สวัสดีแบรด คุณช่วยพูดถึงปัญหาแบบไหนได้บ้าง?
Ante

17

ผมพบว่าโปรแกรมนี้เรียบร้อยเล็ก ๆ น้อย ๆ สำหรับ Windows เรียกว่าเงอะงะ มันอยู่ในสถานะ alpha แต่ดูเหมือนจะใช้ได้ดีสำหรับฉันและเป็นโอเพ่นซอร์ส

แก้ไข:คนอื่นสังเกตว่าคุณไม่สามารถ จำกัด แบนด์วิดท์ด้วยความซุ่มซ่ามและนั่นเป็นเรื่องจริง คุณสามารถเพิ่ม Latency และข้อผิดพลาดอื่น ๆ ที่เกี่ยวข้องกับเครือข่ายสองสามอย่างเท่านั้น นี่จะตัดสิทธิ์คำตอบนี้เป็นคำตอบที่ถูกต้องสำหรับคำถามอย่างไรก็ตามเนื่องจากฉันใช้มันได้ดีเมื่อฉันต้องการจำลองเครือข่ายที่ไม่ดีดังนั้นฉันจะทิ้งมันไว้ที่นี่ตราบใดที่มันมีคะแนน> 0 หรือคล้ายกัน


คุณควบคุมแบนด์วิดธ์ด้วยเงอะงะได้อย่างไร
3731622

3
โปรแกรมที่ยอดเยี่ยม สิ่งที่ฉันต้องการ ฉันแนะนำมัน ใช้งานได้ดีเหมือนมีเสน่ห์และง่ายสุด ๆ
Jh62

1
เมื่อคนส่วนใหญ่พูดว่า "จำกัด แบนด์วิดท์" พวกเขาอาจจะมีความสุขมากกว่าเพียงแค่เพิ่มความล่าช้าและการสูญเสียแพ็กเก็ตจำนวนมากเนื่องจากสิ่งเหล่านี้จะ จำกัด แบนด์วิดท์อย่างมีประสิทธิภาพ นอกจากนี้โปรแกรมนี้ใช้งานง่ายอย่างน่าอัศจรรย์เต้นทุกอย่างอื่นที่ฉันลองบน windows
ม้วน

13

ลองWANem

WANem เป็น Wide Area Network Emulator ซึ่งหมายถึงการมอบประสบการณ์ที่แท้จริงของ Wide Area Network / อินเทอร์เน็ตในระหว่างการพัฒนาแอพพลิเคชั่น / ทดสอบบนสภาพแวดล้อม LAN


1
ฉันได้ลองแล้วและดูเหมือนจะไม่สามารถใช้งานได้ มันจะไม่ได้รับที่อยู่ IP จากเครือข่ายของเราด้วยเหตุผลบางอย่างในขณะที่คอมพิวเตอร์เครื่องอื่น ๆ ไม่มีปัญหา
Michael Beck


7

ฉันจะลองใช้netemบน linux ด้วยคุณสามารถจำลองความล่าช้าเพิ่มเติมความเสียหายการสูญเสียตและการทำซ้ำ มันยังใช้งานได้บนอุปกรณ์ลูปแบ็ค


เฮ้คุณมีคำสั่งเทียบเท่าสำหรับ windows เป็น netem หรือไม่
Shashi Ranjan

6

โปรแกรมฝั่งไคลเอ็นต์อื่น (Windows เท่านั้น) คือ NetLimiter - http://www.netlimiter.com


2
Netlimiter นั้นดี แต่ฉันคิดว่ามันใช้แบนด์วิดท์ต่ำ - มันไม่สามารถเปลี่ยนความหน่วง
นาธา

แผนเบต้าสำหรับการจำลองเวลาแฝงที่แสดงรายการ v3 เป็นคุณสมบัติที่วางแผนไว้ มันได้รับการปล่อยตัวเมื่อเร็ว ๆ นี้และฉันไม่ได้ใช้มันยังไม่ได้ดูว่าคุณลักษณะที่ทำให้มันใน.
kaliatech

คุณลักษณะนั้นไม่ได้ทำให้เป็นรุ่นเบต้า 9 ฮึ
cacba

4
แม้แต่เบต้าปัจจุบัน (NetLimiter 4) ก็ไม่ยอมให้คุณเปลี่ยนเวลาแฝง
มีอิทธิพล

5

ฉันใช้ NetBalancer บนเครื่อง Windows ของฉัน

http://seriousbit.com/netbalancer/

อัปเดตเมื่อวันที่ 2017-10-07 : NetBalancerเวอร์ชันล่าสุดฟรีคือ 9.2.7 โปรแกรมมีวันหมดอายุแบบตายตัว ก่อนที่คุณจะเริ่มบริการ NetBalancer คุณจะต้องย้อนกลับนาฬิการะบบก่อน 2016-10-18 ดูบทความนี้สำหรับรายละเอียด


ขอบคุณ!! NetBalancer เป็นเครื่องมือเดียวที่แสดงรายการในหน้านี้ที่ฉันสามารถทำงานได้และสามารถควบคุมเวลาในการตอบสนอง
มีอิทธิพล

4

พบไฟล์นี้สำหรับ Windows ที่ใช้ Fiddler (วิธีแก้ปัญหาฟรี) http://www.logic-worx.com/index.php/tools-and-apps/fiddler-connection-simulator/


2
พู้ทำเล่นเองมีตัวเลือก: Rules -> Performance -> Simulate Modem Speedsถ้าคุณไม่ต้องการใช้ปลั๊กอินแยกต่างหาก
David d C e Freitas


3

หากต้องการจำลองการเชื่อมต่อแบนด์วิดท์ต่ำสำหรับการทดสอบเว็บไซต์ใช้ Google Chrome คุณสามารถไปที่แท็บเครือข่ายในเครื่องมือ F12 และเลือกระดับแบนด์วิดท์เพื่อจำลองหรือสร้างแบนด์วิดท์ที่กำหนดเองเพื่อจำลอง


1
ขอบคุณ! หากคุณไม่พบมันอยู่ในคอนโซล Chrome แท็บเครือข่ายที่ด้านขวาของปุ่ม "ปิดใช้งานแคช" เป็นค่าเริ่มต้นคือ "ไม่ควบคุมปริมาณ"
Alan Willms



1

มีผลิตภัณฑ์จากhttp://www.shunra.comชื่อ VE Desktop ซึ่งสามารถใช้เพื่อจำลองสภาพเครือข่ายที่แตกต่างกัน จะช่วยให้คุณปรับแต่ง latencies แบนด์วิดท์และ packetloss ด้วย UI ที่เรียบง่าย ข้อแม้เท่านั้นมันไม่ฟรี หวังว่านี่จะช่วยได้


1

ฉันกำลังมองหาเครื่องมือที่ใช้งานง่ายสำหรับการทดสอบประเภทนี้มาระยะหนึ่งแล้ว ฉันเพิ่งเจอกันเมื่อวันก่อน: Network Delay Simulator

หากคุณใช้ Windows คุณควรลองใช้งาน มันง่ายมากที่จะตั้งค่าและเริ่มต้นและดูเหมือนว่าจะทำงานได้ดีจริงๆ อนุญาตให้คุณกำหนดแบนด์วิดท์เวลาหน่วงและการสูญหายของแพ็กเก็ตในแต่ละทิศทาง สิ่งที่ดีจริงๆอีกอย่างคือคุณสามารถกำหนด "เงื่อนไขการจับคู่ Flow" เพื่อให้มีผลกับปริมาณการใช้งานที่คุณต้องการ โอ้ใช่แล้วมันฟรี



1

ลองดูที่ NE-ONE Network Emulator ซึ่งช่วยให้คุณสามารถกำหนดแบนด์วิดธ์, ความหน่วง, การสูญหายของแพ็กเก็ต, การเรียงแพ็กเก็ตใหม่, การทำซ้ำแพ็คเก็ต, การกระจายแพ็คเก็ต, ความแออัดของเครือข่ายและความบกพร่องอื่น ๆ อีกมากมาย . ความบกพร่องที่แตกต่างกันสามารถกำหนดค่าสำหรับการขึ้นและลงเพื่อให้คุณสามารถมีการถ่ายทอดสัญญาณที่ดีมาก แต่เป็นประสบการณ์การรับส่งสัญญาณที่ไม่ดีจริงๆเหมาะสำหรับการดูว่าแอปจัดการกับการเข้าคิว TCP เนื่องจาก acks ไม่กลับมาในเวลาที่เหมาะสม ดังนั้นจะเพิ่มขึ้น!

มีวิดีโอภาพรวมที่นี่http://www.youtube.com/watch?v=DwtqlE7LcrQมุ่งเป้าไปที่นักพัฒนาเกมโดยเฉพาะ แต่มันแสดงให้เห็นว่ามันเกี่ยวกับอะไร NE-ONE ได้รับการกำหนดค่าโดยใช้เว็บเบราว์เซอร์ดังนั้นจึงเป็นเรื่องง่ายในการติดตั้งและกำหนดค่า - คุณไม่จำเป็นต้องเป็นกูรูด้านเครือข่าย :-)

มีรุ่นฮาร์ดแวร์ - http://www.itrinegy.com/index.php/products/network-emulators/ne-one - หรือคุณสามารถดาวน์โหลดเวอร์ชัน Virtual Appliance (ซอฟต์แวร์) ที่ทำงานภายใต้ VMware ESXi Server Virtual Appliance สามารถดาวน์โหลดได้จาก Solution Exchange ของ VMware - solutionexchange.vmware.com/store/products/ne-one-flex-network-emulator



0

LANforge ICE เป็นโปรแกรมจำลองเครือข่ายที่ ให้ความสำคัญกับการกำหนดเส้นทางเสมือน, jitter, ทุจริตและล่าช้า โครงการต่างๆใช้มันเพื่อจำลองการเชื่อมต่อดาวเทียมการเชื่อมต่อเคเบิลและโมเด็มและการจำลองความเร็วสูง (10Gbit) คุณสามารถใช้ Java GUI เพื่อสร้างเครือข่ายเสมือนของคุณและสร้างรายงานโดยละเอียดเกี่ยวกับการไหลเวียนของข้อมูล ผลิตภัณฑ์ LANforge ยังมีคุณสมบัติการสร้างทราฟฟิก: เฟรม, อีเธอร์เน็ต, เลเยอร์ 3 และทราฟฟิกแบบสภาวะ (NFS, http) LANforge รุ่นล่าสุดมีคุณสมบัติการทดสอบ WiFi ที่ซับซ้อนเช่นกัน


0

คุณสามารถลองสิ่งนี้: CovenantSQL / GNTE เพียงแค่เขียน YAML เช่นนี้:

group:
  - 
    name: china
    nodes:
      - 
        ip: 10.250.1.2
        cmd: "cd /scripts && ./YourBin args"
      - 
        ip: 10.250.1.3
        cmd: "cd /scripts && ./YourBin args"
    delay: "100ms 10ms 30%"
    loss: "1% 10%"
  - 
    name: us
    nodes:
      - 
        ip: 10.250.2.2
        cmd: "cd /scripts && ./YourBin args"
      - 
        ip: 10.250.2.3
        cmd: "cd /scripts && ./YourBin args"
    delay: "1000ms 10ms 30%"
    loss: "1% 10%"

network:
  -
    groups:
      - china
      - us
    delay: "200ms 10ms 1%"
    corrupt: "0.2%"
    rate: "10mbit"

วิ่ง ./generate scripts/your.yaml

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