@@ -196,6 +196,9 @@ ip -net "$ns4" link set ns4eth3 up
196
196
ip -net " $ns4 " route add default via 10.0.3.2
197
197
ip -net " $ns4 " route add default via dead:beef:3::2
198
198
199
+ # use TCP syn cookies, even if no flooding was detected.
200
+ ip netns exec " $ns2 " sysctl -q net.ipv4.tcp_syncookies=2
201
+
199
202
set_ethtool_flags () {
200
203
local ns=" $1 "
201
204
local dev=" $2 "
@@ -407,6 +410,11 @@ do_transfer()
407
410
sleep 1
408
411
fi
409
412
413
+ local stat_synrx_last_l=$( ip netns exec ${listener_ns} nstat -z -a MPTcpExtMPCapableSYNRX | while read a count c rest ; do echo $count ; done)
414
+ local stat_ackrx_last_l=$( ip netns exec ${listener_ns} nstat -z -a MPTcpExtMPCapableACKRX | while read a count c rest ; do echo $count ; done)
415
+ local stat_cookietx_last=$( ip netns exec ${listener_ns} nstat -z -a TcpExtSyncookiesSent | while read a count c rest ; do echo $count ; done)
416
+ local stat_cookierx_last=$( ip netns exec ${listener_ns} nstat -z -a TcpExtSyncookiesRecv | while read a count c rest ; do echo $count ; done)
417
+
410
418
ip netns exec ${listener_ns} ./mptcp_connect -t $timeout -l -p $port -s ${srv_proto} $extra_args $local_addr < " $sin " > " $sout " &
411
419
local spid=$!
412
420
@@ -450,6 +458,45 @@ do_transfer()
450
458
check_transfer $cin $sout " file received by server"
451
459
rets=$?
452
460
461
+ local stat_synrx_now_l=$( ip netns exec ${listener_ns} nstat -z -a MPTcpExtMPCapableSYNRX | while read a count c rest ; do echo $count ; done)
462
+ local stat_ackrx_now_l=$( ip netns exec ${listener_ns} nstat -z -a MPTcpExtMPCapableACKRX | while read a count c rest ; do echo $count ; done)
463
+
464
+ local stat_cookietx_now=$( ip netns exec ${listener_ns} nstat -z -a TcpExtSyncookiesSent | while read a count c rest ; do echo $count ; done)
465
+ local stat_cookierx_now=$( ip netns exec ${listener_ns} nstat -z -a TcpExtSyncookiesRecv | while read a count c rest ; do echo $count ; done)
466
+
467
+ expect_synrx=$(( stat_synrx_last_l))
468
+ expect_ackrx=$(( stat_ackrx_last_l))
469
+
470
+ cookies=$( ip netns exec ${listener_ns} sysctl net.ipv4.tcp_syncookies)
471
+ cookies=${cookies##* =}
472
+
473
+ if [ ${cl_proto} = " MPTCP" ] && [ ${srv_proto} = " MPTCP" ]; then
474
+ expect_synrx=$(( stat_synrx_last_l+ 1 ))
475
+ expect_ackrx=$(( stat_ackrx_last_l+ 1 ))
476
+ fi
477
+ if [ $cookies -eq 2 ]; then
478
+ if [ $stat_cookietx_last -ge $stat_cookietx_now ] ; then
479
+ echo " ${listener_ns} CookieSent: ${cl_proto} -> ${srv_proto} : did not advance"
480
+ fi
481
+ if [ $stat_cookierx_last -ge $stat_cookierx_now ] ; then
482
+ echo " ${listener_ns} CookieRecv: ${cl_proto} -> ${srv_proto} : did not advance"
483
+ fi
484
+ else
485
+ if [ $stat_cookietx_last -ne $stat_cookietx_now ] ; then
486
+ echo " ${listener_ns} CookieSent: ${cl_proto} -> ${srv_proto} : changed"
487
+ fi
488
+ if [ $stat_cookierx_last -ne $stat_cookierx_now ] ; then
489
+ echo " ${listener_ns} CookieRecv: ${cl_proto} -> ${srv_proto} : changed"
490
+ fi
491
+ fi
492
+
493
+ if [ $expect_synrx -ne $stat_synrx_now_l ] ; then
494
+ echo " ${listener_ns} SYNRX: ${cl_proto} -> ${srv_proto} : expect ${expect_synrx} , got ${stat_synrx_now_l} "
495
+ fi
496
+ if [ $expect_ackrx -ne $stat_ackrx_now_l ] ; then
497
+ echo " ${listener_ns} ACKRX: ${cl_proto} -> ${srv_proto} : expect ${expect_synrx} , got ${stat_synrx_now_l} "
498
+ fi
499
+
453
500
if [ $retc -eq 0 ] && [ $rets -eq 0 ]; then
454
501
echo " $duration [ OK ]"
455
502
cat " $capout "
0 commit comments