# Patent

## Title
Data transmission using address encoding

## Abstract

An apparatus includes an input circuit to receive a frame of data. The frame of data includes an address field. The address field includes an address. An encoder encodes a portion of the address into an encoded address. The encoded address includes at least two fewer bits relative to the portion of the address prior to being encoded. An address circuit replaces the address in the address field with the encoded address and at least two data bits. At least two data bits are provided based on the encoded address having at least two fewer bits. An output circuit outputs the frame of data having the encoded address and at least two data bits within the address field.

## Background
CROSS-REFERENCE TO RELATED APPLICATIONS
This application is a continuation of U.S. patent application Ser. No. 11/196,993, filed Aug. 4, 2005 now U.S. Pat. No. 7,548,563, issued Jun. 16, 2009, which claims the benefit of U.S. Provisional Patent Application No. 60/667,894 entitled “Compressing MAC Addresses to Make Room for Meta Information,” filed Apr. 1, 2005, the disclosures thereof incorporated by reference herein in their entirety.


BACKGROUND
The present invention relates generally to data communications. More particularly, the present invention relates to data transmission using address encoding.
In data communication systems that transfer frames of data between switching elements, whether inside a single system, or between independent systems, it is often desirable to include with the frames some meta-information describing the frames. This allows the sender and receiver to coordinate activities and handling of the relevant frames. Due to the requirement of wire-speed processing, and because handling is necessarily frame-by-frame, it follows that the meta-information should be sent at the same rate as the frames, and preferably attached to the frames.
However, the Ethernet frame format, as defined by the IEEE standard 802.3, does not leave any room to attach meta-information to the frames. One possible approach is to add the meta-information to the frame. However, this is not possible when the frame is already at the maximum allowable length. In addition, any change in frame-content semantics should not violate the Ethernet standard in any way.
SUMMARY
In general, in one aspect, the invention features an apparatus comprising: an output circuit to transmit a frame of data, the frame comprising an N-bit address field; an encoder to encode J bits of an N-bit address as an M-bit binary number, wherein M<J and J≦N; and an address circuit to place the M-bit binary number and a K-bit binary number in the N-bit address field before the output circuit transmits the frame of data, wherein K≦J−M.
Some embodiments comprise an input circuit to receive the frame of data comprising the N-bit address field, wherein the N-bit address field comprises the N-bit address; wherein the address circuit replaces the N-bit address in the N-bit address field with the M-bit binary number and the K-bit binary number before the output circuit transmits the frame of data. Some embodiments comprise an input circuit to receive the data. Some embodiments comprise a data source to provide the K-bit binary number. In some embodiments, the K-bit binary number represents one or more attributes of the frame. In some embodiments, the data source comprises: a processor to determine the one or more attributes of the frame. In some embodiments, the N-bit address is a media access control (MAC) address. In some embodiments, the J bits of the N-bit address represent an Organisational Unique Identifier (OUI). In some embodiments, the frame is an Ethernet frame. Some embodiments comprise a memory to store a table associating each OUI with an M-bit index; wherein, to encode the J bits of the N-bit address as the M-bit binary number, the encoder replaces the J-bit binary number with the associated M-bit index. In some embodiments, to encode the J bits of the N-bit address as the M-bit binary number, the encoder encodes the OUI according to a probability of occurrence of the OUI. In some embodiments, the M-bit binary number comprises a first binary number representing the J bits of the N-bit address and a second binary number representing a number of bits in the first binary number. In some embodiments, the encoder encodes the J bits of the N-bit address as the M-bit binary number according to at least one of the group consisting of: Huffman encoding; and arithmetic encoding. In some embodiments, the encoder adaptively determines the probability of occurrence of the OUI. In some embodiments, the encoder encodes the J bits of the N-bit address as the M-bit binary number according to at least one of the group consisting of: adaptive Huffman encoding; and adaptive arithmetic encoding. In some embodiments, a network device comprises the apparatus. In some embodiments, the network device is selected from the group consisting of: a switch; a router; and a network interface controller (NIC).
In general, in one aspect, the invention features a method comprising: transmitting a frame of data, the frame comprising an N-bit address field; encoding J bits of an N-bit address as an M-bit binary number, wherein M<J and J≦N; and placing the M-bit binary number and a K-bit binary number in the N-bit address field before the output circuit transmits the frame of data, wherein K≦J−M.
Some embodiments comprise receiving the frame of data comprising the N-bit address field, wherein the N-bit address field comprises the N-bit address; wherein placing the M-bit binary number and a K-bit binary number in the N-bit address field comprises replacing the N-bit address in the N-bit address field with the M-bit binary number and the K-bit binary number. Some embodiments comprise receiving the data. Some embodiments comprise providing the K-bit binary number. In some embodiments, the K-bit binary number represents one or more attributes of the frame. Some embodiments comprise determining the one or more attributes of the frame. In some embodiments, the N-bit address is a media access control (MAC) address. In some embodiments, the J bits of the N-bit address represent an Organisational Unique Identifier (OUI). In some embodiments, the frame is an Ethernet frame. Some embodiments comprise associating each OUI with an M-bit index; wherein encoding the J bits of the N-bit address as the M-bit binary number comprises replacing the J-bit binary number with the associated M-bit index. In some embodiments, encoding the J bits of the N-bit address as the M-bit binary number comprises encoding the OUI according to a probability of occurrence of the OUI. In some embodiments, the M-bit binary number comprises a first binary number representing the J bits of the N-bit address and a second binary number representing a number of bits in the first binary number. In some embodiments, the J bits of the N-bit address as the M-bit binary number are encoded according to at least one of the group consisting of: Huffman encoding; and arithmetic encoding. In some embodiments, encoding comprises: adaptively determining the probability of occurrence of the OUI. In some embodiments, the J bits of the N-bit address as the M-bit binary number are encoded according to at least one of the group consisting of: adaptive Huffman encoding; and adaptive arithmetic encoding.
In general, in one aspect, the invention features an apparatus comprising: an input circuit to receive a frame of data comprising an N-bit address field comprising a J-bit binary number, wherein J≦N; a decoder to decode M bits of the J-bit binary number as a J-bit address, wherein M<J; and an address circuit to provide K further bits of the J-bit binary number, wherein K≦J−M.
In some embodiments, the address circuit replaces the J-bit binary number in the N-bit address field of the frame with the J-bit address. Some embodiments comprise an output circuit to transmit the frame comprising the N-bit address field comprising the J-bit address. Some embodiments comprise an output circuit to transmit the data. In some embodiments, the K-bit binary number represents one or more attributes of the frame. Some embodiments comprise a processor to process the frame according to one or more of the one or more attributes of the frame. In some embodiments, the N-bit address is a media access control (MAC) address. In some embodiments, the J-bit address represents an Organisational Unique Identifier (OUI). In some embodiments, the frame is an Ethernet frame. Some embodiments comprise a memory to store a table associating each OUI with an M-bit index; wherein, to decode the M bits of the J-bit binary number as the J-bit address, the decoder replaces the M bits of the J-bit binary number with the associated OUI. In some embodiments, the decoder decodes the M bits of the J-bit binary number according to a probability of occurrence of the OUI. In some embodiments, the M bits represent a first binary number representing the J-bit address and a second binary number representing a number of bits in the first binary number. In some embodiments, the decoder decodes the M bits of the J-bit binary number according to at least one of the group consisting of: Huffman encoding; and arithmetic encoding. In some embodiments, the decoder adaptively determines the probability of occurrence of the OUI. In some embodiments, the decoder decodes the M bits of the J-bit binary number according to at least one of the group consisting of: adaptive Huffman encoding; and adaptive arithmetic encoding. In some embodiments, a network device comprises the apparatus. In some embodiments, the network device is selected from the group consisting of a switch; a router; and a network interface controller (NIC).
In general, in one aspect, the invention features a method comprising: receiving a frame of data comprising an N-bit address field comprising a J-bit binary number, wherein J≦N; decoding M bits of the J-bit binary number as a J-bit address, wherein M<J; and an address circuit to provide K further bits of the J-bit binary number, wherein K≦J−M.
Some embodiments comprise replacing the J-bit binary number in the N-bit address field of the frame with the J-bit address. Some embodiments comprise transmitting the frame comprising the N-bit address field comprising the J-bit address. Some embodiments comprise transmitting the data. In some embodiments, the K-bit binary number represents one or more attributes of the frame. Some embodiments comprise processing the frame according to one or more of the one or more attributes of the frame. In some embodiments, the J-bit address is a media access control (MAC) address. In some embodiments, the J-bit address represents an Organisational Unique Identifier (OUI). In some embodiments, the frame is an Ethernet frame. Some embodiments comprise associating each OUI with an M-bit index; wherein decoding the M bits of the J-bit binary number as the J-bit address comprises replacing the M bits of the J-bit binary number with the associated OUI. In some embodiments, the M bits of the J-bit binary number are decoded according to a probability of occurrence of the OUI. In some embodiments, the M bits represent a first binary number representing the J-bit address and a second binary number representing a number of bits in the first binary number. In some embodiments, the M bits of the J-bit binary number are decoded according to at least one of the group consisting of: Huffman encoding; and arithmetic encoding. Some embodiments comprise adaptively determining the probability of occurrence of the OUI. In some embodiments, the M bits of the J-bit binary number are decoded according to at least one of the group consisting of: adaptive Huffman encoding; and adaptive arithmetic encoding.
In general, in one aspect, the invention features a frame of data comprising: a payload field comprising the data; and at least one N-bit address field comprising an N-bit address comprising an M-bit binary number representing an encoded J-bit address of the frame of data, wherein M<J and J≦N.
In some embodiments, the N-bit address further comprises a K-bit binary number, wherein K≦J−M. In some embodiments, the K-bit binary number represents one or more attributes of the frame of data. In some embodiments, the N-bit address is a media access control (MAC) address. In some embodiments, the J-bit address represents an Organisational Unique Identifier (OUI). In some embodiments, the frame is an Ethernet frame. In some embodiments, each OUI is associated with a respective M-bit index; and wherein the M-bit binary number is the M-bit index associated with the OUI. In some embodiments, the J-bit address is encoded according to a probability of occurrence of the OUI. In some embodiments, the M bits represent a first binary number representing the J-bit address and a second binary number representing a number of bits in the first binary number. In some embodiments, the J-bit address is encoded according to at least one of the group consisting of: Huffman encoding; arithmetic encoding; adaptive Huffman encoding; and adaptive arithmetic encoding.
In general, in one aspect, the invention features an apparatus comprising: means for transmitting a frame of data, the frame comprising an N-bit address field; means for encoding J bits of an N-bit address as an M-bit binary number, wherein M<J and J≦N; and means for placing the M-bit binary number and a K-bit binary number in the N-bit address field before the output circuit transmits the frame of data, wherein K≦J−M. Some embodiments comprise means for receiving the frame of data comprising the N-bit address field, wherein the N-bit address field comprises the N-bit address; wherein the means for placing replaces the N-bit address in the N-bit address field with the M-bit binary number and the K-bit binary number before the output circuit transmits the frame of data. Some embodiments comprise means for receiving the data. Some embodiments comprise means for providing the K-bit binary number. In some embodiments, the K-bit binary number represents one or more attributes of the frame. In some embodiments, the data source comprises; means for determining the one or more attributes of the frame. In some embodiments, the N-bit address is a media access control (MAC) address. In some embodiments, the J bits of the N-bit address represent an Organisational Unique Identifier (OUI). In some embodiments, the frame is an Ethernet frame. Some embodiments comprise means for storing a table associating each OUI with an M-bit index; wherein, for encoding the J bits of the N-bit address as the M-bit binary number, the means for encoding replaces the J-bit binary number with the associated M-bit index. In some embodiments, for encoding the J bits of the N-bit address as the M-bit binary number, the means for encoding encodes the OUI according to a probability of occurrence of the OUI. In some embodiments, the M-bit binary number comprises a first binary number representing the J bits of the N-bit address and a second binary number representing a number of bits in the first binary number. In some embodiments, the means for encoding encodes the J bits of the N-bit address as the M-bit binary number according to at least one of the group consisting of: Huffman encoding; and arithmetic encoding. In some embodiments, the means for encoding adaptively determines the probability of occurrence of the OUI. In some embodiments, the means for encoding encodes the J bits of the N-bit address as the M-bit binary number according to at least one of the group consisting of: adaptive Huffman encoding; and adaptive arithmetic encoding. In some embodiments, a network device comprises the apparatus. In some embodiments, the network device is selected from the group consisting of: a switch; a router; and a network interface controller (NIC).
In general, in one aspect, the invention features a computer program comprising: in a frame comprising an N-bit address field, encoding J bits of an N-bit address as an M-bit binary number, wherein M<J and J≦N; and placing the M-bit binary number and a K-bit binary number in the N-bit address field before the output circuit transmits the frame of data, wherein K≦J−M.
In some embodiments, the N-bit address field comprises the N-bit address; and wherein placing the M-bit binary number and a K-bit binary number in the N-bit address field comprises replacing the N-bit address in the N-bit address field with the M-bit binary number and the K-bit binary number. Some embodiments comprise providing the K-bit binary number. In some embodiments, the K-bit binary number represents one or more attributes of the frame. Some embodiments comprise determining the one or more attributes of the frame. In some embodiments, the N-bit address is a media access control (MAC) address. In some embodiments, the J bits of the N-bit address represent an Organisational Unique Identifier (OUI). In some embodiments, the frame is an Ethernet frame. Some embodiments comprise associating each OUI with an M-bit index; wherein encoding the J bits of the N-bit address as the M-bit binary number comprises replacing the J-bit binary number with the associated M-bit index. In some embodiments, encoding the J bits of the N-bit address as the M-bit binary number comprises encoding the OUI according to a probability of occurrence of the OUI. In some embodiments, the M-bit binary number comprises a first binary number representing the J bits of the N-bit address and a second binary number representing a number of bits in the first binary number. In some embodiments, the J bits of the N-bit address as the M-bit binary number are encoded according to at least one of the group consisting of: Huffman encoding; and arithmetic encoding. In some embodiments, encoding comprises: adaptively determining the probability of occurrence of the OUI. In some embodiments, the J bits of the N-bit address as the M-bit binary number are encoded according to at least one of the group consisting of: adaptive Huffman encoding; and adaptive arithmetic encoding.
In general, in one aspect, the invention features an apparatus comprising: means for receiving a frame of data comprising an N-bit address field comprising a J-bit binary number, wherein J≦N; means for decoding M bits of the J-bit binary number as a J-bit address, wherein M<J; and means for providing K further bits of the J-bit binary number, wherein K≦J−M.
In some embodiments, the means for providing replaces the J-bit binary number in the N-bit address field of the frame with the J-bit address. Some embodiments comprise means for transmitting the frame comprising the N-bit address field comprising the J-bit address. Some embodiments comprise means for transmitting the data. In some embodiments, the K-bit binary number represents one or more attributes of the frame. Some embodiments comprise means for processing the frame according to one or more of the one or more attributes of the frame. In some embodiments, the N-bit address is a media access control (MAC) address. In some embodiments, the J-bit address represents an Organisational Unique Identifier (OUI). In some embodiments, the frame is an Ethernet frame. Some embodiments comprise means for storing a table associating each OUI with an M-bit index; wherein, to decode the M bits of the J-bit binary number as the J-bit address, the means for decoding replaces the M bits of the J-bit binary number with the associated OUI. In some embodiments, the means for decoding decodes the M bits of the J-bit binary number according to a probability of occurrence of the OUI. In some embodiments, the M bits represent a first binary number representing the J-bit address and a second binary number representing a number of bits in the first binary number. In some embodiments, the means for decoding decodes the M bits of the J-bit binary number according to at least one of the group consisting of: Huffman encoding; and arithmetic encoding. In some embodiments, the means for decoding adaptively determines the probability of occurrence of the OUI. In some embodiments, the means for decoding decodes the M bits of the J-bit binary number according to at least one of the group consisting of: adaptive Huffman encoding; and adaptive arithmetic encoding. In some embodiments, a network device comprises the apparatus. In some embodiments, the network device is selected from the group consisting of: a switch; a router; and a network interface controller (NIC).
In general, in one aspect, the invention features a computer program comprising: in a frame of data comprising an N-bit address field comprising a J-bit binary number, wherein J≦N, decoding M bits of the J-bit binary number as a J-bit address, wherein M<J; and providing K further bits of the J-bit binary number, wherein K≦J−M.
Some embodiments comprise replacing the J-bit binary number in the N-bit address field of the frame with the J-bit address. In some embodiments, the K-bit binary number represents one or more attributes of the frame. Some embodiments comprise processing the frame according to one or more of the one or more attributes of the frame. In some embodiments, the J-bit address is a media access control (MAC) address. In some embodiments, the J-bit address represents an Organisational Unique Identifier (OUI). In some embodiments, the frame is an Ethernet frame. Some embodiments comprise associating each OUI with an M-bit index; wherein decoding the M bits of the J-bit binary number as the J-bit address comprises replacing the M bits of the J-bit binary number with the associated OUI. In some embodiments, the M bits of the J-bit binary number are decoded according to a probability of occurrence of the OUI. In some embodiments, the M bits represent a first binary number representing the J-bit address and a second binary number representing a number of bits in the first binary number. In some embodiments, the M bits of the J-bit binary number are decoded according to at least one of the group consisting of: Huffman encoding; and arithmetic encoding. Some embodiments comprise adaptively determining the probability of occurrence of the OUI. In some embodiments, the M bits of the J-bit binary number are decoded according to at least one of the group consisting of: adaptive Huffman encoding; and adaptive arithmetic encoding.
The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features will be apparent from the description and drawings, and from the claims.



