Hardware TCP accelerator

A TCP/IP packet decoder fetches, from a packet received via a satellite communication system, IP version information, which is provided to version comparators. When a version comparator indicates a match, protocol information is provided to a TCP comparator. If the TCP comparator determines that the packet is a TCP data packet, a flag is raised causing generation of a TCP acknowledgment for transmission to a source device. In another embodiment, a layer 3 switch or router includes a TCP hardware filter to determine whether the received packet is a TCP data packet, thereby causing the TCP data packet to be mirrored for transmission to a modem. In a third embodiment, a TCP hardware filter, provides an indication to a layer 2 switch when a TCP data packet is received causing the TCP data packet to be mirrored for transmission to a modem, which generates and transmits a TCP acknowledgment.

FIELD OF THE INVENTION

The invention relates to Transmission Control Protocol (TCP) spoofing in a system in which a long delay may exist between a time at which a TCP data packet is sent from a source and a time at which a TCP acknowledgment is received by the source. In particular, the invention relates to use of hardware to cause a TCP acknowledgment to be quickly transmitted to the source, via a satellite communication system, in response to receiving a TCP data packet from the source. Due to propagation delay inherent in satellite communication systems as well as latency due to protocol layers of network gateways, a received TCP data packet is acknowledged before the TCP data packet is received by a destination device, thereby reducing the propagation delay.

BACKGROUND

Satellite communication systems introduce additional latency due to propagation delay between communicating source and destination devices. Non-critical applications, including but not limited to, Voice over Internet Protocol (VoIP), Internet Protocol Television (IPTV), and stream media typically use a User Datagram Protocol (UDP), which provides one-way communication. Unlike TCP data packets, received UDP packets are not acknowledged to a source. Therefore, the additional latency caused by the satellite communication systems does not cause a problem when using the UDP.

The TCP provides reliable communication between a source device and a destination device. As data is received in a TCP data packet, the destination device responds with a TCP acknowledgment packet. The source device keeps a record of each TCP data packet that the source device sends. The source device also maintains a timer, which is started when the TCP data packet is sent, and retransmits the TCP data packet if the timer expires before a corresponding TCP acknowledgment packet is received from the destination device. The timer may expire 0.5 seconds, or another suitable time period, after being started if no corresponding TCP acknowledgment packet is received. When using a satellite communication system to communicate TCP data packets and corresponding TCP acknowledgment packets between the source device and the destination device, propagation delay may be on an order of seconds, thereby preventing the source from receiving TCP acknowledgment packets within the timeout period.

TCP spoofing may be used to solve the problem caused by the propagation delay introduced by satellite communication systems. One solution was provided in which an application processor executed software to process packets received via a satellite communication system before the packets are routed over a local area network to a destination. The software, when executed by the application processor, caused the application processor to parse each received packet to determine whether a received packet, which was communicated via a system having a large propagation delay such as a satellite communication system, was a TCP data packet. If the received packet was determined to be the TCP data packet, then the application processor generated a corresponding TCP acknowledgment packet for transmission back to a source of the TCP data packet. The application processor forwarded received packets toward the destination in a local area network, and generated a corresponding TCP acknowledgment packet to send to the source only when the received packet was determined to be the TCP data packet.

Currently, most traffic between a source and a destination communicating via a satellite communication system is non-TCP traffic. The one solution, described above, reduced the propagation delay between a source and a destination, but was very inefficient because each and every received packet was parsed by the application processor to determine whether the received packet was the TCP data packet. Due to the workload caused by parsing, the application processor employed in the one solution was a high-performance processor that consumed more power and increased system cost. As a result, the TCP spoofing as implemented by software in the one solution introduced parsing delays for all traffic, thereby delaying UDP traffic, reducing Quality of Service (QoS) for VoIP, and slowing streamed media.

SUMMARY

In a first embodiment, a hardware TCP accelerator for use in a satellite communication system is provided. The hardware TCP accelerator includes a reception data buffer, a transmission data buffer, a TCP acknowledgement generator, and a hardware TCP filter. The reception data buffer is for receiving a first packet from a wide area network via the satellite communication system. The transmission data buffer is for storing a second packet and all packets for transmission. The hardware TCP filter is for fetching first information from the first packet in the reception data buffer, while forwarding the first packet to a destination in a local area network, and determining whether the first packet is a TCP data packet. When the hardware TCP filter determines that the first packet is the TCP data packet, the TCP acknowledgement generator receives TCP information and generates the second packet for placement in the transmit buffer. The second packet is transmitted causing a TCP acknowledgment packet to be transmitted to a source of the first packet via the satellite communication system and the wide area network.

