WO1999063725A1 - A network interface card - Google Patents

A network interface card Download PDF

Info

Publication number
WO1999063725A1
WO1999063725A1 PCT/GB1999/000513 GB9900513W WO9963725A1 WO 1999063725 A1 WO1999063725 A1 WO 1999063725A1 GB 9900513 W GB9900513 W GB 9900513W WO 9963725 A1 WO9963725 A1 WO 9963725A1
Authority
WO
WIPO (PCT)
Prior art keywords
address
receive
interface card
data
network interface
Prior art date
Application number
PCT/GB1999/000513
Other languages
French (fr)
Inventor
Nicholas Ian Moss
Original Assignee
Madge Networks Limited
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Madge Networks Limited filed Critical Madge Networks Limited
Publication of WO1999063725A1 publication Critical patent/WO1999063725A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/742Route cache; Operation thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools

Definitions

  • the present invention relates to a network interface card and a method for selectively transferring data packets from a communications network to an end station in accordance with information stored in an address field of the data packe .
  • Communications networks are used by modern computers systems for transferring data between network end stations. This is achieved by forming a series of data packets each of which has a header including a destination address which indicates the address of an end station which is to receive the data. The data packets are then transferred via the communications network to the end stations on the network which determine if they are to receive the data packet by decoding the destination address stored in the packet header.
  • a second alternative which has been used is for the address field to be used with a hash function to generate a value indicative of the address. This value is then compared to a number of predetermined stored values and if there is a match between one of these values and the value indicative of the address then the data packet is transferred to the computer.
  • this method may still result in unwanted packets being transferred to the computer for additional analysis.
  • a network interface card for selectively transferring data packets from a communica ions network to an end station in accordance with an address stored in an address field of the data packet
  • the network interface card comprising: an input for receiving data packets from a communications network; an output for transferring data packets to an end station; a detector, which detects the address m the address field, and which applies a predetermined algorithm to the address to determine therefrom an address indication value associated with the address, wherein each address is associated with one of a number of address indication values, and wherein the same address indication value may be associated with a number of different addresses; a data storage medium including a number of data storage locations, each data storage location being identified by a respective address indication value, and each data storage location being capable of storing a number of receive addresses, corresponding to addresses for which the end station is to receive data packets, and wherein each receive address is stored in the data storage location identified by the address indication value associated with the receive address; a controller which accesses
  • a method of selectively transferring data packets from a communications network to an end station m accordance with an address stored m an address field of the data packet comprising: receiving data packets from a communications network, detecting the address in the address field of the data packets; applying a predetermined algorithm to the address to determine therefrom an address indication value associated with the address, wherein each address is associated with one of a number of address indication values, and wherein the same address indication value may be associated with a number of different addresses; determining any receive addresses associated with the address indication value of the address stored in the address field, the receive addresses corresponding to addresses for which the end station is to receive data, and wherein the receive addresses are identified by the address indication value associated with the receive address; comparing any determined receive addresses with the address m the address field of the data packet, and, controlling the transfer of the data packet to the output m response to a successful comparison.
  • the present invention provides a method and a network interface card for selectively transferring data packets from the communications network to an end station.
  • the system operates by detecting an address stored m an address field and applying a predetermined algorithm to this to determine an address indication value.
  • An address indication value can be determined m this manner for every possible address although there may be many addresses associated with the same address indication value.
  • Receive addresses are also defined such that if the address field of the data packet includes a receive address the data packet is transferred to the end station.
  • the address indication value determined from the address in the address field is used to locate any receive addresses having the same address indication value, which are then compared to the address in the address field of the data packet. If the comparison is successful, the data packet is transferred to the end station. This provides a cheap, simple apparatus which allows quick and easy determination of whether the data should be transferred to the computer or not.
  • the method and apparatus of the present invention can be used to determine the address of a data packet an any level.
  • the invention can be used to determine an address such as the Media Access Control (MAC) address contained in the level two data link layer header, or alternatively the IP address contained m the level three network layer.
  • the ability to determine level three addresses is particularly advantageous in the case of, for example, video data in token ring communications networks.
  • the MAC address is only defined in terms of a functional address rather then a physical address. Accordingly, m the systems of the prior art in which only the MAC address can be analyzed, it is only possible to determine that the received data is intended for video output and not which end station it is intended to be output on.
  • the present invention allows the address in the IP header, which uniquely defines the destination end station (s) to which the data is to be transferred, to be analyzed, allowing the network interface card to determine if the end station is to receive the data .
  • each data storage location comprises a receive address list including any receive addresses associated with a respective address indication value.
  • each data storage location typically includes a number of data storage sub-locations, with each data storage sub-location storing a respective receive address from the respective receive address list.
  • the data storage medium preferably stores a number of sub-location indicators, wherein each sub-location indicator is associated with a respective address indication value, and wherein each sub- location indicator indicates the data storage sub-location m which the first receive address on the respective receive address list is stored.
  • the controller is adapted to transfer the sub-location indicator associated with the respective address indication value to the comparator, m response to a request signal generated by the detector, and wherein the comparator is adapted to utilise the sub-location indicator to access receive addresses from the respective receive address list.
  • the network interface card further comprises a protocol handler coupled to the input and the detector, wherein the protocol handler is adapted to control the transfer of data packets received from the communications network to the detector.
  • the protocol handler receives data from the communications network m a particular transmission format. This will take the form of for example token ring or Ethernet .
  • the protocol handler modifies the data packets by generating a byte stream comprising a number of data packets in sequence, the data packets of the byte stream being delimited.
  • the detector is adapted to detect the protocol dependent position of the address field. This is preferably acheived by counting a predetermined number of bytes from the beginning of the data packet header to locate the address field.
  • any suitable method of locating the address field could be used.
  • the receive addresses are maintained as a number of receive address lists, and wherein each receive address list is associated with a respective address indication value. Each receive address list is then stored in a respective data storage location in the data storage medium. If each receive address data on the address data list has been compared and no correspondence found, then the data packet is rejected, whereas if correspondence is found, the data packet is transferred to the end station.
  • Figure 1 is a block diagram of a network interface card according to the present invention.
  • Figure 2a is an example of a token ring data packet received by the network interface card of Figure 1;
  • Figure 2b is an example of a section of a byte stream generated by the protocol handler of the network interface card of Figure 1;
  • Figures 3a and 3b show a flow diagram showing the operation of the network interface card according to the present invention.
  • Figure 1 shows a network interface card 1 of a communications network end station.
  • the network interface card 3 has an input port 2 for coupling to a communications network, such as a Token Ring, Ethernet or FDDI network.
  • the network interface card 1 also has an output port 3 which is coupled via a bus 4 to a host processor 5, a host memory controller 6 and a host memory 7 of a communications network end station, such as a PC, or the like.
  • the network interface card 1 comprises a protocol handler 10 which is coupled to the input port 2 for receiving packets of data from the communications network (not shown) . Also coupled to the protocol handler 10 is a packet parser 11 and a transmission interface 12. The transmission interface is used during transmission of data onto the communications network and as this is not relevant to the present invention it will not be discussed further.
  • the packet parser 11, which operates to determine whether the data packet should be passed on to the end station is coupled by a memory controller 13 to a RAM 14 and a processor 15.
  • the processor 15 is used to handle management frames received from the network, as well as dealing with network errors. The traffic received by the processor is separate to that handled by the present invention, and accordingly, will not be discussed further.
  • the packet parser is coupled to the output port 3 of the network interface card 1 via a receive buffer manager 16, which operates to temporarily store data packets
  • the RAM 14 is stores a number of predetermined receive addresses which correspond to the destination addresses of data packets which the end station is to receive. These receive addresses are stored m a number of memory locations m the form of receive address lists. A sub- location which stores the first address of each list is identified by a sub-location indicator value which is also stored m the RAM 14.
  • Data packets from the communications network are transferred via the input port 2 to the protocol handler 10.
  • the protocol handler 10 transfers the data packet to the packet parser 11, in the form of a byte stream, with delimiters to indicate the start and the end of the packet.
  • the data packet transferred to the packet parser 11 is a copy with the original packet being returned to the communications network in the usual manner.
  • An example of a data packet 60 received from a Token Ring communications network is shown m Figure 2a.
  • This comprises a token ring header 50 including a MAC address field 51 and a source address field 52; an SSAP field 53, a DSAP field 54, an IP header 55 including a destination address field 56; and, a data payload 57 such as video data or the like.
  • a token ring header 50 including a MAC address field 51 and a source address field 52; an SSAP field 53, a DSAP field 54, an IP header 55 including a destination address field 56; and, a data payload 57 such as video data or the like.
  • the MAC address field 51 is a multicast address which is the same for all video data streams on the network
  • the IP destination address field uniquely identifies each video stream allowing the end station or stations to elect to receive a particular video stream.
  • each data packet is simply the data packet received from the communications network. Accordingly, m the case of Token ring, each packet comprises the Token Ring header 50, the SSAP and DSAP fields 53, 54, the IP header 55 and, the data payload 57.
  • the packet parser 11 locates the SSAP and DSAP fields to determine the nature of the received data packet. If the data packet is an IP data packet without a SNAP header, the packet parser 11 uses the SSAP and DSAP fields 53, 54 to locate the beginning of the IP header 55. If a SNAP header (not shown) is present, then the packet parser 11 analyses the snap header to locate the beginning of the IP header 55. This then allows the parser 11 to determine the location of the destination address field 56 by counting a predetermined number of bytes N from the start of the IP header to the destination address field 54.
  • the packet parser 11 determines that the data packet is not an IP packet, then different procedures will be used for different communications protocols.
  • the intended destination of the incoming data packet received at the input port 2 is uniquely identified by the MAC address in the level two data-link layer header.
  • the packet parser 11 analyses the MAC address field to determine the intended address of the packet Again, this may be achieved by counting bytes from the beginning of the packet header, identified by the byte stream delimiters.
  • the remainder of the description will relate to the use of IP data packets transferred m accordance with the Token Ring protocol . This is for ease of description, and it will be realised that the invention may easily be implemented with different protocols.
  • the packet parser 11 includes a detector 21 coupled to a processor 22.
  • the byte stream received from the protocol handler is transferred to the detector 21 which uses the delimiters, the SSAP and DSAP fields 53, 54, and the SNAP header (if present) to identify the beginning of the IP header 55.
  • the detector uses a byte counter (not shown) to count a number of bytes into the packet header to locate the destination address field, as shown in Figure 3a
  • Step 100 The destination address from the destination address field is copied to the processor 22 and the data packet from the byte stream is passed to the receive buffer manager 16 (Step 110) .
  • the destination address field received by the processor 22 is hashed by a two stage hash function to generate an address indication value (Step 120) .
  • An example of a suitable hash function is shown below.
  • the first stage of the hash operation generates an 8 bit value which undergoes a further XOR step to generate a 6 bit value representative of the destination address.
  • the hash function used on the destination field of the IP header is as follows:
  • the 6 bit address indication value is transferred to the memory controller 13, together with a request for a sub-location indicator value (Step 130) , which is used to locate receive addresses stored m the RAM 14.
  • the receive addresses are stored m the RAM 14 m the form of receive address lists.
  • Each receive address list contains a number of the predetermined receive addresses for which the computer is to receive data and, as a result, the actual number of addresses in any one list may be anything from zero upwards .
  • Each receive address is assigned to a particular list by operating on the receive address using the two stage hash function. Accordingly, if there is a receive address identical to the destination address of an incoming data packet m the RAM 14, it will have the same address indication value as that derived from the data packet, and will be stored in the receive address list accessed by the memory controller 13. This allows the number of receive addresses that need to be searched to find a matching address to be vastly reduced.
  • Each receive address is located m a memory sub- location of the RAM 14, with the sub-location of the first receive address m each list being identified by a sub- location indicator value, also stored in the RAM 14.
  • each sub-location indicator value corresponds to a particular receive address list, each also corresponds to the respective address indication value identifying the receive address list.
  • the memory controller 13 uses the address indication value to access the list of sub-location indicator values stored in the RAM 14. The respective sub-location indicator value is then returned to the processor 22 (Step 140) .
  • the processor 22 When the processor 22 has received the sub-location indicator value it generates a request for an address from the address list stored in RAM 14. The request is transferred to the memory controller 13 together with the sub-location indicator value (step 150) . The memory controller 13 uses the sub-location indicator value to access the first address on the respective address list, and this is then transferred to the processor 22 (Step 160) .
  • the processor 22 checks the receive address to ensure it is not a dummy address indicating the end of the respective receive address list (Step 170) , as will be explained in more detail below. If the receive address is not a dummy address, then the processor 22 compares this receive address to the destination address defined by the destination field (step 180) . The processor determines if the destination address from the address field and the receive address match (step 190) . If the addresses match, this indicates that the respective data packet is to be received by the computer and accordingly the processor 22 generates a success signal which is transferred via a connection 17 to the receive buffer manager 16 (Step 200) .
  • the receive buffer manager 16 Upon receiving a success signal, the receive buffer manager 16 transfers the data packet, via the output 3 and the bus 4 , to the host memory 6. The next data packet m the byte steam is then transferred in the normal way (step 210) It is subsequently processed by the host processor 7 , m the normal way.
  • the processor 22 increments the sub-location indicator value by a predetermined number of bytes (step 220) and generates a further request signal (step 150) .
  • the incremented sub-location indicator value will indicate the sub-location at which the next receive address on the receive address list is stored.
  • the further request signal is transferred to the memory controller 13 along with the incremented sub- location indicator value which uses this to access the next receive address on the respective receive address list (step 160) . This process is continued until a match occurs, indicating that the data packet is to be transferred to the end station, or until the end of the receive address list, stored in RAM 14, is reached.
  • the final receive address entered m the receive address list is a dummy address . This may take any predetermined form such as a sequence of zeros .
  • the processor 22 When the processor 22 receives the receive address from the memory controller 13, it determines whether the receive address corresponds to a predetermined dummy address (Step 170) . If the receive address is the dummy address, the processor 22 of the packet parser 11 generates a fail signal which is sent via the connection 17 to the receive buffer manager 16 (step 230) . This indicates that the data packet is not intended to be received by the end station and accordingly, the packet is discarded within the receive buffer manager 16. The next data packet m the byte stream is then processed (step 240) . In this way the host processor is not interrupted to perform processing on the data packet unless the packet is intended for receipt by the end station.