DESCRIPTION OF DRAWINGS
FIG. 1 shows the structure of a MAC address field.
FIG. 2 shows a frame of data according to a preferred embodiment of the present invention.
FIG. 3 shows a network device to transmit frames of data according to a preferred embodiment of the present invention.
FIG. 4 shows a process for the network device of FIG. 3 according to a preferred embodiment of the present invention.
FIG. 5 shows a network device to receive and transmit frames of data according to a preferred embodiment of the present invention.
FIG. 6 shows a process for the network device of FIG. 5 according to a preferred embodiment of the present invention.
FIG. 7 shows a network device to receive frames of data according to a preferred embodiment of the present invention.
FIG. 8 shows a process for the network device of FIG. 7 according to a preferred embodiment of the present invention.
FIG. 9 shows a network device to receive and transmit frames of data according to a preferred embodiment of the present invention.
FIG. 10 shows a process for the network device of FIG. 9 according to a preferred embodiment of the present invention.



The leading digit(s) of each reference numeral used in this specification indicates the number of the drawing in which the reference numeral first appears.
DETAILED DESCRIPTION
All Ethernet frames contain two address fields, known as the source and destination media access control (MAC) addresses. FIG. 1 shows the structure of a MAC address field 100. Both the source and destination MAC addresses have the structure shown in FIG. 1.
Referring to FIG. 1, MAC address field 100 comprises six bytes. The upper three bytes comprise a two-bit field 102 (bits 22-23) that is assigned and a 22-bit OUI field 104 (bits 0-21) that represents an Organisational Unique Identifier (OUI) representing the identity of a vendor of the device to which the MAC address refers. The lower three bytes 106 represent a sequence number assigned to the device by the vendor.
While the 22 bits of the OUI permit the unique identification of 222-1 vendors, in practice only approximately 10,000 OUIs have been allocated to vendors. Further, only approximately 1,000 OUIs are currently in use worldwide, only a few tens of which are likely to be in use on any particular network.
The inventor has recognized that this situation permits one or both MAC address fields 100 within each Ethernet frame to be used to transport meta-information describing the frame.
Embodiments of the present invention compress portions of one or both MAC addresses within Ethernet frames, thereby freeing bits for use to convey meta-information describing the frames. While some embodiments of the present invention are described in terms of conveying meta-information in Ethernet frames, other embodiments of the present invention are not so limited. For example, the information conveyed is not limited to meta-information describing the frames, but can be any sort of information. Indeed, embodiments of the present invention provide a communication channel using the MAC address fields. In addition, address fields in other sorts of frames and packets can be used to convey information using the techniques disclosed herein. Further, while various compression techniques are described, embodiments of the present invention are not dependent on those techniques, and can employ any sort of compression technique either existing or under development.
FIG. 2 shows a frame 200 of data according to a preferred embodiment of the present invention. Frame 200 comprises a header field 202 and a payload field 204 comprising the data. Header field 202 comprises at least one N-bit address field 206 comprising an N-bit address 208 such as a MAC address. The N-bit address comprises a J-bit binary number 210 comprising an M-bit binary number 212 representing an encoded J-bit address of frame 200, wherein M<J and J≦N. The J-bit address can be encoded by any technique including those described below. The J-bit address can represent an identifier of a vendor of network devices such as an Organisational Unique Identifier (OUI).
Preferably the N-bit address field further comprises a K-bit binary number 214, wherein K≦J−M. The K-bit binary number can represent any sort of data. The data can have any sort of structure, for example Flags/Op-code/data, Type-Len-Value (TLV), and the like. The data can point to other places in frame 200 containing other data. For example, because the Offset field in an IP frame is generally unused, data can be stored there, and the K-bit binary number can indicate the presence of the data in the Offset field. As another example, if a frame 200 to be sent is less than the maximum size, additional data can be appended to the data in the frame 200 up to the maximum size, and the K-bit binary number can indicate the presence of the additional data. As another example, the K-bit binary number can represent one or more attributes of frame 200. Further, the bits of each of the K-bit and M-bit binary numbers can be contiguous, or can be interleaved with each other.
While the K-bit binary numbers 214 made available according to embodiments of the present invention offer advantages to network devices implemented according to these embodiments, their presence causes no difficulty to conventional network devices that are unable to use this additional data. Indeed, conventional network devices simply understand the N-bit address 208 as a standard network address. Therefore embodiments of the present invention integrate well with conventional data communications networks such as Ethernet networks.
FIG. 3 shows a network device 300 to transmit frames of data according to a preferred embodiment of the present invention. Network device 300 can be implemented as a network interface controller (NIC) and the like. Network device 300 comprises an input circuit 302 to receive data, for example from an optional host 310, an output circuit 304 to transmit frames of data, for example to a network 312 such as a local-area network, an encoder 306 to encode portions of the addresses of the frames, and an address circuit 308 to place the encoded addresses in the address fields of the frames prior to transmission. Network device 300 optionally comprises a data source 314, which optionally comprises a processor 316, and optionally comprises a memory 318.
FIG. 4 shows a process 400 for network device 300 of FIG. 3 according to a preferred embodiment of the present invention. Input circuit 302 optionally receives data (step 402), for example from optional host 310. Alternatively, optional data source 314 generates the data. Encoder 306 encodes J bits of an N-bit address as an M-bit binary number, where M<J and J≦N (step 404), which frees K bits of the address for other uses. For example, encoder 306 encodes the 21-bit OUI of a MAC address for an Ethernet frame as a 15-bit binary number, thereby freeing 6 bits of the frame for other uses.
Any encoding technique can be used. For example, each OUI can simply be replaced by its ordinal IEEE allocation number or index. According to these embodiments, optional memory 318 stores a table associating each OUI with its M-bit index, and encoder 306 replaces the J-bit OUI with the associated M-bit index.
Other more powerful encoding and compression techniques such as Huffman encoding and arithmetic encoding can free more bits K of the frame for other uses. For example, encoder 306 can employ entropy encoding techniques that consider the probability of occurrence of the OUI, which can be empirically determined and stored in optional memory 318, or can be adaptively determined by encoder 306 during operation. For example, adaptive Huffman encoding and adaptive arithmetic encoding can be used. Because entropy coding techniques produce variable-length results, the M-bit binary number can comprise a first binary number representing the J bits of the encoded N-bit address and a second binary number that represents the number of bits in the first binary number.
Network device 300 places the data into a frame according to conventional techniques. Address circuit 308 places the M-bit binary number and a K-bit binary number in the N-bit address field of the frame, where K≦J−M (step 406). The K-bit binary number can comprise data supplied by optional host 310 or data generated by optional data source 314 of network device 300. For example, the K-bit binary number can represent one or more attributes of the frame that have been determined by optional processor 316. Other network devices can use this meta-information rather than spend time determining the attributes again. As another example, the K-bit binary numbers in each frame can constitute a separate communications channel between hosts 310.
Finally, output circuit 304 transmits, to network 312, the frame of data having the M-bit binary number and the K-bit binary number in the N-bit address field of the frame (step 408).
FIG. 5 shows a network device 500 to receive and transmit frames of data according to a preferred embodiment of the present invention. Network device 500 can be implemented as a switch, router, and the like. Network device 500 comprises an input circuit 502 to receive frames of data from a network 512 such as a local-area network, an output circuit 504 to transmit frames of data to network 512, an encoder 506 to encode portions of the addresses of the frames, and an address circuit 508 to place the encoded addresses in the address fields of the frames prior to transmission. Network device 500 optionally comprises a data source 514, which optionally comprises a processor 516, and optionally comprises a memory 518.
FIG. 6 shows a process 600 for network device 500 of FIG. 5 according to a preferred embodiment of the present invention. Input circuit 502 receives a frame of data from network 512 (step 602). The frame comprises one or more N-bit address fields, each comprising an N-bit address such as a source or destination MAC address.
Encoder 506 encodes J bits of the N-bit address as an M-bit binary number, where M<J and J≦N (step 604), which frees K bits of the N-bit address field for other uses. For example, encoder 506 encodes the 21-bit OUI of a MAC address for an Ethernet frame as a 15-bit binary number, thereby freeing 6 bits of the frame for other uses.
Any encoding technique can be used. For example, each OUI can simply be replaced by its ordinal IEEE allocation number or index. According to these embodiments, optional memory 518 stores a table associating each OUI with its M-bit index, and encoder 506 replaces the J-bit OUI with the associated M-bit index.
Other more powerful encoding and compression techniques such as Huffman encoding and arithmetic encoding can free more bits K of the frame for other uses. For example, encoder 506 can employ entropy encoding techniques that consider the probability of occurrence of the OUI, which can be empirically determined and stored in optional memory 518, or can be adaptively determined by encoder 506 during operation. For example, adaptive Huffman encoding and adaptive arithmetic encoding can be used. Because entropy coding techniques produce variable-length results, the M-bit binary number can comprise a first binary number representing the J bits of the encoded N-bit address and a second binary number that represents the number of bits in the first binary number.
Address circuit 508 replaces the N-bit address in the N-bit address field with the M-bit binary number and the K-bit binary number, where K≦J−M (step 606). The K-bit binary number can comprise data generated by optional data source 514 of network device 500. For example, the K-bit binary number can represent one or more attributes of the frame that have been determined by optional processor 516. Other network devices can use this meta-information rather than spend time determining the attributes again.
Finally, output circuit 504 transmits, to network 512, the frame of data having the M-bit binary number and the K-bit binary number in the N-bit address field of the frame (step 608).
FIG. 7 shows a network device 700 to receive frames of data according to a preferred embodiment of the present invention. Network device 700 can be implemented as a network interface controller (NIC) and the like. Network device 700 comprises an input circuit 702 to receive frames of data, for example from a network 712 such as a local-area network, an output circuit 704 to transmit the data, for example to an optional host 710, a decoder 706 to decode portions of the addresses of the frames, and an address circuit 708. Network device 700 optionally comprises a data target 714, which comprises a processor 716, and optionally comprises a memory 718.
FIG. 8 shows a process 800 for network device 700 of FIG. 7 according to a preferred embodiment of the present invention. Input circuit 702 receives a frame of data from network 712 (step 802). The frame comprises one or more N-bit address fields such as source or destination MAC address fields each comprising a J-bit binary number, wherein J≦N.
Decoder 706 decodes M bits of the J-bit binary number as a J-bit address, wherein M<J (step 804). For example, decoder 706 decodes the J-bit binary number as a 21-bit OUI of a MAC address for an Ethernet frame. Any decoding technique can be used. For example, each M-bit binary number can represent the ordinal IEEE allocation number or index for a OUI. According to these embodiments, optional memory 718 stores a table associating each OUI with its M-bit index, and decoder 706 determines the OUI by applying the M-bit binary number as an index to the table.
Other more powerful decoding and decompression techniques such as Huffman decoding and arithmetic decoding can be used as well. For example, decoder 706 can employ entropy decoding techniques that consider the probability of occurrence of the OUI, which can be empirically determined and stored in optional memory 718, or can be adaptively determined by decoder 706 during operation. For example, adaptive Huffman encoding and adaptive arithmetic encoding can be used. Because entropy coding techniques produce variable-length results, the M-bit binary number can comprise a first binary number representing the encoded J-bit address and a second binary number that represents the number of bits in the first binary number.
Address circuit 708 provides K further bits of the J-bit binary number (step 806), wherein K≦J−M. The K bits can comprise data for use by optional host 710 or for use by optional data target 714 of network device 700. For example, the K-bit binary number can represent one or more attributes of the frame. Network device 700 can use this meta-information rather than spend time determining the attributes again. As another example, the K-bit binary numbers in each frame can constitute a separate communications channel between hosts 710.
Optional processor 716 optionally processes the frame in accordance with the J-bit address (step 808). For example, when the J-bit address is a destination MAC address, processor 716 determines whether network device 700 is the intended recipient of the frame based on the J-bit address. As another example, when the J-bit address is a source MAC address, processor 716 modifies one or more address tables in optional memory 718 according to the source MAC address. Finally, output circuit 704 optionally transmits the data from the frame to optional host 710 (step 810).
FIG. 9 shows a network device 900 to receive and transmit frames of data according to a preferred embodiment of the present invention. Network device 900 can be implemented as a switch, router, and the like. Network device 900 comprises an input circuit 902 to receive frames of data from a network 912 such as a local-area network, an output circuit 904 to transmit frames of data to network 912, a decoder 906 to decode portions of the addresses of the frames, and an address circuit 908 to place the decoded addresses in the address fields of the frames prior to transmission. Network device 900 optionally comprises a data target 914, which comprises a processor 916, and optionally comprises a memory 918.
FIG. 10 shows a process 1000 for network device 900 of FIG. 9 according to a preferred embodiment of the present invention. Input circuit 902 receives a frame of data from network 912 (step 1002). The frame comprises one or more N-bit address fields such as a source or destination MAC address fields each comprising a J-bit binary number, wherein J≦N.
Decoder 906 decodes M bits of the J-bit binary number as a J-bit address, wherein M<J (step 1004). For example, decoder 906 decodes the J-bit binary number as a 21-bit OUI of a MAC address for an Ethernet frame. Any decoding technique can be used. For example, each M-bit binary number can represent the ordinal IEEE allocation number or index for a OUI. According to these embodiments, optional memory 918 stores a table associating each OUI with its M-bit index, and decoder 906 determines the OUI by applying the M-bit binary number as an index to the table.
Other more powerful decoding and decompression techniques such as Huffman decoding and arithmetic decoding can be used as well. For example, decoder 906 can employ entropy decoding techniques that consider the probability of occurrence of the OUI, which can be empirically determined and stored in optional memory 918, or can be adaptively determined by decoder 906 during operation. For example, adaptive Huffman encoding and adaptive arithmetic encoding can be used. Because entropy coding techniques produce variable-length results, the M-bit binary number can comprise a first binary number representing the encoded J-bit address and a second binary number that represents the number of bits in the first binary number.
Address circuit 908 provides K further bits of the J-bit binary number (step 1006), wherein K≦J−M. The K bits can comprise data for use by optional data target 914 of network device 900. For example, the K-bit binary number can represent one or more attributes of the frame. Network device 900 can use this meta-information rather than spend time determining the attributes again.
Optional processor 916 optionally processes the frame in accordance with the J-bit address (step 1008). For example, when the J-bit address is a destination MAC address, processor 916 forwards the frame based on the J-bit address. As another example, when the J-bit address is a source MAC address, processor 916 modifies one or more address tables in optional memory 918 according to the source MAC address. Finally, output circuit 904 transmits the data from the frame to network 912 (step 1010).
Embodiments of the invention can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. Apparatus of the invention can be implemented in a computer program product tangibly embodied in a machine-readable storage device for execution by a programmable processor; and method steps of the invention can be performed by a programmable processor executing a program of instructions to perform functions of the invention by operating on input data and generating output. The invention can be implemented advantageously in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. Each computer program can be implemented in a high-level procedural or object-oriented programming language, or in assembly or machine language if desired; and in any case, the language can be a compiled or interpreted language. Suitable processors include, by way of example, both general and special purpose microprocessors. Generally, a processor will receive instructions and data from a read-only memory and/or a random access memory. Generally, a computer will include one or more mass storage devices for storing data files; such devices include magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and optical disks. Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM disks. Any of the foregoing can be supplemented by, or incorporated in, ASICs (application-specific integrated circuits).
A number of implementations of the invention have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the invention. Accordingly, other implementations are within the scope of the following claims.

