ในการทดสอบการรับส่งข้อมูล WLAN iperf TCP สตรีมขนานหลายรายการจะให้ปริมาณงานสูงกว่าฉัน 1 สตรีม ฉันพยายามเพิ่มขนาดหน้าต่าง TCP แต่ฉันก็ยังไม่สามารถรับปริมาณงานสูงสุดด้วยการสตรีมเพียง 1 ครั้ง มีอย่างอื่นในเลเยอร์ TCP ที่ป้องกันไม่ให้มีการใช้ความจุลิงก์แบบเต็มหรือไม่
จากประสบการณ์ของฉันถ้าคุณเห็นผลลัพธ์ที่แตกต่างกันอย่างมากระหว่าง 1 สตรีม TCP และสตรีม TCP หลาย ๆ ปัญหามักจะเกิดการสูญเสียต ดังนั้น "อย่างอื่น" ในเลเยอร์ TCP คือการส่งสัญญาณใหม่ (เนื่องจากการสูญเสียแพ็กเก็ตชั้นล่าง)
ตัวอย่างที่ฉันทำขึ้นมาเพื่อแสดงให้เห็นว่าการสูญเสียแพ็คเก็ตส่งผลต่อปริมาณการรับส่งข้อมูลเดียว ...
[Wifi||LAN-0.0%-Loss||LAN-2.0%-Loss]
+--------------+ +--------------+
| | | |
| Thinkpad-T61 |----------------------------------------| Linux Server |
| | | Tsunami |
+--------------+ +--------------+
iperf client ------------------> iperf server
Pushes data
นี่คือตารางที่สรุปผลการทดสอบของการiperf
ทดสอบ60 วินาทีระหว่างไคลเอนต์และเซิร์ฟเวอร์ ... คุณอาจเห็นการเปลี่ยนแปลงเล็กน้อยในผลลัพธ์ iperf จาก jitter RTT (เช่นค่าเบี่ยงเบนมาตรฐานสูงกว่า RTT); อย่างไรก็ตามความแตกต่างที่สำคัญที่สุดเกิดขึ้นเมื่อฉันจำลองการสูญเสีย 2% ออกจากไคลเอนต์แบบมีสาย NIC 172.16.1.56 และ 172.16.1.80 เป็นแล็ปท็อปเครื่องเดียวกัน (ใช้งาน Ubuntu) เซิร์ฟเวอร์คือ 172.16.1.5 ที่เรียกใช้ Debian ฉันใช้netemบนไคลเอนต์ wired NIC เพื่อจำลองการสูญเสียต ...
Client IP Transport Loss avg RTT RTT StdDev TCP Streams Tput
----------- ---------- ---- ------- ---------- ----------- ----------
172.16.1.56 802.11g 0.0% 0.016s 42.0 1 19.5Mbps
172.16.1.56 802.11g 0.0% 0.016s 42.0 5 20.5Mbps
172.16.1.80 1000BaseT 0.0% 0.0002s 0.0 1 937 Mbps
172.16.1.80 1000BaseT 0.0% 0.0002s 0.0 5 937 Mbps
172.16.1.80 1000BaseT 2.0% 0.0002s 0.0 1 730 Mbps <---
172.16.1.80 1000BaseT 2.0% 0.0002s 0.0 5 937 Mbps
แก้ไขสำหรับการตอบความคิดเห็น :
คุณสามารถอธิบายสิ่งที่เกิดขึ้นในสถานการณ์สุดท้าย (1,000BaseT, 5 stream, 2.0% loss) ได้ไหม? แม้ว่าจะมีการสูญหายของแพ็คเก็ต แต่ปริมาณงานทั้งหมดยังคงอิ่มตัวที่ 937 Mbits / วินาที
การใช้ TCP ส่วนใหญ่จะลดหน้าต่างความแออัดของพวกเขาเมื่อตรวจพบการสูญหายของแพ็กเก็ต เนื่องจากเราใช้netemเพื่อบังคับให้แพ็กเก็ตสูญเสีย 2% จากลูกค้าไปยังเซิร์ฟเวอร์ข้อมูลของลูกค้าบางส่วนจึงลดลง ผลกระทบสุทธิของnetemในตัวอย่างนี้คืออัตราการส่งเฉลี่ยเดียวกระแส 730Mbps การเพิ่มสตรีมหลายรายการหมายความว่าสตรีม TCP แต่ละรายการสามารถทำงานร่วมกันเพื่อทำให้ลิงก์อิ่มตัว
เป้าหมายของฉันคือการบรรลุ TCP throughput สูงสุดที่เป็นไปได้ผ่าน WiFi ตามที่ฉันเข้าใจฉันควรเพิ่มจำนวนสตรีมเพื่อลดปริมาณงานที่เกิดจากการสูญหายของแพ็กเก็ต ถูกต้องหรือไม่
ใช่
นอกจากนี้ในกรณีใดลำธารจำนวนมากเกินไปจะเริ่มมีผลกระทบในทางลบต่อปริมาณงานหรือไม่ สิ่งนี้อาจเกิดจากหน่วยความจำที่ จำกัด และ / หรือกำลังการประมวลผลหรือไม่?
ฉันไม่สามารถตอบได้โดยไม่ต้องทดลองเพิ่มเติม แต่สำหรับลิงก์ 1GE ฉันไม่เคยมีปัญหาในการเชื่อมโยงกับสตรีมแบบขนาน 5 สตรีม เพื่อให้คุณเข้าใจว่า TCP สามารถปรับขนาดได้อย่างไรเซิร์ฟเวอร์ linux สามารถจัดการซ็อกเก็ต TCP พร้อมกันได้มากกว่า1,500 ซ็อกเก็ตภายใต้สถานการณ์ที่เหมาะสม นี่เป็นอีกการสนทนาที่เกี่ยวข้องกับการปรับขนาดซ็อกเก็ต TCP พร้อมกัน แต่ในความเห็นของฉันมีอะไรมากกว่า 20 ซ็อกเก็ตแบบขนานจะ overkill ถ้าคุณเพียงแค่พยายามที่จะทำให้อิ่มตัวลิงค์
ฉันต้องมีความเข้าใจผิดที่ iperf ใช้ขนาดหน้าต่าง -w เป็นค่าสูงสุดตามที่ดูเหมือนว่าคุณกำลังพูดว่ามันโตเกินกว่าค่าเริ่มต้น 21K
ฉันไม่ได้ใช้iperf -w
ดังนั้นฉันคิดว่ามีความเข้าใจผิด เนื่องจากคุณมีคำถามมากมายเกี่ยวกับเคส wifi ฉันจึงรวมกราฟแบบ wireshark ของ TCP throughput สำหรับ wifi TCP stream case
ทดสอบข้อมูล
ฉันยังรวมถึงข้อมูลทดสอบดิบในกรณีที่คุณต้องการดูว่าฉันวัดสิ่งเหล่านี้อย่างไร ...
802.11g, 1 สตรีม TCP
mpenning@mpenning-ThinkPad-T61:~$ mtr --no-dns --report \
--report-cycles 60 172.16.1.5
HOST: mpenning-ThinkPad-T61 Loss% Snt Last Avg Best Wrst StDev
1.|-- 172.16.1.5 0.0% 60 0.8 16.0 0.7 189.4 42.0
mpenning@mpenning-ThinkPad-T61:~$
[mpenning@tsunami]$ iperf -s -p 9000 -B 172.16.1.5
mpenning@mpenning-ThinkPad-T61:~$ iperf -c 172.16.1.5 -p 9000 -t 60 -P 1
------------------------------------------------------------
Client connecting to 172.16.1.5, TCP port 9000
TCP window size: 21.0 KByte (default)
------------------------------------------------------------
[ 3] local 172.16.1.56 port 40376 connected with 172.16.1.5 port 9000
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-60.1 sec 139 MBytes 19.5 Mbits/sec
mpenning@mpenning-ThinkPad-T61:~$
802.11g, 5 สตรีม TCP
[mpenning@tsunami]$ iperf -s -p 9001 -B 172.16.1.5
mpenning@mpenning-ThinkPad-T61:~$ iperf -c 172.16.1.5 -p 9001 -t 60 -P 5
------------------------------------------------------------
Client connecting to 172.16.1.5, TCP port 9001
TCP window size: 21.0 KByte (default)
------------------------------------------------------------
[ 3] local 172.16.1.56 port 37162 connected with 172.16.1.5 port 9001
[ 5] local 172.16.1.56 port 37165 connected with 172.16.1.5 port 9001
[ 7] local 172.16.1.56 port 37167 connected with 172.16.1.5 port 9001
[ 4] local 172.16.1.56 port 37163 connected with 172.16.1.5 port 9001
[ 6] local 172.16.1.56 port 37166 connected with 172.16.1.5 port 9001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-60.0 sec 28.0 MBytes 3.91 Mbits/sec
[ 5] 0.0-60.1 sec 28.8 MBytes 4.01 Mbits/sec
[ 4] 0.0-60.3 sec 28.1 MBytes 3.91 Mbits/sec
[ 6] 0.0-60.4 sec 34.0 MBytes 4.72 Mbits/sec
[ 7] 0.0-61.0 sec 30.5 MBytes 4.20 Mbits/sec
[SUM] 0.0-61.0 sec 149 MBytes 20.5 Mbits/sec
mpenning@mpenning-ThinkPad-T61:~$
1000BaseT, 1 Stream, การสูญเสีย 0.0%
mpenning@mpenning-ThinkPad-T61:~$ mtr --no-dns --report \
> --report-cycles 60 172.16.1.5
HOST: mpenning-ThinkPad-T61 Loss% Snt Last Avg Best Wrst StDev
1.|-- 172.16.1.5 0.0% 60 0.2 0.2 0.2 0.2 0.0
mpenning@mpenning-ThinkPad-T61:~$
[mpenning@tsunami]$ iperf -s -p 9002 -B 172.16.1.5
mpenning@mpenning-ThinkPad-T61:~$ iperf -c 172.16.1.5 -p 9002 -t 60 -P 1
------------------------------------------------------------
Client connecting to 172.16.1.5, TCP port 9002
TCP window size: 21.0 KByte (default)
------------------------------------------------------------
[ 3] local 172.16.1.80 port 49878 connected with 172.16.1.5 port 9002
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-60.0 sec 6.54 GBytes 937 Mbits/sec
mpenning@mpenning-ThinkPad-T61:~$
1000BaseT, 5 Streams, 0.0% ขาดทุน
[mpenning@tsunami]$ iperf -s -p 9003 -B 172.16.1.5
mpenning@mpenning-ThinkPad-T61:~$ iperf -c 172.16.1.5 -p 9003 -t 60 -P 5
------------------------------------------------------------
Client connecting to 172.16.1.5, TCP port 9003
TCP window size: 21.0 KByte (default)
------------------------------------------------------------
[ 7] local 172.16.1.80 port 47047 connected with 172.16.1.5 port 9003
[ 3] local 172.16.1.80 port 47043 connected with 172.16.1.5 port 9003
[ 4] local 172.16.1.80 port 47044 connected with 172.16.1.5 port 9003
[ 5] local 172.16.1.80 port 47045 connected with 172.16.1.5 port 9003
[ 6] local 172.16.1.80 port 47046 connected with 172.16.1.5 port 9003
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-60.0 sec 1.28 GBytes 184 Mbits/sec
[ 5] 0.0-60.0 sec 1.28 GBytes 184 Mbits/sec
[ 3] 0.0-60.0 sec 1.28 GBytes 183 Mbits/sec
[ 6] 0.0-60.0 sec 1.35 GBytes 193 Mbits/sec
[ 7] 0.0-60.0 sec 1.35 GBytes 193 Mbits/sec
[SUM] 0.0-60.0 sec 6.55 GBytes 937 Mbits/sec
mpenning@mpenning-ThinkPad-T61:~$
1000BaseT, 1 Streams, 2.0% ขาดทุน
mpenning@mpenning-ThinkPad-T61:~$ sudo tc qdisc add dev eth0 root netem corrupt 2.0%
mpenning@mpenning-ThinkPad-T61:~$ mtr --no-dns --report --report-cycles 60 172.16.1.5
HOST: mpenning-ThinkPad-T61 Loss% Snt Last Avg Best Wrst StDev
1.|-- 172.16.1.5 1.7% 60 0.2 0.2 0.2 0.2 0.0
mpenning@mpenning-ThinkPad-T61:~$
[mpenning@tsunami]$ iperf -s -p 9004 -B 172.16.1.5
mpenning@mpenning-ThinkPad-T61:~$ iperf -c 172.16.1.5 -p 9004 -t 60 -P 1
------------------------------------------------------------
Client connecting to 172.16.1.5, TCP port 9004
TCP window size: 42.0 KByte (default)
------------------------------------------------------------
[ 3] local 172.16.1.80 port 48910 connected with 172.16.1.5 port 9004
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-64.1 sec 5.45 GBytes 730 Mbits/sec
mpenning@mpenning-ThinkPad-T61:~$
1000BaseT, 5 Streams, 2.0% สูญเสีย
[mpenning@tsunami]$ iperf -s -p 9005 -B 172.16.1.5
mpenning@mpenning-ThinkPad-T61:~$ iperf -c 172.16.1.5 -p 9005 -t 60 -P 5
------------------------------------------------------------
Client connecting to 172.16.1.5, TCP port 9005
TCP window size: 21.0 KByte (default)
------------------------------------------------------------
[ 7] local 172.16.1.80 port 50616 connected with 172.16.1.5 port 9005
[ 3] local 172.16.1.80 port 50613 connected with 172.16.1.5 port 9005
[ 5] local 172.16.1.80 port 50614 connected with 172.16.1.5 port 9005
[ 4] local 172.16.1.80 port 50612 connected with 172.16.1.5 port 9005
[ 6] local 172.16.1.80 port 50615 connected with 172.16.1.5 port 9005
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-60.0 sec 1.74 GBytes 250 Mbits/sec
[ 7] 0.0-60.0 sec 711 MBytes 99.3 Mbits/sec
[ 4] 0.0-60.0 sec 1.28 GBytes 183 Mbits/sec
[ 6] 0.0-60.0 sec 1.59 GBytes 228 Mbits/sec
[ 5] 0.0-60.0 sec 1.24 GBytes 177 Mbits/sec
[SUM] 0.0-60.0 sec 6.55 GBytes 937 Mbits/sec
mpenning@mpenning-ThinkPad-T61:~$
ลบการจำลองการสูญหายของแพ็กเก็ต
mpenning@mpenning-ThinkPad-T61:~$ sudo tc qdisc del dev eth0 root