kern/176446: Concurrency in ixgbe driving out-of-order packet process and spurious RST

Charbon, Julien jcharbon at verisign.com
Wed Feb 27 14:14:15 UTC 2013


  I successfully reproduced this issue using only the socat tool:

Server side:  Enable TCP debug, and launch socat server:

# sysctl net.inet.tcp.log_debug=1
net.inet.tcp.log_debug: 0 -> 1
$ cat /some/where/response.sh
#!/usr/bin/env bash
read line
echo -n 
"01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567"
$ socat TCP4-LISTEN:8181,fork,reuseaddr EXEC:/some/where/response.sh

Client side:  Create socat client TCP load:

$ cat ./request
128
$ while true; do socat ./request,ignoreeof\!\!./response 
TCP4:192.168.100.144:8181 & sleep 0.0001; done

Then on server side just wait for a TCP debug in /var/log/debug.log like:

kernel: TCP: [192.168.100.136]:48359 to [192.168.100.144]:8181; 
syncache_socket: in_pcbconnect failed with error 48
kernel: TCP: [192.168.100.136]:48359 to [192.168.100.144]:8181 tcpflags 
0x10<ACK>; tcp_input: Listen socket: Socket allocation failed due to 
limits or memory shortage, sending RST
kernel: TCP: [192.168.100.136]:48359 to [192.168.100.144]:8181 tcpflags 
0x4<RST>; syncache_chkrst: Spurious RST without matching syncache entry 
(possibly syncookie only), segment ignored

  Adding Jack F. Vogel (ixgbe driver maintainer), and Marc De La 
Gueronniere (author of our work in progress patch for this issue).

--
Julien


More information about the freebsd-bugs mailing list