Abstract

The present invention provides a network interface card (1) for selectively transferring data packets from a communications network to an end station using an address stored in an address field (56) of the data packet (60). The network interface card (1) includes a detector (11), which detects the address in the address field. An algorithm is then applied to the address to determine an address indication value associated with the address. A controller (13) then accesses a data store (14) the address indication value. A comparison is then carried out between any received addresses located in the data store with the address field of the data packet, with the transfer of the data packet to the output (3) being carried out in response to a successful comparison.

Description

A NETWORK INTERFACE CARD
The present invention relates to a network interface card and a method for selectively transferring data packets from a communications network to an end station in accordance with information stored in an address field of the data packe .
Communications networks are used by modern computers systems for transferring data between network end stations. This is achieved by forming a series of data packets each of which has a header including a destination address which indicates the address of an end station which is to receive the data. The data packets are then transferred via the communications network to the end stations on the network which determine if they are to receive the data packet by decoding the destination address stored in the packet header.
However, as the number and the complexity of the applications to which computers are applied is increasing, the amount of processing that is demanded of the host processors is steadily increasing. Accordingly, in network end stations, the amount of processing required to analyze packet headers can result in the amount of processing power available for other purposes being somewhat lower than desirable. In the past, various solutions have been proposed for coping with the problem of analysing address data of incoming packet headers by interface cards . One such solution utilises a contents addressable memory located in the network interface card. When the data packet is first received from the network, the address contained in the packet header is passed to the contents addressable memory which carries out a search to see if the address is an address contained in the memory. If this is the case, then this indicates that the data packet should be transferred to the PC and if there is no match, then the data packet is ignored. However, such memories are very expensive in terms of the amount of silicon required and are not therefore cost effective.
A second alternative which has been used is for the address field to be used with a hash function to generate a value indicative of the address. This value is then compared to a number of predetermined stored values and if there is a match between one of these values and the value indicative of the address then the data packet is transferred to the computer. However, this method may still result in unwanted packets being transferred to the computer for additional analysis.
In accordance with the first aspect of the present invention we provide a network interface card for selectively transferring data packets from a communica ions network to an end station in accordance with an address stored in an address field of the data packet, the network interface card comprising: an input for receiving data packets from a communications network; an output for transferring data packets to an end station; a detector, which detects the address m the address field, and which applies a predetermined algorithm to the address to determine therefrom an address indication value associated with the address, wherein each address is associated with one of a number of address indication values, and wherein the same address indication value may be associated with a number of different addresses; a data storage medium including a number of data storage locations, each data storage location being identified by a respective address indication value, and each data storage location being capable of storing a number of receive addresses, corresponding to addresses for which the end station is to receive data packets, and wherein each receive address is stored in the data storage location identified by the address indication value associated with the receive address; a controller which accesses the data storage location identified by the address indication value associated with the address of the address field; a comparator which compares any receive addresses located in respective data storage location with the address field of the data packet; and, a transfer controller which controls the transfer of the data packet to the output m response to a successful comparison. In accordance with the second aspect of the present invention, we provide a method of selectively transferring data packets from a communications network to an end station m accordance with an address stored m an address field of the data packet, the method comprising: receiving data packets from a communications network, detecting the address in the address field of the data packets; applying a predetermined algorithm to the address to determine therefrom an address indication value associated with the address, wherein each address is associated with one of a number of address indication values, and wherein the same address indication value may be associated with a number of different addresses; determining any receive addresses associated with the address indication value of the address stored in the address field, the receive addresses corresponding to addresses for which the end station is to receive data, and wherein the receive addresses are identified by the address indication value associated with the receive address; comparing any determined receive addresses with the address m the address field of the data packet, and, controlling the transfer of the data packet to the output m response to a successful comparison.
The present invention provides a method and a network interface card for selectively transferring data packets from the communications network to an end station. The system operates by detecting an address stored m an address field and applying a predetermined algorithm to this to determine an address indication value. An address indication value can be determined m this manner for every possible address although there may be many addresses associated with the same address indication value.
Receive addresses are also defined such that if the address field of the data packet includes a receive address the data packet is transferred to the end station. The address indication value determined from the address in the address field is used to locate any receive addresses having the same address indication value, which are then compared to the address in the address field of the data packet. If the comparison is successful, the data packet is transferred to the end station. This provides a cheap, simple apparatus which allows quick and easy determination of whether the data should be transferred to the computer or not.
Advantageously, the method and apparatus of the present invention can be used to determine the address of a data packet an any level. Thus the invention can be used to determine an address such as the Media Access Control (MAC) address contained in the level two data link layer header, or alternatively the IP address contained m the level three network layer. The ability to determine level three addresses is particularly advantageous in the case of, for example, video data in token ring communications networks. In this case, the MAC address is only defined in terms of a functional address rather then a physical address. Accordingly, m the systems of the prior art in which only the MAC address can be analyzed, it is only possible to determine that the received data is intended for video output and not which end station it is intended to be output on. In contrast the present invention allows the address in the IP header, which uniquely defines the destination end station (s) to which the data is to be transferred, to be analyzed, allowing the network interface card to determine if the end station is to receive the data .
Preferably the controller and the comparator are adapted to access and compare each receive address m the data storage location m turn, the next receive address being accessed only m response to a failed comparison. Alternatively, all the addresses could be compared before a success indication is generated, although this may result m more comparisons being carried out than necessary Typically, each data storage location comprises a receive address list including any receive addresses associated with a respective address indication value. In this case, each data storage location typically includes a number of data storage sub-locations, with each data storage sub-location storing a respective receive address from the respective receive address list.
In order to easily identify the sub-locations of the respective receive addresses, the data storage medium preferably stores a number of sub-location indicators, wherein each sub-location indicator is associated with a respective address indication value, and wherein each sub- location indicator indicates the data storage sub-location m which the first receive address on the respective receive address list is stored. Typically the controller is adapted to transfer the sub-location indicator associated with the respective address indication value to the comparator, m response to a request signal generated by the detector, and wherein the comparator is adapted to utilise the sub-location indicator to access receive addresses from the respective receive address list.
Typically, the network interface card further comprises a protocol handler coupled to the input and the detector, wherein the protocol handler is adapted to control the transfer of data packets received from the communications network to the detector. The protocol handler receives data from the communications network m a particular transmission format. This will take the form of for example token ring or Ethernet . In order to reduce the amount of processing required by subsequent elements of the network interface card, it is preferable to modify the packets before they are processed by the detector. However, it is possible that all the processing could be carried out by subsequent elements, thus making the protocol handler redundant .
Typically the protocol handler modifies the data packets by generating a byte stream comprising a number of data packets in sequence, the data packets of the byte stream being delimited. The detector is adapted to detect the protocol dependent position of the address field. This is preferably acheived by counting a predetermined number of bytes from the beginning of the data packet header to locate the address field. However, it will be realised that any suitable method of locating the address field could be used.
Typically the receive addresses are maintained as a number of receive address lists, and wherein each receive address list is associated with a respective address indication value. Each receive address list is then stored in a respective data storage location in the data storage medium. If each receive address data on the address data list has been compared and no correspondence found, then the data packet is rejected, whereas if correspondence is found, the data packet is transferred to the end station.
In order to easily identify the end of an address data list, the final entry on the list is indicated by a predetermined dummy address such as a sequence of zeros . This prevents the controller accessing the beginning of the list causing the comparator to recompare initial address values on the address data list with the address contained in the address field. An example of the present invention will now be described with reference to the accompanying drawings m which: -
Figure 1 is a block diagram of a network interface card according to the present invention;
Figure 2a is an example of a token ring data packet received by the network interface card of Figure 1;
Figure 2b is an example of a section of a byte stream generated by the protocol handler of the network interface card of Figure 1; and,
Figures 3a and 3b show a flow diagram showing the operation of the network interface card according to the present invention.
Figure 1 shows a network interface card 1 of a communications network end station. The network interface card 3 has an input port 2 for coupling to a communications network, such as a Token Ring, Ethernet or FDDI network. The network interface card 1 also has an output port 3 which is coupled via a bus 4 to a host processor 5, a host memory controller 6 and a host memory 7 of a communications network end station, such as a PC, or the like.
The network interface card 1 comprises a protocol handler 10 which is coupled to the input port 2 for receiving packets of data from the communications network (not shown) . Also coupled to the protocol handler 10 is a packet parser 11 and a transmission interface 12. The transmission interface is used during transmission of data onto the communications network and as this is not relevant to the present invention it will not be discussed further. The packet parser 11, which operates to determine whether the data packet should be passed on to the end station is coupled by a memory controller 13 to a RAM 14 and a processor 15. The processor 15 is used to handle management frames received from the network, as well as dealing with network errors. The traffic received by the processor is separate to that handled by the present invention, and accordingly, will not be discussed further. The packet parser is coupled to the output port 3 of the network interface card 1 via a receive buffer manager 16, which operates to temporarily store data packets
The RAM 14 is stores a number of predetermined receive addresses which correspond to the destination addresses of data packets which the end station is to receive. These receive addresses are stored m a number of memory locations m the form of receive address lists. A sub- location which stores the first address of each list is identified by a sub-location indicator value which is also stored m the RAM 14.
Operation of the network interface card according to the present invention will now be described with reference to Figures 3a and 3b which shows a flow chart outlining operation of the interface.
Data packets from the communications network are transferred via the input port 2 to the protocol handler 10. The protocol handler 10 transfers the data packet to the packet parser 11, in the form of a byte stream, with delimiters to indicate the start and the end of the packet. In the case of Token Ring, for example, the data packet transferred to the packet parser 11 is a copy with the original packet being returned to the communications network in the usual manner. An example of a data packet 60 received from a Token Ring communications network is shown m Figure 2a. This comprises a token ring header 50 including a MAC address field 51 and a source address field 52; an SSAP field 53, a DSAP field 54, an IP header 55 including a destination address field 56; and, a data payload 57 such as video data or the like. There may also be a SNAP header 58 located between the DSAP field and the IP header 55.
In the case of Token Ring video data, the MAC address field 51 is a multicast address which is the same for all video data streams on the network However, the IP destination address field uniquely identifies each video stream allowing the end station or stations to elect to receive a particular video stream.
Following the decoding of the incoming data packets by the protocol handler 10, the generated byte stream, a section of which is shown m Figure 2b, includes a sequence of delimited data packets 60. Each data packet is simply the data packet received from the communications network. Accordingly, m the case of Token ring, each packet comprises the Token Ring header 50, the SSAP and DSAP fields 53, 54, the IP header 55 and, the data payload 57.
In use, the packet parser 11 locates the SSAP and DSAP fields to determine the nature of the received data packet. If the data packet is an IP data packet without a SNAP header, the packet parser 11 uses the SSAP and DSAP fields 53, 54 to locate the beginning of the IP header 55. If a SNAP header (not shown) is present, then the packet parser 11 analyses the snap header to locate the beginning of the IP header 55. This then allows the parser 11 to determine the location of the destination address field 56 by counting a predetermined number of bytes N from the start of the IP header to the destination address field 54.
However, it will be realised by a person skilled m the art that if the packet parser 11 determines that the data packet is not an IP packet, then different procedures will be used for different communications protocols. Thus, for example, in the case of Ethernet, the intended destination of the incoming data packet received at the input port 2 is uniquely identified by the MAC address in the level two data-link layer header. Accordingly, the packet parser 11 analyses the MAC address field to determine the intended address of the packet Again, this may be achieved by counting bytes from the beginning of the packet header, identified by the byte stream delimiters. For simplicity the remainder of the description will relate to the use of IP data packets transferred m accordance with the Token Ring protocol . This is for ease of description, and it will be realised that the invention may easily be implemented with different protocols.
The packet parser 11 includes a detector 21 coupled to a processor 22. The byte stream received from the protocol handler is transferred to the detector 21 which uses the delimiters, the SSAP and DSAP fields 53, 54, and the SNAP header (if present) to identify the beginning of the IP header 55. The detector then uses a byte counter (not shown) to count a number of bytes into the packet header to locate the destination address field, as shown in Figure 3a
(Step 100) . The destination address from the destination address field is copied to the processor 22 and the data packet from the byte stream is passed to the receive buffer manager 16 (Step 110) . The destination address field received by the processor 22 is hashed by a two stage hash function to generate an address indication value (Step 120) . An example of a suitable hash function is shown below. The first stage of the hash operation generates an 8 bit value which undergoes a further XOR step to generate a 6 bit value representative of the destination address.
The actual manipulation carried out by the hash function is not m itself important, although it is important that the manipulation is consistently used within the system itself. In the preferred embodiment of the present invention the hash function used on the destination field of the IP header is as follows:
hashed_byte = (b31-b24) XOR (b23-bl6) XOR (bl5-b8) XOR (b7-b0) indication value = (hashed byte b5-b2) & (hashed byte bl- bO) XOR (hashed byte b7-b6)
Where:- bn = nth byte m address field of header
The 6 bit address indication value is transferred to the memory controller 13, together with a request for a sub-location indicator value (Step 130) , which is used to locate receive addresses stored m the RAM 14.
As explained above, the receive addresses are stored m the RAM 14 m the form of receive address lists. In the present example, there are 64 different receive address lists, with each different receive address list being associated with a different 6 bit address indication value. Each receive address list contains a number of the predetermined receive addresses for which the computer is to receive data and, as a result, the actual number of addresses in any one list may be anything from zero upwards .
Each receive address is assigned to a particular list by operating on the receive address using the two stage hash function. Accordingly, if there is a receive address identical to the destination address of an incoming data packet m the RAM 14, it will have the same address indication value as that derived from the data packet, and will be stored in the receive address list accessed by the memory controller 13. This allows the number of receive addresses that need to be searched to find a matching address to be vastly reduced.
It will be realised from this that while any hash function is used, it is preferable that it results m an approximately even spread m the number of receive addresses in each receive address list associated with the respective address indication value. This ensures that each receive address list is of an optimum minimum length.
Each receive address is located m a memory sub- location of the RAM 14, with the sub-location of the first receive address m each list being identified by a sub- location indicator value, also stored in the RAM 14. As each sub-location indicator value corresponds to a particular receive address list, each also corresponds to the respective address indication value identifying the receive address list. Upon receipt of a request for a sub-location indicator value, the memory controller 13 uses the address indication value to access the list of sub-location indicator values stored in the RAM 14. The respective sub-location indicator value is then returned to the processor 22 (Step 140) .
When the processor 22 has received the sub-location indicator value it generates a request for an address from the address list stored in RAM 14. The request is transferred to the memory controller 13 together with the sub-location indicator value (step 150) . The memory controller 13 uses the sub-location indicator value to access the first address on the respective address list, and this is then transferred to the processor 22 (Step 160) .
Firstly, the processor 22 checks the receive address to ensure it is not a dummy address indicating the end of the respective receive address list (Step 170) , as will be explained in more detail below. If the receive address is not a dummy address, then the processor 22 compares this receive address to the destination address defined by the destination field (step 180) . The processor determines if the destination address from the address field and the receive address match (step 190) . If the addresses match, this indicates that the respective data packet is to be received by the computer and accordingly the processor 22 generates a success signal which is transferred via a connection 17 to the receive buffer manager 16 (Step 200) . Upon receiving a success signal, the receive buffer manager 16 transfers the data packet, via the output 3 and the bus 4 , to the host memory 6. The next data packet m the byte steam is then transferred in the normal way (step 210) It is subsequently processed by the host processor 7 , m the normal way.
If, during the comparison the processor 22 determines that the destination address and the receive address from the receive address list do not match (Step 190) , the processor 22 increments the sub-location indicator value by a predetermined number of bytes (step 220) and generates a further request signal (step 150) . As the receive addresses are of a predetermined length and located m the memory locations in the form of a list, the incremented sub-location indicator value will indicate the sub-location at which the next receive address on the receive address list is stored. The further request signal is transferred to the memory controller 13 along with the incremented sub- location indicator value which uses this to access the next receive address on the respective receive address list (step 160) . This process is continued until a match occurs, indicating that the data packet is to be transferred to the end station, or until the end of the receive address list, stored in RAM 14, is reached.
As mentioned above, in order to identify the end of the list, the final receive address entered m the receive address list is a dummy address . This may take any predetermined form such as a sequence of zeros .
When the processor 22 receives the receive address from the memory controller 13, it determines whether the receive address corresponds to a predetermined dummy address (Step 170) . If the receive address is the dummy address, the processor 22 of the packet parser 11 generates a fail signal which is sent via the connection 17 to the receive buffer manager 16 (step 230) . This indicates that the data packet is not intended to be received by the end station and accordingly, the packet is discarded within the receive buffer manager 16. The next data packet m the byte stream is then processed (step 240) . In this way the host processor is not interrupted to perform processing on the data packet unless the packet is intended for receipt by the end station.

Claims

1. A network interface card for selectively transferring data packets from a communications network to an end station m accordance with an address stored m an address field of the data packet, the network interface card comprising : an input for receiving data packets from a communications network; an output for transferring data packets to an end station; a detector, which detects the address in the address field, and which applies a predetermined algorithm to the address to determine therefrom an address indication value associated with the address, wherein each address is associated with one of a number of address indication values, and wherein the same address indication value may be associated with a number of different addresses; a data storage medium including a number of data storage locations, each data storage location being identified by a respective address indication value, and each data storage location being capable of storing a number of receive addresses, corresponding to addresses for which the end station is to receive data packets, and wherein each receive address is stored in the data storage location identified by the address indication value associated with the receive address; a controller which accesses the data storage location identified by the address indication value associated with the address of the address field; a comparator which compares any receive addresses located in respective data storage location with the address field of the data packet; and, a transfer controller which controls the transfer of the data packet to the output m response to a successful comparison.
2. A network interface card according to claim 1, wherein the controller and the comparator are adapted to access and compare each receive address m the data storage location m turn, the next receive address being accessed only m response to a failed comparison.
3. A network interface card according to claim 1 or claim 2, wherein each data storage location comprises a receive address list including any receive addresses associated with the respective address indication value.
4. A network interface card according to claim 3, wherein each data storage location includes a number of data storage sub-locations, and wherein each data storage sub- location stores a respective receive address from the corresponding receive address list.
5. A network interface card according to claim 4, the card further comprising a store for storing a number of sub-location indicators, wherein each sub-location indicator is associated with a respective address indication value, and wherein each sub-location indicator indicates the data storage sub- location in which the first receive address on the respective receive address list is stored.
6. A network interface card according to claim 5, wherein the store forms part of the data storage medium.
7. A network interface card according to claim 5 or claim 6, wherein the controller is adapted to transfer the sub- location indicator associated with the respective address indication value to the comparator, in response to a request signal generated by the detector, and wherein the comparator is adapted to utilise the sub- location indicator to access receive addresses from the respective receive address list.
8. A network interface card according to any of the preceding claims, the network interface card further comprising a protocol handler coupled to the input and the detector, wherein the protocol handler is adapted to control the transfer of data packets received from the communications network to the detector.
9. A communications network end station comprising: a memory for storing data packets received from a communications network; a host processor for processing data packets stored in the memory; and, a network interface card according to any of the preceding claims for selectively transferring data packets from the communications network to the memory in accordance with the address stored in the address field of the data packet .
10. A method of selectively transferring data packets from a communications network to an end station in accordance with an address stored in an address field of the data packet, the method comprising: receiving data packets from a communications network; detecting the address in the address field of the data packets ; applying a predetermined algorithm to the address to determine therefrom an address indication value associated with the address, wherein each address is associated with one of a number of address indication values, and wherein the same address indication value may be associated with a number of different addresses; determining any receive addresses associated with the address indication value of the address stored in the address field, the receive addresses corresponding to addresses for which the end station is to receive data; comparing any determined receive addresses with the address in the address field of the data packet; and, controlling the transfer of the data packet to the output in response to a successful comparison.
11. A method according to claim 10, wherein the receive addresses are maintained as a number of receive address lists, and wherein each receive address list is associated with a respective address indication value.
12. A method according to claim 11, wherein the╬╣ method comprises comparing, in turn, each receive address on the receive address list with the detected address field, until there is a correspondence between the address, or until each address on the receive address list has been compared.
13. A method according to claim 12, wherein the end of each receive address list is indicated by a predetermined dummy address .
PCT/GB1999/000513 1998-05-29 1999-02-18 A network interface card WO1999063725A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB9811654.4 1998-05-29
GBGB9811654.4A GB9811654D0 (en) 1998-05-29 1998-05-29 A network interface card