In a second embodiment, a network switch or router supports TCP spoofing. A hardware TCP accelerator includes a reception data buffer, a transmission data buffer, a TCP acknowledgement generator, and a hardware TCP filter. A first packet is received into a reception data buffer. The first packet in the reception data buffer is made available to a network switch or a router and is simultaneously forwarded to a destination connected to a local area network. A hardware TCP filter fetches first information from the first packet in the reception data buffer and determines whether the first packet is a TCP data packet. After the hardware TCP filter determines that the first packet is the TCP data packet, the TCP data packet is mirrored to the TCP acknowledgement generator from the network switch or the router. The TCP acknowledgement generator receives the mirrored TCP data packet, generates a second packet, and sends the second packet to a transmission data buffer. The second packet is transmitted from the transmission data buffer, thereby causing a TCP acknowledgment packet to be transmitted to the source via the wide area network.

In a third embodiment, an apparatus for use in a satellite communication system is provided. The apparatus includes a reception data buffer, a transmission data buffer, a TCP acknowledgement generator, and a hardware TCP filter. The reception data buffer is for receiving a first packet from a source via the satellite communication system. The transmission data buffer is for storing a second packet and all packets for transmission. The hardware TCP filter is for fetching first information from the first packet while forwarding the first packet to a destination in a local area network, and determining whether the first packet is a TCP data packet. When the hardware TCP filter determines that the first packet is the TCP data packet, the TCP data packet is sent to the TCP acknowledgement generator. The TCP acknowledgement generator receives the TCP data packet, generates the second packet, and sends the second packet to the transmission data buffer for transmission. The transmission of the second packet causes a TCP acknowledgment packet to be transmitted to the source of the first packet via the satellite communication system. The apparatus is a complex programmable logic device, a field programmable gate array, or an application specific integrated circuit.

DETAILED DESCRIPTION

Overview

A TCP hardware accelerator is provided. In one embodiment, the hardware TCP accelerator receives traffic from a source via a satellite communication system. The satellite communication system may communicate with the source via a wide area network (WAN), which may further include the Internet.

In a first embodiment, a TCP hardware accelerator may include a hardware TCP filter. The hardware TCP filter may include a TCP/IP packet decoder and a number of comparators. The TCP/IP packet decoder may obtain information from a packet received via a satellite communication system and may provide the information to a first set of multiple comparators for determining a version of Internet Protocol (IP) to which the received packet pertains. Each of the first set of multiple comparators has a corresponding comparator of a second set of multiple comparators for determining whether the received packet is a TCP data packet of the determined version of the IP. If the received packet is determined to be a TCP data packet of the determined version of the IP, a flag may be set thereby providing a signal to an application processor including a TCP acknowledgment generator. The TCP acknowledgment generator may generate a TCP acknowledgment packet, corresponding to the TCP data packet, which may be transmitted to a source of the TCP data packet via the satellite communication system. The application processor may forward, at line speed, all traffic received via the satellite communication system to a destination in a local area network directly without parsing.

In a second embodiment, a satellite modem having a TCP acknowledgment generator may be provided. The TCP acknowledgment generator may be implemented by an application processor executing software. Traffic communicated via a satellite communication system may be received by a satellite modem and provided to a hardware TCP accelerator. The hardware TCP accelerator may be supported by a layer 3 switch, or a router, which receives packets from the satellite modem. The layer 3 switch, or the router, may include a hardware TCP filter for determining whether each received packet from the satellite modem is a TCP data packet of one of a number of IP versions. The layer 3 switch, or the router, may route each received packet to a corresponding destination in a local area network, while at the same time determining, by the hardware TCP filter, whether each of the received packets is a TCP data packet of one of a number of IP versions. If a respective received packet is determined to be the TCP data packet of the one of the number of IP versions, the layer 3 switch, or the router, may mirror the TCP data packet back to the satellite modem. The TCP acknowledgment generator of the satellite modem may generate a TCP acknowledgment packet corresponding to the mirrored TCP data packet and the satellite modem may transmit the TCP acknowledgment packet to a source of the received packet via the satellite communication system.

