1. Technical Field
The invention relates to network protocols and data packets. More particularly, the invention relates to the decoding of network protocols and processing of packet data during packet reception without the time-consuming overhead of software or software/hardware implementations. In addition, the invention allows one pass parsing of the data, eliminating the buffering of data packets for different stacks, and thus minimizing the memory usage.
2. Description of the Prior Art
Computer networks necessitate the provision of various communication protocols to transmit and receive data. Typically, a computer network comprises a system of devices such as computers, printers and other computer peripherals, communicatively connected together. Data are transferred between each of these devices through data packets which are communicated through the network using a communication protocol standard. Many different protocol standards are in current use today. Examples of popular protocols are Internet Protocol (IP), Internetwork Packet Exchange (IPX), Sequenced Packet Exchange (SPX), Transmission Control Protocol (TCP), and Point to Point Protocol (PPP). Each network device contains a combination of hardware and software that translates protocols and process data.
An example is a computer attached to a Local Area Network (LAN) system, wherein a network device uses hardware to handle the Link Layer protocol, and software to handle the Network, Transport, and Communication Protocols and information data handling. The network device normally implements the one Link Layer protocol in hardware, limiting the attached computer to only that particular LAN protocol. The higher protocols, e.g. Network, Transport, and Communication protocols, along with the Data handlers, are implemented as software programs which process the data once they are passed through the network device hardware into system memory. The advantage to this implementation is that it allows a general purpose device such as the computer to be used in many different network setups and support any arbitrary network application that may be needed. The result of this implementation, however, is that the system requires a high processor overhead, a large amount of system memory, complicated configuration setup on the part of the computer user to coordinate the different software protocol and data handlers communicating to the computer's Operating System (O.S.) and computer and network hardware.
This high overhead required in processing time is demonstrated in U.S. Pat. No. 5,485,460 issued to Schrier et al on Jan. 16, 1996, which teaches a method of operating multiple software protocol stacks implementing the same protocol on a device. This type of implementation is used in Disk Operating System (DOS) based machines running Microsoft Windows. During normal operation, once the hardware verifies the transport or link layer protocol, the resulting data packet is sent to a software layer which determines the packets frame format and strips any specific frame headers. The packet is then sent to different protocol stacks where it is evaluated for the specific protocol. However, the packet may be sent to several protocols stacks before it is accepted or rejected. The time lag created by software protocol stacks prevent audio and video transmissions to be processed in real-time; the data must be buffered before playback. It is evident that the amount of processing overhead required to process a protocol is very high and extremely cumbersome and lends itself to applications with a powerful Central Processing Unit (CPU) and a large amount of memory.
Consumer products that do not fit in the traditional models of a network device are entering the market. A few examples of these products are pagers, cellular phones, game machines, smart telephones, and televisions. Most of these products have small footprints, 8-bit controllers, limited memory or require a very limited form factor. Consumer products such as these are simplistic and require low cost and low power consumption. The previously mentioned protocol implementations require too much hardware and processor power to meet these requirements. The complexity of such implementations are difficult to incorporate into consumer products in a cost effective way. If network access can be simplified such that it may be easily manufactured on a low-cost, low-power, and small form-factor device, these products can access network services, such as the Internet.
The invention provides a low-cost, low-power, easily manufacturable, small form-factor network access module which has a low memory demand and provides a highly efficient protocol decode. The invention comprises a hardware-integrated system that both decodes multiple network protocols in a byte-streaming manner concurrently and processes packet data in one pass, thereby reducing system memory and form factor requirements, while also eliminating software CPU overhead.
The preferred embodiment of the invention comprises a network protocol layer, data handler, O.S. State Machine, and memory manager state machines implemented at a hardware gate level. Network packets are received from a physical transport level mechanism by the network protocol layer state machine. The protocol state machine decodes network protocols such as TCP, IP, User Datagram Protocol (UDP), PPP, and Raw Socket concurrently as each byte is received. Each protocol handler parses, interprets, and strips header information immediately from the packet, requiring no intermediate memory. The resulting data are passed to the next protocol layer or data handler for which the latter case consists of data state machines that decode data formats such as email, graphics, Hypertext Transfer Protocol (HTTP), Java, and Hypertext Markup Language (HTML). Each data state machine reacts accordingly to the pertinent data, and any data that are required by more than one data state machine are provided to each state machine concurrently. Any data that are required more than once by a specific data state machine, are placed in a specific memory location with a pointer designating such data (thereby ensuring minimal memory usage). Resulting display data are immediately passed preformatted to a display controller. Any outgoing network packets are created by the data state machines and passed through the network protocol state machine which adds formats to the packet, and checksums the information header information, and forwards the resulting network packet via a physical transport level mechanism.
The preferred embodiment does not necessarily require a CPU and software to process the network packets, thereby greatly reducing system cost. The hardware gate level implementation provides a modular, embeddable design whereupon the designer may pick and choose the functionality that the particular application requires and still retain a low cost, low power, small form factor.
Referring to
As an example, a data handler that interprets HTML format could decode the HTML tags using a Cyclic Redundancy Check (CRC) calculation. HTML format contains character strings known as tags, which control the formatting of a subsequent block of text when displayed on a video output device. These tags may be efficiently decoded by generating a CRC number for a given tag and using said number to enable a formatting instruction. Such a decoding algorithm is suited for gate level implementation and provides for an HTML encoded document to be displayed on a video output device much more quickly than is currently possible.
Although the invention is described as being at the hardware gate level, one skilled in the art can readily appreciate that these functions may be implemented in many other ways such as Programmable Array Logic (PALs), General Array Logic (GALs), Read Only Memory (ROMs), and software. Additionally, specific protocols and data types have been indicated and one skilled in the art can readily appreciate that the modularity of the invention does not limit it to those specific protocols or data types.
Turning to
As an example, an incoming JPEG image packet is traced through the system, assuming a MODEM physical transport. The request starts with the user indicating a desire to download a given JPEG image by typing on keyboard 321. This input is interpreted by the keyboard interface 316 and passed to the O.S. State machine 315. O.S. State machine 315 processes the input and passes it as a command to the HTTP client 311. The HTTP client creates a request packet and passes it via the Port Decoder 309 to the TCP Layer 308. The TCP Layer prepends the appropriate TCP header and passes it to the IP Layer 307. The IP layer then prepends the appropriate IP header and passes the packet to the PPP layer 306. The PPP Layer prepends the appropriate header, appends an FCS, and passes the data to the Physical Transport Interface 305. The Physical Transport Interface serializes the data into a bit stream and sends the packet to the MODEM unit 304. When the request is accepted by the host server, it sends the requested JPEG image back to the client system. The data are first received by the MODEM 304 which indicates to the Physical Transport Interface 305 that data are present. The Physical Transport interface then reads the bit serial data from the MODEM, converts it to a parallel byte data, and indicates to the PPP Layer 306 that data are present. The PPP Layer reads in the received bytes. When it detects a valid start byte, it begins to parse the incoming bytes. When the byte stream reaches the PPP protocol field, the PPP Layer decodes it, and in this example decodes the embedded packet as being of type IP. In response to this protocol byte, the PPP Layer enables the IP Layer 307 and indicates to it that IP data are being received. All further data bytes received are now passed directly to the IP Layer. The IP Layer then begins to parse the incoming data bytes. When it comes to the IP header protocol field, it determines which higher protocol to enable. In this example, the IP Layer decodes the protocol field as being of type TCP. At this point, the IP Layer enables the TCP Layer 308 and indicates to it when TCP data are being received. When this indicator goes active, all further data bytes in the received packets are sent to both the IP and TCP Layers (IP Layer needs the data bytes to complete checksum calculations). The TCP Layer then begins to parse the incoming data bytes. When it comes to the TCP header destination port field, it determines which data handler to enable. In this example, the PORT field decodes to the HTTP client 311. At this point, the PORT decoder enables the HTTP client and indicate to it that HTTP requested data are being received. The HTTP client then begins to parse received data bytes. When the HTTP client determines that the packet is of type JPEG image, the HTTP client enables the JPEG decoder 313. At this point, all data bytes are now routed to the JPEG decoder. The JPEG decoder then receives all further incoming data bytes and processes them accordingly. The resulting decoded image is sent to the display memory via the Memory Controller 312 to be processed by the Display Controller 324 for output to display device 326.
As also noted in
Turning to
Turning to
Referring to
The following application examples further illustrate the versatility of the modular design of the invention.
Turning to
Referring to
Turning finally to
Example of Packet Reception
PPP header
IP header
TCP header
JPEG Data
PPP FCS (Field Checksum)
The line labeled PPP LAYER ENABLE is activated when a valid start byte is detected, and is generated within the PPP block in FIG. 13. Once this line goes high, the rest of the PPP block is activated. Within the PPP header is a field indicating the type of protocol that the PPP packet is encapsulating. In an uncompressed PPP header, these are bytes 4 and 5 (counting the start byte 0×7e). In
Although the invention is described herein with reference to the preferred embodiment, one skilled in the art will readily appreciate that other applications may be substituted for those set forth herein without departing from the spirit and scope of the present invention. Accordingly, the invention should only be limited by the Claims included below.
Number | Name | Date | Kind |
---|---|---|---|
5012489 | Burton et al. | Apr 1991 | A |
5161193 | Lampson et al. | Nov 1992 | A |
5303344 | Yokoyama et al. | Apr 1994 | A |
5307413 | Denzer | Apr 1994 | A |
5426694 | Hebert | Jun 1995 | A |
5430727 | Callon | Jul 1995 | A |
5440551 | Suzuki | Aug 1995 | A |
5495480 | Yoshida | Feb 1996 | A |
5499353 | Kadlec et al. | Mar 1996 | A |
5519704 | Farinacci et al. | May 1996 | A |
5546453 | Hebert | Aug 1996 | A |
5566170 | Bakke | Oct 1996 | A |
5577105 | Baum et al. | Nov 1996 | A |
5577172 | Vatland | Nov 1996 | A |
5577237 | Lin | Nov 1996 | A |
5598410 | Stone | Jan 1997 | A |
5619650 | Bach | Apr 1997 | A |
5625678 | Blomfield-Brown | Apr 1997 | A |
5625825 | Rostoker | Apr 1997 | A |
5634015 | Chang | May 1997 | A |
5636371 | Yu | Jun 1997 | A |
5640394 | Schrier et al. | Jun 1997 | A |
5663951 | Danneels | Sep 1997 | A |
5666362 | Chen et al. | Sep 1997 | A |
5675507 | Bobo, II | Oct 1997 | A |
5687314 | Osman | Nov 1997 | A |
5696899 | Kalwitz | Dec 1997 | A |
5699350 | Kraslavsky | Dec 1997 | A |
5701316 | Alferness | Dec 1997 | A |
5727149 | Hirata | Mar 1998 | A |
5734865 | Yu | Mar 1998 | A |
5748905 | Hauser et al. | May 1998 | A |
5754540 | Liu et al. | May 1998 | A |
5761281 | Baum et al. | Jun 1998 | A |
5790546 | Dobbins et al. | Aug 1998 | A |
5790676 | Ganesan et al. | Aug 1998 | A |
5802278 | Isfeld et al. | Sep 1998 | A |
5802287 | Rostoker et al. | Sep 1998 | A |
5802306 | Hunt | Sep 1998 | A |
5805816 | Picazo | Sep 1998 | A |
5809235 | Sharma et al. | Sep 1998 | A |
5815516 | Aaker | Sep 1998 | A |
5818935 | Maa | Oct 1998 | A |
5826032 | Finn | Oct 1998 | A |
5870549 | Bobo, II | Feb 1999 | A |
5872919 | Wakeland | Feb 1999 | A |
5894557 | Bade et al. | Apr 1999 | A |
5909546 | Osborne | Jun 1999 | A |
5920732 | Riddle | Jul 1999 | A |
5935268 | Weaver | Aug 1999 | A |
5937169 | Connery | Aug 1999 | A |
5941988 | Bhagwat | Aug 1999 | A |
5943481 | Wakeland | Aug 1999 | A |
5974518 | Nogradi | Oct 1999 | A |
5999974 | Ratcliff | Dec 1999 | A |
6014699 | Ratcliff | Jan 2000 | A |
6061742 | Stewart | May 2000 | A |
6076115 | Sambamurthy | Jun 2000 | A |
6081846 | Hyder | Jun 2000 | A |
6092110 | Maria | Jul 2000 | A |
6092229 | Boyle | Jul 2000 | A |
6098188 | Kalmanek | Aug 2000 | A |
6101543 | Alden | Aug 2000 | A |
6151625 | Swales | Nov 2000 | A |
6157955 | Narad | Dec 2000 | A |
6172980 | Flanders | Jan 2001 | B1 |
6172990 | Deb | Jan 2001 | B1 |
6173333 | Jolitz | Jan 2001 | B1 |
6182228 | Boden | Jan 2001 | B1 |
6230193 | Arunkumar et al. | May 2001 | B1 |
Number | Date | Country | |
---|---|---|---|
Parent | 08742085 | Oct 1996 | US |
Child | 10093340 | US |