Software Defined Networking (SDN) is an approach to computer networking that employs a split architecture network in which the forwarding (data) plane is decoupled from the control plane. The use of a split architecture network simplifies the network devices (e.g., switches) implementing the forwarding plane by shifting the intelligence of the network into one or more controllers (also referred to as SDN controllers) that oversee the switches. SDN facilitates rapid and open innovation at the network layer by providing a programmable network infrastructure.
A network may employ a transparent proxy to enhance traffic delivery in the network. A transparent proxy intercepts traffic between two endpoints (e.g., a client and a server) to provide services that enhance traffic delivery such as transparent caching or video compression. The transparent proxy may be transparent in the sense that the endpoints may not be aware of the existence of the transparent proxy.
In an SDN network, an SDN controller may configure switches in the SDN network to direct a sample of the traffic destined for a particular destination (e.g., a server) to an Application Flow Controller (AFC). The sample of the traffic may be a portion of the traffic that is selected based on certain criteria (e.g., based on source IP address). The AFC may analyze the sampled traffic to determine the characteristics of the traffic destined for that particular destination. Based on the determined characteristics of the traffic destined for that particular destination, the AFC may determine that the traffic should be processed by a particular transparent proxy to enhance traffic delivery (e.g., transparent caching or video compression) or that the traffic should no longer be processed by a particular transparent proxy (e.g., if the traffic is currently being processed by a transparent proxy). Stated differently, the AFC may determine that the traffic destined for the particular destination should take a new path through the SDN network that includes a particular transparent proxy (or excludes a particular transparent proxy) based on the determined characteristics of the traffic. The AFC may then transmit an instruction to the SDN controller to configure the forwarding behavior of one or more switches in the SDN network to forward the traffic destined for the particular destination along the new path.
A transparent proxy may employ a split Transmission Control Protocol (TCP) connection between the endpoints (e.g., a client and a server) to provide traffic delivery enhancement services both upstream and downstream. For example, the split TCP connection may include a first TCP connection between the client and the transparent proxy and a second TCP connection between the transparent proxy and the server.
With conventional techniques, when the traffic destined for a particular destination starts taking a new path, all existing TCP connections involving that particular destination will break because the old transparent proxy that handled the existing TCP connections is no longer in the new path and the new transparent proxy or the server in the new path is not aware of the existing TCP connections and thus resets the TCP connections. This results in the TCP connections needing to be reestablished, which introduces latency and extra work load on the network and the endpoints (e.g., client and server), which can negatively impact the end-user experience.