Publications (1)

Publication Number Publication Date
WO1999063725A1 true WO1999063725A1 (en) 1999-12-09

Family

ID=10832964

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/GB1999/000513 WO1999063725A1 (en) 1998-05-29 1999-02-18 A network interface card

Country Status (2)

Country Link
GB (1) GB9811654D0 (en)
WO (1) WO1999063725A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100385853C (en) * 2004-04-01 2008-04-30 顺昱科技股份有限公司 Device for integrating storage interface and network function and operation method thereof

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0522743A1 (en) * 1991-06-26 1993-01-13 Digital Equipment Corporation Combined hash table and CAM address recognition in a network
GB2264843A (en) * 1992-02-28 1993-09-08 Texas Instruments Ltd An interface device for coupling a host device to a computer network
US5708659A (en) * 1993-10-20 1998-01-13 Lsi Logic Corporation Method for hashing in a packet network switching system
WO1998047310A1 (en) * 1997-04-17 1998-10-22 Ericsson, Inc. Network interface with adaptive bridge for efficient mapping of ethernets over an atm-based broadband access network

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0522743A1 (en) * 1991-06-26 1993-01-13 Digital Equipment Corporation Combined hash table and CAM address recognition in a network
GB2264843A (en) * 1992-02-28 1993-09-08 Texas Instruments Ltd An interface device for coupling a host device to a computer network
US5708659A (en) * 1993-10-20 1998-01-13 Lsi Logic Corporation Method for hashing in a packet network switching system
WO1998047310A1 (en) * 1997-04-17 1998-10-22 Ericsson, Inc. Network interface with adaptive bridge for efficient mapping of ethernets over an atm-based broadband access network

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100385853C (en) * 2004-04-01 2008-04-30 顺昱科技股份有限公司 Device for integrating storage interface and network function and operation method thereof