## Claims

1. An apparatus comprising:
an input circuit to receive a frame of data, the frame of data comprising an address field, the address field including an address;
an encoder to encode a portion of the address into an encoded address, the encoded address having at least two fewer bits relative to the portion of the address prior to being encoded;
an address circuit to replace the address in the address field with the encoded address and at least two data bits, wherein the at least two data bits are provided based on the encoded address having at least two fewer bits; and
an output circuit to output the frame of data having the encoded address and the at least two data bits within the address field.

2. The apparatus of claim 1, further comprising a data source to generate the at least two data bits.

3. The apparatus of claim 1, wherein the at least two data bits represent one or more attributes of the frame.

4. The apparatus of claim 1, wherein the address comprises a media access control (MAC) address.

5. The apparatus of claim 4, wherein the portion of the address represents an Organizational Unique Identifier (OUI).

6. The apparatus of claim 5, wherein the encoder includes memory to store a table associating the OUI with a corresponding table value storing the encoded address.

7. An apparatus comprising:
an input circuit to receive a frame of data, the frame of data comprising an address field, the address field including an address;
an address circuit to retrieve an encoded address and at least two data bits from a portion of the address in the address field;
a decoder to decode the encoded address into a decoded portion of the address, the decoded portion of the address having at least two more bits relative to the encoded address,
wherein the address circuit replaces the encoded address and the at least two data bits with the decoded portion of the address; and
an output circuit to output the frame of data including the decoded portion of the address within the address field.

