Hi Vlad, Client side output is as follows sctp_test -H 5.5.5.8 -P 24241 -h 5.5.5.5 -p 24240 -s -d 2 remote:addr=5.5.5.5, port=24240, family=2 local:addr=5.5.5.8, port=24241, family=2 seed = 1441869106 Starting tests... socket(SOCK_SEQPACKET, IPPROTO_SCTP) -> sk=3 bind(sk=3, [a:5.5.5.8,p:24241]) -- attempt 1/10 Client: Sending packets.(1/10) sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1710682300 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1765869275 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=849299205 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=775923576 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1177005326 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=580481799 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1820434279 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=931838640 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1163854356 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=770096763 Client: Sending packets.(2/10) sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=23513767 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1224970862 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=721236614 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=714480381 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1547270326 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1717490031 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1160620866 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=872101 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=680567177 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1437630606 Client: Sending packets.(3/10) sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=125273689 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1035787573 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1035963077 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=186752879 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1279859637 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1262253125 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=930828640 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=992036574 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1016073615 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1104261184 Client: Sending packets.(4/10) sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1277931395 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=579272267 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=722646812 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=2127230601 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1355195843 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1899652138 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=560228752 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1028146475 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=684007130 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1724083108 Client: Sending packets.(5/10) sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1798243238 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=707520898 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=801570323 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=371996205 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1422001279 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=201357001 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=2089486236 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=435138498 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=202229103 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=622569765 Client: Sending packets.(6/10) sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1872769104 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=327502792 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1658357338 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=761248533 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=514255671 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=790733327 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=2023501659 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1445084311 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1782769901 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=892091626 Client: Sending packets.(7/10) sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=401861848 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=913217648 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1471363893 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1124508660 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=892964601 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=679076089 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=876677150 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1453193353 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1707222564 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1560684280 Client: Sending packets.(8/10) sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1029792814 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1357982154 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=120721530 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1831363137 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1729978359 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1542722810 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=2032720138 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1671980947 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1977861308 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=87465593 Client: Sending packets.(9/10) sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=147067064 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1703146764 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=414968385 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1805424402 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=316911650 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=929224056 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=448674081 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=192929661 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=226824720 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=83960334 Client: Sending packets.(10/10) sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1085021287 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=628686568 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=997177983 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=408901532 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1753195228 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1890142584 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1087977621 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=482388730 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=1195852290 sendmsg(sk=3, assoc=0) 1 bytes. SNDRCV(stream=0 flags=0x1 ppid=647716537 close(sk=3) Thank you, Prashanth On Tue, Sep 15, 2015 at 11:40 PM, Vlad Yasevich <vyasevich@xxxxxxxxx> wrote: > On 09/10/2015 03:07 AM, kunapaneni prashanth wrote: >> Hi Vlad/Marcelo, >> Thank you for the response. >> >> I am using kernel 3.10.0-123.20.1.el7.x86_64. >> >> I should give bit more details about my setup. My hosts H1 and H2 use >> special ethernet adapters which run openvswitch. Due to this, i >> believe there is initially bit more latency when connection is being >> established. I checked the packets and packets are delivered to other >> side without any errors. >> >> i am new to sctp, so i am not exactly sure how kernel part of sctp works. >> >> While testing case 1 mentioned in my previous mail. >> >> In Server side i see following: >> ===================== >> >> [root@localhost tmp]# sctp_test -h 5.5.5.8 -p 24241 -H 5.5.5.5 -P 24240 -l >> >> remote:addr=5.5.5.8, port=24241, family=2 >> local:addr=5.5.5.5, port=24240, family=2 >> seed = 1441868236 >> >> Starting tests... >> socket(SOCK_SEQPACKET, IPPROTO_SCTP) -> sk=3 >> bind(sk=3, [a:5.5.5.5,p:24240]) -- attempt 1/10 >> listen(sk=3,backlog=100) >> Server: Receiving packets. >> recvmsg(sk=3) >> >> Notification: SCTP_ASSOC_CHANGE(COMMUNICATION_UP) >> (assoc_change: state=0, error=0, instr=10 outstr=10) >> recvmsg(sk=3) Data 1 bytes. First 1 bytes: <empty> text[0]=0 >> recvmsg(sk=3) Notification: SCTP_ASSOC_CHANGE(COMMUNICATION_LOST) >> (assoc_change: state=1, error=0, instr=0 outstr=0) >> recvmsg(sk=3) >> > > Could you also provide the client side output as well.. > > Thanks > -vlad > > >> >> TCPDUMP on Server side >> ------------------------------------- >> >> [root@localhost tmp]# tcpdump -i oct0 >> tcpdump: verbose output suppressed, use -v or -vv for full protocol decode >> listening on oct0, link-type EN10MB (Ethernet), capture size 65535 bytes >> 12:33:57.134221 IP 5.5.5.8.24241 > 5.5.5.5.24240: sctp (1) [INIT] >> [init tag: 3460584308] [rwnd: 106496] [OS: 10] [MIS: 65535] [init TSN: >> 2697986036] >> 12:33:57.135112 IP 5.5.5.5.24240 > 5.5.5.8.24241: sctp (1) [INIT ACK] >> [init tag: 3286358519] [rwnd: 106496] [OS: 10] [MIS: 10] [init TSN: >> 942498333] >> 12:33:57.135702 IP 5.5.5.8.24241 > 5.5.5.5.24240: sctp (1) [COOKIE >> ECHO] , (2) [DATA] (U)(B)(E) [TSN: 2697986036] [SID: 0] [SSEQ 0] [PPID >> 0x122c861b] >> 12:33:57.136079 IP 5.5.5.5.24240 > 5.5.5.8.24241: sctp (1) [COOKIE >> ACK] , (2) [SACK] [cum ack 2697986036] [a_rwnd 106495] [#gap acks 0] >> [#dup tsns 0] >> 12:33:57.136415 IP 5.5.5.8.24241 > 5.5.5.5.24240: sctp (1) [ABORT] >> >> >> >> >> >> >> I am assuming below is the sequence in Client side. >> ===================================== >> when using "sctp_test -h 5.5.5.8 -p 24241 -H 5.5.5.5 -P 24240 -l" >> >> 1. sctp_test calls sendmsg. >> 2. Kernel initiates a handshake. >> 3. sctp_test sends all the packets and closes the socket before >> handshake is complete. >> 4. Kernel sends a abort packet due to socket close without completing >> the transfer of packets. >> >> >> Just to confirm if above theory is correct, i increased the number of >> packets to be sent by sctp_test using following command. >> >> "sctp_test -H 5.5.5.8 -P 24241 -h 5.5.5.5 -p 24240 -s -x 30" >> >> I assume in this case, since sctp_test takes more time to send all the >> packets, kernel has enough time to complete the handshake. >> >> This test passed always. >> >> so is the theory that sctp_test is closing socket too fast correct? >> >> if so, shouldn't the kernel complete the connection initiation, >> transfer packet before closing the connection even when socket close >> is called too fast. >> >> Thanks, >> Prashanth >> >> >> On Thu, Sep 10, 2015 at 2:49 AM, Vlad Yasevich <vyasevich@xxxxxxxxx> wrote: >>> On 09/09/2015 04:13 AM, kunapaneni prashanth wrote: >>>> Hi, >>>> in our setup, i am trying out sctp tests using lksctp tools between >>>> two hosts connected back to back. >>>> >>>> H1(5.5.5.8) -------------- H2 (5.5.5.5) >>>> >>>> >>>> following are the commands i used. >>>> >>>> Case 1: >>>> ========= >>>> client: >>>> sctp_test -H 5.5.5.8 -P 24241 -h 5.5.5.5 -p 24240 -s >>>> >>>> server: >>>> sctp_test -h 5.5.5.8 -p 24241 -H 5.5.5.5 -P 24240 -l >>>> >>>> >>>> This test case fails, with client sending a abort after INIT/INIT-ACK. >>>> >>>> If i run same test case with "-T" option, it is successful. >>> >>> The test runs fine in my environment. Which kernel are you using? >>> >>>> >>>> i,e >>>> Case 2: >>>> ======== >>>> client: >>>> sctp_test -H 5.5.5.8 -P 24241 -h 5.5.5.5 -p 24240 -s -T >>>> >>>> server: >>>> sctp_test -h 5.5.5.8 -p 24241 -H 5.5.5.5 -P 24240 -l >>>> >>>> >>>> >>>> >>>> i observed that in case 1, sctp_test never calls "connect", why is it >>>> so? shouldnt a connect be called. >>>> >>> >>> No, the connect is not required when using SOCK_SEQPACKET sockets and >>> that is what the test tries to do. Forcing it to always connect isn't >>> the right thing. You need to figure our why you are getting an ABORT. >>> >>> -vlad >>> >>>> >>>> >>>> I modified the code as follows to make sure a connect is issued. After >>>> this everything works fine. >>>> >>>> Please confirm. >>>> >>>> 1386c1386 >>>> < if (socket_type == SOCK_STREAM || connectx_count == 0) >>>> --- >>>>> if (socket_type == SOCK_STREAM && connectx_count == 0) >>>> >>>> >>> >>> >>>> Thank you, >>>> Prashanth >>>> -- >>>> To unsubscribe from this list: send the line "unsubscribe linux-sctp" in >>>> the body of a message to majordomo@xxxxxxxxxxxxxxx >>>> More majordomo info at http://vger.kernel.org/majordomo-info.html >>>> >>> > -- To unsubscribe from this list: send the line "unsubscribe linux-sctp" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html