Also Published As

Publication number Publication date
GB9811654D0 (en) 1998-07-29

Similar Documents

Publication Publication Date Title
US6542510B1 (en) Network communication system
EP0508886B1 (en) Filtering and disposition of messages in a bridge using a single address and protocol table
US6728929B1 (en) System and method to insert a TCP checksum in a protocol neutral manner
EP0943202B1 (en) Method and apparatus for assignment of ip addresses
US7784093B2 (en) Firewall including local bus
US20030161327A1 (en) Distributing tasks in data communications
JP2546505B2 (en) Address learning device in CLAD
US7260631B1 (en) System and method for receiving iSCSI protocol data units
EP0469812A1 (en) Detection of duplicate alias addresses
US20060117088A1 (en) Network processor system
GB2362789A (en) System and method for searching patterns in real-time over a shared medium
CA2311078A1 (en) Multithreaded address resolution system
JPH0621942A (en) Charging device for local area network
EP1526699A1 (en) Method and system for accelerated packet processing
US7961614B2 (en) Information processing device, information processing method, and recording medium for reducing consumption of memory capacity
CN110740144B (en) Method, device, equipment and storage medium for determining attack target
US6687715B2 (en) Parallel lookups that keep order
JP4229810B2 (en) Communication test equipment
JP2521031B2 (en) Message communication method
US20030048783A1 (en) Method and apparatus for transferring packets in network
WO1999063725A1 (en) A network interface card
US6339792B1 (en) Dual two byte process for fast wake-up-on LAN frame detection
JP3291866B2 (en) Data receiving system and communication control device
JP7000808B2 (en) Information processing equipment, information processing methods and programs
US7333498B2 (en) Method and apparatus for separating data packets in a memory buffer

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): US

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
121 Ep: the epo has been informed by wipo that ep was designated in this application
122 Ep: pct application non-entry in european phase