[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-sctp
Subject:    Re: [Lksctp-developers] sctp and select
From:       Vlad Yasevich <vladislav.yasevich () hp ! com>
Date:       2008-04-29 2:03:13
Message-ID: 481681E1.2060904 () hp ! com
[Download RAW message or body]

muskala magda wrote:
> hi,
> 
> i am trying to rn this server. the (low level)
> communication seems to be done. but after accepting
> the connection, the select doesn't notice an incoming
> data. it notices only the 4 way handshake & closing
> packets, but not the data. the program waits in this
> line:
> 
> if (select(fdmax+1, &read_fds, NULL, NULL, NULL)) {
> 
> there is also an error after cookie echo received by
> the server, but as already mentioned, the
> communication seems not to be broken. are the data
> buffered? how can i check it/read it? how can i (if it
> is possible at all) "force" the select to notice the
> incoming data packets?

It looks like the system you are talking to is utterly
broken.

> No.     Time        Source                Destination 
>          Protocol Info
>  484981 192374.502964 192.168.1.233        
> 192.168.1.109         SCTP     DATA 
> 
> Frame 484981 (72 bytes on wire, 72 bytes captured)
> Linux cooked capture
> Internet Protocol, Src: 192.168.1.233 (192.168.1.233),
> Dst: 192.168.1.109 (192.168.1.109)
> Stream Control Transmission Protocol, Src Port: 3072
> (3072), Dst Port: 10000 (10000)
>     Source port: 3072
>     Destination port: 10000
>     Verification tag: 0x4d855e4f
>     Checksum: 0x5edddafd [correct CRC32C]
>     DATA chunk(ordered, complete segment, TSN:
> 3998009280, SID: 0, SSN: 1, PPID: 0, payload length: 8
> bytes)
>         Chunk type: DATA (0)
>         Chunk flags: 0x03
>         Chunk length: 24
>         TSN: 3998009280
>         Stream Identifier: 0x0000
>         Stream sequence number: 1

First of all, the very first data chunk of an association has
to start with a SSN of 0.

>         Payload protocol identifier: not specified (0)
> Data (8 bytes)
> 
> 0000  72 63 23 23 23 32 36 39                         
>  rc###269
>     Data: 7263232323323639
> 
> 
> No.     Time        Source                Destination 
>          Protocol Info
>  484999 192380.098573 192.168.1.233        
> 192.168.1.109         SCTP     DATA 
> 
> Frame 484999 (320 bytes on wire, 320 bytes captured)
> Linux cooked capture
> Internet Protocol, Src: 192.168.1.233 (192.168.1.233),
> Dst: 192.168.1.109 (192.168.1.109)
> Stream Control Transmission Protocol, Src Port: 3072
> (3072), Dst Port: 10000 (10000)
>     Source port: 3072
>     Destination port: 10000
>     Verification tag: 0x4d855e4f
>     Checksum: 0x9b833a01 [correct CRC32C]
>     DATA chunk(ordered, complete segment, TSN:
> 3998009281, SID: 0, SSN: 1, PPID: 0, payload length:
> 256 bytes)
>         Chunk type: DATA (0)
>         Chunk flags: 0x03
>         Chunk length: 272
>         TSN: 3998009281
>         Stream Identifier: 0x0000
>         Stream sequence number: 1
>         Payload protocol identifier: not specified (0)
> Data (256 bytes)
> 
> 0000  68 6f 73 74 6e 61 6d 65 20 45 44 4f 53 4b 32 36 
>  hostname EDOSK26
> 0010  37 34 0a 2f 62 69 6e 2f 65 78 70 61 6e 64 20 2f 
>  74./bin/expand /
> 0020  65 74 63 2f 72 61 6d 66 73 2e 69 6d 67 20 2f 64 
>  etc/ramfs.img /d
> 0030  65 76 2f 72 61 6d 30 0a 2f 62 69 6e 2f 65 78 70 
>  ev/ram0./bin/exp
> 0040  61 6e 64 20 2f 65 74 63 2f 72 61 6d 66 73 2e 69 
>  and /etc/ramfs.i
> 0050  6d 67 20 2f 64 65 76 2f 72 61 6d 31 0a 6d 6f 75 
>  mg /dev/ram1.mou
> 0060  6e 74 20 2d 74 20 70 72 6f 63 20 70 72 6f 63 20 
>  nt -t proc proc 
> 0070  2f 70 72 6f 63 0a 6d 6f 75 6e 74 20 2d 74 20 65 
>  /proc.mount -t e
> 0080  78 74 32 20 2f 64 65 76 2f 72 61 6d 30 20 2f 76 
>  xt2 /dev/ram0 /v
> 0090  61 72 0a 6d 6f 75 6e 74 20 2d 74 20 65 78 74 32 
>  ar.mount -t ext2
> 00a0  20 2f 64 65 76 2f 72 61 6d 31 20 2f 65 74 63 2f 
>   /dev/ram1 /etc/
> 00b0  63 6f 6e 66 69 67 0a 6d 6b 64 69 72 20 2f 76 61 
>  config.mkdir /va
> 00c0  72 2f 74 6d 70 0a 6d 6b 64 69 72 20 2f 76 61 72 
>  r/tmp.mkdir /var
> 00d0  2f 6c 6f 67 0a 6d 6b 64 69 72 20 2f 76 61 72 2f 
>  /log.mkdir /var/
> 00e0  72 75 6e 0a 6d 6b 64 69 72 20 2f 76 61 72 2f 6c 
>  run.mkdir /var/l
> 00f0  6f 63 6b 0a 66 6c 61 74 66 73 64 20 2d 72 0a 63 
>  ock.flatfsd -r.c
>     Data:
> 686F73746E616D652045444F534B323637340A2F62696E2F...
> 
> 
> No.     Time        Source                Destination 
>          Protocol Info
>  485007 192385.449421 192.168.1.233        
> 192.168.1.109         SCTP     DATA 
> 
> Frame 485007 (80 bytes on wire, 80 bytes captured)
> Linux cooked capture
> Internet Protocol, Src: 192.168.1.233 (192.168.1.233),
> Dst: 192.168.1.109 (192.168.1.109)
> Stream Control Transmission Protocol, Src Port: 3072
> (3072), Dst Port: 10000 (10000)
>     Source port: 3072
>     Destination port: 10000
>     Verification tag: 0x4d855e4f
>     Checksum: 0xa6294f39 [correct CRC32C]
>     DATA chunk(ordered, complete segment, TSN:
> 3998009282, SID: 0, SSN: 1, PPID: 0, payload length:
> 13 bytes)
>         Chunk type: DATA (0)
>         Chunk flags: 0x03
>         Chunk length: 29
>         TSN: 3998009282
>         Stream Identifier: 0x0000
>         Stream sequence number: 1

Secondly, each subsequent complete DATA chunk must increment the Stream
sequence number.  SSN 1 has already been received above.

The only time that SSN remains the same is when fragment DATA chunks
are sent.

Looks like the sender SCTP stack has a bug with ordered DATA chunks.

-vlad

>         Payload protocol identifier: not specified (0)
>         Chunk padding: 303030
> Data (13 bytes)
> 
> 0000  61 74 20 2f 65 74 63 2f 6d 6f 74 64 0a          
>  at /etc/motd.
>     Data: 6174202F6574632F6D6F74640A
> 
> No.     Time        Source                Destination 
>          Protocol Info
>  485008 192385.647279 192.168.1.109        
> 192.168.1.233         SCTP     SACK 
> 
> Frame 485008 (64 bytes on wire, 64 bytes captured)
> Linux cooked capture
> Internet Protocol, Src: 192.168.1.109 (192.168.1.109),
> Dst: 192.168.1.233 (192.168.1.233)
> Stream Control Transmission Protocol, Src Port: 10000
> (10000), Dst Port: 3072 (3072)
>     Source port: 10000
>     Destination port: 3072
>     Verification tag: 0xee4cc7c0
>     Checksum: 0xd87dd0d3 [correct CRC32C]
>     SACK chunk (Cumulative TSN: 3998009282, a_rwnd:
> 55019, gaps: 0, duplicate TSNs: 0)
>         Chunk type: SACK (3)
>         Chunk flags: 0x00
>         Chunk length: 16
>         Cumulative TSN ACK: 3998009282
>         Advertised receiver window credit (a_rwnd):
> 55019
>         Number of gap acknowledgement blocks: 0
>         Number of duplicated TSNs: 0
> 
> No.     Time        Source                Destination 
>          Protocol Info
>  485203 192463.052409 192.168.1.233        
> 192.168.1.109         SCTP     SHUTDOWN 
> 
> Frame 485203 (62 bytes on wire, 62 bytes captured)
> Linux cooked capture
> Internet Protocol, Src: 192.168.1.233 (192.168.1.233),
> Dst: 192.168.1.109 (192.168.1.109)
> Stream Control Transmission Protocol, Src Port: 3072
> (3072), Dst Port: 10000 (10000)
>     Source port: 3072
>     Destination port: 10000
>     Verification tag: 0x4d855e4f
>     Checksum: 0xfa0aa00c [correct CRC32C]
>     SHUTDOWN chunk (Cumulative TSN ack: 1795865471)
>         Chunk type: SHUTDOWN (7)
>         Chunk flags: 0x00
>         Chunk length: 8
>         Cumulative TSN Ack: 1795865471
> 
> No.     Time        Source                Destination 
>          Protocol Info
>  485204 192463.052528 192.168.1.109        
> 192.168.1.233         SCTP     SHUTDOWN_ACK 
> 
> Frame 485204 (52 bytes on wire, 52 bytes captured)
> Linux cooked capture
> Internet Protocol, Src: 192.168.1.109 (192.168.1.109),
> Dst: 192.168.1.233 (192.168.1.233)
> Stream Control Transmission Protocol, Src Port: 10000
> (10000), Dst Port: 3072 (3072)
>     Source port: 10000
>     Destination port: 3072
>     Verification tag: 0xee4cc7c0
>     Checksum: 0x6df73964 [correct CRC32C]
>     SHUTDOWN_ACK chunk
>         Chunk type: SHUTDOWN_ACK (8)
>         Chunk flags: 0x00
>         Chunk length: 4
> 
> No.     Time        Source                Destination 
>          Protocol Info
>  485205 192463.145419 192.168.1.233        
> 192.168.1.109         SCTP     SHUTDOWN_COMPLETE 
> 
> Frame 485205 (62 bytes on wire, 62 bytes captured)
> Linux cooked capture
> Internet Protocol, Src: 192.168.1.233 (192.168.1.233),
> Dst: 192.168.1.109 (192.168.1.109)
> Stream Control Transmission Protocol, Src Port: 3072
> (3072), Dst Port: 10000 (10000)
>     Source port: 3072
>     Destination port: 10000
>     Verification tag: 0x4d855e4f
>     Checksum: 0x9b456826 [correct CRC32C]
>     SHUTDOWN_COMPLETE chunk
>         Chunk type: SHUTDOWN_COMPLETE (14)
>         Chunk flags: 0x00
>         Chunk length: 4
> 
> 
> --
> 
> With your feet on the air and your head on the ground 
> Try this trick and spin it, yeah 
> Your head will collapse if there's nothing in it 
> And you'll ask yourself 
> 
> Where is my mind?
> Where is my mind?
> Where is my mind?
> 
> 
>       __________________________________________________________
> Gesendet von Yahoo! Mail.
> Mehr Möglichkeiten, in Kontakt zu bleiben. http://de.overview.mail.yahoo.com
> 
> -------------------------------------------------------------------------
> This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
> Don't miss this year's exciting event. There's still time to save $100. 
> Use priority code J8TL2D2. 
> http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
> _______________________________________________
> Lksctp-developers mailing list
> Lksctp-developers@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/lksctp-developers
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-sctp" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic