As Internet based broadband systems have become widely deployed, the display of high-quality streaming media (e.g., television signals) delivered through Internet protocol (“IP”) based networks has been contemplated. Many vendors seek both to display media as well as to stream digital media in various customer premises, including digitally connected homes. However, because of the high bandwidth and processing power required to deliver and display digital video, it is quite a challenge to provide high quality IP-based television (“IPTV”) functionality using traditional settop box (“STB”) capabilities.
Use of the Transmission Control Protocol/Internet Protocol (“TCP/IP”) as a protocol for network digital media transmission and reception has been proposed and adopted for its strength in error-free reliable data delivery in digital streaming media applications. The ubiquity of TCP/IP, the ease of creating applications on top of TCP/IP, and the error-free nature of the TCP/IP communications are some of its advantages. However, disadvantages of using TCP/IP as a transfer protocol for digital media applications include the fact that the central processing unit (“CPU”) load when using TCP/IP is quite high and often limits the application performance on low end IPTV settop boxes used for digital media streaming and rendering.
TCP/IP it is a heavyweight protocol in terms of its resource use and generally does not scale well for high bandwidth applications on low powered STBs. Normally, when TCP/IP is used to receive an audio-visual (“AV”) data stream from a server through a network for playback on a client, a network interface on the client receives packetized data into kernel space buffers, the packets flow up to the TCP/IP layer, and then the packets are copied to application buffers. In addition, the TCP/IP stack creates acknowledgement packets and sends the acknowledgement packets out through the network interface to the server. When the successful transmission of a packet is acknowledged, the received payload data stored in the application buffers gets copied back to playback decoders, from which the payload data is consumed by the video- and audio-rendering hardware, and displayed on an output device.
The processing steps required to move TCP/IP data input through the network interface to the output device using a standard TCP/IP stack are expensive in terms of CPU processing. For example, within the IP layer, IP packet headers are validated, and header checksum analysis is performed in software. Within the TCP layer, received packets are acknowledged back to the server, packets are copied from the network interface to user space application buffers via sockets, a checksum is performed at the TCP layer, and flow control is maintained through various algorithms based on slow-start methods, congestion avoidance, and requests for retransmissions.
At various protocol layer transitions (e.g., Ethernet to IP or IP to TCP) the CPU must compute information for use in packet headers. Often data is moved from one memory location to another for access by hardware. If cached memory access is used to speed up computations, the data caches must be written back to main memory because the CPU will make the cached data lines dirty, which degrades the CPU's performance. In addition, modern protocol stacks process packets with socket buffers, which provide a flexible implementation and general purpose data structure for passing data around internally in operating system kernels. However, the socket buffer allocation, tracking, and freeing (when transmissions are completed) can consume significant CPU resources as well.
Thus, the TCP/IP protocol stack generally uses significant CPU and memory resources, and low end STBs are usually unable to sustain high bandwidth reception (e.g., 20-50 Mbits/sec) without a TCP offload facility (“TOE”). While hardware acceleration of TCP has been applied in high performance servers, it adds an additional cost for STBs, and such a cost can be prohibitive.