SERVER [root@linux iperf2-code]$ uname -a Linux linux 6.4.9-arch1-1 #1 SMP PREEMPT_DYNAMIC Tue, 08 Aug 2023 22:14:05 +0000 x86_64 GNU/Linux [root@linux iperf2-code]$ src/iperf -v iperf version 2.1.n (11 September 2023) pthreads [root@linux iperf2-code]$ src/iperf -us ------------------------------------------------------------ Server listening on UDP port 5001 UDP buffer size: 208 KByte (default) ------------------------------------------------------------ [ 1] local 192.168.0.2 port 5001 connected...
Didn't click post my bad - just posted the saved message above. I tried again with latest today and got the same result.
Tried latest and uploaded the output . It didn't create too many sockets, but it didn't destroy them or receive traffic. Note: I did realize that this only happens when the server's two NIC's have ip addresses that are on the same subnet, which is not an ideal configuration Another note, I had to cut the output at 20k lines as it wouldn't let me upload the whole 50 MB file. Cut from about 401K lines I assume this is because connect() knows both routes will reach the destination. so picks whichever...
Crashed again - attached output w/ enable-thread-debug $ src/iperf -uc 192.168.0.102 -P 3 -b 50M $ src/iperf -v iperf version 2.1.n (8 September 2023) pthreads ..... [root@linux ~]$ ./iperf -us > /tmp/output-3aa566.txt socket failed (Listener.cpp:441): Too many open files (24) *** %n in writable segment detected *** Killed [root@linux ~]$ vi /tmp/output-3aa566.txt [root@linux ~]$ ./iperf -v iperf version 2.1.n (8 September 2023) pthreads
As a note I tried keeping the listener bound to *:5001 w/ the same socket and creating the server UDP sockets as needed but a large number of messages still made it to the listener. # netstat -an4 Active Internet connections (including servers) Proto Recv-Q Send-Q Local Address Foreign Address (state) udp4 0 0 172.31.1.184.5001 *.* udp4 41608 0 172.31.1.184.5001 172.31.1.1.44488 udp4 40986 0 172.31.1.184.5001 172.31.1.1.56582 udp4 40986 0 172.31.1.184.5001 172.31.1.1.45141 udp4 36432 0 *.5001 *.*...
Looks like sourceforge was down this morning. I attached the output above as output.txt https://sourceforge.net/p/iperf2/tickets/270/#c266/5acf/8073/3c07/7ab9/b17b/8446
Yeah it doesn't look like it's calling iperf_push_host, only the _conditional. I cut out the rest of the output above and kept only the first few 'active table' entries here. There's only 1 'new entry' in the file THREAD(21941):[15:22:13.132447] active table: new entry 192.168.0.20 port 40308 (flag=1) rootp=0x7f4800001f40 entryp=0x7f4800001f40 totcnt/activecnt/hostcnt = 1/1/1 THREAD(21941):[15:22:13.134193] active table: compare table entry client ip/port 192.168.0.20/40308 against host 192.168.0.20/53986...
In active_table_update() it will only add an entry if the host isn't present, otherwise it increases the thread count. static void active_table_update (iperf_sockaddr *host, struct thread_Settings *agent) { ......... Iperf_ListEntry *this_entry = Iperf_host_present(host); active_table.total_count++; if (this_entry == NULL) { this_entry = new Iperf_ListEntry(); ..... } else { this_entry->thread_count++; ........ } } ie if we received the following in this order to Iperf_push_host_port_conditional...