In a third embodiment, a satellite modem including a TCP acknowledgment generator may receive a packet from a source via a satellite communication system and may provide the received packet to a hardware TCP accelerator, which is further connected to a layer 2 switch. The hardware TCP accelerator may include a hardware TCP filter as described with respect to the first embodiment. The hardware TCP accelerator may provide the received packet to the layer 2 switch, or the router, for routing to a destination in a local area network while the hardware TCP filter determines whether the received packet is a TCP data packet of one of a number of IP versions. When the hardware TCP filter determines the received packet to be the TCP data packet of the one of the number of IP versions, a flag corresponding to the one of the number of IP versions may be set to thereby send a signal to the layer 2 switch indicating that the received packet is the TCP data packet of the one of the number of IP versions. In response to receiving the signal, the layer 2 switch may mirror the received TCP data packet to the hardware TCP accelerator, which further transmits the mirrored TCP data packet to the satellite modem. The TCP acknowledgment generator included in the satellite modem may generate a TCP acknowledgment packet, corresponding to the mirrored TCP data packet, and the satellite modem may transmit the TCP acknowledgment packet to a source of the TCP data packet via the satellite communication system.

Exemplary Operating Environment

FIG. 1illustrates an exemplary operating environment100for various embodiments. Operating environment100may include a satellite antenna102, a modem104, a hardware TCP accelerator106and a local area network (LAN)108. Satellite antenna102may transmit signals, including packets, to a satellite gateway (not shown) via a satellite (not shown) and may receive signals, including packets, from the satellite gateway via the satellite. The satellite gateway may further be connected to a wide area network (WAN) including, but not limited to, the Internet. Modem104may receive packets from and may send packets to one or more devices connected to the WAN via satellite antenna102, and may receive packets from and may send packets to one or more devices connected to LAN108via hardware TCP accelerator106.

First Embodiment

FIG. 2illustrates a first embodiment of hardware TCP accelerator106a. Hardware TCP accelerator106amay include a reception data buffer202, a transmission data buffer204, a hardware TCP filter206, and a TCP acknowledgment generator222. Hardware TCP filter206may include a TCP/IP packet decoder212, an IP version 4 comparator214, a TCP comparator216, an IP version 6 comparator218, a TCP comparator220, and a TCP acknowledgment generator222. TCP acknowledgment generator222may be implemented by a network application processing device. Hardware TCP filter206may be implemented inside a Complex Programmable Logic Device (CPLD) or a Field Programmable Gate Array (FPGA). In an alternative implementation, reception data buffer202and transmission data buffer204may be included within the CPLD or the FPGA. As a second alternative implementation, hardware TCP filter206may be implemented inside the FPGA or an Application Specific Integrated Circuit (ASIC) and may include a processor. In the second alternative implementation, a network application processing device may be provided between TCP hardware accelerator106aand LAN108. In a variation of the second alternative implementation, TCP acknowledgment generator222may be implemented by the processor of the FPGA or the ASIC instead of the network application processing device.

A modem104amay transmit packets and may receive packets via a satellite communication system in order to communicate with one or more devices connected to a WAN. Modem104amay provide received packets to receiver208, which further provides the received packets to reception data buffer202of TCP hardware accelerator106a. Transmission data buffer204of TCP hardware accelerator106amay provide packets to be transmitted to transmitter210, which further provides the packets to modem104afor transmission, via the satellite communication system, to the one or more devices connected to the WAN.

FIG. 3, with reference toFIG. 2, illustrates exemplary operation of hardware accelerator106a. We assume that modem104areceived a packet from a source device connected to the WAN and provided the received packet to reception data buffer202via receiver208. TCP/IP packet decoder212fetches an IP version from the received packet while the packet is simultaneously routed to a destination connected to LAN108via application processing device222(act302). TCP/IP packet decoder212may provide the IP version to multiple IP version comparators. In this example, the IP version is provided to IP version 4 comparator214and IP version 6 comparator218to determine to which of the multiple IP versions the received packet pertains.

If IP version comparator214determines that the received packet pertains to IP version 4 (act304), then TCP/IP packet decoder212may fetch protocol information from the received packet (act306). The protocol information may be provided to TCP comparator216to determine whether the fetched protocol information indicates that the received packet is a TCP data packet (act308). If TCP comparator216determines that the received packet is not the TCP data packet, then the received packet may be discarded (act310). Otherwise, TCP comparator216may set, or raise, an IP version 4 TCP flag (act312), which is provided to TCP acknowledgment generator of application processing device222. Upon receiving an indication of the set, or raised, IP version 4 TCP flag, the TCP acknowledgment generator may generate a TCP acknowledgment packet and provide the TCP acknowledgment packet to transmission data buffer204(act314). Transmission data buffer204may then provide the TCP acknowledgment packet to transmitter210, which further provides the TCP acknowledgment packet to modem104afor transmission, via the satellite communication system, to the source connected to the WAN.