8. The apparatus of claim 7, wherein the at least two data bits represent one or more attributes of the frame.

9. The apparatus of claim 7, wherein the address comprises a media access control (MAC) address.

10. The apparatus of claim 9, wherein the decoded portion of the address represents an Organizational Unique Identifier (OUI).

11. A method comprising:
receiving a frame of data comprising an address field, the address field including an address;
encoding a portion of the address into an encoded address, the encoded address having at least two fewer bits relative to the portion of the address prior to being encoded;
replacing the address in the address field with the encoded address and at least two data bits, wherein the at least two data bits are provided based on the encoded address having at least two fewer bits; and
outputting the frame of data having the encoded address and the at least two data bits within the address field.

12. The method of claim 11, wherein the at least two data bits represent one or more attributes of the frame.

13. The method of claim 11, wherein the address comprises a media access control (MAC) address.

14. The method of claim 11, wherein the portion of the address represents an Organizational Unique Identifier (OUI).

15. A method comprising:
receiving a frame of data comprising an address field, the address field including an address;
retrieving an encoded address and at least two data bits from a portion of the address in the address field;
decoding the encoded address into a decoded portion of the address, the decoded portion of the address having at least two more bits relative to the encoded address;
replacing the encoded address and the at least two data bits with the decoded portion of the address; and
outputting the frame of data including the decoded portion of the address within the address field.

16. The method of claim 15, wherein the at least two data bits represent one or more attributes of the frame.

17. The method of claim 15, wherein the address comprises a media access control (MAC) address.

18. The method of claim 17, wherein the decoded portion of the address represents an Organizational Unique Identifier (OUI).