700 likes | 826 Vues
This paper explores optimization techniques for TCP forwarding performance, particularly focusing on connection splicing. TCP forwarders serve as intermediary nodes that facilitate data exchange between TCP connections. By implementing connection splicing, the paper demonstrates how to enhance data flow control and minimize delays during transmission. Various proxy modes, including control and forwarding modes, are analyzed alongside the principles of efficient data handling through TCP connections. Results indicate that optimized forwarding strategies can significantly improve overall TCP performance, particularly in mobile computing environments.
E N D
Optimizing TCP Forwarder Performance IEEE/ACM TRANSACTIONS ON NETWORKING, VOL. 8, NO. 2, APRIL 2000 資工碩一 M9129018 陳宏仁
Outline • Introduction • TCP Forwarding • Connection Splicing • Connection Splicing In SCOUT • Conclusion
Introduction • TCP forwarder • A network node that establishes and forwards data between a pair of TCP connection • TCP forwarding • Indirect TCP communication via a proxy • Connection splicing • Improve TCP forwarding performance TCP forwarder TCP connection TCP connection
TCP Forwarding • Proxy • Mediate the communication • Interpose between two connection • Control the flow of data between the communicating parties • Proxy has two mode • Control mode • Forwarding mode Control Mode Forwarding Mode Control Mode Back to control mode Processing control function Move data between connection
TCP Forwarding (cont.) • Proxy can be classified into four categories • First • In control mode only during connection setup • After connection setup, switch to forwarding mode for the duration of connection • Second • Authenticate the user or request • Check user ID, password , and destination of the Telnet request FTP Proxy Telnet Proxy
TCP Forwarding (cont.) • Third • Remains in control mode for all data transferred in one direction (HTTP proxy) • Switch to forwarding mode for data transferred in the other (HTTP server) • Fourth • Remains in control mode and continuously monitors data passed in both directions HTTP Proxy Proxy
Firewall • Data from one network pass through the proxy which forwards them to the other network • If the desired security guarantees are not violated
Mobile Computing • Filtering data • Reduce or remove too big data • When mobile host is connected to wired network • Only relay data in forward mode • Allow a mobile host to change its point of attachment to network • Mobile host can terminate TCP connections • Move to new location with a new IP address • Establish a new set of TCP connections to proxy
Connection Splicing • The basic idea of connection splicing • To detect when a proxy makes a transition from control mode to forwarding mode • Splice two TCP connections together into a single forwarding path through the system Unoptimized TCP forwarder Optimized TCP forwarder With spliced connection
Forwarding • Primary task on FWD processing step • Change the header of incoming TCP segment to account for the differences in the two original TCP connections
Forwarding (cont.) • From connection A to connection B • Output.DstPort = RemotePortB • Output.SrcPort = LocalPortB • Output.SeqNum = Input.SeqNum + SeqNumOffsetA->B • Output.Ack = Input.Ack – SeqNumOffsetB->A • Output.Cksum = Input.Cksum + CksumPatchA->B Connection A Connection B TCP forwarder
Splicing • TCP buffers contain acknowledged data • Forwarder can’t let TCP acknowledge new data • Give it more data to deliver reliably • Impractical to wait until two connections go idle before completing the splice
Splicing (cont.) • Two way to handle newly arriving segment during transition period • Delay the activation of spliced connection until after buffers have drained • TCP acknowledge segments • After transition is complete, buffered segments are processed by FWD • Allow FWD to begin forwarding data concurrently with draining the buffers • All newly arriving segments are delivered to both the original TCP protocol and to FWD
Unsplicing • When the forwarding proxy switches from forwarding mode to control mode, connections must be unspliced • Difficult to decide when proxy should switch back to control mode • Proxy has to find control information by looking at out-of-order segments
Unsplicing (cont.) • Dealing with acknowledgements makes it difficult to unsplice a connection • No acknowledged segment • Reconstruct TCP connections • Acknowledged segment • Wait for all of segments be acknowledged • Continuously monitor segment stream until copy all unacknowledged segments
Flow Control • During unoptimized operation • Flow control is handled by two independent TCP protocols on forwarder, and TCP protocol on the end hosts • During optimized operation • Flow control is handled by the end host only • TCP forwarder can restrict window size to avoid unnecessary retransmissions
Additional Optimizations • Connection splicing optimization can be applied not only at TCP level, but also to unfragmented IP datagram • Forwarder can process IP datagrams similarly to an IP router, with additional TCP segment header manipulation
Connection Splicing In SCOUT • SCOUT is a configurable OS explicitly designed to support data flow • Video streams through an MPGE player • A pair of TCP connections through a firewall
2-Path • As going from one path to another often will require a context switch • Like firewall structure
1-Path • Similar to 2-path configuration, except two network devices are connected by a single path
FWD • Optimized version of 1-path • Splice into a single connection & forwarder is reduced to updating TCP header • Support reassembly of IP packets
IP/FWD • Further Optimized version of FWD • Network level packets are modified directly and forwarded • Don’t support reassembly of IP packets
IP Router • Modify network packets directly in the same way as IP/FWD • Not update TCP header
In Linux Configuration • TIS firewall • Offer full filter functionality, but use a null filter • Filtering IP router • Filtering on IP addresses, protocol & port number • Like IP/FWD case in SCOUT • IP router • Basic in-kernel Linux IP forwarding with no filtering
Test Setup • 200MHz PentiumPro workstation • 256KB cache, 128MB RAM • Digital Fast EtherWORKS PCI 10/100 32-bit PCI 10/100 MB/s adapters • Linux version 2.0.30
Processing Overhead • Back-to-back latency & network interface latency
Processing Overhead (cont.) • Summarizes the processing of a single packet in firewalls and routers for both SCOUT & Linux
Aggregate Throughput • Measure aggregate throughput of one, two, and three concurrent TCP connections over 2-path & IP/FWD • Packet is 1460 bytes in 100Mbit Ethernet Mbyte/S
Cost of Unsplicing • First • Fix up TCP header during spliced operation • FWD keeps track of SN, ACK number, window of spliced TCP connection • Second • Determine when to unsplice • Third • Require to initiate two TCP state machine • Last • Impact on end-to-end throughput
Conclusion • Connection splicing is a good idea, but it doesn’t tell us how to implement
Cost Of Splicing • TCP sequence number trace showing the effects of the SCOUT implementation of splicing
Connection Splicing • An optimization technique that improves TCP forwarding performance • Basic idea of connection splicing • To detect when a proxy makes a transition from control mode to forwarding mode • And then splice the two TCP connections together into a single forwarding path through the system
Optimizing two TCP connectionsinto a single spliced connection (1) • Unoptimized TCP forwarder • Require TCP segments to traverse TCP twice, with each instance of TCP maintaining the full state of the connection
Optimizing two TCP connectionsinto a single spliced connection (2) • Optimized TCP forwarder (with spliced connection) • Replace the proxy and two TCP processing steps with a single FWD processing step • FWD maintains just enough state to forward TCP segment successfully from one network to another
Flow Path of TCP Forwarding • TCP forwarding starts in the unoptimized configuration • When proxy shifts from control to forwarding mode • Makes a transition to optimized configuration • When TCP forwarding back to control mode • Revert back to the unoptimized configuration
Three Cases To Consider • Optimized TCP forwarder in the steady state • Unoptimized TCP forwarder becomes optimized TCP forwarder • Optimized TCP forwarder back to unoptimized TCP forwarder
Forwarding (1) • The primary task of FWD processing step • Change the header of incoming TCP segment to account for the difference in the two original TCP connections • If TCP connection establishment was interleaved • One connection knew what port and sequence numbers were used by other connection • Additional optimization are possible
Forwarding (3) • When forward connection A to connection B • Port Number • TCP forwarder operate as a classical proxy • Source and destination port numbers of segments arriving on A have to be changed to the port numbers of connection B • TCP forwarder is a transparent proxy • Proxy uses the same port numbers • Output.DstPort = RemotePortB • Output.SrcPort = LocalPortB
Forwarding (4) • Sequence Number • TCP initializes SN randomly for each independent connection • The SN for an outgoing segment is computed by adding a fixed offset to the SN in the incoming segment • Output.SeqNum = Input.SeqNum + SeqNumOffsetA->B
Forwarding (5) ????????? • Acknowledge Number • ACK number acknowledges SN forwarded in the other direction • ACK number in a outgoing segment is computed by subtracting from the SN in the incoming segment, the SN offset for segments flowing in the other direction • Output.Ack = Input.Ack – SeqNumOffsetB->A • In my opinion • Output.Ack = Input.Ack + SeqNumOffsetA->B
Forwarding (6) • Checksum • Modifying the other fields require adjusting the TCP checksum • Output.Cksum = Input.Cksum + CksumPatchA->B
Forwarding (7) • In the unspliced case • Segments sent to proxy are put to Incoming TCP stack • Check if they can reach their destination • Data are buffered in outgoing TCP stack until they are acknowledged by the destination • In the spliced case • No longer traverse the two TCP protocol stack • Not acknowledge proxy, nor resend data to destination