Несколько дней назад мы рассмотрели Ethernet-адаптер USB 3.0 на 2,5 Гбит/с на базе чипа Realtek RTL8156B в Ubuntu 20.04, и, скажем так, его надежность и производительность нас не впечатлили. Мы получили некоторые рекомендации, такие как замена кабелей, размер MTU и т. д.
Замена кабелей не помогла, но в одном комментарии упоминалось, что проблема может быть в драйвере cdc_ncm, в другом говорилось, что обновление до ядра Linux 5.14 должно установить правильный драйвер r8152… Так что мы просто сделали это:
1 |
sudo apt install linux-oem-20.04d |
Обновили Linux 5.13 (поставляется с Ubuntu 20.04 + HWE) до Linux 5.14, но система продолжала использовать драйвер cdc_ncm с полудуплексным каналом:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
jaufranc@cnx-laptop-4:~$ inxi -n Network: Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet driver: r8169 IF: enp2s0f1 state: down mac: 98:28:a6:0f:06:07 Device-2: Qualcomm Atheros QCA9377 802.11ac Wireless Network Adapter driver: ath10k_pci IF: wlp3s0 state: up mac: 70:c9:4e:b7:84:77 Device-3: Realtek USB 10/100/1G/2.5G LAN type: USB driver: cdc_ncm IF: enx1cbfced40321 state: up speed: 2500 Mbps duplex: half mac: 1c:bf:ce:d4:03:21 jaufranc@cnx-laptop-4:~$ uname -a Linux cnx-laptop-4 5.14.0-1022-oem #24-Ubuntu SMP Mon Jan 31 16:00:31 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux |
Потом мы подумали, что, возможно, нам придется использовать правила udev, чтобы предотвратить загрузку драйвера cdc_ncm, и действительно для этого есть 50-usb-realtek-net.rules в драйвере r8152. Поэтому мы скопировали файл в папку /etc/udev/rules.d/. Так как не перезагружалось, то нам пришлось выгрузить ненужные нам модули, и перезапустить udev:
1 2 3 |
sudo rmmod cdc_mbim sudo rmmod cdc_ncm service udev restart |
Давайте посмотрим…
1 2 3 4 5 6 7 8 9 10 11 12 |
sudo inxi -n Network: Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet driver: r8169 IF: enp2s0f1 state: down mac: 98:28:a6:0f:06:07 Device-2: Qualcomm Atheros QCA9377 802.11ac Wireless Network Adapter driver: ath10k_pci IF: wlp3s0 state: up mac: 70:c9:4e:b7:84:77 Device-3: Realtek USB 10/100/1G/2.5G LAN type: USB driver: r8152 IF: enx1cbfced40321 state: up speed: 2500 Mbps duplex: full mac: 1c:bf:ce:d4:03:21 |
Здорово! Теперь он использует драйвер r8152, и у нас есть полнодуплексное соединение.
Давайте еще раз пройдемся по всем нашим тестам, чтобы сравнить результаты.
iperf2
загрузка:
1 2 3 4 5 6 7 8 |
iperf -t 60 -c 192.168.31.12 ------------------------------------------------------------ Client connecting to 192.168.31.12, TCP port 5001 TCP window size: 1.40 MByte (default) ------------------------------------------------------------ [ 3] local 192.168.31.166 port 41266 connected with 192.168.31.12 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-60.0 sec 16.4 GBytes 2.35 Gbits/sec |
скачивание:
1 2 3 4 5 6 7 8 |
iperf -t 60 -c 192.168.31.166 ------------------------------------------------------------ Client connecting to 192.168.31.166, TCP port 5001 TCP window size: 901 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.31.12 port 37188 connected with 192.168.31.166 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-60.0 sec 10.8 GBytes 1.55 Gbits/sec |
Есть улучшение скорости загрузки (было 600 Мбит/с с драйвером cdc_ncm), но все еще не близко к 2,3 Гбит/с.
Ради интереса, давайте попробуем полный дуплекс:
1 2 3 4 5 6 7 8 |
Client connecting to 192.168.31.166, TCP port 5001 TCP window size: 799 KByte (default) ------------------------------------------------------------ [ 4] local 192.168.31.12 port 5001 connected with 192.168.31.166 port 41290 [ 6] local 192.168.31.12 port 37194 connected with 192.168.31.166 port 5001 [ 6] 0.0-60.1 sec 8.06 GBytes 1.15 Gbits/sec [ 4] 0.0-60.4 sec 16.3 GBytes 2.32 Gbits/sec |
Это на самом деле не так уж плохо.
iperf3
загрузка:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
iperf3 -t 60 -c 192.168.31.12 -i 5 Connecting to host 192.168.31.12, port 5201 [ 5] local 192.168.31.166 port 32848 connected to 192.168.31.12 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-5.00 sec 1.37 GBytes 2.36 Gbits/sec 0 847 KBytes [ 5] 5.00-10.00 sec 1.37 GBytes 2.35 Gbits/sec 0 889 KBytes [ 5] 10.00-15.00 sec 1.37 GBytes 2.35 Gbits/sec 0 1.14 MBytes [ 5] 15.00-20.00 sec 1.37 GBytes 2.35 Gbits/sec 0 1.14 MBytes [ 5] 20.00-25.00 sec 1.37 GBytes 2.35 Gbits/sec 0 1.14 MBytes [ 5] 25.00-30.00 sec 1.37 GBytes 2.35 Gbits/sec 0 1.14 MBytes [ 5] 30.00-35.00 sec 1.37 GBytes 2.35 Gbits/sec 0 1.73 MBytes [ 5] 35.00-40.00 sec 1.37 GBytes 2.35 Gbits/sec 0 1.73 MBytes [ 5] 40.00-45.00 sec 1.37 GBytes 2.35 Gbits/sec 0 3.92 MBytes [ 5] 45.00-50.00 sec 1.37 GBytes 2.35 Gbits/sec 0 3.92 MBytes [ 5] 50.00-55.00 sec 1.37 GBytes 2.35 Gbits/sec 0 3.92 MBytes [ 5] 55.00-60.00 sec 1.37 GBytes 2.35 Gbits/sec 0 3.92 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-60.00 sec 16.4 GBytes 2.35 Gbits/sec 0 sender [ 5] 0.00-60.05 sec 16.4 GBytes 2.35 Gbits/sec receiver iperf Done. |
скачивание:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
iperf3 -t 60 -c 192.168.31.166 -i 5 Connecting to host 192.168.31.166, port 5201 [ 5] local 192.168.31.12 port 53112 connected to 192.168.31.166 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-5.00 sec 802 MBytes 1.35 Gbits/sec 641 222 KBytes [ 5] 5.00-10.00 sec 856 MBytes 1.44 Gbits/sec 618 83.4 KBytes [ 5] 10.00-15.00 sec 852 MBytes 1.43 Gbits/sec 583 87.7 KBytes [ 5] 15.00-20.00 sec 843 MBytes 1.41 Gbits/sec 592 168 KBytes [ 5] 20.00-25.00 sec 831 MBytes 1.39 Gbits/sec 642 91.9 KBytes [ 5] 25.00-30.00 sec 810 MBytes 1.36 Gbits/sec 666 97.6 KBytes [ 5] 30.00-35.00 sec 831 MBytes 1.39 Gbits/sec 590 123 KBytes [ 5] 35.00-40.00 sec 827 MBytes 1.39 Gbits/sec 652 298 KBytes [ 5] 40.00-45.00 sec 843 MBytes 1.41 Gbits/sec 605 93.3 KBytes [ 5] 45.00-50.00 sec 844 MBytes 1.42 Gbits/sec 635 96.2 KBytes [ 5] 50.00-55.00 sec 862 MBytes 1.45 Gbits/sec 565 84.8 KBytes [ 5] 55.00-60.00 sec 858 MBytes 1.44 Gbits/sec 583 82.0 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-60.00 sec 9.82 GBytes 1.41 Gbits/sec 7372 sender [ 5] 0.00-60.00 sec 9.82 GBytes 1.41 Gbits/sec receiver iperf Done. |
Примерно так же, как iperf2.
iperf3 много лет не поддерживал полнодуплексный режим, но в версии 3.7 эта функция была вновь представлена. Итак, давайте попробуем:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
iperf3 -t 60 -c 192.168.31.12 --bidir -i 5 Connecting to host 192.168.31.12, port 5201 [ 5] local 192.168.31.166 port 32858 connected to 192.168.31.12 port 5201 [ 7] local 192.168.31.166 port 32860 connected to 192.168.31.12 port 5201 [ ID][Role] Interval Transfer Bitrate Retr Cwnd [ 5][TX-C] 0.00-5.00 sec 1.36 GBytes 2.34 Gbits/sec 0 1.41 MBytes [ 7][RX-C] 0.00-5.00 sec 643 MBytes 1.08 Gbits/sec [ 5][TX-C] 5.00-10.00 sec 1.36 GBytes 2.34 Gbits/sec 0 1.48 MBytes [ 7][RX-C] 5.00-10.00 sec 673 MBytes 1.13 Gbits/sec [ 5][TX-C] 10.00-15.00 sec 1.36 GBytes 2.34 Gbits/sec 0 1.78 MBytes [ 7][RX-C] 10.00-15.00 sec 690 MBytes 1.16 Gbits/sec [ 5][TX-C] 15.00-20.00 sec 1.36 GBytes 2.34 Gbits/sec 0 1.78 MBytes [ 7][RX-C] 15.00-20.00 sec 695 MBytes 1.17 Gbits/sec [ 5][TX-C] 20.00-25.00 sec 1.36 GBytes 2.34 Gbits/sec 0 1.78 MBytes [ 7][RX-C] 20.00-25.00 sec 703 MBytes 1.18 Gbits/sec [ 5][TX-C] 25.00-30.00 sec 1.36 GBytes 2.34 Gbits/sec 0 1.78 MBytes [ 7][RX-C] 25.00-30.00 sec 704 MBytes 1.18 Gbits/sec [ 5][TX-C] 30.00-35.00 sec 1.36 GBytes 2.34 Gbits/sec 0 1.78 MBytes [ 7][RX-C] 30.00-35.00 sec 711 MBytes 1.19 Gbits/sec [ 5][TX-C] 35.00-40.00 sec 1.36 GBytes 2.34 Gbits/sec 0 1.78 MBytes [ 7][RX-C] 35.00-40.00 sec 697 MBytes 1.17 Gbits/sec [ 5][TX-C] 40.00-45.00 sec 28.8 MBytes 48.2 Mbits/sec 4 1.41 KBytes [ 7][RX-C] 40.00-45.00 sec 15.0 MBytes 25.2 Mbits/sec [ 5][TX-C] 45.00-50.00 sec 0.00 Bytes 0.00 bits/sec 1 1.41 KBytes [ 7][RX-C] 45.00-50.00 sec 0.00 Bytes 0.00 bits/sec [ 5][TX-C] 50.00-55.00 sec 0.00 Bytes 0.00 bits/sec 1 1.41 KBytes [ 7][RX-C] 50.00-55.00 sec 0.00 Bytes 0.00 bits/sec iperf3: error - control socket has closed unexpectedly |
Что случилось? В журнале ядра также есть сообщения об ошибках.
1 2 3 4 5 6 7 8 9 |
[18424.279351] r8152 2-1:1.0 enx1cbfced40321: Tx status -71 [18424.287497] r8152 2-1:1.0 enx1cbfced40321: Tx status -71 [18424.295735] r8152 2-1:1.0 enx1cbfced40321: Tx status -71 [18424.303858] r8152 2-1:1.0 enx1cbfced40321: Tx status -71 [18430.885965] net_ratelimit: 107 callbacks suppressed [18430.885975] r8152 2-1:1.0 enx1cbfced40321: Tx status -71 [18431.251643] r8152 2-1:1.0 enx1cbfced40321: Tx status -71 [18431.909792] r8152 2-1:1.0 enx1cbfced40321: Tx status -71 [18437.797786] r8152 2-1:1.0 enx1cbfced40321: Tx status -71 |
Мы не единственные, у кого есть эта проблема, и это открытая проблема в репозитории драйвера r8156 на Github. Вот ответ от разработчика для справки:
Есть подозрение, что проблема в адаптере Ethernet, так как имеется много сообщений о том, что он работает с DS918+. (Например, дизайн линии электропередач, перегрев и т. д.)
https://github.com/bb-qq/r8152/wiki/CompatibilityНе могли бы вы попробовать другого поставщика? Кроме того, использование USB-концентратора с внешним источником питания может улучшить ситуацию.
В этот момент Ethernet вообще не работал, и нам пришлось отключить и снова вставить USB-ключ. Второй раз «сработало».
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
iperf3 -t 60 -c 192.168.31.12 --bidir -i 5 Connecting to host 192.168.31.12, port 5201 [ 5] local 192.168.31.166 port 32872 connected to 192.168.31.12 port 5201 [ 7] local 192.168.31.166 port 32874 connected to 192.168.31.12 port 5201 [ ID][Role] Interval Transfer Bitrate Retr Cwnd [ 5][TX-C] 0.00-5.00 sec 1.36 GBytes 2.34 Gbits/sec 0 1.59 MBytes [ 7][RX-C] 0.00-5.00 sec 515 MBytes 864 Mbits/sec [ 5][TX-C] 5.00-10.00 sec 1.36 GBytes 2.34 Gbits/sec 0 1.75 MBytes [ 7][RX-C] 5.00-10.00 sec 489 MBytes 820 Mbits/sec [ 5][TX-C] 10.00-15.00 sec 1.36 GBytes 2.34 Gbits/sec 0 1.75 MBytes [ 7][RX-C] 10.00-15.00 sec 530 MBytes 889 Mbits/sec [ 5][TX-C] 15.00-20.00 sec 1.36 GBytes 2.34 Gbits/sec 0 1.75 MBytes [ 7][RX-C] 15.00-20.00 sec 564 MBytes 947 Mbits/sec [ 5][TX-C] 20.00-25.00 sec 1.36 GBytes 2.34 Gbits/sec 0 1.75 MBytes [ 7][RX-C] 20.00-25.00 sec 560 MBytes 940 Mbits/sec [ 5][TX-C] 25.00-30.00 sec 1.36 GBytes 2.34 Gbits/sec 0 2.63 MBytes [ 7][RX-C] 25.00-30.00 sec 578 MBytes 970 Mbits/sec [ 5][TX-C] 30.00-35.00 sec 1.36 GBytes 2.34 Gbits/sec 0 2.63 MBytes [ 7][RX-C] 30.00-35.00 sec 561 MBytes 942 Mbits/sec [ 5][TX-C] 35.00-40.00 sec 1.36 GBytes 2.34 Gbits/sec 0 2.63 MBytes [ 7][RX-C] 35.00-40.00 sec 572 MBytes 960 Mbits/sec [ 5][TX-C] 40.00-45.00 sec 1.36 GBytes 2.34 Gbits/sec 0 2.63 MBytes [ 7][RX-C] 40.00-45.00 sec 570 MBytes 956 Mbits/sec [ 5][TX-C] 45.00-50.00 sec 1.36 GBytes 2.34 Gbits/sec 0 2.63 MBytes [ 7][RX-C] 45.00-50.00 sec 572 MBytes 960 Mbits/sec [ 5][TX-C] 50.00-55.00 sec 1.36 GBytes 2.34 Gbits/sec 0 2.63 MBytes [ 7][RX-C] 50.00-55.00 sec 570 MBytes 957 Mbits/sec [ 5][TX-C] 55.00-60.00 sec 1.36 GBytes 2.34 Gbits/sec 0 2.63 MBytes [ 7][RX-C] 55.00-60.00 sec 571 MBytes 958 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID][Role] Interval Transfer Bitrate Retr [ 5][TX-C] 0.00-60.00 sec 16.3 GBytes 2.34 Gbits/sec 0 sender [ 5][TX-C] 0.00-60.05 sec 16.3 GBytes 2.34 Gbits/sec receiver [ 7][RX-C] 0.00-60.00 sec 6.50 GBytes 931 Mbits/sec 58 sender [ 7][RX-C] 0.00-60.05 sec 6.50 GBytes 929 Mbits/sec receiver iperf Done. |
На стороне Rx все еще есть повторные передачи, которые могут помочь объяснить более низкую скорость.
SAMBA
От нашего ноутбука с ключом RTL8156B и твердотельным накопителем SATA до мини-ПК UP Xtreme i11 с портом 2,5GbE и док-станцией MINIX USB-C с твердотельным накопителем на 480 ГБ.
Около 930 Мбит/с с драйвером r8152 против 750 Мбит/с с драйвером cdc_ncm.
Теперь с мини-ПК на ноутбук (также известный как загрузка)…
Это медленнее, как и ожидалось, 837 Мбит/с, но лучше, чем менее 500 Мбит/с, которые мы получили с драйвером cdc_ncm.
SCP
ноутбук к мини-ПК:
1 2 3 4 5 6 7 |
time scp Libero_SoC_v2021.2_lin.bin devkit@192.168.31.12:/home/devkit/NEO_Storage devkit@192.168.31.12's password: Libero_SoC_v2021.2_lin.bin 100% 10GB 115.0MB/s 01:32 real 1m34.981s user 0m55.750s sys 0m42.668s |
мини ПК к ноутбуку:
1 2 3 4 5 6 7 |
time scp devkit@192.168.31.12:/home/devkit/NEO_Storage/Libero_SoC_v2021.2_lin.bin . devkit@192.168.31.12's password: Libero_SoC_v2021.2_lin.bin 100% 10GB 111.7MB/s 01:35 real 1m36.896s user 0m56.926s sys 0m55.330s |
Это почти одинаковая скорость между загрузкой и выгрузкой с помощью scp, что странно. Узким местом здесь выглядит мой SATA SSD:
1 2 3 4 5 6 7 8 |
iozone -e -I -a -s 1000M -r 16384k -i 0 -i 1 Iozone: Performance Test of File I/O Version $Revision: 3.489 $ Compiled for 64 bit mode. Build: linux-AMD64 random random bkwd record stride kB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 1024000 16384 141794 139550 149591 145020 |
Скорость чтения ограничена примерно 145 МБ/с, а скорость записи — около 140 МБ/с.
Твердотельный накопитель, используемый в док-станции MINIX NEO Storage Plus USB-C, намного быстрее: в последний раз, когда мы тестировали, 379 МБ/с для последовательного чтения и 240+ МБ/с для последовательной записи.
Итак, давайте посмотрим, какую скорость мы можем получить, выбрасывая данные в /dev/null.
скачивание на ноутбук:
1 2 3 4 5 6 7 |
time scp -c aes128-ctr devkit@192.168.31.12:/home/devkit/NEO_Storage/Libero_SoC_v2021.2_lin.bin /dev/null devkit@192.168.31.12's password: Libero_SoC_v2021.2_lin.bin 100% 10GB 133.0MB/s 01:20 real 1m21.880s user 0m18.931s sys 0m33.838s |
загрузка с ноутбука:
1 2 3 4 5 6 7 |
time scp -c aes128-ctr Libero_SoC_v2021.2_lin.bin devkit@192.168.31.12:/dev/null devkit@192.168.31.12's password: Libero_SoC_v2021.2_lin.bin 100% 10GB 239.9MB/s 00:44 real 0m46.094s user 0m17.174s sys 0m36.793s |
Так что это больше похоже на загрузку, по крайней мере. У нас все еще есть проблема со скоростью загрузки, но производительность все еще значительно улучшилась с драйвером r8152.
Тестирование с NanoPi R4S
Хотя это намного лучше, но не оптимально. У нас есть маршрутизатор NanoPi R4S с двумя портами USB 3.0, поэтому мы сначала попробовали его, используя последний образ OpenWrt (FriendlyWrt) 21.02 с Linux 5.15:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
root@FriendlyWrt:~# iperf3 -t 60 -c 192.168.2.207 --bidir -i 5 Connecting to host 192.168.2.207, port 5201 [ 5] local 192.168.2.161 port 21836 connected to 192.168.2.207 port 5201 [ 7] local 192.168.2.161 port 21838 connected to 192.168.2.207 port 5201 [ ID][Role] Interval Transfer Bitrate Retr Cwnd [ 5][TX-C] 0.00-5.00 sec 348 MBytes 583 Mbits/sec 4 413 KBytes [ 7][RX-C] 0.00-5.00 sec 220 MBytes 369 Mbits/sec [ 5][TX-C] 5.00-10.00 sec 480 MBytes 805 Mbits/sec 5 684 KBytes [ 7][RX-C] 5.00-10.00 sec 218 MBytes 366 Mbits/sec [ 5][TX-C] 10.00-15.00 sec 574 MBytes 963 Mbits/sec 47 557 KBytes [ 7][RX-C] 10.00-15.00 sec 183 MBytes 307 Mbits/sec [ 5][TX-C] 15.00-20.00 sec 481 MBytes 807 Mbits/sec 3 699 KBytes [ 7][RX-C] 15.00-20.00 sec 179 MBytes 301 Mbits/sec [ 5][TX-C] 20.00-25.00 sec 464 MBytes 779 Mbits/sec 18 701 KBytes [ 7][RX-C] 20.00-25.00 sec 214 MBytes 359 Mbits/sec [ 5][TX-C] 25.00-30.00 sec 549 MBytes 920 Mbits/sec 26 580 KBytes [ 7][RX-C] 25.00-30.00 sec 178 MBytes 298 Mbits/sec [ 5][TX-C] 30.00-35.00 sec 472 MBytes 792 Mbits/sec 3 526 KBytes [ 7][RX-C] 30.00-35.00 sec 207 MBytes 347 Mbits/sec [ 5][TX-C] 35.00-40.00 sec 465 MBytes 781 Mbits/sec 15 410 KBytes [ 7][RX-C] 35.00-40.00 sec 195 MBytes 326 Mbits/sec [ 5][TX-C] 40.00-45.00 sec 385 MBytes 645 Mbits/sec 0 376 KBytes [ 7][RX-C] 40.00-45.00 sec 217 MBytes 364 Mbits/sec [ 5][TX-C] 45.00-50.00 sec 497 MBytes 833 Mbits/sec 9 478 KBytes [ 7][RX-C] 45.00-50.00 sec 201 MBytes 338 Mbits/sec [ 5][TX-C] 50.00-55.00 sec 434 MBytes 728 Mbits/sec 0 543 KBytes [ 7][RX-C] 50.00-55.00 sec 208 MBytes 349 Mbits/sec [ 5][TX-C] 55.00-60.00 sec 451 MBytes 756 Mbits/sec 6 823 KBytes [ 7][RX-C] 55.00-60.00 sec 220 MBytes 370 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID][Role] Interval Transfer Bitrate Retr [ 5][TX-C] 0.00-60.00 sec 5.47 GBytes 783 Mbits/sec 136 sender [ 5][TX-C] 0.00-60.01 sec 5.47 GBytes 783 Mbits/sec receiver [ 7][RX-C] 0.00-60.00 sec 2.39 GBytes 342 Mbits/sec 94 sender [ 7][RX-C] 0.00-60.01 sec 2.38 GBytes 341 Mbits/sec receiver iperf Done. |
Ужасно, с огромным количеством повторных передач с обеих сторон.
1 2 3 4 5 6 7 8 9 10 11 |
[ 276.268986] usb 8-1: New USB device found, idVendor=0bda, idProduct=8156, bcdDevice=31.00 [ 276.269798] usb 8-1: New USB device strings: Mfr=1, Product=2, SerialNumber=6 [ 276.270471] usb 8-1: Product: USB 10/100/1G/2.5G LAN [ 276.272112] usb 8-1: Manufacturer: Realtek [ 276.272519] usb 8-1: SerialNumber: 0013000000 [ 276.359625] cdc_ncm 8-1:2.0: MAC-Address: 1c:bf:ce:d4:03:21 [ 276.360178] cdc_ncm 8-1:2.0: setting rx_max = 16384 [ 276.360758] cdc_ncm 8-1:2.0: setting tx_max = 16384 [ 276.362948] cdc_ncm 8-1:2.0 eth2: register 'cdc_ncm' at usb-xhci-hcd.1.auto-1, CDC NCM, 1c:bf:ce:d4:03:21 [ 459.919597] IPv6: ADDRCONF(NETDEV_CHANGE): eth2: link becomes ready |
Глядя на журнал ядра, наш USB-ключ RTL8156B снова использует этот драйвер CDC NCM, точно так же, как в Ubuntu… Там тоже есть драйвер r8152, но какой бы модуль мы ни удаляли в /etc/modules.d, загружается либо CDC NCM, либо eth2. интерфейс вообще не отображается. Поэтому мы перешли на ОС FriendlyCore на основе Ubuntu 20.04, также с Linux 5.15, которая будет ближе к настройке нашего ноутбука.
Как и следовало ожидать, адаптер RTL8156B по умолчанию использует драйвер CDC NCM в Ubuntu:
1 2 3 4 5 6 7 8 9 10 11 |
[ 682.701529] usb 8-1: new SuperSpeed USB device number 3 using xhci-hcd [ 682.727125] usb 8-1: New USB device found, idVendor=0bda, idProduct=8156, bcdDevice=31.00 [ 682.727163] usb 8-1: New USB device strings: Mfr=1, Product=2, SerialNumber=6 [ 682.727179] usb 8-1: Product: USB 10/100/1G/2.5G LAN [ 682.727191] usb 8-1: Manufacturer: Realtek [ 682.727203] usb 8-1: SerialNumber: 0013000000 [ 682.806350] cdc_ncm 8-1:2.0: MAC-Address: 1c:bf:ce:d4:03:21 [ 682.806387] cdc_ncm 8-1:2.0: setting rx_max = 16384 [ 682.806561] cdc_ncm 8-1:2.0: setting tx_max = 16384 [ 682.807963] cdc_ncm 8-1:2.0 eth1: register 'cdc_ncm' at usb-xhci-hcd.1.auto-1, CDC NCM, 1c:bf:ce:d4:03:21 [ 682.834550] cdc_ncm 8-1:2.0 enx1cbfced40321: renamed from eth1 |
eth1 не отображается с ifconfig, поэтому я просто изменил правила udev, чтобы использовать драйвер r8152…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
[ 882.081445] usb 7-1: new high-speed USB device number 3 using xhci-hcd [ 882.209358] usb 7-1: Device not responding to setup address. [ 882.417542] usb 7-1: Device not responding to setup address. [ 882.625432] usb 7-1: device not accepting address 3, error -71 [ 886.597570] usb 8-1: new SuperSpeed USB device number 4 using xhci-hcd [ 886.619484] usb 8-1: New USB device found, idVendor=0bda, idProduct=8156, bcdDevice=31.00 [ 886.619534] usb 8-1: New USB device strings: Mfr=1, Product=2, SerialNumber=6 [ 886.619556] usb 8-1: Product: USB 10/100/1G/2.5G LAN [ 886.619574] usb 8-1: Manufacturer: Realtek [ 886.619591] usb 8-1: SerialNumber: 0013000000 [ 886.911033] usb 8-1: reset SuperSpeed USB device number 4 using xhci-hcd [ 886.960598] r8152 8-1:1.0: Direct firmware load for rtl_nic/rtl8156b-2.fw failed with error -2 [ 886.960631] r8152 8-1:1.0: Falling back to sysfs fallback for: rtl_nic/rtl8156b-2.fw [ 947.165730] r8152 8-1:1.0: unable to load firmware patch rtl_nic/rtl8156b-2.fw (-110) [ 947.210940] r8152 8-1:1.0 (unnamed net_device) (uninitialized): netif_napi_add() called with weight 256 [ 947.237480] r8152 8-1:1.0 eth1: v1.12.11 [ 947.254755] usbcore: registered new interface driver cdc_ncm [ 947.257112] usbcore: registered new interface driver cdc_mbim [ 947.290865] r8152 8-1:1.0 enx1cbfced40321: renamed from eth1 |
Это становится удручающим. Сначала обновим систему.
1 2 3 4 5 |
sudo apt update sudo apt install python3-pip sudo pip3 install apt-mirror-updater apt-mirror-updater -c http://ftp.tu-chemnitz.de/pub/linux/ubuntu-ports sudo apt dist-upgrade |
Мы выполнили все эти шаги, так как образ FriendlyCore использует серверы из Китая, которые очень медленны по сравнению с нашими (простой запуск apt update может занять 15 минут), обновление, возможно, было быстрее, хотя все же заняло пару часов! (Подробности см. в разделе «Изменение зеркала Ubuntu Apt из командной строки» ).
В проблеме с прошивкой не помогло. Вместо этого мы ищем файл rtl_nic/rtl8156b-2.fw . Он находится в firmware-realtek Debian или linux-firmware Ubuntu Impish.
Мы скачали последний, распаковали rtl8156b-2.fw и скопировали его в /etc/firmware/rtl_nic. Теперь все работает:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[ 2172.098871] usb 8-1: new SuperSpeed USB device number 4 using xhci-hcd [ 2172.120681] usb 8-1: New USB device found, idVendor=0bda, idProduct=8156, bcdDevice=31.00 [ 2172.120731] usb 8-1: New USB device strings: Mfr=1, Product=2, SerialNumber=6 [ 2172.120754] usb 8-1: Product: USB 10/100/1G/2.5G LAN [ 2172.120771] usb 8-1: Manufacturer: Realtek [ 2172.120788] usb 8-1: SerialNumber: 0013000000 [ 2172.183460] cdc_ncm 8-1:2.0: MAC-Address: 1c:bf:ce:d4:03:21 [ 2172.183494] cdc_ncm 8-1:2.0: setting rx_max = 16384 [ 2172.183620] cdc_ncm 8-1:2.0: setting tx_max = 16384 [ 2172.184904] cdc_ncm 8-1:2.0 eth1: register 'cdc_ncm' at usb-xhci-hcd.1.auto-1, CDC NCM, 1c:bf:ce:d4:03:21 [ 2172.189439] cdc_ncm 8-1:2.0 eth1: unregister 'cdc_ncm' usb-xhci-hcd.1.auto-1, CDC NCM [ 2172.451015] usb 8-1: reset SuperSpeed USB device number 4 using xhci-hcd [ 2172.535166] r8152 8-1:1.0: load rtl8156b-2 v1 04/15/21 successfully [ 2172.598459] r8152 8-1:1.0 eth1: v1.12.11 |
Почему-то интерфейс до сих пор не запущен, и добавление его вручную в /etc/network/interfaces.d не работает.
Вернемся к ноутбуку Ubuntu с прошивкой rtl8156b-2.fw
Вернемся к нашему ноутбуку и скопируем файл прошивки в каталог /lib/firmware/rtl_nic . Результат был такой же, как и в NanoPi R4S:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[23050.245495] usb 2-1: new SuperSpeed USB device number 3 using xhci_hcd [23050.266025] usb 2-1: New USB device found, idVendor=0bda, idProduct=8156, bcdDevice=31.00 [23050.266038] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=6 [23050.266043] usb 2-1: Product: USB 10/100/1G/2.5G LAN [23050.266047] usb 2-1: Manufacturer: Realtek [23050.266050] usb 2-1: SerialNumber: 0013000000 [23050.325714] cdc_ncm 2-1:2.0: MAC-Address: 1c:bf:ce:d4:03:21 [23050.325720] cdc_ncm 2-1:2.0: setting rx_max = 16384 [23050.325762] cdc_ncm 2-1:2.0: setting tx_max = 16384 [23050.326199] cdc_ncm 2-1:2.0 eth0: register 'cdc_ncm' at usb-0000:04:00.3-1, CDC NCM, 1c:bf:ce:d4:03:21 [23050.334723] cdc_ncm 2-1:2.0 eth0: unregister 'cdc_ncm' usb-0000:04:00.3-1, CDC NCM [23050.559779] usb 2-1: reset SuperSpeed USB device number 3 using xhci_hcd [23050.617459] r8152 2-1:1.0: load rtl8156b-2 v1 04/15/21 successfully [23050.654344] r8152 2-1:1.0 eth0: v1.12.11 |
Попробуем загрузить iperf3:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
iperf3 -t 30 -c 192.168.31.12 -i 5 Connecting to host 192.168.31.12, port 5201 [ 5] local 192.168.31.166 port 50222 connected to 192.168.31.12 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-5.00 sec 1.37 GBytes 2.36 Gbits/sec 0 609 KBytes [ 5] 5.00-10.00 sec 1.37 GBytes 2.35 Gbits/sec 0 691 KBytes [ 5] 10.00-15.00 sec 1.37 GBytes 2.35 Gbits/sec 0 1.35 MBytes [ 5] 15.00-20.00 sec 1.37 GBytes 2.35 Gbits/sec 0 1.35 MBytes [ 5] 20.00-25.00 sec 1.37 GBytes 2.35 Gbits/sec 0 1.35 MBytes [ 5] 25.00-30.00 sec 1.37 GBytes 2.35 Gbits/sec 0 1.35 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-30.00 sec 8.22 GBytes 2.35 Gbits/sec 0 sender [ 5] 0.00-30.04 sec 8.22 GBytes 2.35 Gbits/sec receiver iperf Done. |
То же, что и раньше, так что никакого регресса. Теперь перейдем к скачиванию iperf3:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
iperf3 -t 30 -c 192.168.31.12 -i 5 -R Connecting to host 192.168.31.12, port 5201 Reverse mode, remote host 192.168.31.12 is sending [ 5] local 192.168.31.166 port 50226 connected to 192.168.31.12 port 5201 [ ID] Interval Transfer Bitrate [ 5] 0.00-5.00 sec 969 MBytes 1.63 Gbits/sec [ 5] 5.00-10.00 sec 990 MBytes 1.66 Gbits/sec [ 5] 10.00-15.00 sec 982 MBytes 1.65 Gbits/sec [ 5] 15.00-20.00 sec 984 MBytes 1.65 Gbits/sec [ 5] 20.00-25.00 sec 1012 MBytes 1.70 Gbits/sec [ 5] 25.00-30.00 sec 1007 MBytes 1.69 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-30.02 sec 5.81 GBytes 1.66 Gbits/sec 3181 sender [ 5] 0.00-30.00 sec 5.80 GBytes 1.66 Gbits/sec receiver iperf Done. |
Улучшения есть, хотя количество повторных передач зашкаливает. Мы уже очень устали… Дайте нам знать, если у вас есть другие идеи.
Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.