tohojo / flent

The FLExible Network Tester.
https://flent.org
Other
431 stars 77 forks source link

TCP (IPv4) connection fails in rrul46compete when specifying --local-bind #242

Closed j-breyer closed 2 years ago

j-breyer commented 2 years ago

When starting the rrul46compete test, I noticed some weird behavior:

With defined hosts mn.h1 and mn.h2, each having an IPv4 as well as an IPv6 address, the command sudo flent rrul46compete -p all_scaled -l 60 -H mn.h2 -o rrul46_nolocal.pdf -v runs error free with complete graph output.

However, specifying a --local-bind, the TCP connections for IPv4 fail at some point and their respective lines in the graph are missing: Changed command: sudo flent rrul46compete -p all_scaled --local-bind mn.h1 -l 60 -H mn.h2 -o rrul46_new.pdf -v

Error output (same for upload BK, download BE and download BK respectively):

WARNING: Program exited non-zero.
Runner class: NetperfDemoRunner
Command: /usr/bin/netperf -P 0 -v 0 -D -0.20 -4 -Y 0x0,0x0 -H mn.h2 -p 12865 -t TCP_STREAM -l 60 -F /dev/urandom -f m -L mn.h1  --   -L mn.h1 -H mn.h2 -k THROUGHPUT,LOCAL_CONG_CONTROL,REMOTE_CONG_CONTROL,TRANSPORT_MSS,LOCAL_TRANSPORT_RETRANS,REMOTE_TRANSPORT_RETRANS,LOCAL_SOCKET_TOS,REMOTE_SOCKET_TOS,DIRECTION,ELAPSED_TIME,PROTOCOL,LOCAL_SEND_SIZE,LOCAL_RECV_SIZE,REMOTE_SEND_SIZE,REMOTE_RECV_SIZE,LOCAL_BYTES_SENT,LOCAL_BYTES_RECVD,REMOTE_BYTES_SENT,REMOTE_BYTES_RECVD  
Return code: 1
Stdout: get_sockaddr_family_addr_port family mismatch 10 vs 2

Stderr: netperf: send_omni: connect_data_socket failed: Invalid argument

WARNING: Command produced no valid data.
Runner class: NetperfDemoRunner
Command: /usr/bin/netperf -P 0 -v 0 -D -0.20 -4 -Y 0x0,0x0 -H mn.h2 -p 12865 -t TCP_STREAM -l 60 -F /dev/urandom -f m -L mn.h1  --   -L mn.h1 -H mn.h2 -k THROUGHPUT,LOCAL_CONG_CONTROL,REMOTE_CONG_CONTROL,TRANSPORT_MSS,LOCAL_TRANSPORT_RETRANS,REMOTE_TRANSPORT_RETRANS,LOCAL_SOCKET_TOS,REMOTE_SOCKET_TOS,DIRECTION,ELAPSED_TIME,PROTOCOL,LOCAL_SEND_SIZE,LOCAL_RECV_SIZE,REMOTE_SEND_SIZE,REMOTE_RECV_SIZE,LOCAL_BYTES_SENT,LOCAL_BYTES_RECVD,REMOTE_BYTES_SENT,REMOTE_BYTES_RECVD  
Return code: 1
Stdout: get_sockaddr_family_addr_port family mismatch 10 vs 2

Stderr: netperf: send_omni: connect_data_socket failed: Invalid argument

NetperfDemoRunner TCP upload BE finished

As the command runs fine without --local-bind, I suppose this is not of high importance, nonetheless, I wanted to report this. Also, the irtt for latency measurement runs fine in this test, it's only the netperf for IPv4 that fails.

Full verbose output: verbose_rrul46compete.txt

tohojo commented 2 years ago

j-breyer @.***> writes:

When starting the rrul46compete test, I noticed some weird behavior:

With defined hosts mn.h1 and mn.h2, each having an IPv4 as well as an IPv6 address, the command sudo flent rrul46compete -p all_scaled -l 60 -H mn.h2 -o rrul46_nolocal.pdf -v runs error free with complete graph output.

However, specifying a --local-bind, the TCP connections for IPv4 fail at some point and their respective lines in the graph are missing: Changed command: sudo flent rrul46compete -p all_scaled --local-bind mn.h1 -l 60 -H mn.h2 -o rrul46_new.pdf -v

Error output (same for upload BK, download BE and download BK respectively):


WARNING: Program exited non-zero.
Runner class: NetperfDemoRunner
Command: /usr/bin/netperf -P 0 -v 0 -D -0.20 -4 -Y 0x0,0x0 -H mn.h2 -p 12865 -t TCP_STREAM -l 60 -F /dev/urandom -f m -L mn.h1  --   -L mn.h1 -H mn.h2 -k THROUGHPUT,LOCAL_CONG_CONTROL,REMOTE_CONG_CONTROL,TRANSPORT_MSS,LOCAL_TRANSPORT_RETRANS,REMOTE_TRANSPORT_RETRANS,LOCAL_SOCKET_TOS,REMOTE_SOCKET_TOS,DIRECTION,ELAPSED_TIME,PROTOCOL,LOCAL_SEND_SIZE,LOCAL_RECV_SIZE,REMOTE_SEND_SIZE,REMOTE_RECV_SIZE,LOCAL_BYTES_SENT,LOCAL_BYTES_RECVD,REMOTE_BYTES_SENT,REMOTE_BYTES_RECVD  
Return code: 1
Stdout: get_sockaddr_family_addr_port family mismatch 10 vs 2

Hmm, this looks like a bug in netperf - I guess it fails to pass the address family when resolving the local-bind hostname. I suppose we could resolve it in Flent and pass down the IP address instead to work around this...