I have installed DPDK (v20.11.0) shipped by F-stack correctly and have bonded the NICs to the igb_uio driver. The output of dpdk-devbind.py can help to verify it:
Network devices using DPDK-compatible driver
============================================
0000:04:00.0 'I210 Gigabit Network Connection 1533' drv=igb_uio unused=igb,vfio-pci,uio_pci_generic
0000:05:00.0 'I210 Gigabit Network Connection 1533' drv=igb_uio unused=igb,vfio-pci,uio_pci_generic
0000:af:00.0 'Ethernet Controller X710/X557-AT 10GBASE-T 1589' drv=igb_uio unused=i40e,vfio-pci,uio_pci_generic
Network devices using kernel driver
===================================
0000:1a:00.0 'Ethernet Connection X722 for 10GBASE-T 37d2' if=enp26s0f0 drv=i40e unused=igb_uio,vfio-pci,uio_pci_generic *Active*
0000:1a:00.1 'Ethernet Connection X722 for 10GBASE-T 37d2' if=enp26s0f1 drv=i40e unused=igb_uio,vfio-pci,uio_pci_generic *Active*
0000:af:00.1 'Ethernet Controller X710/X557-AT 10GBASE-T 1589' if=enp175s0f1 drv=i40e unused=igb_uio,vfio-pci,uio_pci_generic *Active*
0000:af:00.2 'Ethernet Controller X710/X557-AT 10GBASE-T 1589' if=enp175s0f2 drv=i40e unused=igb_uio,vfio-pci,uio_pci_generic *Active*
0000:af:00.3 'Ethernet Controller X710/X557-AT 10GBASE-T 1589' if=enp175s0f3 drv=i40e unused=igb_uio,vfio-pci,uio_pci_generic *Active*
However, when I ran some tests from this DPDK directory, such as basicfwd, it returns an error saying number of ports must be even. I then checked the return value of rte_eth_dev_count_avail and it's 0.
$ sudo ./basicfwd -l 1 -n 4
EAL: Detected 72 lcore(s)
EAL: Detected 2 NUMA nodes
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: No available hugepages reported in hugepages-1048576kB
EAL: Probing VFIO support...
EAL: VFIO support initialized
EAL: No legacy callbacks, legacy socket not created
EAL: Error - exiting with code: 1
Cause: Error: number of ports must be even
Which is even weird is that the output of test-pmd seems like my NICs CAN be detected?
EAL: Detected 72 lcore(s)
EAL: Detected 2 NUMA nodes
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: No available hugepages reported in hugepages-1048576kB
EAL: Probing VFIO support...
EAL: VFIO support initialized
EAL: Probe PCI driver: net_e1000_igb (8086:1533) device: 0000:04:00.0 (socket 0)
EAL: Probe PCI driver: net_e1000_igb (8086:1533) device: 0000:05:00.0 (socket 0)
EAL: Probe PCI driver: net_i40e (8086:1589) device: 0000:af:00.0 (socket 1)
EAL: No legacy callbacks, legacy socket not created
testpmd: create a new mbuf pool <mb_pool_0>: n=715456, size=2176, socket=0
testpmd: preferred mempool ops selected: ring_mp_mc
testpmd: create a new mbuf pool <mb_pool_1>: n=715456, size=2176, socket=1
testpmd: preferred mempool ops selected: ring_mp_mc
Warning! port-topology=paired and odd forward ports number, the last port will pair with itself.
Configuring Port 0 (socket 0)
Port 0: 74:FE:48:4D:99:E8
Configuring Port 1 (socket 0)
Port 1: 74:FE:48:4D:99:E9
Configuring Port 2 (socket 1)
Port 2: 3C:FD:FE:83:4A:18
Checking link statuses...
Done
No commandline core given, start packet forwarding
io packet forwarding - ports=3 - cores=1 - streams=3 - NUMA support enabled, MP allocation mode: native
Logical Core 1 (socket 0) forwards packets on 3 streams:
RX P=0/Q=0 (socket 0) -> TX P=1/Q=0 (socket 0) peer=02:00:00:00:00:01
RX P=1/Q=0 (socket 0) -> TX P=0/Q=0 (socket 0) peer=02:00:00:00:00:00
RX P=2/Q=0 (socket 1) -> TX P=2/Q=0 (socket 1) peer=02:00:00:00:00:02
io packet forwarding packets/burst=32
nb forwarding cores=1 - nb forwarding ports=3
port 0: RX queue number: 1 Tx queue number: 1
Rx offloads=0x0 Tx offloads=0x0
RX queue: 0
RX desc=512 - RX free threshold=32
RX threshold registers: pthresh=0 hthresh=0 wthresh=0
RX Offloads=0x0
TX queue: 0
TX desc=512 - TX free threshold=0
TX threshold registers: pthresh=8 hthresh=1 wthresh=16
TX offloads=0x0 - TX RS bit threshold=0
port 1: RX queue number: 1 Tx queue number: 1
Rx offloads=0x0 Tx offloads=0x0
RX queue: 0
RX desc=512 - RX free threshold=32
RX threshold registers: pthresh=0 hthresh=0 wthresh=0
RX Offloads=0x0
TX queue: 0
TX desc=512 - TX free threshold=0
TX threshold registers: pthresh=8 hthresh=1 wthresh=16
TX offloads=0x0 - TX RS bit threshold=0
port 2: RX queue number: 1 Tx queue number: 1
Rx offloads=0x0 Tx offloads=0x10000
RX queue: 0
RX desc=256 - RX free threshold=32
RX threshold registers: pthresh=0 hthresh=0 wthresh=0
RX Offloads=0x0
TX queue: 0
TX desc=256 - TX free threshold=32
TX threshold registers: pthresh=32 hthresh=0 wthresh=0
TX offloads=0x10000 - TX RS bit threshold=32
Press enter to exit
I suspect it might be the problem of F-stack, because if I try with the latest version of DPDK, it can detect my NICs.
Could anyone help find what could be wrong in my setting? Any help would be greatly appreciated.
Based on the logs shared from dpdk-devbind you have 3 NIC ports identified under DPDK such as
Network devices using DPDK-compatible driver
============================================
0000:04:00.0 'I210 Gigabit Network Connection 1533' drv=igb_uio unused=igb,vfio-pci,uio_pci_generic
0000:05:00.0 'I210 Gigabit Network Connection 1533' drv=igb_uio unused=igb,vfio-pci,uio_pci_generic
0000:af:00.0 'Ethernet Controller X710/X557-AT 10GBASE-T 1589' drv=igb_uio unused=i40e,vfio-pci,uio_pci_generic
With respect DPDK example skeleton, it works on pair of ports that is 2, 4, 6, 8, ... etc. Hence when you run the application sudo ./basicfwd -l 1 -n 4 there would be 2 outcomes (with real option -d not passed)
If build static with make clean; make static the application sees 3 ports.
If the build shared with make clean; make the application will see 0 ports
So to resolve the problem you have 3 options
Add 1 additional nic either physical or virtual (--vdev=net_tap0)
or add 1 nic to block list by -b 0000:af:00.0 or by removing from dev-bind
or pass 2 nic exclusively by -a 0000:04:00.0 -a 0000:05:00.0
Note: if you have build with shared library mode, you will also need to pass the appropriate PMD driver for probing to be successful for basicfwd. You can easily identify this since there is pci device probe at all in the logs (--log-level=pmd,8).
According to dpdk-devbind output, there are three NICs bound to a DPDK-compatible driver. When one does not specify explicitly (using the -a EAL argument) which NICs to pick, EAL discovers all of the said NICs, but basicfwd demands that the number of ports be even.
In order to solve the problem in question, consider running basicfwd as follows:
sudo ./basicfwd -l 1 -n 4 -a 0000:04:00.0 -a 0000:05:00.0
Related
I have looked and looked and looked, I can't find an answer to this problem anywhere!
I want to connect my PI zero to an ethernet cable. I have a USB/Ethernet dongle. I have 3 zero's, all have USB-HUB hats. I plug in the dongle and reboot (which is what every video I've found says is all you have to do). When it comes back up, the ethernet port is recognized, but won't get an IP address.
Here's what ifconfig says:
eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 00:0e:c6:78:62:89 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
The only hint I can find suggests I need to add this to the interfaces file:
auto eth0
allow-hotplug eth0
iface eth0 inet DHCP
But this changes nothing. It seems that the DHCP client is not running (although it works for the WiFi). But when I google 'DHCP setup raspberry pi zero' all I get it how to setup a server.
VERY Embarrassing!
The ethernet cable was not plugged in 🤦🏻♂️
Development setup:
ARM-Cortex-A53 on a Xilinx ZCU102 board
one Intel 82575EB NIC with two ports
Ubuntu 20.04
linux kernel 5.10.0-Xilinx
DPDK version 19.11.3-LTS
Two NIC ports had previously all been binded to default igb drivers and tested out for internet connectivity with ping command, proving that they could function normally.
During the DPDK testpmd test, dpdk-devbind status are shown as follows:(igb_uio driver has also been binded and tested)
Network devices using DPDK-compatible driver
============================================
0000:01:00.0 '82575EB Gigabit Network Connection 10a7' drv=uio_pci_generic unused=igb
0000:01:00.1 '82575EB Gigabit Network Connection 10a7' drv=uio_pci_generic unused=igb
No 'Baseband' devices detected
==============================
No 'Crypto' devices detected
============================
No 'Eventdev' devices detected
==============================
No 'Mempool' devices detected
=============================
No 'Compress' devices detected
==============================
No 'Misc (rawdev)' devices detected
===================================
No 'Regex' devices detected
===========================
I ran the testpmd application with the following command in root mode:
./testpmd -- -i --total-num-mbufs=2048
connected the two net ports together and used start tx_first to start the test. However, no forwarding traffic was detected.
EAL: Detected 4 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: Detected static linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: No available hugepages reported in hugepages-32768kB
EAL: No available hugepages reported in hugepages-64kB
EAL: No available hugepages reported in hugepages-1048576kB
EAL: Probing VFIO support...
EAL: VFIO support initialized
EAL: Probe PCI driver: net_e1000_igb (8086:10a7) device: 0000:01:00.0 (socket 0)
EAL: Probe PCI driver: net_e1000_igb (8086:10a7) device: 0000:01:00.1 (socket 0)
Interactive-mode selected
testpmd: create a new mbuf pool <mb_pool_0>: n=2048, size=2176, socket=0
testpmd: preferred mempool ops selected: ring_mp_mc
Configuring Port 0 (socket 0)
Port 0: 1C:FD:08:73:BC:D4
Configuring Port 1 (socket 0)
Port 1: 1C:FD:08:73:BC:D5
Checking link statuses...
Done
testpmd>
Port 1: link state change event
testpmd> start tx_first
io packet forwarding - ports=2 - cores=1 - streams=2 - NUMA support enabled, MP allocation mode: native
Logical Core 1 (socket 0) forwards packets on 2 streams:
RX P=0/Q=0 (socket 0) -> TX P=1/Q=0 (socket 0) peer=02:00:00:00:00:01
RX P=1/Q=0 (socket 0) -> TX P=0/Q=0 (socket 0) peer=02:00:00:00:00:00
io packet forwarding packets/burst=32
nb forwarding cores=1 - nb forwarding ports=2
port 0: RX queue number: 1 Tx queue number: 1
Rx offloads=0x0 Tx offloads=0x0
RX queue: 0
RX desc=512 - RX free threshold=32
RX threshold registers: pthresh=0 hthresh=0 wthresh=0
RX Offloads=0x0
TX queue: 0
TX desc=512 - TX free threshold=0
TX threshold registers: pthresh=8 hthresh=1 wthresh=16
TX offloads=0x0 - TX RS bit threshold=0
port 1: RX queue number: 1 Tx queue number: 1
Rx offloads=0x0 Tx offloads=0x0
RX queue: 0
RX desc=512 - RX free threshold=32
RX threshold registers: pthresh=0 hthresh=0 wthresh=0
RX Offloads=0x0
TX queue: 0
TX desc=512 - TX free threshold=0
TX threshold registers: pthresh=8 hthresh=1 wthresh=16
TX offloads=0x0 - TX RS bit threshold=0
testpmd> stop
Telling cores to stop...
Waiting for lcores to finish...
---------------------- Forward statistics for port 0 ----------------------
RX-packets: 0 RX-dropped: 0 RX-total: 0
TX-packets: 0 TX-dropped: 0 TX-total: 0
----------------------------------------------------------------------------
---------------------- Forward statistics for port 1 ----------------------
RX-packets: 0 RX-dropped: 0 RX-total: 0
TX-packets: 0 TX-dropped: 0 TX-total: 0
----------------------------------------------------------------------------
+++++++++++++++ Accumulated forward statistics for all ports+++++++++++++++
RX-packets: 0 RX-dropped: 0 RX-total: 0
TX-packets: 0 TX-dropped: 0 TX-total: 0
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
I tried using set promisc all on from this answer, and I also tried disconnecting the two ports and using tx_first, yet to no avail.
Also, while connecting to an external ethernet port and generating traffic from that port, testpmd shows that the port being connected have successfully received packets, but failed to send any. Can anyone show me what i'm doing wrong?
I want to send a SCTP packet to a server using L2TP VPN in Ubuntu 20.04. For this purpose, I have set up my L2TP VPN and I can successfully test the connection using ping command. Now my ifconfig output is as follows:
enp0s31f6: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet x.x.x.x netmask 255.255.255.248 broadcast p.p.p.p
...
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
...
ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1400
inet y.y.y.y netmask 255.255.255.255 destination q.q.q.q
...
In this output, x.x.x.x is my LAN IP and y.y.y.y is my VPN IP.
But when I send my INIT SCTP packet, two optional fields, i.e. IPv4 address parameter, is appeared in INIT chunk subtree in Wireshark log as follows. These parameters contain my IPs.
Stream Control Transmission Protocol, Src Port: a (a), Dst Port: b (b)
Source port: a
Destination port: b
Verification tag: 0x00000000
[Association index: 65535]
Checksum: 0x06cf8029 [unverified]
[Checksum Status: Unverified]
INIT chunk (Outbound streams: 3, inbound streams: 3)
Chunk type: INIT (1)
0... .... = Bit: Stop processing of the packet
.0.. .... = Bit: Do not report
Chunk flags: 0x00
Chunk length: 52
Initiate tag: 0xd1d6f19b
Advertised receiver window credit (a_rwnd): 106496
Number of outbound streams: 3
Number of inbound streams: 3
Initial TSN: 1216798565
IPv4 address parameter (Address: x.x.x.x)
IPv4 address parameter (Address: y.y.y.y)
Supported address types parameter (Supported types: IPv4)
ECN parameter
Forward TSN supported parameter
and finally, here is the sent and received packets:
I think that IPv4 address parameter (Address: x.x.x.x) (my LAN IP) in my INIT packet, has caused to receive the ABORT packet from server. When I turn off my VPN, these two optional fields do not appear.
How can I remove these two optional fields in Ubuntu after turning up my VPN?
Manual client IP assignment is required to remove "IPv4 address parameter" fields in a SCTP packet. So, the following codes is required in C++:
int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP);
if(sock < 0)
{
//handle error
}
struct sockaddr_in clientAddr;
memset(&clientAddr,0, sizeof(struct sockaddr_in));
clientAddr.sin_family = AF_INET;
clientAddr.sin_addr.s_addr = inet_addr("y.y.y.y");
clientAddr.sin_port = htons(a);
if( ::bind(sock, (struct sockaddr*)&clientAddr, sizeof(struct sockaddr)) < 0 )
{
//handle error
}
I have problem with Thunderbolt and following LAN configuration:
Mac-(1)-NAS-(2)-Gateway
Thunderbolt as network, ip routing, no NAT
Ethernet, ip routing, no NAT
NAS (Debian Buster, 5.4.0-0.bpo.4-amd64) has ethernet (eth)
and thunderbolt (thu). Thunderbolt is using for networking between Mac and NAS
as it's much faster than ethernet.
What works fine:
Data Mac «-thu-» NAS transfer fast.
Data Mac «-eth-» NAS transfer fast (experiment).
Data NAS «-eth-» Gateway transfer fast.
Data Gateway -eth-» NAS -eth-» Mac (no NAT) transfer fast.
Data Mac -eth-» NAS -eth-» Gateway (no NAT) transfer fast.
Data Gateway -eth-» NAS -thu-» Mac (no NAT) transfer fast.
What does NOT work:
Data Mac -thu-» NAS -eth-» Gateway (no NAT, ip routing only) transfer slow (~1 Mbps).
It means the way from Mac via ethernet through NAS then ethernet to Gateway is OK, but from Mac via thunderbolt through NAS then ethernet to Gateway is very slow, ~1 Mbps. The same time connection between Mac and NAS via thunderbolt with no other hop works fast (AFP transfer, both ways).
Moreover, VPN L2TP over IPSec directly from Mac to the Internet works fast even
through thunderbolt! Which means UDP transfer is fast as well.
It seems the problem is in TCP.
NAS
eno2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.50 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::7285:c2ff:fea8:ccbb prefixlen 64 scopeid 0x20<link>
ether 70:85:c2:a8:cc:bb txqueuelen 1000 (Ethernet)
RX packets 3448186 bytes 303114388 (289.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5539469 bytes 7272910073 (6.7 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 16 memory 0xcc600000-cc620000
40: None 02.0: 10701 Ethernet
[Created at net.126]
Unique ID: QTdc.ndpeucax6V1
Parent ID: NotL.loB6eJr4VV8
SysFS ID: /class/net/eno2
SysFS Device Link: /devices/pci0000:00/0000:00:1f.6
Hardware Class: network interface
Model: "Ethernet network interface"
Driver: "e1000e"
Driver Modules: "e1000e"
Device File: eno2
HW Address: 70:85:c2:a8:cc:bb
Permanent HW Address: 70:85:c2:a8:cc:bb
Link detected: yes
Config Status: cfg=new, avail=yes, need=no, active=unknown
Attached to: #21 (Ethernet controller)
thunderbolt0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.100.1 netmask 255.255.255.0 broadcast 192.168.100.255
inet6 fe80::b2:86ff:fe6f:8a68 prefixlen 64 scopeid 0x20<link>
ether 02:b2:86:6f:8a:68 txqueuelen 1000 (Ethernet)
RX packets 108419 bytes 16590415 (15.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 89926 bytes 32804019 (31.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
12: PCI 300.0: 0604 PCI bridge (Normal decode)
[Created at pci.386]
Unique ID: svHJ.Or8xU2r_gn8
Parent ID: B35A.Or8xU2r_gn8
SysFS ID: /devices/pci0000:00/0000:00:1b.0/0000:02:00.0/0000:03:00.0
SysFS BusID: 0000:03:00.0
Hardware Class: bridge
Model: "Intel JHL6240 Thunderbolt 3 Bridge (Low Power) [Alpine Ridge LP 2016]"
Vendor: pci 0x8086 "Intel Corporation"
Device: pci 0x15c0 "JHL6240 Thunderbolt 3 Bridge (Low Power) [Alpine Ridge LP 2016]"
SubVendor: pci 0x8086 "Intel Corporation"
SubDevice: pci 0x0000
Revision: 0x01
Driver: "pcieport"
IRQ: 124 (no events)
Module Alias: "pci:v00008086d000015C0sv00008086sd00000000bc06sc04i00"
Config Status: cfg=new, avail=yes, need=no, active=unknown
Attached to: #15 (PCI bridge)
15: PCI 200.0: 0604 PCI bridge (Normal decode)
[Created at pci.386]
Unique ID: B35A.Or8xU2r_gn8
Parent ID: u1Nb.plmZLUEKTp4
SysFS ID: /devices/pci0000:00/0000:00:1b.0/0000:02:00.0
SysFS BusID: 0000:02:00.0
Hardware Class: bridge
Model: "Intel JHL6240 Thunderbolt 3 Bridge (Low Power) [Alpine Ridge LP 2016]"
Vendor: pci 0x8086 "Intel Corporation"
Device: pci 0x15c0 "JHL6240 Thunderbolt 3 Bridge (Low Power) [Alpine Ridge LP 2016]"
SubVendor: pci 0x8086 "Intel Corporation"
SubDevice: pci 0x0000
Revision: 0x01
Driver: "pcieport"
IRQ: 16 (no events)
Module Alias: "pci:v00008086d000015C0sv00008086sd00000000bc06sc04i00"
Config Status: cfg=new, avail=yes, need=no, active=unknown
Attached to: #22 (PCI bridge)
24: PCI 302.0: 0604 PCI bridge (Normal decode)
[Created at pci.386]
Unique ID: 08OF.Or8xU2r_gn8
Parent ID: B35A.Or8xU2r_gn8
SysFS ID: /devices/pci0000:00/0000:00:1b.0/0000:02:00.0/0000:03:02.0
SysFS BusID: 0000:03:02.0
Hardware Class: bridge
Model: "Intel JHL6240 Thunderbolt 3 Bridge (Low Power) [Alpine Ridge LP 2016]"
Vendor: pci 0x8086 "Intel Corporation"
Device: pci 0x15c0 "JHL6240 Thunderbolt 3 Bridge (Low Power) [Alpine Ridge LP 2016]"
SubVendor: pci 0x8086 "Intel Corporation"
SubDevice: pci 0x0000
Revision: 0x01
Driver: "pcieport"
IRQ: 126 (no events)
Module Alias: "pci:v00008086d000015C0sv00008086sd00000000bc06sc04i00"
Config Status: cfg=new, avail=yes, need=no, active=unknown
Attached to: #15 (PCI bridge)
29: PCI 301.0: 0604 PCI bridge (Normal decode)
[Created at pci.386]
Unique ID: x0Ln.Or8xU2r_gn8
Parent ID: B35A.Or8xU2r_gn8
SysFS ID: /devices/pci0000:00/0000:00:1b.0/0000:02:00.0/0000:03:01.0
SysFS BusID: 0000:03:01.0
Hardware Class: bridge
Model: "Intel JHL6240 Thunderbolt 3 Bridge (Low Power) [Alpine Ridge LP 2016]"
Vendor: pci 0x8086 "Intel Corporation"
Device: pci 0x15c0 "JHL6240 Thunderbolt 3 Bridge (Low Power) [Alpine Ridge LP 2016]"
SubVendor: pci 0x8086 "Intel Corporation"
SubDevice: pci 0x0000
Revision: 0x01
Driver: "pcieport"
IRQ: 125 (no events)
Module Alias: "pci:v00008086d000015C0sv00008086sd00000000bc06sc04i00"
Config Status: cfg=new, avail=yes, need=no, active=unknown
Attached to: #15 (PCI bridge)
33: PCI 400.0: 0880 System peripheral
[Created at pci.386]
Unique ID: YmUS.raz2QBgWzX9
Parent ID: svHJ.Or8xU2r_gn8
SysFS ID: /devices/pci0000:00/0000:00:1b.0/0000:02:00.0/0000:03:00.0/0000:04:00.0
SysFS BusID: 0000:04:00.0
Hardware Class: unknown
Model: "Intel JHL6240 Thunderbolt 3 NHI (Low Power) [Alpine Ridge LP 2016]"
Vendor: pci 0x8086 "Intel Corporation"
Device: pci 0x15bf "JHL6240 Thunderbolt 3 NHI (Low Power) [Alpine Ridge LP 2016]"
SubVendor: pci 0x8086 "Intel Corporation"
SubDevice: pci 0x0000
Revision: 0x01
Driver: "thunderbolt"
Driver Modules: "thunderbolt"
Memory Range: 0xca000000-0xca03ffff (rw,non-prefetchable)
Memory Range: 0xca040000-0xca040fff (rw,non-prefetchable)
IRQ: 16 (no events)
Module Alias: "pci:v00008086d000015BFsv00008086sd00000000bc08sc80i00"
Driver Info #0:
Driver Status: thunderbolt is active
Driver Activation Cmd: "modprobe thunderbolt"
Config Status: cfg=new, avail=yes, need=no, active=unknown
Attached to: #12 (PCI bridge)
70: None 00.0: 10701 Ethernet
[Created at net.126]
Unique ID: XdLX.ndpeucax6V1
SysFS ID: /class/net/thunderbolt0
SysFS Device Link: /devices/pci0000:00/0000:00:1b.0/0000:02:00.0/0000:03:00.0/0000:04:00.0/domain0/0-0/0-1/0-1.0
Hardware Class: network interface
Model: "Ethernet network interface"
Driver: "thunderbolt-net"
Driver Modules: "thunderbolt_net"
Device File: thunderbolt0
HW Address: 02:b2:86:6f:8a:68
Permanent HW Address: 02:b2:86:6f:8a:68
Link detected: yes
Config Status: cfg=new, avail=yes, need=no, active=unknown
default via 192.168.0.1 dev eno2
192.168.0.0/24 dev eno2 proto kernel scope link src 192.168.0.50
192.168.100.0/24 dev thunderbolt0 proto kernel scope link src 192.168.100.1
Mac
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=460<TSO4,TSO6,CHANNEL_IO>
ether 82:52:6b:02:90:01
inet6 fe80::868:bdf3:7c64:bab3%en1 prefixlen 64 secured scopeid 0xe
inet 192.168.100.2 netmask 0xffffff00 broadcast 192.168.100.255
nd6 options=201<PERFORMNUD,DAD>
media: autoselect <full-duplex>
status: active
The question is what could be wrong?
Solution found It's due to buggy TSO on Thunderbolt implementation!
To fix upload speed issue on a Mac
touch /etc/sysctl.conf
Edit /etc/sysctl.conf and put there:
net.inet.tcp.tso=0
Then run sysctl -p to (re)load sysctl.conf
We were previously using RHEL for our Flink machines. I'm currently working on moving them over to Ubuntu. When I start the task manager, it fails to connect to the job manager with the following message -
2020-01-16 10:54:42,777 INFO org.apache.flink.runtime.util.LeaderRetrievalUtils - Trying to select the network interface and address to use by connecting to the leading JobManager.
2020-01-16 10:54:42,778 INFO org.apache.flink.runtime.util.LeaderRetrievalUtils - TaskManager will try to connect for 10000 milliseconds before falling back to heuristics
2020-01-16 10:54:52,780 WARN org.apache.flink.runtime.net.ConnectionUtils - Could not find any IPv4 address that is not loopback or link-local. Using localhost address.
The network interface on the machine looks like this -
ens5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001
inet 10.16.75.30 netmask 255.255.255.128 broadcast 10.16.75.127
ether 02:f1:8b:34:75:51 txqueuelen 1000 (Ethernet)
RX packets 69370 bytes 80369110 (80.3 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 28787 bytes 2898540 (2.8 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 9562 bytes 1596138 (1.5 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 9562 bytes 1596138 (1.5 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Note: On RHEL, the primary network interface was eth0. Could this be the issue?
Here's the full task manager log - https://paste.ubuntu.com/p/vgh96FHzRq/
The problem was with the parameter high-availability.cluster-id. It was different on the task manager and the job manager. Updating it solved the issue.