Menu

#5 SCTP protocol support

pending
nobody
5
2012-09-14
2011-12-27
No

Protection and reliability above all else. Nowadays, information plays a significant role in my life. In connection with this very appropriate introduction would be implementing the protocol SCTP (Stream Control Transmission Protocol - «transfer protocol with flow control"), a new version. This will provide protection against SYN-flood attacks, the establishment of a safe connection (using a four-handshake), as well as pleasant innovation in the form of the conservation message boundaries, multi-threading, unordered delivery, support for multiple interfaces. Implementation of this protocol allows the network to bring a new level of speed, reliability, security and data transmission capabilities over the network. Because the new protocol was created, taking into account shortcomings of TCP, in view of the network and make full use of their opportunities, and special attention was paid to safety and security.

It is high time to promote, SCTP everywhere! Given the current active movement towards IPv6. + A lot of goodies from this extract is another good protocol SPDY. You can not hinder the development of technologies and the need to push modern protocols to the masses. It remains to convince Microsoft's usefulness and necessity of these protocols and to persuade them to intensive implementation. By the way Firefox is already implementing a protocol support SPDY (expected in version 11), as well as support going into the popular web-server nginx.

Discussion

  • Chris Morgan

    Chris Morgan - 2011-12-31

    Hello.

    Would you be interested in implementing the protocol parser for SCTP? I'd welcome any new protocols.

    Chris

     
  • Chris Morgan

    Chris Morgan - 2012-07-24

    Waiting on someone to volunteer to implement this support since it is likely to take some time to do so properly....

     
  • Evan Plaice

    Evan Plaice - 2012-07-24

    Sounds interesting but I have too many balls in the air already to touch it right now.

    After a cursory look at the spec, there's some bad and there's some bad. The first problem is, it uses a new checksum algorithm. The second is, it uses a variable number of variable length data chunks within the packet with flags on the chunk type that can be different things depending on what type of chunk it is.

    The checksum in encoded using the Adler-32 algorithm:
    http://en.wikipedia.org/wiki/Adler-32

    Basically, the data is read in as 32bit ascii (pseudo) chars, cast to an integer, and run through some ridiculous 2 level (last char, current char) addition for each (pesudo) char read in. ASCII... really!?

    Because ASCII is the character encoding of the future.
    /sarcasm

    I swear, if network protocol designers didn't have such a hard on for crap obscure algorithms implementing new protocols wouldn't be such a headache.

    Either way, it's going to be painful to implement the checksum part and special care will need to be taken to ensure that it can function efficiently.

    All rants aside, there's going to be some pain in implementing this. I've already ranted about the checksum, it'll need an Enum for all of the chunk types, bitwise getters/setters for the flags field on the chunks, and probably another custom list type to handle the creating and parsing of the data chunks. The LLDP (Link Layer Data Protocol) code is probably a good place to look to figure out how to manage the chunks.

    For a good quality, easy to read specification I suggest you take a look at:
    http://www.networksorcery.com/enp/default1101.htm
    Once there goto:
    Protocols -> SCTP

    That's my 2 cents. Hopefully it will be useful to somebody else.

     
  • Chris Morgan

    Chris Morgan - 2012-07-24

    Hey Evan.

    How is it going man? Long time..... What have you been up to?

    I actually just implemented a generic Crc generator. You give it a polynomial in 32bit form, a starting value, final xor and bit width, and it generates you a table of values. This class could be leveraged to generate the 16bit crc and then the parent class would build the final crc form.

    I agree that it is a bit of work though. Plus there isn't currently any kind of 'following' class that handles streams, data that goes across multiple packets. I have stuff like that for a custom library that I licence but haven't had enough people license it to cover the development costs yet.

    Chris

     
  • Evan Plaice

    Evan Plaice - 2012-07-24

    Hi Chris,

    I moved to San Diego last summer. Been getting established and doing more web based internal business development lately using a hybrid Google App Engine and LAMP stack approach. My latest project is jquery-CSV which is a Javascript-only based CSV parser. Dealing with cross browser RegEx inconsistencies is fun /s.

    Yeah, checksum and bitwise calculations for me require a lot of head scratching. Not exactly my strong suit and something I'd rather complain about.

    As for streaming, Even if there was an OSS implementation, I think it would be better served as an additional library anyway (Stream.NET?). I got really bored one day and started debating whether I should try to build one for fun but eventually decided not to. I knew you had one but keep it behind a paywall for good reason. I'm surprised you don't have a higher demand for licensing, there seems to be plenty of devs on the internets doing a poor job of trying to roll their own.

    Of course, devs DO tend to be the cheapest bastards of them all.

    As much fun as I have toying with network protocols it isn't exactly pay-dirt for me these days. Maybe if I could get an appreciable chunk of free time I could fire up my old C# dev environment. Until then, I'm all talk and no do.

    Evan

     

Anonymous
Anonymous

Add attachments
Cancel





Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.