AJAX. SOA. Social network API integration.

What is TCP Multiplexing? All of aforementioned technologies have one thing in common. Okay, they have more than that in common,  but for the purposes of this discussion there's one very
TCP multiplexing is a technique used primarily by load balancers and application delivery controllers (but also by some stand-alone web application acceleration solutions) that enables the device to "reuse" existing TCP connections. This is similar to the way in which persistent HTTP 1.1 connections work in that a single HTTP connection can be used to retrieve multiple objects, thus reducing the impact of TCP overhead on application performance.

TCP multiplexing allows the same thing to happen for TCP-based applications (usually HTTP / web) except that instead of the reuse being limited to only 1 client, the connections can be reused over many clients, resulting in much greater efficiency of web servers and faster performing applications.
relevant property they all share: they tend to be very TCP connection heavy  implementations.  

AJAX lends itself to keeping open multiple TCP connections between the browser and the server; using up connections that reduce the overall capacity of your server. SOA decomposes applications and business logic into services, and then encourages the reuse of those services across multiple applications, resulting in a trade-off between duplicated code and multiple TCP connections. And the use of APIs to integrate social networks, especially those driven by real-time updates like micro-blogging site Twitter, increase the number of TCP connections on a server dramatically.

TCP Multiplexing reuses existing connections The increase in TCP connections can overwhelm a server in a kind of unintentional DDoS (Distributed Denial of Service) attack. It certainly wasn't the expected or intended behavior, but a site or service can easily twitter under high loads, causing outages and outrage simultaneously.

Thus, there are three really good reasons to employ TCP multiplexing in your architecture.

All applications can benefit from the improvement in performance seen when a server does not need to open and close hundreds or thousands or more of TCP connections a second. By removing the need to manage the TCP connections constantly, and instead reuse them across large numbers of requests, applications focus solely on generating and serving content, which improves application performance overall.

Generally speaking, servers are capable of handling only X number of concurrent

users and that number, in the past, has almost always been closely tied to the number of simultaneously open TCP connections the OS and application or web server can manage. By reducing the number of TCP connections required to serve the same number of users and requests, it leaves the server with the ability to open more connections and thus serve more users and requests.


Because the use of TCP multiplexing can improve the capacity of servers, it makes it possible to reduce the total number of servers you need to serve the same user base. The fewer servers you need means you can redistribute them for other uses or just shut them down, which lowers operating and management expenses. Or you can delay the need to acquire additional servers if you're still growing, putting off the investment for a future date.

TCP multiplexing was one of the coolest (in my opinion) technologies to enter the application delivery space. It's a fairly old feature at this point, but it's still one of the most beneficial, useful technologies available in load balancing and application delivery controllers today.

If you aren't using it, you should be. 

Related Links
Persistent and Persistence, What's the Difference?
SOA and Web 2.0: The Connection Management Challenge
The Impact of the Network on AJAX
The Impact of AJAX on the Network [white paper] (text version)

Follow me on Twitter View Lori's profile on SlideShare AddThis Feed Button Bookmark and Share