If, during act304, the received packet is determined not to pertain to IP version 4, then IP version 6 comparator218determine whether the fetched IP version indicates that received packet pertains to IP version 6 (act316). If the received packet does not pertain to IP version 6, then the received packet may be discarded (act322). Otherwise, if the received packet is determined to pertain to IP version 6, TCP/IP packet decoder212may fetch protocol information from the received packet (act318) and may provide the protocol information to TCP comparator220to determine whether the received packet pertaining to IP version 6 is a TCP data packet (act320). If the received packet is determined not to be the TCP data packet, then the received packet may be discarded (act322). Otherwise, TCP comparator220may set, or raise, an IP version 6 TCP flag (act324), which is provided to TCP acknowledgment generator of application processing device222. Upon receiving an indication of the set, or raised, IP version 6 TCP flag, the TCP acknowledgment generator may generate a TCP acknowledgment packet and may provide the generated TCP acknowledgment packet to transmission data buffer204(act326). Transmission data buffer204may then provide the TCP acknowledgment packet to transmitter210, which further provides the generated TCP acknowledgment packet to modem104afor transmission, via the satellite communication system, to the source connected to the WAN.

Second Embodiment

FIG. 4illustrates a second embodiment. In this embodiment, hardware TCP accelerator106bmay include a reception data buffer404, a transmission data buffer406, and a layer 3 switch, or a router408, with a hardware TCP filter. A modem402may include an application processing device, which may further implement a TCP acknowledgment generator. Modem402may receive packets from and transmit packets to a source device connected to a WAN, which is further connected to a satellite communication system. Modem402may communicate, via the satellite communication system, with the source device. Upon receiving a packet from the source device, modem402may provide the received packet to a reception data buffer404via a LAN interface, a Media Independent Interface (MII) receive bus, or other communication medium. Modem402may receive packets from a transmission data buffer406via a LAN interface or a MII transmit bus, or other communication medium.

FIG. 5illustrates hardware TCP filter502within layer 3 switch or router408in more detail. Hardware TCP filter502may include a TCP/IP packet decoder504, an IP version 4 comparator506, a TCP comparator508, an IP version 6 comparator510, and a TCP comparator512.

Operation of hardware TCP filter502is discussed with reference toFIG. 6. We assume that modem402(FIG. 4) received a packet from a source device connected to a WAN and provided the received packet to reception data buffer404via the LAN or MII receive bus. TCP/IP packet decoder504may fetch an IP version from the received packet while the packet is simultaneously routed to a destination connected to LAN108(act602). TCP/IP packet decoder212may provide the IP version to multiple IP version comparators. In this example, the IP version may be provided to IP version 4 comparator506and IP version 6 comparator510to determine to which of the multiple IP versions the received packet pertains.

If IP version comparator506determines that the received packet pertains to IP version 4 (act604), then TCP/IP packet decoder504may fetch protocol information from the received packet (act606). The protocol information may be provided to TCP comparator508to determine whether the fetched protocol information indicates that the received packet is a TCP data packet of IP version 4 (act608). If TCP comparator508determines that the received packet is not the TCP data packet, then the received packet may be discarded (act610). Otherwise, TCP comparator508may set, or raise, an IP version 4 TCP flag518, which is provided to or gate514(act612). Output of or gate514may be provided to register516, which may include contents of the received packet from reception data buffer404. When output of or gate514is set, or raised, then the received packet in register516(i.e., the TCP data packet) may be mirrored to transmission data buffer406(act614). The received packet stored in register516may then be sent to TCP acknowledgment generator within modem402, which generates and transmits a TCP acknowledgment packet, via a satellite communication system, to a source device connected to a WAN (act618).

