- 83574 Kbps - Networking over USB
- 94519 Kbps - Ethernet 100Mbit
The USB solution throughput is about 88% of the Ethernet.
The USB data rate utilizes less than 25% of the available bandwidth of the USB High Speed bus (420Mbits).
The USB data rate utilizes less than 25% of the available bandwidth of the USB High Speed bus (420Mbits).
A closer analysis using Wireshark on the Windows showed that the rate of received frames was almost exactly 7000 and 8000 respectively. Which is the same ratio. I'm assuming that there is an underlying timing issue with respect Microchip Harmony 3 drivers that are limiting the frame rates given that they are both a close multiple of 1000!
During the implementation of the PIC32MZ USBLAN driver, I implemented the ability for frame aggregation which CDC-EEM supports. That allows the driver to check if a transfer is already pending (to be sent) and will if possible then bundle two frames together for the next transfer (this reduces overhead and allows higher throughput in most systems.)
Unfortunately, the PIC32MZ TCPIP stack did not deliver frames fast enough. Or conversely, the USB layer was able to send the data fast enough, so that in all cases single transfers were used.
During the implementation of the PIC32MZ USBLAN driver, I implemented the ability for frame aggregation which CDC-EEM supports. That allows the driver to check if a transfer is already pending (to be sent) and will if possible then bundle two frames together for the next transfer (this reduces overhead and allows higher throughput in most systems.)
Unfortunately, the PIC32MZ TCPIP stack did not deliver frames fast enough. Or conversely, the USB layer was able to send the data fast enough, so that in all cases single transfers were used.
I'll need to dig in
Iperf Server (Windows 10)
iperf -s -u -i 10Iperf Client (PIC32MZ EF SK)
iperf -c 192.168.188.1 -u -b 100M -i 10 -t 60N.B. the Microchip builtin iperf client only works with the default interface. You may need to set the default interface to the one needed before use:
defnet USBLAN
iperf -c …
defnet PIC32INT
iperf -c ...
Networking over USB
>iperf -c 192.168.188.1 -u -b 100M -i 10 -t 60
iperf: Starting session instance 0
Given in BW: 100000000+0=100000000iperf: Using the default interface!
> - RemoteNode MAC: f6 0 f5 4c 9c dc
---------------------------------------------------------
iperf: Client connecting to 192.168.188.1, UDP port 5001
iperf: instance 0 started ...
- Local 192.168.188.2 port 50521 connected with
- Remote 192.168.188.1 port 5001
- Target rate = 100000000 bps, period = 0 ms
- [ 0- 10 sec] 0/ 71153 ( 0%) 83753 Kbps
- [10- 20 sec] 0/ 71265 ( 0%) 83922 Kbps
- [20- 30 sec] 0/ 71309 ( 0%) 83973 Kbps
- [30- 40 sec] 0/ 71302 ( 0%) 83965 Kbps
- [40- 50 sec] 0/ 71320 ( 0%) 83986 Kbps
- [50- 60 sec] 0/ 71297 ( 0%) 83959 Kbps
- [0.0- 60.0 sec] 0/ 427655 ( 0%) 83927 Kbps
-----------------------------------------
- [0.0- 60.2 sec] 0/ 427664 ( 0%) 83574 Kbps
Ethernet 100Mbit
>iperf -c 192.168.40.16 -u -b 100M -i 10 -t 60iperf: Starting session instance 0
Given in BW: 100000000+0=100000000iperf: Using the default interface!
> - RemoteNode MAC: 70 85 c2 38 a0 d7
---------------------------------------------------------
iperf: Client connecting to 192.168.40.16, UDP port 5001
iperf: instance 0 started ...
- Local 192.168.40.133 port 55453 connected with
- Remote 192.168.40.16 port 5001
- Target rate = 100000000 bps, period = 0 ms
- [ 0- 10 sec] 0/ 80598 ( 0%) 94876 Kbps
- [10- 20 sec] 0/ 80619 ( 0%) 94937 Kbps
- [20- 30 sec] 0/ 80604 ( 0%) 94919 Kbps
- [30- 40 sec] 0/ 80603 ( 0%) 94918 Kbps
- [40- 50 sec] 0/ 80610 ( 0%) 94926 Kbps
- [50- 60 sec] 0/ 80615 ( 0%) 94932 Kbps
- [0.0- 60.0 sec] 0/ 483660 ( 0%) 94919 Kbps
-----------------------------------------
- [0.0- 60.2 sec] 0/ 483669 ( 0%) 94519 Kbps
No comments:
Post a Comment