Slashdot Mirror


Better Networking with SCTP

5-0 writes to tell us that IBM DeveloperWorks has an interesting look at the key features of SCTP in the Linux 2.6 kernel and the ability to deliver multi-streaming. "SCTP is a reliable, general-purpose transport layer protocol for use on IP networks. While the protocol was originally designed for telephony signaling, SCTP provided an added bonus -- it solved some of the limitations of TCP while borrowing beneficial features of UDP. SCTP provides features for high availability, increased reliability, and improved security for socket initiation."

233 comments

  1. How long... by Elitist_Phoenix · · Score: 2, Interesting

    How long do you think it will be before this is adopted into the mainstream?

    --
    "I'm going to f***ing bury that guy, I have done it before, and I will do it again. I'm going to f***ing kill Google"
    1. Re:How long... by Rosco+P.+Coltrane · · Score: 4, Funny

      How long do you think it will be before this is adopted into the mainstream?

      Easy that: as long as it took IPv6 to be adopted into the mainstream.

      --
      "A door is what a dog is perpetually on the wrong side of" - Ogden Nash
    2. Re:How long... by sjames · · Score: 4, Informative

      Easy that: as long as it took IPv6 to be adopted into the mainstream.

      Probably not that long. The problem with IPv6 is that too many entities are involved in a successful v6 deployment and too many changes have to happen at different levels.

      OTOH, SCTP requires only a client and a server that want to use it.

    3. Re:How long... by KiloByte · · Score: 4, Insightful

      OTOH, SCTP requires only a client and a server that want to use it.

      And no overzealous firewalls on the way.

      --
      The creatures outside looked from Alt-Right to Antifa; but already it was impossible to say which was which.
    4. Re:How long... by Ulrich+Hobelmann · · Score: 5, Informative

      That's because IPv6 is *IP*. SCTP builds on top of IP (v4 if you want), just like UDP and TCP.

      Just like many applications (mostly streaming servers and games, I suppose) use UDP without anybody caring, you can use SCTP without any host between client and server caring.

      It's something for applications to use, not something that requires a different internet infrastructure, replacing routers, software etc. (IPv6 address syntax is different from the v4 one...).

    5. Re:How long... by Neo-Rio-101 · · Score: 2, Interesting

      As soon as bittorrent gets vastly imporved from it's ability to multi stream data.

      Obvious implementation of the protocol, really.

      --
      READY.
      PRINT ""+-0
    6. Re:How long... by canuck57 · · Score: 4, Interesting

      How long do you think it will be before this is adopted into the mainstream?

      Probably never main stream. Maybe for some telco types in niche applications... but it is too easy for 99% of the world to just open 2 sockets if you want 2 streams, or rpc's and threads... both of which are well supported and seasoned. Sctp is new, new bugs, not supported everywhere and as a result will go not go far.

      One might argue it is supposed to be more secure, I argue it is not. If it was it would be tied to kerberos and ipsec and use AES at the transport layer.

      Sctp has only one advantage, and this too could be done using TCP or UDP with not too much effort. That is you can open one socket and have mutiple streams inside, reducing the socket count on servers, a problem if you are routing more than 48000 calls or so. But yor could also do this with "TCP connecting pooling", a common way around this issue.

      But like ATM, it is the telco business push. ATM anyone?

      Sctp to me looks like a problem looking for a home for 99% of us. But at least an informative post so when I see the compile option I will turn it off.

    7. Re:How long... by ROOK*CA · · Score: 1

      And no overzealous firewalls on the way.

      Guess I must have "underzealous" firewalls, since they allow the traffic I tell them to and block everything else. ;)

    8. Re:How long... by zm · · Score: 2, Informative

      > Sctp is new

      Nope. I worked on SCTP implementation in year 2000.... Nortel had it in 1999.

      zm

      --
      Sig ?
    9. Re:How long... by canuck57 · · Score: 5, Interesting

      Nope. I worked on SCTP implementation in year 2000.... Nortel had it in 1999.

      New as in it is just making it into some kernels. And it most of us have never seen an application use it. And it may be years before we do. However, as stated it exists in a niche telco market.

      Nortel (used to work there) and the industry still has the "central office" mentality. Nortel had one thing right, VoIP is the future. What the telco business as a whole has wrong is how this will be done.

      In the future there will no need for a central office, all calls will NOT route through central servers and thus negate a heavy need for sctp altogether! sctp is like a T1-T2-Txxx to sockets, allowing n channels of calls through one IP connection. If VoIP (not strictly defined) goes point to point direct there is no need for a central office. End user devices only need 1 to 4 channels. (Audio/Video/Control/MP3 Movies).

      What will happen is someone like Linksys (or a Chinese company) will get enough momentum to produce a $99 device you hook to your internet, some LDAP server out there will be your directory and call routing will go direct device to device over TCP/IP. The MOBILE protocol has a better chance of surpasing SCTP as being in common use. You might even run call conferencing right off your own device.

      Central office technology has seen it's peek hayday. SS7, BSSMAP, ISDN, SONET and others are far too complex, expensive, patented and cumbersome - and will be religated to legacy wireline only. SCTP might be used in this niche area to concentrator like a RLCM to wireline services. Hardly end user equipment.

      The Internet is slowly eatting the telco business alive. As the traditional telco business market is evaporating.

      Wireline needs to quite the bickering, quite tripping on DCLEC cables and get decent inexpensive DSL services or they can say good-bye to their business. DSL is the only hope for the wireline side of the telco business and most are screwing it up big time.

      Cisco, if they keep innovation going high are going to put Nortel out of business. Central offices are being replaced with Network Access Point (NAP) and Cisco is king. Nortel might be best to spend their efforts on making the biggest, fastest, cheapest internet router possible. A DMS10000, 10000 as it can take 10000 IP based fibers.

      BTW, I loved working for Nortel, but left as I was a grossly underpaid Canadian and could see Stern was going to wreck the company.

    10. Re:How long... by marcosdumay · · Score: 1

      "Sctp is new, new bugs, not supported everywhere and as a result will go not go far."

      Oh, so anything new goes nowhere. I can see your point, we are still trying to make those things as fire and the well mainstream...

    11. Re:How long... by DrSkwid · · Score: 1

      That's not the problem.

      The problem with IP6 is that it isn't backwards compatible with IPv4.

      IPv6 will *never* happen.

      http://cr.yp.to/djbdns/ipv6mess.html

      --
      There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
    12. Re:How long... by sjames · · Score: 1

      And no overzealous firewalls on the way.

      Compared to your chances of convincing an ISP to upgrade their routers and buy a prefix from ARIN, getting the firewall fixed is child's play even if the admin wears a huge tinfoil napolean hat and hides behind 'the commitee'

    13. Re:How long... by endoplasmicMessenger · · Score: 1
      Probably never main stream. ... it is too easy for 99% of the world to just open 2 sockets

      Or you could use JSCTP, which is just as easy as openining two sockets.

      --
      Evolution is a fact. Darwinism is a joke.
    14. Re:How long... by creativity · · Score: 1

      This is the biggest myth about SCTP "borrowed features of UDP partial reliability", but the fact that it has not been implemented fully yet is never highlighted upon.

      Also SCTP is no improvement over TCP it uses the same congestion control algorithm as TCP, even if people say there is support for multiple streams. All streams are part of 1 logical connection and all the streams share 1 congestion control algorithm!!!!

      No study has shown SCTP to be a better alternative than TCP except that it can provide maybe multiple persistent streams oneday within 1 logical connection with seperate congestion windows.

    15. Re:How long... by bigpicture · · Score: 1

      This is informative. I have used computer VOIP at home for over 5 years, just recently having got a LinkSys VOIP router. I don't know a lot about the technology, but I did know that it would do away with the need for central switching, and rearrange the telcos net model.

      I did not know that the telcos were trying to mould it back into their old net model. I had thought the advantages of distributed and netrual net would be obvious. That is natures way, I think the brain works on this principle.

    16. Re:How long... by Money+for+Nothin' · · Score: 1

      As long as it takes for MSFT to make it work in Windows.

    17. Re:How long... by Anonymous Coward · · Score: 0

      I read slashdot a lot but never really post; let face it their are loads of opinions already. However, your post actually motivated me to write something. I'm a Technical Manager in a *large* service provider (starts with T ends in a) in Australia, about 12 months ago we had a guy called David Ankers who worked at Cisco spend a couple of hours saying *exactly* the same thing. Cisco sales you maybe thinking? Well, no this guy was good and explained all this as his motivation for leaving Cisco to setup his own consultancy company doing VoIP work for carriers.

      I caught up with him last week and he seems to be doing very well and he states that a lot of carriers do "get it" - mainly in Europe though and I know the one I work for doesn't. I think you really are right on the money - the only thing I will add is something that David said and I hold to be true also and that's that Mobile Telcos will be OK in all this as well. Any thoughts on this? I know your post is focused on wireline stuff.

    18. Re:How long... by Anonymous Coward · · Score: 0

      You're missing the killer app here.

      Imagine a few years in the future with mutihoming built into the transport layer. You have a mobile device that simultaneously is in range of a wired connnection, an 802.11 network, a traditional cell network and a 3G cell service. Which one does your device choose to setup its good old TCP session with? Well naturally the wired connection right? well maybe not, you're mobile, so maybe it should choose the most ubiquitous one (old cell network).

      So what if the protocol you are using doesn't even require you to choose, it registers all interfaces and your session is not disrupted as long as ONE of them is still available. It elegantly solves the triangle routing problems of Mobile IP and the kludgey proxy solutions currently in place (even wonder why Google Canada comes up on your Blackberry? :)

    19. Re:How long... by Skreems · · Score: 1

      Um... but it is backwards compatible. At least as long as you have a translation layer (Firewall, NAT, etc) between the part of the network that uses it and the part that doesn't. Comcast or some such large ISP could migrate all their customers to IPv6 tomorrow, and maintain perfect interopperability with the rest of the net.

      --
      Slashdot needs a "-1, Wrong" moderation option.
      The Urban Hippie
    20. Re:How long... by Anonymous Coward · · Score: 0

      Also SCTP is no improvement over TCP it uses the same congestion control algorithm as TCP, even if people say there is support for multiple streams. All streams are part of 1 logical connection and all the streams share 1 congestion control algorithm!!!!

      That's the whole point. TCP congestion avoidance uses a slow start algorithm. Using multiple connections with TCP means that x*y amount of data will be artificially slow, with x being the number of connections and y being the amount of data needed to transmit in order to to ramp up to full speed.

      When you combine multiple streams into one connection as SCTP does, the initial data that is sent will ramp up the speed for *all* the following data. This means that you only need y amount of data to get to full speed. This means that if you are using two streams, you get up to full speed in half the time needed with TCP, if you are using three streams, you get up to full speed in a third of the time, and so on.

      Just because it's the same algorithm, it doesn't mean you get the same results. The results are dependent upon the circumstances in which the algorithm is used.

    21. Re:How long... by hackstraw · · Score: 1

      The Internet is slowly eatting the telco business alive. As the traditional telco business market is evaporating.

      Not really. Its changing, most all of the backbone internet providers are telco people: Sprint, AT&T, MCI, Verizon. At my house, my telephone comes from my cable TV and internet provider. Many companies do this: Time-Warner cable, Comcast, and Cox.

      I would say the telco business is alive and well.

    22. Re:How long... by KiloByte · · Score: 1

      Well... if you say that, I envy you the ISPs around the place where you live.

      I don't even dream about IPv6 support upstream -- the place where 192.88.99.1 gets routed to is... Switzerland (and I'm in Poland). Fortunately, at least prot 41 is not blocked.

      While not terribly clueful about networking myself, I'm the guy who gets called by two of four local ISPs when they want any non-trivial changes to their firewalls -- so, I at least made them provide what IPv6 could be done, and I'm making sure the firewalls do what they are supposed to do (egress, etc) but are not too strangling -- ie, they block TCP/UDP 137-139, 445, and everyone who exceeds 100 SYNs on 25 in a hour.

      However, myself I'm forced to use a monopoly ISP at home. Quality of service? Since over a month, I get pings of 400-600 at the first hop between around 14.00-23.00. NO, I'M NOT SHITTING YOU. Customer service? "Everything works correctly on our side". Choice? Well, I can push the local ISPs I'm helping to connect me, it will take just two towers to get to my place.

      With the upstream ISP/telco fixing things like a total outage in a timeframe of month or two, there is no way you can get an exotic service like having a protocol other than "Internet browsing" unblocked.

      --
      The creatures outside looked from Alt-Right to Antifa; but already it was impossible to say which was which.
    23. Re:How long... by ArsenneLupin · · Score: 1

      Smart of you to post as an AC. No risk of spoiling a perfectly good Nick there...

    24. Re:How long... by sjames · · Score: 1

      That sounds like a pretty bad situation, but I'll still bet you could get SCTP/IP easier that IPv6 since v6 would require them to actually spend money and perhaps replace old routers. SCTP/IP requires only that they don't block it. It may even be that they DON'T block it since they probably haven't even thought about it. To a router, it's just an IP packet with an unusual protocol number.

      I don't even dream about IPv6 support upstream -- the place where 192.88.99.1 gets routed to is... Switzerland (and I'm in Poland). Fortunately, at least prot 41 is not blocked.

      I'm in Georgia (U.S. state) and 192.88.99.1 ends up in Sweden!

    25. Re:How long... by DrSkwid · · Score: 1

      lol, that's like saying that Mandarin is backwards compatible with Arabic, all you need is two phrase books.

      --
      There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
    26. Re:How long... by Bobsledboy · · Score: 1

      The difference being that network addresses are actually easy to translate with a computer.

    27. Re:How long... by FireFury03 · · Score: 1

      In the future there will no need for a central office, all calls will NOT route through central servers and thus negate a heavy need for sctp altogether! sctp is like a T1-T2-Txxx to sockets, allowing n channels of calls through one IP connection. If VoIP (not strictly defined) goes point to point direct there is no need for a central office. End user devices only need 1 to 4 channels. (Audio/Video/Control/MP3 Movies).

      I can't see that doing peer-to-peer VoIP negates the need for SCTP.

      1. SCTP provides reliable ordered datagram delivery - this is something required for signalling between nodes participating in the call (whether they be a central office or two peers). You can do it over TCP but that means you have to put in your own datagram delimiters. For example, SIP (much like HTTP) sends "datagrams" as lines of ASCII with each datagram delimited by \r\n. SIP (and indeed HTTP, and many other protocols) would benefit from the protocol not destroying datagram boundaries so that they didn't need to delimit the datagrams themselves.

      2. SCTP provides an unordered datagram delivery - this is required for passing real time traffic (voice, video, etc). RTP over UDP is commonly used for this purpose but it makes more sense to build this functionality into the transport protocol itself since it's a commonly used feature.

      3. Just because you don't need hundreds of streams doesn't negate the usefulness of the multi-stream support. And I think you underestimate what streams could be used for peer-to-peer phone calls: signalling, voice, video, application sharing (think NetMeeting style stuff, and you could well have multiple applications all using separate streams at once), electronic whiteboard, etc. Even stuff like SSH could benefit from this, allowing you to tunnel several connections in separate streams.

      4. Explicit multihoming support would benefit a lot of applications, not just telephony (although I question whether this should be addressed in IP itself rather than a transport layer protocol)

      I agree with you that the future of telephony is largely peer-to-peer, I still believe there will me large "central offices" running services. For example, in the same way as most people rely on their ISP to hold on to incoming mail when they're offline, many will probably rely on their ISP (or some other service provider) to do their voicemail, etc. Also, I don't expect businesses to stop having central PABXs and they qualify as potentially large central offices (and in a large organisation with a large number of offices it's quite likely that there will be several inter-connected PABX systems).

      *disclaimer: I work in SS7 and SCTP software development.

    28. Re:How long... by FireFury03 · · Score: 1

      but it is too easy for 99% of the world to just open 2 sockets if you want 2 streams, or rpc's and threads... both of which are well supported and seasoned.

      Except that doing NAT traversal is a pain in the arse so if you're having to traverse NATs (which most IPv4 peer-to-peer stuff needs to) then you may as well only do it once and then use the same connection ("association" in SCTP speak) for everything.

      Also, there is a certain amount of overhead (time) required to set up a TCP connection. If you already have an SCTP association it's fast to use the multi-streaming support.

      Another advantage is that SCTP has a much less abusable handshake system - it eliminates the SYN flood vulnerability that TCP has (which has only partly been mitegated through the introduction of TCP SYN cookies).

      Sctp is new, new bugs, not supported everywhere and as a result will go not go far.

      Not really new - it's been in use in major telephony networks for years. However, you're right that it isn't supported everywhere - typically, native support in Windows is years away... exactly as it's been for every other networking protocol (remember that IPv6 didn't appear in Windows until XP whereas everyone else had supported it for years previously... and IPv4 didn't appear until Windows 95 but everyone else had supported it for years previously. Microsoft originally wrote off the Internet as a fad and refused to put development time into supporting it.)

    29. Re:How long... by DrSkwid · · Score: 1

      *sigh*

      Have you even read DJB's critique of IPv6 that I linked to ?

      --
      There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
    30. Re:How long... by stewrtrs · · Score: 1

      Hmm.. for working with SCTP I am surprised you think of it only as something for telco land. I guess it must be the fact that you were at NorTel at the time since it is so much telcom minded... yes I worked at BNR at one time or another so I understand :-D SCTP it is true is used in SS7 or IP.. but it was designed as something beyond that.. aka a replacement for TCP. Will it ever reach that level.. don't know.. Will other apps ever use it? I think so.. but it takes time.. just like TCP itself took time to become available in lots of different places R

    31. Re:How long... by Skreems · · Score: 1

      I did, in fact. He complains that it does no good for companies to multi-head websites on IPv4 and IPv6 addresses, because customers won't use the IPv6 version. Unfortunately, this is bogus. I can set up my entire home network today running IPv6 behind a NAT. Since the entire IPv4 address space is a subset of IPv6, I can run a compatibility layer that maps the two. When a remote site has an IPv6 address, I use that, and when they don't, I use the mapped IPv4 address. When outside sites talk to me, they see my IP as the IPv4 address I'm assigned, but I see myself named as the IPv6 mapped version of that address. And there you go; I'm all IPv6 and can still talk to the rest of the world just fine. I don't do this personally because, well, I just don't care. I'm lazy that way. But if someone snuck into my house in the middle of the night and set it up for me (say, Microsoft, in the next monthly update) I doubt I would notice, and I know grandma wouldn't. In addition, there are plenty of people who do run this way today, and it works just fine for them.

      --
      Slashdot needs a "-1, Wrong" moderation option.
      The Urban Hippie
    32. Re:How long... by DrSkwid · · Score: 1

      IPv4 is NOT a subset of IPv6

      --
      There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
    33. Re:How long... by Skreems · · Score: 1

      Right, but IPv4 can be TREATED as a subset of IPv6 and it works. I.E. 129.186.0.1 becomes 00:00:00:00:81:BA:00:01, or whatever their weird format is. All you have to do is treat those two the same, and bam, instant interoperability. And this isn't just a theory, people are running networks using this already.

      --
      Slashdot needs a "-1, Wrong" moderation option.
      The Urban Hippie
  2. Goodbye TCP? by BadAnalogyGuy · · Score: 3, Insightful

    The article makes SCTP sound like it's the greatest thing since sliced bread. It's as fast as UDP, reliable as TCP, and is not susceptible to SYN floods like TCP. It's amazing! It's the fastest, it's the quickest, it's the best!

    Really?

    1. Re:Goodbye TCP? by Jonner · · Score: 3, Insightful

      It sounds to me like SCTP was designed to allow the same capabilities as both TCP and UDP within the same protocol. The designers had the benefit of seeing the advantages and disadvantages of both protocols over the many years of application implementation. Using SCTP won't necessarily make any particular application better than it could be done with either TCP or UDP or a combination of two, but it will probably make the implementation simpler and easier, especially when you would otherwise need to use both TCP and UDP in the same application or when you need failover.

    2. Re:Goodbye TCP? by canuck57 · · Score: 1

      not susceptible to SYN floods like TCP

      Init and cookie floods instead, the basic problem still exists.

    3. Re:Goodbye TCP? by skayell · · Score: 1

      Maybe if someone would CLEARLY delineate the specific problems this protocol is meant to address and then explain exactly what the benefit is, instead of just doing a lot of comparisons without a benefit analysis, non-geeks like myself could get the gist of what they're trying to say.

      Disclaimer: I'm not a geek, but some of my best friends (and relatives) are.

    4. Re:Goodbye TCP? by Anonymous Coward · · Score: 0

      someone's been watching Dangermouse.

    5. Re:Goodbye TCP? by KDR_11k · · Score: 2, Informative

      The SYN flood happens because the server has to keep track of the connection until it times out and there's a limit to the number of connections the server can keep track of, with the cookie method the server gets an INIT, sends out the cookie and forgets about the connection. Only when that is returned the server opens a connection. Sure, you could go through the proper protocol for starting the connection but that forces you to tell the server the real IP of your DoSing client instead of putting a number of fake IPs in there. The server could just start ignoring your client for a while and your DoS has failed.

      --
      Justice is the sheep getting arrested while an impartial judge declares the vote void.
    6. Re:Goodbye TCP? by BigCheese · · Score: 1

      I can see this being useful for simplifying WAN services if you deal with a provider that charges per port through the firewall (hello SAVVIS).
      I work in financial data delivery. There are lot's of ways SCTP could make life easier.
      I don't see it replacing TCP for HTTP, FTP, etc. but for large scale one to many multiple source streaming applications it would be very useful.

      --
      The obscure we see eventually. The completely obvious, it seems, takes longer. - Edward R. Murrow
    7. Re:Goodbye TCP? by ArsenneLupin · · Score: 1
      I don't see it replacing TCP for HTTP, FTP

      Dude, FTP is an application-level protocol(runs on top of 2 TCP connections).

    8. Re:Goodbye TCP? by LilGuy · · Score: 1

      This will make those of us who host and manage firewalls easier... one less little click in the netscreen, 50% more efficiency.

      --

      You're nothing; like me.
    9. Re:Goodbye TCP? by blofeld42 · · Score: 1

      You wouldn't want to use SCTP to replace some UDP applications. Eg, FPS game state packets. If a packet got dropped you'd have to go through detection and resend, and it wouldn't matter because you'd have more recent game state by then, anyway.

    10. Re:Goodbye TCP? by stewrtrs · · Score: 1

      No, it just offers another set of features that SOME applications might find useful. Does it overlap with TCP, yes.. since you can change ANY TCP app to use SCTP with minimal changes. Will all TCP want to migrate to it.. I doubt it.. it really depends upon if there are advantages to it. Besides M$ has not yet seen a business need for it... I have often wondered why they did not jump on the band wagon.. since they can do all sorts of neat extensions that would be "proprietary" and I could just see them not releasing any documentation on there extensions.. In a way this is a good thing, since it gets the stack pretty much in place so that M$ can't bully there way in and push out linux/BSD et.al... As to if it is faster, well if you are using the linux version nope not yet.. since the peformance work as not gotten very far yet... the stack is stable but does not perform well... yet.. I believe that the lk-sctp folks know this and are working on it.. (at least I hope they are :-D) R

    11. Re:Goodbye TCP? by Jonner · · Score: 1

      Yeah, you're probably right that an application that doesn't need reliable message delivery would get unnecessary overhead with SCTP and should probably stick with UDP.

  3. multihoming? by Loconut1389 · · Score: 2, Interesting

    Multi-homing with a builtin heartbeat? Youd need a routing table the size of the planet if you wanted to do that over the backbone infrastructure- not to mention gigabytes of wasted bandwidth. Did I miss something?

    1. Re:multihoming? by Jonner · · Score: 1, Redundant

      Yes, I think you did miss something. Why would hearbeat require a bigger routing table? Perhaps you're confusing multi-homing with multicasting. And who's this Youd character?

    2. Re:multihoming? by isj · · Score: 5, Informative

      I don't know if you missed something - I didn't RTFA.

      Heartbeats are optional. Some real-time applications probably want to use heartbeats every 10 seconds, while other can disable them completely.

      The multihoming has nothing to do with routing table size. The multihoming feature is used for providing better connectivity.
      Imagine your laptop with WiFi. If the application (say, FTP download) used SCTP instead of TCP then the download would not break when your laptop moves from one access point to another and switches ip-address. SCTP survives that.

    3. Re:multihoming? by romiz · · Score: 5, Informative

      Did I miss something?

      This is an transport layer, not a network layer. It is only necessary in endpoints, such as clients and servers, and it might be a good thing if firewalls understood it. But the routers don't interpret it, so there won't be any change on backbones, except a slight increase in traffic with a few more keep-alive packets.

    4. Re:multihoming? by The+Cisco+Kid · · Score: 1

      The 'multihoming' they are referring to is an entirely different beast than the 'BGP multihoming' you are thinking of. They are just talking about when a box has two interfaces, each with a different IP address. TCP forces a connection to be bound to a specific interface, this SCTP doesnt. There are no changes to the network IP routing functions. (The remote end sends to the other IP, the network doesnt route the first IP to the second network)

      Its an unfortunate re-use of the same term.

    5. Re:multihoming? by TemporalBeing · · Score: 1

      The multihoming has nothing to do with routing table size. The multihoming feature is used for providing better connectivity. Imagine your laptop with WiFi. If the application (say, FTP download) used SCTP instead of TCP then the download would not break when your laptop moves from one access point to another and switches ip-address. SCTP survives that.

      It would only survive it if both networks were simultaneously connected. If, however, you were only connected to one network at a time, it would still fail if that network connection (e.g. satellite) failed.

      It might be a little more resilient in that it has automatic routing built-in to switch to another network segment, but if there is no other network segment, it will still fail.

      --
      Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
    6. Re:multihoming? by Anonymous Coward · · Score: 0

      What is *really* needed, especially in mesh networks, is the ability to actively add new host addresses to an existing stream and switch to them, in essence untying the protocol from the IP layer. I don't know if SCTP does this, but it will be a necessity when everyone's running open wireless APs in a mesh.

    7. Re:multihoming? by Anonymous Coward · · Score: 0

      you _need_ mobile ip for that. however, even though the protocol for both mobile ipv4 and ipv6 has been there for over 5 years now, no
      real deployment exists because of lack of business models - that is no one really knows how to make money out of it...

    8. Re:multihoming? by ArsenneLupin · · Score: 1
      Imagine your laptop with WiFi. If the application (say, FTP download) used SCTP instead of TCP then the download would not break when your laptop moves from one access point to another and switches ip-address.

      This only works when all potential ip-addresses of your laptop are known at the start of connection (example: one cabled IP address, and one (fixed) Wifi address).

      Indeed, list of addresses is included in the init chunk, and not updated later.

      In the case of "roaming" where you get a different, dynamic, DHCP-assigned address at each access point, it won't work.

    9. Re:multihoming? by Loconut1389 · · Score: 1

      This is the reply I was looking for! Thank you.

      Anyway, yes, I was envisioning some router on the backbone having multiple interfaces and the rest of the internet trying to keep track of all of the paths with keep alives (yuck!).

      When I asked if I missed something, I was truly looking for more information. Apparently, I lack the understanding of how BGP actually works, is it in TCP/UDP layer or the IP layer?

    10. Re:multihoming? by ratatask · · Score: 1

      yes. Wtf are you babbeling about ?
      Multihoming is for connecting to one host/entity that has interfaces on several
      networks.
      You don't normally find hosts with enough legs it warrants your "size of the planet" routing table.
      Heartbeats can be turned off, but they make sense for many applications anyway.

    11. Re:multihoming? by Loconut1389 · · Score: 1

      multi-homing originally meant being connected to more than one backbone. Regular folks started applying the term to their desktops. I'm talking about the network core, thus the first part of my post.

    12. Re:multihoming? by The+Cisco+Kid · · Score: 1

      BGP is just a way for two adjacent routers to exchange their routing prefixes. It isnt 'part' of IP itself. The two routers must have static/fixed IP connectivity between them already which is itself not dependent on the BGP routes. As far as the actual protocol iself, it runs over TCP. BGP is something that can take a while to wrap your head around, but once you've figured it out it makes perfect (well ok almost perfect) sense.

      FMI see http://www.faqs.org/rfcs/rfc1771.html

  4. Credit where due by msobkow · · Score: 0
    While the protocol was originally designed for telephony signaling...

    In other words, it started out in the hands of AT&T, Bell Labs, Northern Telecom, Alcatel, et. al.

    --
    I do not fail; I succeed at finding out what does not work.
    1. Re:Credit where due by Saven+Marek · · Score: 1

      > it started out in the hands of AT&T, Bell Labs, Northern Telecom, Alcatel, et. al.

      Both are also monopolists if you might notice.

    2. Re:Credit where due by tpgp · · Score: 2, Informative
      While the protocol was originally designed for telephony signaling...
      In other words, it started out in the hands of AT&T, Bell Labs, Northern Telecom, Alcatel, et. al.

      Utterly incorrect.

      If you had only taken ten seconds to check wikipedia's sctp page you would have found it was developed by the Internet Engineering Taskforce's SIGNTRAN working group.

      The IETF is an open, all-volunteer standards organization and couldn't be further in spirit from the monopolies you mention.

      Give credit where it is due indeed.

      (oh and this protocol was defined in 2000 - far later then the telephone signalling I suspect you're thinking of)
      --
      My pics.
    3. Re:Credit where due by Anonymous Coward · · Score: 0

      Telcos are greedy bastards, so who gives a fuck. Now mod this insightful.

    4. Re:Credit where due by Anonymous Coward · · Score: 0

      From the RFC:

      Network Working Group L. Ong Request for Comments: 3286 Ciena Corporation Category: Informational J. Yoakum Nortel Networks May 2002. Nortel and Ciena are responsible; sorry about the poor formating; junk filter has gotten in the way.

      Just has to be said; check out SS7; there is a lot to learn that could be applied to the world of switching and routing.

    5. Re:Credit where due by msobkow · · Score: 1

      It's a matter of semantics. From the wiki you mention:

      The SIGTRAN group was significantly influenced by telecommunications engineers intent on using the new protocols for adapting VoIP networks...

      In other words the engineers on the telco's payroll's did the work under the auspices of a standards body instead of eacy vendor creating their own incompatible mess.

      Truly the behavior of monopolists, daring to work together!

      --
      I do not fail; I succeed at finding out what does not work.
    6. Re:Credit where due by chriscappuccio · · Score: 1

      What, it's not the IVTF anymore?

      (V-endor)

    7. Re:Credit where due by stewrtrs · · Score: 1

      AT&T and Bell Labs was never part of SCTP development. It was developed in an IETF working group and used MDTP as the base of the protocol (which came from Motorola by the way) .. which of course changed much over the development of the spec... It contains the contributions of lots of folks including Vern Paxson and Lixia Zhang.. R

  5. INIT floods by gordonb · · Score: 1, Interesting

    From the article:

    The problem that can occur with TCP is when a rogue client forges an IP packet with a bogus source address, then floods a server with TCP SYN packets. The server allocates resources for the connections upon receipt of the SYN, then under a flood of SYN packets, eventually runs out and is unable to service new requests. This is called a Denial of Service (DoS) attack.

    SCTP protects against this type of attack through a four-way handshake and the introduction of a cookie. In SCTP, a client initiates a connection with an INIT packet. The server responds with an INIT-ACK, which includes the cookie (a unique context identifying this proposed connection).

    It seems that that you could still have DOS attacks based on INIT floods. The client has to open a socket, generate a cookie (slight increase in computing overhead), and then listen. I see no intrinsic mechanism to eliminate these types of attacks. Technicaly, they would not be SYN floods, but INIT floods.

    This is about as useful a distinction as Bush apologists denying he was warned that the levees would be breached because the tapes show him being warned that the levees would be overtopped.

    1. Re:INIT floods by KiloByte · · Score: 4, Insightful

      Wrong. A connection with a forged source address won't take any more resources than a single incoming packet, a single outgoing packet and the CPU cost of computing a cookie. That's all.

      Flooding using the flooder's true address will still work, but it is trivial to block. Sure, having 100000 zombies flood a single destination will put quite a burden and will force the floodee to maintain a huge list of banned addresses, but, a single hash table on the router will alleviate anything except for bandwidth wasted.
      This is same as a full TCP connect() flood.

      There is a TCP hack named "syn cookies", but this doesn't work very well as TCP wasn't designed to be resistant to SYN floods.

      --
      The creatures outside looked from Alt-Right to Antifa; but already it was impossible to say which was which.
    2. Re:INIT floods by Jonner · · Score: 4, Informative

      Read about SYN Cookies. This is a method of avoiding SYN DOS attacks that has already been implemented in Linux (and probably elsewhere) for a while. I think SCTP just integrates the same concept into the official protocol specification. Once the SCTP server sends the INIT-ACK, it doesn't have to keep track of that association until the client sends a COOKIE-ECHO.

    3. Re:INIT floods by lagfest · · Score: 5, Insightful

      lets change the quote scope a little:

      SCTP protects against this type of attack through a four-way handshake and the introduction of a cookie. In SCTP, a client initiates a connection with an INIT packet. The server responds with an INIT-ACK, which includes the cookie (a unique context identifying this proposed connection). The client then responds with a COOKIE-ECHO, which contains the cookie sent by the server. At this point, the server allocates the resource for the connection and acknowledges this by sending a COOKIE-ACK to the client.

      Funny how things suddenly makes sense when you read the entire paragraph.

    4. Re:INIT floods by lemonjelo · · Score: 1

      So what is it about tracking unique contexts via cookie that is less prone to abuse than tracking half-open connections on the server?

      --

      pimtamf
    5. Re:INIT floods by lagfest · · Score: 5, Informative
      Who says you have to track the cookies? Just make a hash of the client's ip address, port, and a key that changes every 20 seconds. Now you only have to save a history of the three latest keys.

      In fact, that's pretty close to how it's done according to SCTP for beginners
      The server receives an association setup request (an INIT chunk) usually in the CLOSED state, and analyzes the data contained in that chunk. From that it generates all the values needed at its side to enter an established association, and generates a secure hash of these values and a secret key (e.g. with the MD5 or SHA-1 algorithms). The values are then put into the so-called COOKIE, along with the derived message authentication code (MAC). This COOKIE is returned to the sender of the INIT chunk in an INIT-ACK chunk. The server remains in the CLOSED state, and forgets all about the received INIT chunk.
    6. Re:INIT floods by lemonjelo · · Score: 1

      wish I could mod that up

      That's along the lines of what I assumed, but didn't see it in the article and it wasn't clear in the paragraph quoted. Thanks!

      --

      pimtamf
    7. Re:INIT floods by Tim+C · · Score: 0, Offtopic

      This is totally off-topic, but in response to your analogy, surely the levees being overtopped would have resulted in a lot less water and therefore much-reduced flooding? I'm no fan of Bush, but it seems logical to me to worry less about over-flowing than an outright breach (but then, I'm also not a hydro-engineer).

    8. Re:INIT floods by Theatetus · · Score: 1

      The server still has to compute and store the cookie (caveat: I have no idea how computation / storage intensive the cookie is; I'm mostly speaking theoretically here). So, what happens if I forge INIT blocks from 10 IP addresses? 100? 1000? If this raises the bar of forged INITs required to DOS, great, but it doesn't seem right to say it's immune from the analogous attack to the SYN flood (ie, in either case you can consume server resources while hiding your true IP address). It's just that now the question is how long until the cookie buffer / ring / heap / whatever gets full rather than how long before too many connections get allocated.

      And what does the SCTP stack do if I send it an unsolicited stage 2, stage 3, or stage 4 message from the handshake? Or sent an unsolicited SCTP FIN?

      --
      All's true that is mistrusted
    9. Re:INIT floods by Jonner · · Score: 1

      If you read section 5.1.3 of RFC 2960 (SCTP), you'll see that not only is the server not required to remember anything about a received INIT, but that, "After sending the INIT ACK with the State Cookie parameter, the sender SHOULD delete the TCB and any other local resource related to the new association, so as to prevent resource attacks."

      That means that just like when the server is using SYN cookies with TCP, an attacker would have to fully open a connection/association to attempt a DOS attack. An invalid cookie sent with in a COOKIE ECHO is simply ignored.

    10. Re:INIT floods by bunco · · Score: 1

      Go look at implementation details.

      The cookie is something that's easily computed based upon tuple information and a rotating key. All that needs to be remembered is key history. These cookies would not solve anything if they too were resource tied.

      Anything that's sent out of state (i.e. not part of an established connection) would be dropped. Hopefully SCTP implementations handle this better than old TCP implementations did.

    11. Re:INIT floods by Theatetus · · Score: 1

      And I assume the cookie can be reconstructed based on the remote IP and the known key? I guess that makes sense, so any flood attack would have to compromise the key sequence. Could be an interesting attack to work on.

      --
      All's true that is mistrusted
    12. Re:INIT floods by drwho · · Score: 1

      Hrm, I wonder how well SCTP would fare under a Naptha (http://www.cert.org/advisories/CA-2000-21.html) type attack. Perhaps I should test it and find out. A good way to kill an afternoon...

    13. Re:INIT floods by stewrtrs · · Score: 1

      SCTP's method is a bit beyond the TCP method for a number of reasons: 1) TCP has limited cookie information it can use without actually storing something on the server side, which you do NOT want to do. 2) SCTP can put all sorts of stuff within its COOKIE and then sign the cookie with whatever it wants to (usually MD5 or SHA-1). If the sender wants it can even encrypt the cookie. 3) SCTP has a 4-way handshake that helps with the whole thing where as TCP still only gets a 3-way handshake.. So no, TCP's cookie mechanism is not per-se a clone of TCP.. it takes some of the ideas from Simpson's early work in this area for sure but it is not much like TCP :-D R

    14. Re:INIT floods by Jonner · · Score: 1

      Yeah, that's pretty much what I was trying to say, though you gave some more details. TCP SYN cookies are limited because they are not an official part of the protocol, but a hack added in implementations. As you say, SCTP's cookies are more advanced, but must be at least partly inspired by TCP SYN cookies.

  6. WOW! by jav1231 · · Score: 3, Funny

    Second City Transport Protocol!? John Candy would be proud!

    1. Re:WOW! by Anonymous Coward · · Score: 0

      So where are the DRM features, and the link with trusted computing and remote attestation?

      I know, I know, this may well be a fine new protocol without any ulterior motive behind its design... but I'm getting used to "new" protocols turning out to be old protocols that have been crippled and broken with DRM features. So I had to ask.

  7. No by Anonymous Coward · · Score: 0

    It is nothing that wasn't already being done with UDP already. So they could have just put that into a library api and that would be that. Putting it into the protocol stack just means part of it now runs out of interrupt handlers to improve performance. But putting more stuff into interrupt handlers slows down everything else. Which means even more stuff being moved into the kernel and interrupt handlers. More crap mostly since it's such an easy and cheap way to boost performance rather than figure out how to do it properly anyway.

    1. Re:No by tajribah · · Score: 1
      Well, such arguments don't say much – everything you can do over IP, you can do over UDP. You can implement SCTP over UDP, as well as you can do TCP over UDP. However, that doesn't mean it makes sense to do so :)

      People are already doing similar things over UDP for years and in the vast majority of cases they get it wrong (poor performance, broken congestion avoidance algorithms and so on). That seems to suggest that the problem is not so trivial as it looks and that it makes sense to finally find a good solution and standardize it.

    2. Re:No by psmears · · Score: 1
      But putting more stuff into interrupt handlers slows down everything else.

      Why do you assume that this is the case? Leaving aside the many other arguments against putting more work into interrupt handlers: the interrupt has to occur either way (to get the packet from the network), and the protocol processing has to take place either way (because we want to support the protocol!), but if you do the work inside the interrupt handler, there's no need to take the time to notify another process/kernel thread/whatever—so fewer CPU cycles are used in total. So everything else goes faster. (As well as being less modular, more prone to crash, etc, etc...)

  8. Cool thing by Ulrich+Hobelmann · · Score: 1

    This is what I always wanted, but never had the time or resources to develop...

    Ok, remains to be seen if it gives any real, measurable advantage in practice.

    1. Re:Cool thing by autOmato · · Score: 2, Insightful

      This is what I always wanted, but never had the time or resources to develop...

      What for? Could you give a specific example of an application where such a protocol would be needed? (That is where using TCP or UDP would require a severe overhead in the application layer.)

      If you have always wanted such a protocol, you certainly must have had a specific use in mind.

    2. Re:Cool thing by Ulrich+Hobelmann · · Score: 1

      Well, as they mention, TCP is stream-based, so if you want to transmit message chunks, something more like UDP is cool. OTOH, UDP isn't safe, so you'd have to implement half of TCP anyway (re-transmit, maybe sequence numbers and windows). I just never felt like it.

      I also like their other examples, with the improved SCTP connection mechanism (with the cookie), and the simpler hangup one.

      Don't get me wrong, TCP is cool, and for most (line-oriented) internet protocols just great, but SCTP seems better designed and cleaned up, i.e. a little bit more mature.

    3. Re:Cool thing by autOmato · · Score: 1

      UDP isn't safe, so you'd have to implement half of TCP anyway (re-transmit, maybe sequence numbers and windows)

      Unless, of course, you don't care in which order you receive your datagrams or whether some got lost on the way.

      Anyway, I wasn't trying to say that I think SCTP is crap or unneccessary or anything. It's just that I can't come up with a concrete situation, where SCTP would be the perfect protocol to use. Since you said SCTP is a protocol you have always wanted, I assumed you had a specific application in mind where UDP+Reliability or TCP+Frames would be the way to go but a hassle to implement.

    4. Re:Cool thing by Ulrich+Hobelmann · · Score: 1

      No, nothing specific, but I like messaging architectures, for instance, and de/serializing everything so it can go over a normal stream socket is a bit annoying. At least if you do it in one process with threads you can skip the whole thing (just pass a pointer to a structure).

  9. Re:What's not said by jhermans · · Score: 3, Informative

    That's total bullshit. MS has nothing to do with this. In fact, no-support of SCTP in MS operating systems will be thee biggets hurdle for the introduction. It's *Linux* that is driving ther adoption !

    Disclaimer: I'm using SCTP in my job for several years now.

  10. Services file? by TallMatthew · · Score: 1
    Does this mean all the IANA ports are now open for SCTP?

    Please add the following to your /etc/services:

    tallmatthew 25/sctp

    1. Re:Services file? by Anonymous Coward · · Score: 0

      Well, not /etc/services, but it's in /etc/protocols already... =)

  11. RTFP by Anonymous Coward · · Score: 0

    I *said* you could standardize the solution by putting it into a library api. But you seem to think for some reason it *has* to go into the kernel in order to become standard. It doesn't.

    1. Re:RTFP by tajribah · · Score: 1

      Networking protocols with proper congestion control usually require precise timing, which is much harder to achieve in user space. The same case as TCP.

  12. Re:Linux to Linux by Anonymous Coward · · Score: 0

    "SCTP [...] has found its way into all major operating systems including GNU/Linux, BSD, and Solaris. It's also available for the Microsoft® Windows® operating systems as a third-party commercial package."

  13. SCTP vs TCP benchmarks by Anonymous Coward · · Score: 5, Informative
    1. Re:SCTP vs TCP benchmarks by six · · Score: 2, Interesting

      Interestingly, SCTP falls behind TCP in the majority of cases (more latency, less bandwidth).

      The exception being the HTTP tests, where I guess they used only one tcp connection to the server with no keepalive (something that no web browser would do in the real world, most opening 2 or 4 tcp connections with keepalive).

      I can't see a real advantage of multi-stream SCTP over multiple TCP connections ... Someone in the know care to elaborate ?

    2. Re:SCTP vs TCP benchmarks by AnonymousPrick · · Score: 1
      Interestingly, SCTP falls behind TCP in the majority of cases (more latency, less bandwidth).

      You've brought up a question I have. I see SCTP can handle more than one stream, but what's the effect on the underlying hardware layer? In other words, you have multiple streams going at once; wouldn't that just divide up the bandwidth you have?

      --
      Saturday is April 1. Slashdot will be shut down. Sorry for the inconvenience.
    3. Re:SCTP vs TCP benchmarks by amorsen · · Score: 5, Funny
      In other words, you have multiple streams going at once; wouldn't that just divide up the bandwidth you have?

      What would you like it to do, magically go faster than the bandwidth you have?

      --
      Finally! A year of moderation! Ready for 2019?
    4. Re:SCTP vs TCP benchmarks by AnonymousPrick · · Score: 1
      What would you like it to do, magically go faster than the bandwidth you have?

      Other than possibly making multistreaming network software easier to develop, what's the point of SCTP?

      --
      Saturday is April 1. Slashdot will be shut down. Sorry for the inconvenience.
    5. Re:SCTP vs TCP benchmarks by ROOK*CA · · Score: 2, Interesting

      I can't see a real advantage of multi-stream SCTP over multiple TCP connections ... Someone in the know care to elaborate ?

      Good question

      Perhaps this provides a bit of insight: From the article:
      "Multi-streaming is an important feature of SCTP, especially when you consider some of the control and data issues in protocol design. In TCP, control and data typically share the same connection, which can be problematic because control packets can be delayed behind data packets. If control and data were split into independent streams, control data could be dealt with in a more timely manner, resulting in better utilization of available resources."

      I suspect (although it's not explicitly stated) that SCTP multi-streaming offers less resource consumption of the end points than multiple TCP connections do.

    6. Re:SCTP vs TCP benchmarks by ROOK*CA · · Score: 2, Insightful

      What would you like it to do, magically go faster than the bandwidth you have?

      I think the point is to use what you have more effeciently, if real "bandwidth" is measured as the transfer rate of actual payload from point A to point B, then using it more effeciently (less overhead) does actually increase "bandwidth", not magic but it does allow me to go "faster" than I can without utilizing those more effecient technique(s).

    7. Re:SCTP vs TCP benchmarks by the+eric+conspiracy · · Score: 1

      What I want is QTCP, quantum transport control protocol where the packets arrive at the destination without having to go through the intervening network.

    8. Re:SCTP vs TCP benchmarks by ROOK*CA · · Score: 1

      Cool, let me know when you post your project up on sourceforge, I'll be happy to help :)....btw why would you packetize the data and why would you need the "intervening network"?

    9. Re:SCTP vs TCP benchmarks by leuk_he · · Score: 1

      SCTP falls behind TCP in the majority of cases

      The why is far ore interresting. Is this a implementation that is still subtoptimal, or is this because features will cost latacey by default. (i see a 4 way handshake over a 3 way handshake will cost you a little bit more latnecy to start with)

      I can't see a real advantage of multi-stream SCTP over multiple TCP connections .
      Managememnet int the STCP protocol instead of doing that manually? Specailly if quality of service is involved? YOu can program that all manually of course, but the point is that you let the stack do it for you.

      But since there will be plenty of NAT /firewall in the way of a new protocol i would be very reluctant to use it on a large scale production site.

    10. Re:SCTP vs TCP benchmarks by the+eric+conspiracy · · Score: 1

      The intervening network is there for non-QTCP protocol support, say if you need to use Windows which doesn't implement QTCP. Packets are needed to support the quantization step.

    11. Re:SCTP vs TCP benchmarks by Anonymous Coward · · Score: 0

      I would love for it to exceed the available bandwidth. That would certainly be one way to attract new customers!

    12. Re:SCTP vs TCP benchmarks by Anonymous Coward · · Score: 0

      Dude, spellcheck! I don't mind a few typos but what you've written is practically illegible.

  14. Totally Feakin Awsome. by Anonymous Coward · · Score: 0

    TCP is totally freaking awesome. It's as fast as UDP. It's totally reliable. Only bad implementations are susceptible to SYN floods anymore. It's amazing. It's fast. It's the best. It's ubiquitous. It's mature. It's the bee's knees.

    Developers! Developers! Developers! Developers!

  15. Re:Linux to Linux by Anonymous Coward · · Score: 0

    STFU, noob.

  16. Re:Linux to Linux by alexmipego · · Score: 1

    I feel the same but thats only a question of using the right software. Gaim post 1.5 will include Video support. Current aMsn release offer you all MSN 7+ features (like handwriting, custom smiles and that thing that shakes the window) and it does support WebCams and Audio. Wait! You can still fell left behind because in fact we (Linux users) still miss many nice application only avaible to Windows and Mac users. Btw, read my my last 3 blog entries about some Linux problems: my blog

  17. FreeBSD, Darwin by Midnight+Thunder · · Score: 4, Informative

    Seems like there is an implementation for FreeBSD and Darwin (underlying OS used by MacOS X) too, according to this page.

    --
    Jumpstart the tartan drive.
    1. Re:FreeBSD, Darwin by Anonymous Coward · · Score: 0
      Fact: *BSD is dying

      It is common knowledge that *BSD is dying. Everyone knows that ever hapless *BSD is mired in an irrecoverable and mortifying tangle of fatal trouble. It is perhaps anybody's guess as to which *BSD is the worst off of an admittedly suffering *BSD community. The numbers continue to decline for *BSD but FreeBSD may be hurting the most. Look at the numbers. The erosion of user base for FreeBSD continues in a head spinning downward spiral.

      OpenBSD leader Theo states that there are 7000 users of OpenBSD. How many users of BSD are there? Let's see. The number of OpenBSD versus NetBSD posts on Usenet is roughly in ratio of 5 to 1. Therefore there are about 7000/5 = 1400 NetBSD users. BSD/OS posts on Usenet are about half of the volume of NetBSD posts. Therefore there are about 700 users of BSD/OS. A recent article put FreeBSD at about 80 percent of the *BSD market. Therefore there are (7000+1400+700)*4 = 36400 FreeBSD users. This is consistent with the number of FreeBSD Usenet posts.

      Due to the troubles of Walnut Creek, abysmal sales and so on, FreeBSD went out of business and was taken over by BSDI who sell another troubled OS. Now BSDI is also dead, its corpse turned over to yet another charnel house.

      All major marketing surveys show that *BSD has steadily declined in market share. *BSD is very sick and its long term survival prospects are very dim. If *BSD is to survive at all it will be among hobbyist dilettante dabblers. In truth, for all practical purposes *BSD is already dead. It is a dead man walking.

      Fact: *BSD is dying

    2. Re:FreeBSD, Darwin by ratatask · · Score: 1

      KAME has SCTP implementation for *BSDs

    3. Re:FreeBSD, Darwin by stewrtrs · · Score: 1

      Yep, the FreeBSD implementation comes out of the KAME project. It is in the process of being submitted to base FreeBSD and we hope to see it show up by the 6.2 release The MacOS stuff is a port of the same code (which by the way is quite good performance wise see: http://sctp.fh-muenster.de/Performance/index.html for some early results... The one problem with the MacOS stuff is we have not gotten the locking right for Tiger.. so it works great for Panther.. but we still need to do some work to get it to run properly for Tiger :-0

  18. read the RFC by darthscsi · · Score: 4, Insightful

    A while ago I read the RFC. It is very scary. Multihoming as proposed moves things like name resolution into the kernel.

    I will grant SCTP does some neet stuff, the best is that it allows independent non-mutually-blocking streams over one connection. It also has state cookies, yum.

    SCTP tries to be all things to all people in one protocol. It reads as though they just decided the whole layered protocol thing was overrated and shoved every new feature into this one layer.

    1. Re:read the RFC by hehman · · Score: 2, Interesting

      It reads as though they just decided the whole layered protocol thing was overrated and shoved every new feature into this one layer.

      I couldn't disagree more. SCTP moves a lot of things that should be done in the transport layer there, instead of making applications re-implement heartbeats and failover and message boundaries and so forth for the 1000th time.

    2. Re:read the RFC by stewrtrs · · Score: 1

      The host-name-parameter is a very ugly thing that was added to SCTP by the IESG, not by the wg or any of the authors :-0 The idea behind it, not that I have ever supported it, was to allow SCTP to get through NAT's in an multi-homed way. The problem with this is it might have been a good idea but it just can't work... at least I don't see how to make it work :-D There are far better ways of dealing with NAT's and their are drafts on these if one is interested. Now, as to this wonderful parameter. No one implements it and no one uses it. I expect it to disappear from the protocol when it goes from Proposed -> Draft standard :-D R

  19. How this compares WRT DCCP? by diegocgteleline.es · · Score: 3, Interesting

    The Linux network stack is having tons of new things lately, SCTP is one, but how it compares with DCCP, which has also been implemented and merged in Linux?

    The wikipedia assumes they share some properties, but it's SCTP a better DCCP, or what?

    1. Re:How this compares WRT DCCP? by ChristopherX · · Score: 4, Informative

      DCCP and SCTP are not very related. DCCP is an improvement on UDP - DCCP is an unreliable protocol that improves upon UDP by being aware of, and throttling back upon, network congestion.

  20. Re:Linux to Linux by diegocgteleline.es · · Score: 1

    There're many system supporting SCTP according to this page. Solaris and BSD with a external patch, for one, even there're windows implementations. But as usually, Microsoft, the "top 1" software company in the world isn't providing an implementation.

  21. Other possible future TCPs by rev_karol · · Score: 5, Informative

    There's also Scalable-TCP, High-Speed TCP, FAST-TCP, BIC-TCP, H-TCP. Each with their own advantages. Check out the site. These guys are doing interesting evaluations. H-TCP is specifically what they work on:
    TCP Evaluation Discussion
    Interesting plots too
    The end result is that TCP is not particularly suited to high-speed networks.

    1. Re:Other possible future TCPs by Anonymous Coward · · Score: 0

      Also BEEP. All of these approaches fill a particular niche; but the one thing they all have in common is that they demonstrate that quite a few network engineers have an itch they are trying to scratch. I.E. - there's room for improvement in our network protocols.

      Mostly all people care about is whether stuff "goes fast", though. So maybe if we see widespread adoption of hardware accelerated solutions then the protocols themselves may not evolve so quickly.

  22. Re:What's not said by Cal+Paterson · · Score: 1, Flamebait

    What the fuck are you on about? SCTP has nothing to do with microsoft, jackass.

  23. SCTP and IPv6 by Anonymous Coward · · Score: 0

    I think they lost a great chance here to make transitions from IPv4 to IPv6.

    A new Protokoll, based on IP, would have the chance to allow a new Socket interface. Functions could have been changed in a way, that hides the fact that you are dealing with IPv4 addresses. This would have allowed programs, that were written for SCTP, to easily transit to IPv6, without changing any of the programs code.

    Current TCP Socket interfaces expose way too much of the fact that they are IPv4 based. All addresses and structs are IPv4 based, thus a transit to IPv6 would require either a IPv4 emulation layer, or many changes to the applications.

    additionally, application designers would probably prefer SCTP over TCP or UDP, if the advantage of a easier transition was there.

    1. Re:SCTP and IPv6 by stewrtrs · · Score: 1

      SCTP allows one to have both IPv6 and IPv4 active on the same socket at the same time :-D Now we were rather ham-strung by the V6 API's as well.. you can't change everything.. so yes you end up getting addresses in AF_INET6 format up the socket.. but the cool think (at least with the BSD version) is you can get a V6 socket to give you both V4 addresses and V6 addresses.. no need to do the map to v6 (from v4) and then have the kernel unmap the thing you just mapped :-0 Unfortunately any but the mildest changes, when adding SCTP to sockets, would totaly change the socket API's.. Now, on that front, if you want to do that, you can always define a new socket like layer :-D R

  24. Re:Linux to Linux by lasindi · · Score: 4, Informative

    I may run Linux myself, but in almost everything I do on my desktop (that isn't itself Linux-related) I am interacting with non-Linux machines. I'm forever "losing out" because I can't receive MSN special features. Sure I could do webcam with what was gnomemeeting (it looks awesome) but does anyone run it? Thankfully now I have friends riding Firefox and one using Jabber (googletalk).

    But yes all my friends use windows!

    So will such features help Desktop Linux?


    Short answer: It might "help Desktop Linux" in general, but it will fix zero interoperability issues and it will do nothing to the problems you listed.

    Long answer: You need to learn a few things about network protocols, my friend. Even if SCTP, TCP or UDP had anything to do with your problems, SCTP is not implemented on Windows. Most if not all of the programs you're using use TCP or UDP, and the issues of compatibility you're experiencing have nothing to do with these protocols. The programs you mention have their own protocols that run over TCP and UDP. Seriously, go and learn how to program BSD sockets and you'll understand where TCP and UDP are in the network protocol heirarchy. Once you've done that, maybe you could help out projects like Kopete and Gaim to fix your problems.

    --
    I have discovered a truly remarkable proof of this theorem that this sig is too small to contain.
  25. Good news and bad news by UnknowingFool · · Score: 1

    I'm not geeky enough to understand what all this means but if it means net traffic will get better then I'm all for it. However, based on the responses so far, SCTP vs TCP is starting to become another vi vs Emacs, PHP vs Perl debate that all /. articles seem to follow. Won't someone please think of the packets! :)

    --
    Well, there's spam egg sausage and spam, that's not got much spam in it.
    1. Re:Good news and bad news by isj · · Score: 1

      Only if you find the Protocols of Mass Destruction.

  26. Fyi Darwin is dead by Anonymous Coward · · Score: 0

    http://ezine.daemonnews.org/200602/apple.html

    Thanks Apple! Oh and before you cry Troll about the article do some basic research on the author.

    1. Re:Fyi Darwin is dead by Midnight+Thunder · · Score: 1

      Actually Apple did release the necessary stuff, they were just late. Check the darwin-dev mailing list.

      --
      Jumpstart the tartan drive.
    2. Re:Fyi Darwin is dead by Wesley+Felter · · Score: 1

      xnu/x86 is still missing, and Apple appears to be answering all questions about it with total silence.

  27. 4-way handshake by tidewaterblues · · Score: 2, Interesting

    Can someone explain to me how the 4-way handshake is better than the 3-way handshake. I mean, sure the resource allocation has been moved down the process, but a client bent on DOS could still flood the server with INT packets and then just follow up with COOKIE-ACKs, all the while actually not allocating any resources on its side, and you would have the same end result.

    Now, if the COOKIE-ACKs required some signficiant processing (like encryption with a public key) then I could understand how this would reduce DOS potential.

    --


    ...En að Besta Sem Guð Hefur Skapað Er Nýr Dagur
    1. Re:4-way handshake by Detritus · · Score: 2, Insightful

      The denial-of-service attack will not work if the attacker uses forged source addresses, as is common with TCP.

      --
      Mea navis aericumbens anguillis abundat
  28. YAGNI !!! by nietsch · · Score: 1

    As XP says about designing ahead of time like you are doing here: You Ain't Gonna Need It. There is no point in preparing for the future, as you cannot predict the future. If it is a customer requirement it's different, but you should not waste time on reacting to things that may not happen at all. Just make sure your units are easily refactorable and have good unit test, then it will not be hard at all to change one layer. If you don't, no -prepared for everything toolkit- will save your ass anyway.

    --
    This space is intentionally staring blankly at you
    1. Re:YAGNI !!! by Anonymous Coward · · Score: 0

      Well then, good luck refactoring network protocols mercilessly once they get implemented.

  29. Does this matter with TCP/IP offload and iWarp? by soldack · · Score: 3, Informative

    For all its problems TCP/IP is everywhere. This fact has made it the networking technology to use even when it doesn't make technical sense. For example, folks use it in high performance computing and in storage (iSCSI) where there are much better methods available technically. Its commonality (along with ethernet's popularity) often make TCP/IP over ethernet the cheapest solution to many problems (while not the best).

    I used to work on InfiniBand where the reliability/congestion detection protocol (Reliable Connected and Link Level flow control in IB terms) are in hardware. This scales to 20 Gbit connections between hosts quite well. Other examples of hardware protocols include myrinet (invented by myricom) and qsnet (from quadrics) and scalable coherent interface current pushed by Dolphin Interconnect. All of these folks struggle to compete with good old TCP/IP over ethernet. Except for the parts of the HPC world, TCP/IP over ethernet wins. In the storage landscape, Fibre Channel, SAS, and SATA seem to be holding out but iSCSI sure is trying.

    The performance issue is real though and very few systems can saturate a 10 Gbit TCP/IP etnernet link without massive host CPU overhead. One solution floating around is that instead of trying to make new protocols to replace TCP, we should imitate the competition and put hard work in hardware. TCP/IP offload NICs (TOE) are becoming increasingly more popular. With RDMA technology layered on top of it you get iWARP. For storage you get iSER (ironically from an IB company!). This technology is being adopted by both the MS and Linux camps so it seems to have a good shot. In fact, many of the interfaces used by IB work about as well over iWARP cards. Things like Message Passing Interface, Direct Access Provider Library, Sockets Direct Protocol (SDP), and iSER do not know the difference between iWARP and IB or anyone else.

    Software can just post a full size message and it gets sent out the wire without copying, segmentation, timers, resends, or other CPU hogs. This kind of stuff really helps with large messages. With SDP, apps can be made to take advantage of it without changes to the application. MS is also providing a standard way for just TOE NICs without RDMA abilities to work with the OS. Linux doesn't seem to have a standardized way for TCP/IP to be offloaded entirely but is supporting RDMA and SDP.

    The things SCTP seems to offer is more explicit understanding of the difference between failure and congestion and multi-home support. This could make load balancing over multiple paths between hosts pretty interesting. The problem I see is that is that it is competing with the established TCP that now has many of its warts fixed with hardware offload. SCTP will still have the issue of a CPU handling segmentation/reassembly, massive amounts of interrupts, timer/retry overhead, etc. It also seems to have a higher overhead for connection establishment (although that is mitigated by being able to send data during the end phases). Is this a solution looking for a real problem? Pehaps not. Does this really have a chance of being taken up? I am not too confident.
    -Ack

    --
    -- soldack
    1. Re:Does this matter with TCP/IP offload and iWarp? by TubeSteak · · Score: 1
      TCP/IP offload NICs (TOE) are becoming increasingly more popular.
      Ummm... I thought that most NICs had onboard hardware to offload the processing.

      Only the win-modems/NICs (aka the cheap stuff) forced the CPU to handle all the network activity.

      Or am I missing something?
      --
      [Fuck Beta]
      o0t!
    2. Re:Does this matter with TCP/IP offload and iWarp? by dildatron · · Score: 1

      TOE cards are not becoming more popular, if anything they are losing popularity. This is due to CPUs becoming more popular, the TCP overhead is not nearly as noticable.

      --


      If you had nuts on your chin, would they be chin nuts?
    3. Re:Does this matter with TCP/IP offload and iWarp? by Nevyn · · Score: 1
      TCP/IP offload NICs (TOE) are becoming increasingly more popular. [...] This technology is being adopted by both the MS and Linux camps so it seems to have a good shot.

      Err, no. TSO (TCP Segmentation Offload -- DMA IO for the network) has been adopted by the Linux people, TOE (TCP Offload Engine -- half the TCP stack is now in hardware) has been completely rejected by the Linux people, multiple times ... and has basically zero chance of ever happening.

      The good thing, is that it doesn't help ... so noone will care.

      --
      ustr: Managed string API with ave. 44% overhead over strdup(), for 0-20B
    4. Re:Does this matter with TCP/IP offload and iWarp? by soldack · · Score: 1

      At 1 gigabit/second, I would agree that popularity is dropping. All the 1GbTOE folks are gone. At 10 Gbit, I think you still need it and I think the users are showing signs of agreement. Pushing 10 gigabit/second of TCP/IP over ethernet (1500 byte packets) will take up a LOT of CPU time even on todays boxes. I think that Intel's comments about TCP/IP "on loading" represent their failure to get a TOE NIC to really work. At one point they pushed a TOE model. I can say that the solution has to be an ASIC or FPGA based...putting in an XScale to run the TCP/IP for your P4 doesn't make sense. Most of the 10 Gbit NICs are offering TOE to compete with IB, Myrinet, and in storage FibreChannel. Hardware based solutions have shown lower overhead and lower latency then software solutions so far. Perhaps CPU speeds will catch up but network speeds have been increasing faster then CPU speeds. Of course, if you want to dedicate a main CPU core to networking you get a nice I/O processor of sorts.

      --
      -- soldack
    5. Re:Does this matter with TCP/IP offload and iWarp? by soldack · · Score: 2, Insightful

      Correct, Linux rejected TOE. But they are accepting IB, iWARP, RDMA, and iSER which essentially include the same ideas. You could argue that Linux's method for supporting TCP/IP offload is to support the RMDA APIs and then run sockets direct protocol. So while Linux doesn't support TOE, they support iWARP which includes TOE.
      -Ack

      --
      -- soldack
  30. Interesting. Not a bad idea by Animats · · Score: 4, Informative
    It's always been a bit strange that TCP, which is a streaming protocol and ignores message boundaries, is the standard for request/response message type traffic. You have to add a framing protocol on top of TCP to do messaging, which is what everybody does.

    The first attempt in the IP world to add a protocol of this type was Reliable Data Protocol, in 1984. (See RFC 908). But that never went anywhere. Since then, nobody has really addressed this. There was ISO TP4, but that didn't go anywhere either, althoug it was fully supported in Windows NT.

    SCTP has reasonable congestion behavior, like TCP, so it's an improvement over UDP-based protocols in that regard. Moving some UDP-based protocols to SCTP could be a step up. That's where it could be most useful. It might make sense to put remote procedure call type protocols that now use UDP onto SCTP. If a protocol has to do retransmission, it's better to do it at the transport layer than at the application layer.

    The "multihoming" thing seems badly placed, because that's not properly a transport layer function. But I haven't really looked at that.

    John Nagle

    1. Re:Interesting. Not a bad idea by certsoft · · Score: 1
      SCTP has reasonable congestion behavior, like TCP, so it's an improvement over UDP-based protocols in that regard. Moving some UDP-based protocols to SCTP could be a step up. That's where it could be most useful. It might make sense to put remote procedure call type protocols that now use UDP onto SCTP. If a protocol has to do retransmission, it's better to do it at the transport layer than at the application layer.

      It would have been nice if SCTP would have been widely available when we were designing protocols for a new seismic recording system back in 1998. We ended up using two UDP ports at each end, one for control and one for data. Each one uses a header on top of UDP that provides 32bit CRC over the header and payload as well as 16 bit packet sequence/acknowledge values and packet subtype information. Data is in a sliding window of up to 128 packets with selective acknowledgements coming back from the receiver. Sounds like we could have gotten similar features with one SCTP connection.

    2. Re:Interesting. Not a bad idea by Anonymous Coward · · Score: 0

      The "multihoming" thing seems badly placed, because that's not properly a transport layer function. But I haven't really looked at that.

      I think multihoming would be much more useful if addresses could be added dynamically. Switching to a new access point? Add your new address to the session and continue it uninterrupted.

  31. Overzealous security admins by typical · · Score: 1

    That's great, as long as you're the only one that uses your network.

    What sucks is when some pompous asshat says "no, I can't provide you with a mechanism to accept incoming connections" or "no, you can't open an outgoing ssh connection".

    --
    Any program relying on (nontrivial) preemptive multithreading will be buggy.
    1. Re:Overzealous security admins by ROOK*CA · · Score: 2, Insightful

      That's great, as long as you're the only one that uses your network.

      What sucks is when some pompous asshat says "no, I can't provide you with a mechanism to accept incoming connections" or "no, you can't open an outgoing ssh connection".


      I feel your pain, however I've found that it makes sense use a simple formula when evaluating an end user request to allow XYZ traffic to traverse a firewall(s) on my organizations network, 1. Is there a business need for it or is it just a user saying "oh this would be nice to have" 2. Is there a more secure and/or functional way to accomplish what the user needs to do? 3. Am I going to open up my network to significant security risks if I do this? do those risks outweigh the business need?

      Characterizing any admin that says to you "no you can't traverse the company firewalls with XYZ traffic because doing so represents a significant security risk to the company network" as a "pompous asshat" is a bit unfair don't you think? perhaps you should attempt to look at it from the "pompous asshats" point of view and ponder what your response would be if the positions were reversed, if your answer is "well I'd let any traffic that any user asks for to traverse my firewalls" then there's a very good reason you're not the one making the determination what crosses company firewalls. ;)

    2. Re:Overzealous security admins by Jeremi · · Score: 1
      Any program relying on (nontrivial) preemptive multithreading will be buggy.


      Okay, I'll bite -- why? (I'll assume you aren't just being tautological and defining any non-buggy multithreaded program as "trivial"!)

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    3. Re:Overzealous security admins by Anonymous Coward · · Score: 0

      I feel your pain, however I've found that it makes sense use a simple formula when evaluating an end user request to allow XYZ traffic to traverse a firewall(s) on my organizations network, 1. Is there a business need for it or is it just a user saying "oh this would be nice to have" 2. Is there a more secure and/or functional way to accomplish what the user needs to do? 3. Am I going to open up my network to significant security risks if I do this? do those risks outweigh the business need?

      Sounds reasonable, so long as the right person is put in charge of making the decision as to whether the business need justifies the security risk. And, unless you are part of upper-level management as well as the security administrator, that person is not you.

      Of course, the whole discussion is somewhat moot, given how easily anything can be transported over HTTP. In fact, the die-hard position that protocols using other ports not be allowed has pushed the adoption of this firewall sidestepping approach. As Web services over HTTP(s) become more and more prevalent, undoubtedly with no meaningful security checking at the network level, we can all happily say that we have secure networks, even though the overall infrastucture is a security disaster.

  32. Unfortunately by Andy+Dodd · · Score: 1

    Multi streaming does not mean multicast. Multi streaming means multiple substreams in one connection. Good for voice trunks (each stream is a voice channel), no benefit for torrents (each connection between two peers usually carries data from only one source.)

    Multicast would rock for a P2P distribution system, even "explicit multicast" which has a rather low limit on the number of destinations, as opposed to IP multicast which has no limit on the number of destinations but presents a nightmare for backbone providers. (State must be kept for every multicast group that a particular router handles traffic for.)

    --
    retrorocket.o not found, launch anyway?
  33. Benchmarks measure LKSCTP not SCTP by butlerm · · Score: 2, Interesting

    Unfortunately the current mainline Linux kernel SCTP implementation (LKSCTP) has some serious performance problems. On platforms with mature SCTP implementations (FreeBSD, OpenSolaris), SCTP performs *much* better.

    See http://sctp.fh-muenster.de/Performance/index.html

  34. Re:What's not said by gbickford · · Score: 1
    "The current version is sctplib-1.0.4, published on September 16th, 2005. Please note that this is a prototype implementation. This version should run on Linux, FreeBSD, Mac OS X, Solaris and Windows."
    http://www.sctp.de/sctp-download.html
  35. Kernel space name resolution not required by butlerm · · Score: 5, Informative

    SCTP does have an option for using name resolution to do multihoming, however for practical reasons it is almost universally unimplemented. SCTP multihoming works just fine without it. IP address lists for multihoming are exchanged during the standard connection (association) establishment process.

    State cookies are not stored on the server at all, but rather are echoed from the client back to the server as a effective means of SYN flood style DoS attack prevention.

    SCTP (properly implemented) is radically superior to TCP for a large class of applications, basically anything that needs low latency reliable message exchange. The lack of message boundary information in TCP causes considerable pain for implementers of upper layer protocols - notably RDMA/RDDP and iSCSI. The running solution for efficient hardware implementation of RDMA and iSCSI over TCP involves *inserting* markers every 512 bytes or so in the middle of a data stream so that the receiver can re-synchronize it efficiently.

    The primary SCTP RFC is RFC 2960 for those who are wondering.

  36. Re:What's not said by Anonymous Coward · · Score: 1, Informative

    You, Sir, are a blatant troll. I happen to know at least one of the developers of SCTP (was one of my professor at university), and Microsoft has nothing to do with this. Stop spreading bullshit.

  37. Sounds similar to TIPC by AaronW · · Score: 2, Informative

    This sounds somewhat similar to TIPC which we're using in some projects where I work. Like UDP it is message based, but it provides a reliable message transport. It also runs in the kernel as a protocol stack. It does have some differences, though. It is not based on a source and destination, but rather a publish/subscribe mechanism which sounds similar to the SCTP multi-homing support. With the publish/subscribe, one or more clients can indicate that they're interested in a certain service. When that service becomes available or disappears on the node, cluster, or network (depending on the scope of configuration) the client stack will automatically notify it.
    It also has the concept of priority in it, so that messages may be prioritized.
    Unlike SCTP, however, it does not run on top of IP but is its own protocol that runs directly over the wire, which means that it cannot be routed across an IP network. It is great as an internal embedded messaging protocol, but not as useful when a network is involved.
    TIPC is also not connection oriented. There is no connection setup required to send messages much like UDP.

    -Aaron

    --
    This post is encrypted twice with ROT-13. Documenting or attempting to crack this encryption is illegal.
  38. Linux is a popular research platform by typical · · Score: 2, Interesting

    That's not necessarily fair to MS.

    Linux is a very popular platform for researchers to try out new kernel ideas in a real-world system, like networking protocol ideas. This is for a number of reasons (it's well-written, it's easy to hack on, it's open source and doesn't have any weird restrictions, it's free, it's already popular among CS folk, etc.

    I'm not familiar with the particulars of SCTP, but just the fact that this is available under Linux (and perhaps that some (all?)) distros make it available by default does not mean that MS is trying to squash the standard. They just have different interests.

    Microsoft is a business, and a very conservative one (for the technology industry, at any rate). Unless they have demands from their large corporate customers for a feature, or they think it's going to expand their market, they have little reason to include said feature. It's irrelevant to them whether their own acceptance of something is essential to it catching on -- if you can't make a business case for it, they aren't going to put something into the kernel. That doesn't happen because Microsoft is being particularly antisocial. They're just a business, and they function with certain limitations, as such.

    Linux (well, Linus's tree -- I'm sure Novell has their own kernel tree) is built by a bunch of engineers who, as a whole, have no business constraints to worry about. They're interested in making the best technical system possible. Sure, maybe IBM's not going to fund engineers to add Coda support to Linux, but if Linus says "yes, this is technically good", it can go into Linux if someone else wants to write it.

    Thus, you have a suit at the highest echelon in one system, and an engineer at the highest echelon (in one tree -- another way in which Linux ensures competition) in the other system.

    The case that a libertarian or other hard-core free-markets-no-matter-what advocate would probably make would have is that nobody can have an influential monopoly on the market (not true in this case) and so if someone does something sub-optimal for the customer, they will quickly lose business to the competition.

    Now, I don't know whether SCTP is a good idea or not. I'm just pointing out that there are times that having *any* business control the bulk of the market is going to lead to suboptimal handling of consumer interests -- that business need not be Microsoft.

    --
    Any program relying on (nontrivial) preemptive multithreading will be buggy.
  39. No, but if you were an ISP... by Kadin2048 · · Score: 2, Insightful

    In a corporate situation, no you wouldn't be a pompous asshat for doing that, you'd just be doing your job.

    However if you were an ISP, tasked assumedly with providing connectivity to your customers, and did something similar, then yes, you would be, in my opinion. And there are a fair number of really crummy ISPs who, for one specious reason or another, block various ports and protocols.

    And perhaps most unfortunately of all, it's quite common for these ISPs to have regional broadband monopolies, so that a customer doesn't really have the option of just dropping them and switching to a provider that doesn't suck so badly.

    --
    "Ladies and gentlemen, my killbot features Lotus Notes and a machine gun. It is the finest available."
    1. Re:No, but if you were an ISP... by ROOK*CA · · Score: 1

      I completely agree with the situation that you describe, any ISP that tells it's customers "no you can't use XYZ protocol on our network" (especially in the case of outbound connections), is indeed a pompous asshat. I would say there is a valid arguement for not allowing inbound service ports like HTTP, SMTP, etc.., to customers that are *residential* customers but, not allowing outbound SSH is just well ....evil not to mention lame.

  40. Low message delivery latency by butlerm · · Score: 2, Informative

    SCTP excels at low latency delivery of small messages. TCP's head of line blocking is a serious problem in many applications. SSH tunneling is a good example.

    The main advantage of using SCTP over multiple TCP connections is connection establishment time as well as server overhead. You can create an association with hundreds of streams in the roughly the same time as a single TCP connection, with little or no overhead for unused streams. Then when you want to initiate a new non-blocking transaction you can send a message on a new stream without the three-way handshake of an extra TCP connection.

    In addition, a single SCTP socket can handle reliably delivered messages on thousands of streams from hundreds of associations. No need to use select()/poll() on a long list of file descriptors.

  41. SCTP in need of a working shim by Raul654 · · Score: 2, Interesting

    I spent last semester taking a class about the nuts and bolts "Upper layer protocols" class with one of the leading SCTP researchers, so I've heard a good bit about this protocol. It's quite good, better than TCP in almost every respect. The one problem is (as you probably guessed) overcoming the fact that TCP is ubiquitous and has a gigantic code base.

    So I asked - why not have an API for translating TCP calls into SCTP? He told me that this is called a "shim" and that one already exists. He also said the primary area of interest regarding the shim was getting the shim working on windows and deployed by default with windows. That would significantly reduce the gap.

    --


    To make laws that man cannot, and will not obey, serves to bring all law into contempt.
    --E.C. Stanton
    1. Re:SCTP in need of a working shim by ratatask · · Score: 1

      There is already http://www.ietf.org/internet-drafts/draft-ietf-tsv wg-sctpsocket-12.txt
      which defines a socket API for sctp use. (most implementation implements this)
      If you want to use sctp just like TCP (not leveraging many of the other sctp features) you just change the last argument of the socket(2) call to IPPROTO_SCTP.

  42. The next Gaim will NOT have voice & video by Anonymous Coward · · Score: 0

    They will merge in the stuff from the gaim-vv fork in the release AFTER 2.0.0, so we have 2 versions to go before we can video conference on Gaim.

  43. congestion avoidance? by j1m+5n0w · · Score: 1

    The article makes no mention of congestion avoidance. Does SCTP use AIMD like TCP? Is it TCP-friendly?

  44. Re:Linux to Linux by Anonymous Coward · · Score: 0

    How is this flamebait? Also no, not really.

  45. TAO/ACE Orb SCTP Benchmarks by Monkius · · Score: 1

    Interestingly, I had just run across these yesterday--note these used OpenSS7 implementation and call out issues w/LKSCTP mentioned in other posts:

    http://www.atl.external.lmco.com/projects/QoS/docu ments/DOA2003_97_Thaker.pdf

    Seems the funding for the TAO SCIOP implmementation came from the US Navy:

    http://www.omg.org/news/meetings/workshops/RT_2003 _Manual/Presentations/5-4_Thaker_etal.pdf

    --
    Matt
  46. Especially on the WAN, yes by butlerm · · Score: 3, Informative

    SCTP and Infiniband focus on different areas. IB is largely a high performance HPC / cluster network architecture for LAN applications, where SCTP is a transport protocol designed to operate efficiently under WAN conditions (significant packet loss, high RTTs).

    SCTP is a more efficient RDMA/iWARP transport than TCP, but the differential advantage of SCTP over TCP is much lower in a LAN environment due to the low RTTs, so RDDP/TCP dominates so far despite the bizarre marker insertion scheme (MPA). Same goes for iSCSI.

    The interrupt issue has largely been solved - on Linux NAPI dynamically switches between interrupt and polled mode to reduce this overhead to negligible levels. Message signalled interrupts also help considerably.

    What would be much more helpful (and economical) for iSCSI, SCTP, and RDDP is NIC CRC32C checksum generation. CRC generation is quite expensive in software but trivial in hardware.

    SCTP wasn't originally designed for load balancing a single association via simultaneous multi-path transfer (SMT). It can be done, but it requires some loss detection algorithm changes. Someone still needs to develop a option to coordinate this at association establishment time.

    One advantage of SCTP over TCP is that on a per stream basis, SCTP connection establishment overhead is much lower than TCP - basically O(1) instead of O(N) in the number of streams.

    1. Re:Especially on the WAN, yes by soldack · · Score: 1

      "SCTP and Infiniband focus on different areas. IB is largely a high performance HPC / cluster network architecture for LAN applications, where SCTP is a transport protocol designed to operate efficiently under WAN conditions (significant packet loss, high RTTs)."

      Ok, that makes more sense. IB and other hardware based reliability systems all have problems with long distances. There are folks working on IB WAN though including the U.S. Naval Research Laboratory. Check out Obsidian Research.

      "The interrupt issue has largely been solved - on Linux NAPI dynamically switches between interrupt and polled mode to reduce this overhead to negligible levels. Message signalled interrupts also help considerably."

      Cool. I was not aware of NAPI...been too long since I have been in linux kernel land. I agree about MSI helping out. It would be interesting see how this effects HPC performance. HPC has appliations that can include both large transfers and latency sensitive messages. By the way, I am pretty sure intel nics had a similar control as an option on their linux drivers for some time.

      "What would be much more helpful (and economical) for iSCSI, SCTP, and RDDP is NIC CRC32C checksum generation. CRC generation is quite expensive in software but trivial in hardware."

      Yep. I guess its a matter of finding the right balance between what should be offloaded and for what cost.

      "One advantage of SCTP over TCP is that on a per stream basis, SCTP connection establishment overhead is much lower than TCP - basically O(1) instead of O(N) in the number of streams."

      Interesting. Oracle and SilverStorm pushed out Reliable Datagram Sockets for IB (could work over iWarp) to handle the issue of lots of connections to the same host. Oracle saw massive scaling issues on pretty much any hardware or software for their clustering. RDS solved it by multiplexing all threads' traffic that goes to the same host down one reliable pipe. I wonder how SCTP would handle this?

      --
      -- soldack
  47. Layer 3 multihoming doesn't scale by butlerm · · Score: 1

    Layer 3 multihoming doesn't scale due to the combinatorial explosion of routing table entries. This problem is sufficiently serious that there is an IETF working group dedicated to providing a shim layer between layer 3 and layer 4 for IPv6 so that the problem with the size of global IPv4 routing tables does not repeat with IPv6.

    Even now, it is practically impossible for a small to medium size business to be multihomed at the network layer, because they can't get an IP address block large enough so that BGP re-routing works across multiple providers (without being filtered away). And of course managing BGP sessions with multiple providers is time consuming, if you can get them to do it at all.

    Both the proposed shim6 layer and SCTP provide solutions to the multihoming problem that have a much lower failover time, and much lower overhead than using BGP to do it. The providers neither need to know nor care.

    And of course the advantage of SCTP / shim6 over using DNS to do it is that they both fail over active connections, not just retry new ones with different addresses.

    1. Re:Layer 3 multihoming doesn't scale by Anonymous Coward · · Score: 0

      "Layer 3 multihoming doesn't scale due to the combinatorial explosion of routing table entries."

      Can you elaborate on this point? What does it exactly mean?

    2. Re:Layer 3 multihoming doesn't scale by butlerm · · Score: 1

      It means that the backbone routers of the world cannot handle the routing entries required so that end user IP address blocks can be re-routed through alternate providers when one of them (or the link to one of them) goes down.

      The way BGP works is that IP address prefix reachability information is advertised, router hop by router hop, from the destination router backwards until it either flood fills the entire global router backbone, gets merged with a larger provider prefix, or gets filtered for being too small.

      Provider independent address space is hard to get, so what normally happens is your advertised IP address prefix gets merged with the larger one for the provider address block it was suballocated from. But then if the link to your provider goes down, you become unreachable as well, because all your traffic is routed through your provider.

      The only way to handle that problem is for the providers you have chosen to peer and exchange detailed BGP information on a local (i.e. metro area by metro area) basis, which is relatively uncommon. Most major providers peer with each in only a handful of places in the U.S., and it is common for local providers not to do peer at all. Generally, unless your providers peer with each other at a local traffic exchange point, like PAIX, small prefix BGP re-routing is unlikely to work.

      So the alternative to all this network layer re-routing is for higher level protocols to handle multiple IP addresses, each generally from a different provider. That is what SCTP and shim6 do at the transport or transport adaptation layer.

  48. Botnets by tepples · · Score: 0, Flamebait

    The denial-of-service attack will not work if the attacker uses forged source addresses, as is common with TCP.

    This and egress filtering are why a lot of script kiddies don't use forged source addresses in their DOS attacks anymore. Instead, they use completely valid requests from a network of 100,000 compromised Windows XP Home Edition machines that are otherwise used for running poorly written yet popular software that requires administrative privileges.

  49. SCTP uses AIMD congestion control by butlerm · · Score: 2, Informative

    Congestion control is an area where SCTP is much like TCP. SCTP uses AIMD on a per destination address basis. However any of the the alternative congestion algorithms for TCP would behave similarly with SCTP.

    Of course given the additional message boundary information available in SCTP, further improvements could be made.

  50. You can handle this in app layer by king_ramen · · Score: 1

    Any reasonable app can wrap up similar functions in a well-written messaging library. There may be some minimal enhancements by performing certain operations in the kernel (and hopefully in hardware), but the main stuff can be handled in any reasonable message-oriented transmission kit (bit torrent, jabber, and libraries I have written). The key here: messages good, streams bad. If you take that concept to heart you can avoid a lot of headaches (scaling, repairing, multi-pathing, multiplexing, guaranteed delivery, etc.).

    --
    ----- Refactoring is the reason why man does not mistake himself for a god.
    1. Re:You can handle this in app layer by butlerm · · Score: 1

      If you do it yourself and implement a protocol over UDP, complete with congestion control, retransmission timers, duplicate detection, etc. then no problem. If you do it with TCP you still have the head of line blocking which SCTP eliminates.

    2. Re:You can handle this in app layer by king_ramen · · Score: 1

      It is trivial to maintain multiple TCP sessions and multiplex in the library. It is a tuning parameter to determine at what point an additional link would be beneficial, but for the most part this only benefits things like HTTP that require pipelined responses to be returned in the same order they were requested. If you have ad hoc messages and the ability to pre-empt message serialization, you can pretty much max out the available bandwidth between 2 points and still guarantee some level of fairness.

      --
      ----- Refactoring is the reason why man does not mistake himself for a god.
  51. Transport protocols in process context by butlerm · · Score: 1

    Somehow I think Van Jacobsen would disagree with you...

    See http://lwn.net/Articles/169961/

    In fact the Linux TCP stack does most of its processing in process context by default (using VJ style prequeuing), although there is an option to change this for latency sensitive workloads.

    1. Re:Transport protocols in process context by tajribah · · Score: 1

      With the kernel changes Van Jacobson suggests, it's likely, but I very much doubt that you can do well with the current socket interface.

    2. Re:Transport protocols in process context by butlerm · · Score: 1

      I agree - the socket interface is the number one reason for transport protocols to be in user space. The time is ripe for someone to find a efficient way to allow user space libraries to implement socket descriptors that are interoperable with normal socket and file descriptors.

      Even the socket equivalent of FUSE (where the protocol is run in a different process) would be useful for deploying new transport protocols where there is no kernel support.

  52. TCP - SCTP shim requirements by butlerm · · Score: 2, Interesting

    This concept has potential but there are some problems. First, SCTP does not support half open connections like TCP, so some applications will not work without modifications.

    Second, trying SCTP first and then falling back to TCP later causes considerable delay. To fix that problem the shim would need to insert itself in the name resolution process (getnameinfo) so that it could intelligently decide which protocol to try first. Of course name servers would have to carry SRV extension records to indicate that SCTP was supported on a port / ULP basis.

    1. Re:TCP - SCTP shim requirements by Raul654 · · Score: 1

      "First, SCTP does not support half open connections like TCP, so some applications will not work without modifications." - besides (1) port scanners and similiar tools designed to gather information based on low-level socket behavior, and (2) SYN overflow DOS scripts, I cannot think of a single application that depends on half-open connections. Am I missing an obvious one?

      --


      To make laws that man cannot, and will not obey, serves to bring all law into contempt.
      --E.C. Stanton
    2. Re:TCP - SCTP shim requirements by butlerm · · Score: 1

      I should have said "half-closed" connections. In any case, some FTP implementations apparently rely on half closed connections in an incompatible manner.

      See http://www.cis.udel.edu/~amer/PEL/poc/pdf/Bickhart MSthesis.pdf. Note that Bickhart has implemented a kernel space shim, which requires shim rules because it cannot intercept the name resolution process. A purely user space shim has a different set of problems, so perhaps a hybrid approach would be best.

    3. Re:TCP - SCTP shim requirements by Raul654 · · Score: 1

      Ryan Bickhart was my TA a couple years back :) - he's a nice guy

      --


      To make laws that man cannot, and will not obey, serves to bring all law into contempt.
      --E.C. Stanton
    4. Re:TCP - SCTP shim requirements by Anonymous Coward · · Score: 0

      And who cares?

      You're entire thread is just you tooting your horn and regurgiatating information that is better explained and outlined elsewhere.

    5. Re:TCP - SCTP shim requirements by stewrtrs · · Score: 1

      Mark: But that is the beauty of his shim... 1) It makes only one or two INIT transmits at the peer before switching to TCP.. so timing wise its quick. 2) You setup what port ranges you want to do it on (with the sysctl's).. the shim rules. 3) And presto you are using SCTP. I watch'ed Ryan's presentation of his work and he did a real cool demo with an internet radio player... Can't remember which one.. but it was quite impressive to see him just toggle a sysctl and all of a sudden his player was fault tolerant when he knocked out the cable.. I don't see being in the name-ctl thing is that much needed.. just sysctl all of the ports on and always try sctp first.. It adds maybe 2-3 seconds.. which for us humans is not that much :-D R

  53. Gives new meaning to "blowing chunks" by slickwillie · · Score: 1

    From Wiki:

    Chunks

    Each SCTP packet consists, in addition to the common header, of chunks. Each chunk has a common format but the contents can vary. One chunk is display in the diagram to the right with the green background.

    Chunk type
            An 8-bit value predefined by the IETF to identify the contents of the chunk value field.

    Chunk flags
            Eight flag bits whose definition vary with the chunk type. The default value is zero.

    Chunk length
            A 16-bit unsigned value specifying the total length of the chunk in bytes (excludes any padding) that includes chunk type, flags, length, and value fields.

  54. Data can be sent on third leg of handshake by butlerm · · Score: 1

    Data can be sent on the third leg of SCTP's four-way handshake, bundled with the COOKIE ECHO, making establishment time just as fast as TCP's three way handshake. The fourth leg (COOKIE ACK) is just to tell the client that the server received and accepted the COOKIE ECHO.

    So instead of:

    1. SYN
    2. SYN ACK
    3. REQUEST DATA
    4. RESPONSE DATA

    you get:

    1. INIT
    2. INIT ACK
    3. COOKIE ECHO + REQUEST DATA
    4. COOKIE ACK + RESPONSE DATA

    Same overall latency, better security.

    1. Re:Data can be sent on third leg of handshake by stewrtrs · · Score: 1

      Mark: I don't believe I have ever seen: 1. SYN 2. SYN ACK 3. REQUEST DATA 4. RESPONSE DATA In any TCP trace I have ever observed in ethereal (which as been many but not exhaustive :-D) What I have seen is 1. SYN 2. SYN ACK 3. ACK 4 REQUEST DATA 5. RESPONSE DATA Not to say that TCP could not do your method.. but I believe its API stops you from it.. not allowing the app to send data until the connect() has complted (steps 1-3)... R

    2. Re:Data can be sent on third leg of handshake by butlerm · · Score: 1

      But on the initiating side, the SYN ACK does complete the connection, does it not? The target side has to wait for the ACK, which may or may not be bundled with data from the initiator.

      I imagine a typical implementation never bundles data with the ACK because of context switch latency, between the time the SYN ACK arrives, and the time for the first write(2) to issue. Someone really ought to make an API for TCP that does a hybrid connect(2)/write(2) to fix this problem. I imagine sendto(2) with an IP address might be suitable, just as in SCTP. Surely T/TCP does something similar.

  55. Full TCP offload engines are a niche market by butlerm · · Score: 1

    Most modern NICs can offload TCP checksum generation and checking. Many can offload send side TCP segmentation (aka TSO / LSO / Large Send support).

    However full TCP offload engines are expensive and rare outside of hardware iSCSI and RDMA implementations. They may be worthwhile at 10 Gbit/sec, but modern software TCP stacks handle 1 Gbit/sec with neglible overhead on decent hardware.

  56. Just what ssh/tun needs. by Terri416 · · Score: 1

    The multi-streaming solves a nasty gotcha with forwarding multiple traffic over a single ssh connection: one stalled forwarded connection brings the entire show to a dead stop.

  57. Protocols that can benefit from SCTP by Skapare · · Score: 4, Informative

    Some of the protocols that could benefit from SCTP include:

    • IRC ... put each channel in its own stream to minimize lost packet retry bottlenecks. This is especially valuable in server to server trunk links.
    • HTTP ... multiple page requests, each in a separate stream, avoids the flood of multiple TCP connections that can use many processes on the server, and avoids the wait of sequential chunks in persistent connections.
    • SMTP ... get your Nigerian business deals, body part enlargement products, replacement ink cartridges, notifications of winning in lotteries you never played, stock investment advise, and those all important sexual drive enhancement drugs, all at the same time.
    --
    now we need to go OSS in diesel cars
    1. Re:Protocols that can benefit from SCTP by Adam9 · · Score: 1

      HTTP ... multiple page requests, each in a separate stream, avoids the flood of multiple TCP connections that can use many processes on the server, and avoids the wait of sequential chunks in persistent connections.

      Isn't that was HTTP persistent connections are for?

    2. Re:Protocols that can benefit from SCTP by FireFury03 · · Score: 1

      Isn't that was HTTP persistent connections are for?

      Despite persistent connections you usually find browsers will open multiple TCP streams at once and get a number of objects in parallel. You could use a single SCTP association with several streams to do this, and the server would have more control over how many objects a single client should request in parallel.

      However, I think the main advantage for many protocols, HTTP included, is the preservation of datagram boundaries. Rather than having to delimit and parse each header you just send each header as a separate datagram and it arrives at the other end still in separate datagrams so you can just read each header individually. It may not seem like a big deal when we already have things like HTTP running over a streaming protocol, but it would certainly simplify the implementation. How many protocols run over TCP streams would be better suited to reliable (and optionally ordered) datagrams rather than byte streams? I would say a lot. Basically anything which currently has to delimit chunks of data in order to parse it at the other end is better suited to datagrams rather than byte streams.

    3. Re:Protocols that can benefit from SCTP by janaiyengar · · Score: 1

      I agree. See (upcoming) paper at WWW 2006 which talks about why SCTP is a much better fit for HTTP as compared to TCP:
      http://www.cis.udel.edu/~iyengar/publications/2006 .www.natarajan.pdf

    4. Re:Protocols that can benefit from SCTP by Skapare · · Score: 1

      I did refer to "avoids the wait of sequential chunks in persistent connections". The problem with persistent connections is that the responses to each query in a persistent connection cannot be received until the previous response is entirely complete. Browsers typically open many parallel connections just to get the benefit of concurrent loading. Without that, your images load one by one, in whatever order they were requested (which would probably be the order they are present in the page HTML). You'll have to wait for the ad banner on top to be loaded first, before you can see any more images. With SCTP, everything is in parallel, but under a single association, as long as the requests are going to the same server. Of course the client would have to open a different SCTP association for those requests going to a different server. SCTP associations can also remain persistent even longer since there is a lot less overhead keeping one association up (only one process on the server) compared to half a dozen persistent TCP connections kept open (six processes on the server).

      --
      now we need to go OSS in diesel cars
  58. Re:In other news... by Anonymous Coward · · Score: 0

    Not that this recurring, stupid, flamebait, anonymous post actually warrants a response, but I felt inclined. Being employed as home computer technical support for many years, I've had contact with many many varied people and their computers, across three states and working in five major metropolitan areas.

    The majority of homosexuals that I've worked for use Macs. None have used Linux. Something about their sense of style I guess, Macs are counter-culture and stylish, Linux is counter-culture and... geekish.

    And no, I'm not saying all Mac users are "fags", just that most "fags" prefer Macs. Linux is for geeks. Get your facts straight. (For the record, I prefer Linux, making me a geek, not a fag, and not a homophobe, either)

  59. kitchen sink by idlake · · Score: 2, Insightful

    SCTP sounds like a kitchen sink solution; it has some nice features and some useless features.

    For example, manually opening multiple connections through different interfaces and then having the SCTP implementation figure out which one to send through is nonsense; if the system has multiple routes to the Internet, then that can be taken care of at the IP level.

    Similarly, preservation of write boundaries is a useless gimmick that is rarely needed, and when it is needed, can be easily implemented in user code.

    The four-way handshake during setup is possibly useful, but you can trivially get the same with TCP in a backwards compatible fashion if you configure your kernel to protect against SYN spoofing.

    Altogether, I'm not quite sure what problem SCTP is supposed to solve. SCTP has made its way into some other standards, so it will probably be unavoidable, but it's not a well-designed protocol in my opinion.

    1. Re:kitchen sink by MedBob · · Score: 0

      I would take issue with your criticism of write boundaries.
      Within my application space (Transmission of HL7 messages) we have a standard encapsulation trick that is used over TCP that sends 0b as a first "framing byte" followed by message data, terminated by 1c then 0d.
      I just had a problem 2 weeks ago where my vendor included a 1c in the message data. Of course, this was not recognized by the message receiver, was application-level NAKed, and the sender tried the same message again. Lather, rinse, repeat.
      A message based transport would scratch that itch nicely.

      Multiple path association has a benefit in our space as well. With IP route manipulation, the setup of alternate routes has been a good way to provide for delivery, but the routes are not insured. By building that insurance in the protocol, then valid routes are insured with heartbeats. In a hospital, we really place a lot of value on a good strong heartbeat.

    2. Re:kitchen sink by butlerm · · Score: 1

      Ever tried to get portable address space lately? Or waited for a new BGP route to propagate across the global internet?

    3. Re:kitchen sink by Anonymous Coward · · Score: 0

      Within my application space (Transmission of HL7 messages) we have a standard encapsulation trick that is used over TCP that sends 0b as a first "framing byte" followed by message data, terminated by 1c then 0d.

      Well, I'm sorry you are using poor technology for your encapsulation, but that's really nobody else's fault. Note that write boundaries are probably no good in your application either because there are system-dependent limits on them, so it's not like write boundaries eliminate the need for message boundaries.

      Multiple path association has a benefit in our space as well. With IP route manipulation, the setup of alternate routes has been a good way to provide for delivery, but the routes are not insured. By building that insurance in the protocol, then valid routes are insured with heartbeats. In a hospital, we really place a lot of value on a good strong heartbeat.

      Trying to work around network misconfigurations by application level routing is stupid, and, in a hospital setting, dangerous. In any case, nothing's stopping you with connecting through multiple interfaces using TCP.

    4. Re:kitchen sink by renoX · · Score: 1

      > Similarly, preservation of write boundaries is a useless gimmick that is rarely needed, and when it is needed, can be easily implemented in user code.

      I disagree here: most application work with messages, it seems quite wasteful to loose this information in the protocol layer just to have it reconstructed by the application on both ends.

      On the whole I think that this is a gain of CPU (very small sure but still a gain), and above all a way to reduce complexity: it's much easier to preserve information the network layer than to have each application recontruct this information in a different way with each time additionnal complexity and the possibility of bugs.

    5. Re:kitchen sink by FireFury03 · · Score: 3, Interesting

      SCTP sounds like a kitchen sink solution; it has some nice features and some useless features.

      What's useless to one application is useful to another. Most of the features can be turned on and off, so the application developer can pick what's suitable for their use.

      For example, manually opening multiple connections through different interfaces and then having the SCTP implementation figure out which one to send through is nonsense; if the system has multiple routes to the Internet, then that can be taken care of at the IP level.

      This is one thing that I almost agree with you on - multihoming should probably be done at the IP level. But that requires that intermediate routers be modified to introduce the required functionality and we have already seen that many ISPs have no interest in adjusting their infrastructure to support new technologies (multicast, IPv6, etc). SCTP's multihoming support has the advantage that only the end points of the connection need to care, to the rest of the network it's just plain old IPv4.

      Similarly, preservation of write boundaries is a useless gimmick that is rarely needed, and when it is needed, can be easily implemented in user code.

      I'm not sure why you think this is a "useless gimmick". Very few applications want a byte stream - almost everything works on the datagram level. Think about HTTP - you send the server a bunch of headers (these are separate datagrams), the server returns a bunch of headers (again, separate datagrams) and the actual object data (one massive datagram). At the moment this is done over a byte stream and in order to maintain the boundaries between the datagrams you have to delimit them at the sending end and then parse them at the receiving end. With almost every application wanting to send multiple datagrams instead of a byte stream isn't it better to have this handled at the protocol level rather than reimplementing it for every application? Almost the only things which benefit from byte streams rather than datagram streams are interactive stuff like telnet and SSH (even SSH would benefit from SCTP when you're multiplexing multiple tunnels)

      The four-way handshake during setup is possibly useful, but you can trivially get the same with TCP in a backwards compatible fashion if you configure your kernel to protect against SYN spoofing.

      TCP SYN cookies are weak in comparison to the SCTP 4-way handshake.

      Altogether, I'm not quite sure what problem SCTP is supposed to solve. SCTP has made its way into some other standards, so it will probably be unavoidable, but it's not a well-designed protocol in my opinion.

      SCTP was originally designed for telephony applications (it is used to transport SIGTRAN traffic and can also be used to transport SIP). It is designed to combine the benefits of TCP (reliable ordered delivery with congestion control) with the benefits of UDP (preservation of message boundaries and unordered delivery). But while designing a new protocol it was worthwhile addressing other problems that have shown up with TCP and UDP. I would hazard a guess that the _only_ reason TCP is so widely used is because it's the only widely available transport that provides congestion control and reliable ordered delivery - most applications are _not_ suited to communicating through byte streams and many do not even require the data to arrive in order. If SCTP is widely available as an alternative protocol I can see it being used for new applications purely because the preservation of message boundaries removes the need for a chunk of parsing code.

  60. Multithreaded code by typical · · Score: 1

    Okay, I'll bite -- why? (I'll assume you aren't just being tautological and defining any non-buggy multithreaded program as "trivial"!)

    No, it's not a tautological statement. And, actually, it's probably too strong (120 characters isn't much to say something in). It's a statement about engineering, not about computer science. Futhermore, I was thinking of systems without "hard" priority levels -- RTOSes have legitimate reasons for use of hard priority level threading. However, this is not the case for almost all multithreaded Windows software out there. There probably do exist some preemptively multithreaded systems out there that are written correctly. However, it's far less in the "too strong" realm than most people would probably buy at first.

    I've found that preemptively multithreaded systems seem to very, very commonly have synchronization problems. This is due to a number of factors:

    1) Writing multithreaded software correctly requires solid knowledge of multithreaded design. This is not something that you can simply pick up a book and learn or take a class and be guaranteed that ability at the end -- it requires a very different way of thinking. I have worked with very experienced engineers (quite competent ones) who have produced designs that they were *certain* were right...only to have scads of synchronization problems turned up. I am amazed by the number of people who fully believe that they understand how to design and implement threaded code and yet cannot produce solid designs. It is a simply overwhelming number. I have yet to meet the person who I would trust to write a multithreaded system that I would trust my life to. I am willing to believe that such a person exists; however, they are dwarfed by the hordes of people who believe that they can properly design multithreaded systems but simply fail to do so (and worse, do not understand that they have failed to do so).

    2) Synchronization problems are very easy to introduce, but very difficult for someone else to find while examing the system. If an engineer makes a typing error, we have statically-typed language compilers that can catch the error. We do not have (at least widespread, and in the mainstream) tools for so statically identifying threading errors.

    It very easy to use threads incorrectly and hard to use them correctly -- it's easy to say "oh, I won't synchronize this here, and I'll go back and handle it later if we use this for anything other than my current hack", because writing a correct threaded system may require significant changes to existing synchronization design.

    Basically, the failure mode for threads is bad compared to most other language features -- it takes effort to correctly design a threaded system, and the result of a misdesigned system is often a very difficult to produce bug that comes up unexpectedly and can cause a wide range of problems. Contrast this with a single-threaded event-driven program -- if a mistake regarding interaction with other tasks is made here, it will probably manifest itself as taking too long to complete a particular chunk of work. The problem is generally easy to localize, and it is generally easier to reproduce.

    3) Many synchronization problems with preemptively multithreaded code are essentially impossible to catch with routine testing; their failure rate is very low. Furthermore, even (expensive) full-coverage testing does not necessarily expose synchronization problems.

    4) While this is not an inherent reason for failure, it is a reason why threads are overused. Threads "demo" well -- disproportionately better than they perform in the real world. For a language feature to be widely accepted, it is important to be able to produce a trivial example where code using the feature greatly benefits. It is possible to create a trivial threaded example where a thread operates in complete isolation from the rest of the system (the sort of thing that a Unix programmer would use multiple processes for). The problem is that th

    --
    Any program relying on (nontrivial) preemptive multithreading will be buggy.
    1. Re:Multithreaded code by Anonymous Coward · · Score: 0

      Shared state concurrency as done in Java and others is not the only way to go. There are other ways like asynchronous message passing, or declarative concurrency that are less prone to errors and easier to reason about(you mention unix apps which handle concurrency by having seperate processes communicate via pipes or sockets). You mention things like making better use of cache, and altering algorithms, but selecting an appropriate concurrency model is along these same lines.

    2. Re:Multithreaded code by Jeremi · · Score: 1
      Thank you for the in depth explanation. :^) However, I think your sig is slightly off -- it would be better to say "Any program relying on (nontrivial) preemptive multithreading is very likely to be buggy". As is, it sounds like you have come up with a halting-problem style mathematical proof that no multithreaded program above a certain complexity could ever be correct, even theoretically -- which is not the case.


      I agree with most of your arguments -- multithreading is strong juju and shouldn't be used unless there is a very clear benefit offseting the inevitable extra complexity. When it is used, its best if the multithreading can be "hidden" inside the implementation of a single-threaded-style API, so that the vast majority of the code doesn't have to worry about multithreading issues. That way the amount of "critical" code that must be crafted "just so" to work reliably is minimized.


      As far as speedup and number of processors goes, you're right -- but I think you will be less right in the future. Now that we've (apparently) hit the 4GHz cycles-per-second limit, the only way to continue to get performance increases in the future will be through parallelization. That means that you can expect to see more and more dual-core, quad-core, 64-core, etc CPUs in the future. If people are to actually see the performance gains promised by those machines, at least some multithreading will be necessary. Hopefully a lot of the multithreading complexity can be hidden inside clever libraries written by the code wizards, however, so that Joe Programmer doesn't have to deal with the nasty details so much.


      In the long run, I think what is really needed is a new programming language/paradigm (functional programming, perhaps?) that handles multithreading issues gracefully by design, so that the traditional multithreading pitfalls simply don't come up. Dunno how/when that will actually happen though.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    3. Re:Multithreaded code by UncleFluffy · · Score: 2, Interesting

      Multithreading should be treated rather like rabid dogs -- something to be avoided if at all possible.

      A wonderful post. I usually say it a little more concisely: "can you draw me the complete state machine? no? then you don't know what your code's doing."

      --

      What would Lemmy do?

    4. Re:Multithreaded code by mrchaotica · · Score: 1
      I found your post very interesting, especially since I'm taking a parallel computing class right now. I think most of your points are valid, with the exception of this:
      Dual processor machines seem not to be very popular these days...

      I suspect that most code is going to run, at most, on a quad-processor machine.
      The problem is that multicore systems are becoming much more popular because chip makers are finding it harder and harder to make single-core processors faster. I just bought my first dual-core system (an iMac), and all the high-end processors of Intel, AMD, and IBM are now dual-core. I predict that the vast majority of systems will be at least dual-core within the next three years, and that multithreading will therefore become more and more important.

      Also, in the long term, most code will run on machines with many more than four processors, for the reason I mentioned above. Already the Xbox 360 has three cores, and the PS3 will have... what, seven? And that's just game consoles -- in ten years, I predict 4- or 8-way systems will be the norm for PCs.
      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    5. Re:Multithreaded code by mrchaotica · · Score: 1

      Of course you can draw a complete state machine for parallel code... you just have to take it to the photocopier afterwards! ; )

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    6. Re:Multithreaded code by Anonymous Coward · · Score: 0

      Holy cow, if there were more people like you on slashdot (including as editors) I wouldn't have nuked my account.

      It's a bleak picture you paint, though it's spot-on -- with a strong caveat, in that I don't think you're conveying the gist of the issue: it's not multithreading that's the problem, it's shared state concurrency. In fact even SSC isn't "the problem", it's just really really hard, and one of the reasons it's hard is because (1) people end up rolling their own half-baked synchronization primitives, and (2) people don't synchronize enough or in the right places, causing an explosion of possible inconsistent states.

      Unix was not successful because it was single-threaded, it was successful because it was highly interactive, including multiprocessing notions like pipes. The alternative was to submit jobs to a batch processing system. Every time you pipe something in a shell, you're writing a multithreaded program, yet these typically have very reliable behavior (save for that they typically don't handle SIGPIPE). This is because pipes are a simple and reliable synchronization primitive free of deadlocks and race conditions under their normal use conditions (you can create both deadlock and races with pipes once you start messing with /dev/stdin and fd duplication, but that's not typical).

      It's also worth noting that VMS, which acquired a reputation for reliability second only to Guardian on Tandem, is multithreaded up the wazoo.

      Message-passing concurrency ala erlang has long been touted as a superior alternative to shared-state concurrency, and the message seems to be getting through. Other systems such as Software Transactional Memory, with their own higher-level synchronization primitives are also showing promise.

      I could go on about the relative merits and demerits here, but I pretty much stick with MPC most of the time (using Stackless Python) and I don't have a good understanding of STM, which is a pure functional idiom. I trust the curious can look into the terms themselves, and not tar all multiprocessing systems with the same brush.

  61. Re:In other news... by BKX · · Score: 0

    True, but then again, I am a fag...

  62. Its timed reliability not UDP integrated by creativity · · Score: 1

    SCTP has a feature that lets us set fuzzy levels of reliability based on application needs i.e. a connection will time out after a certain time. This feature however is not fully implemented and if it can be provided for each logical connection then only and then can it be a truly integrated TCP-UDP solution.

  63. Linux support for TOE by butlerm · · Score: 3, Informative

    Actually, most iWARP/RDMA stuff doesn't have a software interface to TCP at all - the hardware handles not only TCP, but three or more layers on top of it (at least MPA, DDP, and RDMA, plus iSCSI in some cases). That type of interface is not a problem. What is controversial is using TOE for conventional TCP applications using kernel space dispatch.

    This is a bit of an end run around the Linux kernel bridging, routing, and filtering layers, which is the primary reason why support for it won't get merged in the kernel socket layer until RNICs can at a minimum do IPtables like IP address filtering and proper dispatch so that some packets can be routed through the kernel layers on an Ethertype and IP protocol / address / port specific basis.

  64. RDS and SCTP sockets by butlerm · · Score: 1

    A typical SCTP socket implementation has four logical layers:

    1. Socket
    2. Stream
    3. Association
    4. Path

    SCTP sockets come in two varieties, one-to-one style and one-to-many style. The one-to-one style handles up to 64K streams in each direction between two endpoints.

    The one-to-many style aggregates several associations on the same endpoint, presenting a socket interface that resembles that provided by UDP, except reliable and ordered. The primary difference with RDS is that SCTP is generally implemented completely in software. An SCTP stream pair is logically equivalent to an Infiniband QP, but if someone wanted to provide a high performance SCTP style interface over IB they would likely run out of hardware QPs with that kind of mapping. SCTP associations with thousands of streams are common in the telco world.

    RDS works fine with association level QPs because packet loss and high RTTs are not much of an issue with IB. I believe it has strong ordering guarantees making independently ordered streams moot. Mapping SCTP streams to QPs would be ideal for MPI / RDMA style applications, however.

  65. SCTP timed reliability service by butlerm · · Score: 1

    (PR)SCTP's timed reliability service is on a per message basis. You just set the sinfo_timetolive for a message in milliseconds, and the message auto-expires if it hasen't been completely transmitted before that amount of time has elapsed. See RFC3758 for details.

    Association timeout (SCTP_AUTOCLOSE option) is something else entirely, normally used to make UDP style applications transparent to association setup and teardown.

  66. Re:In other news... by Anonymous Coward · · Score: 0

    So then, how does that explain montspace.com, a very important icon in the Linux community?

  67. Re:What's not said by Slashcrap · · Score: 1

    *shrug* you can believe what you wan't, but in the end when Microsoft change tack mid stream don't come running to me for support.

    Several people have accused you of trolling. I think that's incredibly unfair. A quick glance at your posting history would have been sufficient to convince anyone that you simply don't have the intellectual capacity for trolling.

    Every single person who has accused you of trolling should apologise right now for the lazy assumption that you are anything other than a slack jawed, drooling retard who lacks the skills needed to annoy people on purpose.

    I can only apologise on behalf of Slashdot for misrepresenting you so badly. I just pray this incident doesn't put you off posting again. Your carers believe that it is a much more positive activity for you than licking windows and we would hate to impede your development.

  68. Re:Linux to Linux by Slashcrap · · Score: 1

    Btw, read my my last 3 blog entries about some Linux problems: my blog

    I hope you don't mind, but I'm just reposting part of your blog here, as I think it deserves a wider audience.

    The way I see things, Linux has much to learn and improve. It can be secure and fast, it is and and I never told you it weren't in this whole article! The problem is that people mix the words and concepts, Linux=The Kernel and that is fast and secure, Linux Software=THE PROBLEM. Yet, my opinion (shared with some friends) is that even the kernel is becoming obsolete and its not envolving to the Desktop as Linus promissed for 2.7. And without proper software and standarts that could kill and fire a lot of people...
    I see Mono as a performance boost, security boost and standartization boost in Linux world. We only need to learn by the past mistaques and try to fix them, then more and more people will help and use.


    Ladies and gentleman, there is no point in trolling anymore. The art has been perfected. You will never better what alexmepigo has acheived here. Linux needs to switch to Mono now or people will die! Linux is slow because it doesn't use enough Mono and Java! Seriously people, alexmepigo has taken things to the next level and left you in the dust. He's even perfected the whole "I donta speeka very good Eeeeenglish" thing.

    I thought it was very reminiscent of some of Trollaxor's finest work. Go check out alexmepigo's blog - there's much more quality material where that came from.

  69. Re:What's not said by FireFury03 · · Score: 1

    It's *Linux* that is driving ther adoption !

    For the record, Solaris 10 has a built in SCTP stack too...

  70. Multihoming and failover by measterbrook · · Score: 1

    Last time I looked seriously at SCTP (18 months ago), it had two "problems" with multi-homing and failover.

    1) It only sends traffic over the current primary connection. Because the standby connection(s) are idle, it cannot detect failure on them until it needs to use them. On IP networks, failure takes a long time to detect. If the primary connection fails, it could switch to another failed (but not detected as failed) connection when there is a (better) working alternative.

    2) It does not load-share. If there are three diverse routes, it makes sense to share the load over all three. This requires some metrics: Two broadband routes would loadshare, but in a broadband and ISDN backup case, the sharing would need to be uneven, or not at all (i.e. main+standby configuration).

    Interestingly, providing 2 would solve 1.

    Of course, these are problems introduced by the ability of SCTP to multi-home, it is not a regression on TCP (or UDP).

    1. Re:Multihoming and failover by janaiyengar · · Score: 1
      SCTP can detect failures on alternate paths through losses of heartbeats. And yes, SCTP does not allow load sharing over the multiple paths, but with good reason. There has been work on improving failure detection and handling Concurrent Multipath Transfer (CMT) with SCTP. See: http://pel.cis.udel.edu/

      Your intuition that solving the load sharing problem would go towards solving the failure detection problem is right on.

  71. Re:Linux to Linux by alexmipego · · Score: 1

    Yhee, so I write bad english, so what? I'm not English am I?

    Those 3 articles are my opinion about specific problems we face in Linux and I talk about how Mono can help solve then, if you read the entire article you'll know that the piece you posted here has no meaning because you don't place it in the right context.

    I hope some moderator just call you a TROLL.

  72. Re:What's not said by stewrtrs · · Score: 1

    Saven: MS does not really have anything to do with SCTP. In fact they have refused to even consider implementing it (yet), until they have a business need. They were not part of its development nor are they interested in implementing it AFAIKT. It would be very hard for MS to do anything to SCTP at this point. Oh, they could in theory define their own chunk types that do special things and not tell us what they are.. but they still will have to inter-operate with the base protocol.. Of course that is assuming they ever get their act together and build an SCTP version. Its actually rather interesting since it is possible that they will finally find the business need and then have to try to rush to market with a stack... which will put them at a serious performance dis-advantage... after all look at lk-sctp its at least 5 years old and it still has not been fully performance tweaked yet... Of course MS has never been shy about shipping something that blue screens every few hours :-D It takes time to develop a stable, reliable, good performing, transport stack.. and when SCTP finally hits MS it may hit them over the head :-D R

  73. SCTP multi-streaming support by butlerm · · Score: 1

    There is a simple solution to the software integration problems described in your paper: stream sockets - sockets that handle one stream (pair) of an SCTP association at a time, more like a traditional TCP socket.

    One a web browser like Firefox, whenever a new connection to the same server is going to be established, just peel off a new stream socket. Then there is no problem with rendering threads processing one stream at a time.

    On the web server side, accept() can be made to deliver new stream sockets when the first request arrives on a stream, so that each worker thread handles one stream at a time.

    That would allow Firefox, Apache, etc. to support SCTP multi-streaming with minimal changes.