If, during act604, the received packet is determined not to pertain to IP version 4, then IP version 6 comparator508may determine whether the fetched IP version indicates that the received packet pertains to IP version 6 (act620). If the received packet does not pertain to IP version 6, then the received packet may be discarded (act626). Otherwise, if the received packet is determined to pertain to IP version 6, TCP/IP packet decoder504may fetch the protocol information from reception data buffer404(act622) and may provide the protocol information to TCP comparator512to determine whether the received packet pertaining to IP version 6 is a TCP data packet (act624). If the received packet is determined not to be the TCP data packet, then the received packet may be discarded (act626). Otherwise, TCP comparator512may raise an IP version 6 TCP flag520, which may be provided to or gate514(act628). Output of or gate514may be provided to register516, which may include contents of the received packet from reception data buffer404. When output of or gate514is set to one, then the received packet in register516(i.e., the TCP data packet) may be mirrored to transmission data buffer406(act614). The received packet stored in register516may then be sent to TCP acknowledgment generator within modem402, which generates and transmits a TCP acknowledgment packet, via a satellite communication system, to the source device connected to the WAN (act618).

Third Embodiment

FIG. 7shows a third embodiment. In the third embodiment, a hardware TCP accelerator106cmay include a reception data buffer704, a transmission data buffer706, and a hardware TCP filter708. Hardware TCP filter708may include a TCP/IP packet decoder710, an IP version 4 comparator712, a TCP comparator714, an IP version 6 comparator716, and a TCP comparator718. A modem702may include an application processing device, which may implement a TCP acknowledgment generator for generating a TCP acknowledgment packet. Modem702may communicate with a satellite communication system, may provide received packets to reception data buffer704, and may transmit packets received from transmission data buffer706. A layer 2 switch720may receive packets from reception data buffer704and may route packets to a destination device connected to local area network108. Similarly, layer 2 switch720may receive packets from a device connected to local area network108and may provide the received packets to transmission data buffer706.

Operation of this embodiment is explained with reference toFIGS. 8 and 7. We assume that modem402received a packet from a source device connected to a WAN and provided the received packet to reception data buffer704via a LAN/MII receive bus. TCP/IP packet decoder710may fetch an IP version from the received packet while the packet is simultaneously sent at line speed through layer 2 switch720to a destination connected to LAN (act802). TCP/IP packet decoder710may provide the IP version to multiple IP version comparators. In this example, the IP version is provided to IP version 4 comparator712and IP version 6 comparator716to determine to which of the multiple IP versions the received packet pertains.

If IP version comparator714determines that the received packet pertains to IP version 4 (act804), then TCP/IP packet decoder710may fetch protocol information from the received packet (act806). The protocol information may be provided to TCP comparator714to determine whether the fetched protocol information indicates that the received packet is a TCP data packet (act808). If TCP comparator714determines that the received packet is not the TCP data packet, then the received packet may be discarded (act810). Otherwise, TCP comparator714may set, or raise, an IP version 4 TCP flag, which is provided to layer 2 switch720, which further causes layer 2 switch720to mirror the TCP data packet to transmission data buffer706(act814). Transmission data buffer706may then provide the mirrored TCP data packet to modem402(act816). The TCP acknowledgment generator, included in modem402, may generate a TCP acknowledgment packet and modem402may transmit the generated TCP acknowledgment packet, via a satellite communication system, to the source device connected to the WAN (act818).

If, during act804, the received packet is determined not to pertain to IP version 4, then IP version 6 comparator716may determine whether the fetched IP version indicates that the received packet pertains to IP version 6 (act820). If the received packet does not pertain to IP version 6, then the received packet may be discarded (act826). Otherwise, if the received packet is determined to pertain to IP version 6, TCP/IP packet decoder710may fetch protocol information from the received packet (act822) and may provide the protocol information to TCP comparator718to determine whether the received packet pertaining to IP version 6 is a TCP data packet (act824). If the received packet is determined not to be the TCP data packet, then the received packet may be discarded (act826). Otherwise, TCP comparator718may set, or raise, an IP version 6 TCP flag (act828), which is provided to layer 2 switch720, which further causes layer 2 switch720to mirror the TCP data packet to transmission data buffer706(act830). Transmission data buffer706may then provide the mirrored TCP data packet to the TCP acknowledgment generator included in modem402(act832). The TCP acknowledgment generator further generates a TCP acknowledgment packet and modem402provides the generated TCP acknowledgment packet, via the satellite communication system, to the source device connected to the WAN (act834).

CONCLUSION

Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms for implementing the claims.

Although the above descriptions may contain specific details, they should not be construed as limiting the claims in any way. Other configurations of the described embodiments are part of the scope of this disclosure. Further, implementations consistent with the subject matter of this disclosure may have more or fewer acts than as described, or may implement acts in a different order than as shown. Accordingly, the appended claims and their legal equivalents should only define the invention, rather than any specific examples given.