Abstract:
To provide a packet communication device to which a function can be added by a functional module and that realizes high throughput and low apparatus cost. According to this invention, there is provided a packet communication device that receives a packet and transfers the packet received in a network, the packet communication device including: a network interface for transmitting the packet to and receiving the packet from the network; a path retrieving unit for judging a transfer order on the basis of the received packet and giving an identifier indicating the transfer order judged to the packet; a functional module interface to which a functional module that applies predetermined processing to the packet is connected; a module management unit for managing the functional module; and a switch for connecting the network interface and the functional module interface.

Description:
CLAIM OF PRIORITY  
       [0001]     The present application claims priority from Japanese patent application P2005-43732 filed on Feb. 21, 2005, the content of which is hereby incorporated by reference into this application.  
       BACKGROUND OF THE INVENTION  
       [0002]     The present invention relates to a packet communication device for transferring packet data, in particular, a technique for routing and switching in layers above a layer  2  of an OSI reference model.  
         [0003]     In recent years, Internet Protocol (IP) packet communication is widely used in the Internet and in-house networks. There are various needs for a network for packet communication. For example, there are needs for introduction of new value added services in the network, measures against an increase of network users, and highly reliable communication that is required because the network has become indispensable for daily life.  
         [0004]     Therefore, a packet communication device that transfers a packet on the network is required to have function multiplicity, performance extensibility, and high reliability.  
         [0005]     A packet communication device that meets these requirements is disclosed in JP 2004-289223 A. The packet communication device is provided with an interface for extending a functional module providing an additional function.  
         [0006]     The conventional packet communication device judges processing necessary for a packet received from a network interface and determines a transfer path according to the processing determined. Subsequently, the conventional packet communication device adds addresses of all functional modules present on the transfer path determined to the packet as an internal header section. Then, the functional module connected to the packet communication device determines a transfer destination of the packet by referring to the internal header section given to the packet.  
       SUMMARY OF THE INVENTION  
       [0007]     However, in the conventional packet communication device, an amount of data in the internal header section given to the packet is large. Therefore, there has been a problem in that throughput is reduced.  
         [0008]     In the conventional packet communication device, the internal header section given to the packet is variable length data. Therefore, there has been a problem in that processing for removing the internal header section given to the packet using the functional module is complicated.  
         [0009]     The conventional packet communication device has to hold information on the variable length internal header section. Thus, there has been a problem in that it is impossible to efficiently use a memory.  
         [0010]     Further, there has been a problem in that the functional module connected to the conventional packet communication device needs to include a processing unit that processes the internal header section of the packet. Thus, processing cost and product cost are large.  
         [0011]     It is an object of this invention to provide a packet communication device that solves these problems.  
         [0012]     According to this invention, there is provided a packet communication device that receives a packet and transfers the packet received in a network, the packet communication device includes: a network interface that transmits the packet to and receives the packet from the network; a path retrieving unit that judges a transfer order, based on which the received packet is transferred in the packet communication device, on the basis of the received packet and gives an identifier indicating the transfer order judged to the packet; a functional module interface to which a functional module that applies predetermined processing to the packet is connected; a module management unit that manages the functional module; and a switch that connects the network interface and the functional module interface.  
         [0013]     According to this invention, the following effects are realized.  
         [0014]     (1) It is possible to minimize an amount of data in the internal header section given to the packet. Therefore, it is possible to improve throughput of the packet communication device.  
         [0015]     (2) Since the internal header section given to the packet has a fixed length, the functional module can easily extract a section excluding the internal header section of the packet. Therefore, it is possible to reduce mounting cost and processing cost for the packet communication device.  
         [0016]     (3) The internal header section given to the packet has a fixed length. Therefore, it is possible to efficiently use the memory that holds the internal header information. The number of entries of the path table that can be supported by an identical quantity of a memory is improved.  
         [0017]     (4) The internal transfer processing unit is mounted on the functional module interface that is the basic section of the packet communication device. Therefore, since it is unnecessary to mount the internal transfer processing unit on each of the functional modules, it is possible to create the functional modules at low cost. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0018]     The present invention can be appreciated by the description which follows in conjunction with the following figures, wherein:  
         [0019]      FIG. 1  is a block diagram of a packet communication device according to a first embodiment of this invention;  
         [0020]     FIG;  2  is a diagram of a flow definition table of a module control management unit according to the first embodiment of this invention.  
         [0021]      FIG. 3  is a diagram of a path table of a path retrieving unit according to the first embodiment of this invention;  
         [0022]      FIG. 4  is a diagram of an internal transfer destination table of a functional module according to the first embodiment of this invention;  
         [0023]      FIG. 5  is a diagram of the internal transfer destination table of the functional module according to the first embodiment of this invention;  
         [0024]      FIG. 6  is a flowchart of path processing by the module control management unit according to the first embodiment of this invention;  
         [0025]      FIG. 7  is a flowchart of packet transfer processing by a network interface according to the first embodiment of this invention;  
         [0026]      FIG. 8  is a flowchart of packet processing by the functional module according to the first embodiment of this invention;  
         [0027]      FIG. 9  is a diagram for explaining packet transfer processing by the packet communication device according to the first embodiment of this invention;  
         [0028]      FIG. 10  is a block diagram of a packet communication device according to a second embodiment of this invention;  
         [0029]      FIG. 11  is a flowchart of packet transfer processing by a functional module interface that receives a packet from a functional module according to the second embodiment of this invention;  
         [0030]      FIG. 12  is a diagram for explaining packet transfer processing by the packet communication device according to the second embodiment of this invention;  
         [0031]      FIG. 13  is a diagram of a flow definition table of a module control management unit according to a third embodiment of this invention;  
         [0032]      FIG. 14  is a diagram of an internal transfer destination table of a functional module according to the third embodiment of this invention;  
         [0033]      FIG. 15  is a diagram of the internal transfer destination table of the functional module according to the third embodiment of this invention;  
         [0034]      FIG. 16  is a flowchart of packet processing by the functional module according to the third embodiment of this invention;  
         [0035]      FIG. 17  is a diagram for explaining packet transfer processing by a packet communication device according to the third embodiment of this invention;  
         [0036]      FIG. 18  is a block diagram of a packet communication device according to a fourth embodiment of this invention;  
         [0037]      FIG. 19  is a diagram of a path table of a path retrieving unit according to the fourth embodiment of this invention;  
         [0038]      FIG. 20  is a flowchart of packet transfer processing by a network interface according to the fourth embodiment of this invention;  
         [0039]      FIG. 21  is a diagram for explaining a packet inside the packet communication device according to the fourth embodiment of this invention;  
         [0040]      FIG. 22  is a flowchart of packet transfer processing by a functional module interface that receives a packet from a functional module according to the fourth embodiment of this invention;  
         [0041]      FIG. 23  is a diagram for explaining packet transfer processing by the packet communication device according to the fourth embodiment of this invention;  
         [0042]      FIG. 24  is a diagram for explaining a packet inside a packet communication device according to a fifth embodiment of this invention;  
         [0043]      FIG. 25  is a flowchart of packet transfer processing by a functional module interface that receives a packet from a functional module according to the fifth embodiment of this invention;  
         [0044]      FIG. 26  is a diagram for explaining packet transfer processing by the packet communication device according to the fifth embodiment of this invention;  
         [0045]      FIG. 27  is a diagram of an internal transfer destination table of a functional module according to a sixth embodiment of this invention;  
         [0046]      FIG. 28  is a diagram of the internal transfer destination table of the functional module according to the sixth embodiment of this invention;  
         [0047]      FIG. 29  is a flowchart of processing for creating an internal transfer destination table of a module control management unit according to the sixth embodiment of this invention;  
         [0048]      FIG. 30  is a flowchart of packet processing by the functional module according to the sixth embodiment of this invention;  
         [0049]      FIG. 31  is a diagram for explaining packet transfer processing by a packet communication device according to the sixth embodiment of this invention;  
         [0050]      FIG. 32  is a block diagram of a packet communication device according to a seventh embodiment of this invention;  
         [0051]      FIG. 33  is a diagram of a flow definition table of a module control management unit according to the seventh embodiment of this invention;  
         [0052]      FIG. 34  is a diagram of an internal transfer destination table of a functional module according to the seventh embodiment of this invention;  
         [0053]      FIG. 35  is a diagram of the internal transfer destination table of the functional module according to the seventh embodiment of this invention;  
         [0054]      FIG. 36  is a flowchart of packet processing by the functional module according to the seventh embodiment of this invention;  
         [0055]      FIG. 37  is a block diagram of a packet communication device according to the seventh embodiment of this invention;  
         [0056]      FIG. 38  is a diagram of a path table of a path retrieving unit according to an eighth embodiment of this invention;  
         [0057]      FIG. 39  is a flowchart of packet transfer processing by a network interface according to the eighth embodiment of this invention;  
         [0058]      FIG. 40  is a diagram of a packet inside the packet communication device according to the eighth embodiment of this invention; and  
         [0059]      FIG. 41  is a diagram of the packet inside the packet communication device according to the eighth embodiment of this invention. 
     
    
     DESCRIPTION OF THE PREFERRED EMBODIMENTS  
       [0060]     Embodiments of this invention will be hereinafter explained with reference to the accompanying drawings.  
       First Embodiment  
       [0061]      FIG. 1  is a block diagram of a packet communication device  100  according to a first embodiment of this invention.  
         [0062]     The packet communication device  100  includes network interfaces  111  and  112 , path retrieving units  121  and  122 , functional module interfaces  131  and  132 , functional modules  201  and  202 , a module control management unit  140 , and a switch  150 . The packet communication device  100  is connected to external nodes  301  and  302  to transmit and receive packets.  
         [0063]     In the figure, the numbers of the network interfaces  111  and  112 , the path retrieving unit  121  and  122 , the functional module interfaces  131  and  132 , and the functional modules  201  and  202  are two, respectively. The numbers may be any number.  
         [0064]     The network interface  111  connects the switch  150  and the external node  301  to transfer a packet. The network interface  111  is connected to the path retrieving unit  121  to inquire about a path of a received packet.  
         [0065]     Similarly, the network interface  112  connects the switch  150  and the external node  302  to transfer a packet. The network interface  112  is connected to the path retrieving unit  122  to inquire about a path of a received packet.  
         [0066]     All the network interfaces  111  and  112  may be connected to one of the path retrieving units  121  and  122 .  
         [0067]     The path retrieving units  121  and  122  include processors  1211  and storage devices  1212 . The processors  1211  execute programs stored in the storage devices  1212  to thereby perform various kinds of processing. Path tables  1213  and path retrieving programs  1214  are stored in the storage devices  1212 .  
         [0068]     The path tables  1213  indicate transfer paths of packets received by the network interfaces  111  and  112 . The path tables  1213  are described later with reference to  FIG. 3 . The path retrieving programs  1214  retrieve, from the path tables  1213 , the transfer paths of the packets received by the network interfaces  111  and  112 .  
         [0069]     The network interfaces  111  and  112  and the path retrieving units  121  and  122  may be included in one device.  
         [0070]     The switch  150  is connected to the network interfaces  111  and  112  and the functional module interfaces  131  and  132 . When the switch  150  receives a packet, the switch  150  transfers the packet to a destination stored in a header section of the packet received.  
         [0071]     The packet communication device  100  does not have to include the switch  150 . In this case, the network interfaces  111  and  112  and the functional module interfaces  131  and  132  are directly connected to each other.  
         [0072]     The functional module interface  131  connects the switch  150  and the functional module  201  to transfer a packet. Similarly, the functional module interface  132  connects the switch  150  and the functional module  202  to transfer a packet.  
         [0073]     The packet communication device  100  does not have to include the functional module interfaces  131  and  132 . In this case, the functional modules  201  and  202  and the switch  150  are directly connected to each other.  
         [0074]     The functional modules  201  and  202  include processors  2011  and storage devices  2012 . The processors  2011  execute programs stored in the storage devices  2012  to thereby perform various kinds of processing. Internal transfer destination tables  2013 , functional processing programs  2014 , and internal transfer destination retrieving programs  2015  are stored in the storage devices  2012 .  
         [0075]     The internal transfer destination tables  2013  indicate transfer destinations of packets received by the functional modules  201  and  202 . The internal transfer destination tables  2013  are described later with reference to  FIG. 4 . The functional processing programs  2014  apply various kinds of processing to the packets received by the functional modules  201  and  202 . The various kinds of processing are, for example, statistical processing, routing processing, encryption processing, virus check processing, and/or firewall processing. The internal transfer destination retrieving programs  2015  retrieve, from the internal transfer destination tables  2013 , transfer destinations of packets received by the functional modules  201  and  202 .  
         [0076]     The functional modules  201  and  202  may be provided outside the packet communication device  100 . In this case, it is possible to replace the functional modules  201  and  202  according to processing for received packets.  
         [0077]     The module control management unit  140  is connected to the path retrieving units  121  and  122  and the functional modules  201  and  202 . The module control management unit  140  includes a processor  1401  and a storage device  1402 . The processor  1401  executes a program stored in the storage device  1402  to thereby perform various kinds of processing.  
         [0078]     A path processing program  1403  and a flow definition table  1404  are stored in the storage device  1402 .  
         [0079]     The flow definition table  1404  indicates a transfer path of a packet received by the packet communication device  100 . The flow definition table  1404  is described later with reference to  FIG. 3 . The path processing program  1403  creates the path tables  1213  of the path retrieving units  121  and  122  and the internal transfer destination table  2013  of the functional modules  201  and  202 .  
         [0080]     The module control management unit  140  may are connected to the switch  150  without being connected to the path retrieving units  121  and  122  and the functional modules  201  and  202 . In this case, the module control management unit  140  accesses the path retrieving units  121  and  122  and the functional modules  201  and  202  via the switch  150 .  
         [0081]      FIG. 2  is a diagram of the flow definition table  1404  of the module control management unit  140  according to the first embodiment of this invention.  
         [0082]     The flow definition table  1404  includes a flow condition  14041 , a flow identifier  14042 , and a transfer path  14043 .  
         [0083]     The flow condition  14041  is a condition for judging a transfer path of packets received by the network interfaces  111  and  112 . For example, a protocol number of the packet, a TCP port number, a transmission source IP address, a transmission destination IP address, a transmission source MAC address, a transmission destination MAC address, and/or identifiers of the network interfaces  111  and  112  that receive the packet are stored in the flow condition  14041 .  
         [0084]     The flow identifier  14042  is an identifier for uniquely identifying a transfer path of the packet.  
         [0085]     The transfer path  14043  is a path for transferring the packet. Hardware identifiers of apparatuses to which the packet is transferred are stored in the transfer path  14043  from the head in an order of transfer. The hardware identifiers are identifiers for uniquely identifying the network interfaces  111  and  112 , the functional modules  201  and  202 , and the like.  
         [0086]     For example, a packet with a protocol number “80” coincides with an entry E 111  with the flow condition  14041  “protocol number=80”. Therefore, the packet is transferred to the functional module  201 , the functional module  202 , and the network interface  112  in this order.  
         [0087]     Similarly, a packet with a transmission source IP address “192.168.10.0/24” is transferred to the functional module  201  and the network interface  112  in this order (an entry E 112 ). A packet with a transmission destination IP address “192.168.20.0/24” is transferred to the functional module  202  and the network interface  112  in this order (an entry E 113 ).  
         [0088]      FIG. 3  is a diagram of the path table  1213  of the path retrieving units  121  and  122  according to the first embodiment of this invention.  
         [0089]     The path table  1213  includes a flow condition  12131 , a flow identifier  12132 , and a next transfer destination  12133 . The path table  1213  is created in association with the flow definition table  1404 . Thus, the path table  1213  and the flow definition table  1404  have an identical number of entries.  
         [0090]     The flow condition  12131  is a condition for judging a transfer path of packets received by the network interfaces  111  and  112 . Information identical with the flow condition  14041  of the flow definition table  1404  as shown in  FIG. 2  described above is stored in the flow condition  12131 .  
         [0091]     The flow identifier  12132  is an identifier for uniquely identifying a transfer path of the packet.  
         [0092]     Hardware identifiers of apparatuses to which the network interfaces  111  and  112 , which receive the packets, transfer the packets next are stored in a next transfer destination  12133 .  
         [0093]      FIG. 4  is a diagram of the internal transfer destination table  2013  of the functional module  201  according to the first embodiment of this invention.  
         [0094]     The internal transfer destination table  2013  of the functional module  201  includes a flow identifier  20131  and a next transfer destination  20132 .  
         [0095]     The flow identifier  20131  is an identifier for uniquely identifying a transfer path of a packet.  
         [0096]     Hardware identifiers of apparatuses to which the functional module  201 , which receives the packets, transfers the packet next are stored in the next transfer destination  20132 .  
         [0097]      FIG. 5  is a diagram of the internal transfer destination table  2013  of the functional module  202  according to the first embodiment of this invention;  
         [0098]     The internal transfer destination table  2013  of the functional module  202  has components identical with those of the internal transfer destination table as shown in  FIG. 4  of the functional module  201  described above. Thus, an explanation of the internal transfer destination table  2013  is omitted.  
         [0099]     Hardware identifiers of apparatuses to which the functional module  202  transfers the packet next are stored in the next transfer destination  20132 .  
         [0100]      FIG. 6  is a flowchart of path processing of the module control management unit  140  according to the first embodiment of this invention.  
         [0101]     When the packet communication device  100  is started (S 101 ), the module control management unit  140  starts the path processing. When an administrator changes the flow definition table  1404  (S 102 ), the module control management unit  140  also starts the path processing.  
         [0102]     First, the module control management unit  140  creates the path table  1213  based on the flow definition table  1404  (S 103 ).  
         [0103]     Specifically, the module control management unit  140  selects the entries of the flow definition table  1404  one by one from the head. The module control management unit  140  creates an entry of the path table  1213  based on the entries selected as described below.  
         [0104]     The module control management unit  140  stores the flow condition  14041  of the selected entry in the flow condition  12131  of the path table  1213 . Subsequently, the module control management unit  140  stores the flow identifier  14042  in the flow identifier  12132  of the path table  1213 . Subsequently, the module control management unit  140  stores hardware identifiers stored at the head of the transfer path  14043  of the selected entry in the next transfer destination  12133  of the path table  1213 .  
         [0105]     For example, the module control management unit  140  creates the path table  1213  shown in  FIG. 3  based on the flow definition table  1404  shown in  FIG. 2 .  
         [0106]     Specifically, the module control management unit  140  creates an entry E 121  of the path table  1213  based on the entry E 111  of the flow definition table  1404 . Similarly, the module control management unit  140  creates an entry E 122  of the path table  1213  based on the entry E 112  of the flow definition table  1404 . The module control management unit  140  creates an entry E 123  of the path table  1213  based on the entry E 113  of the flow definition table  1404 .  
         [0107]     Subsequently, the module control management unit  140  creates the internal transfer destination table  2013  based on the flow definition table  1404  (S 104 ). The module control management unit  140  creates the different internal transfer destination table  2013  for each of the functional modules  201  and  202 .  
         [0108]     Here, creation of the internal transfer destination tables  2013  of the functional modules  201  and  202  identified hardware identifiers X are explained as an example.  
         [0109]     First, the module control management unit  140  retrieves the hardware identifiers X from the transfer path  14043  of the flow definition table  1404 . Then, the module control management unit  140  creates one entry of the internal transfer destination table  2013  based on one of the hardware identifiers X retrieved.  
         [0110]     Specifically, the module control management unit  140  extracts the flow identifier  14042  of an entry in which the hardware identifier X retrieved is stored from the flow definition table  1404 . Subsequently, the module control management unit  140  stores the flow identifier  14042  extracted in the flow identifier  20131  of the internal transfer destination table  2013 . The module control management unit  140  extracts a hardware identifier stored right below the retrieved hardware identifier X from the transfer path  14043  of the flow definition table  1404 . The module control management unit  140  stores the hardware identifier extracted in the next transfer destination  20132  of the internal transfer destination table  2013 .  
         [0111]     For example, the module control management unit  140  creates the internal transfer table  2013  of the functional module  201  shown in  FIG. 4  based on the flow definition table  1404  having the content shown in  FIG. 2 . Specifically, the module control management unit  140  creates an entry E 131  of the internal transfer destination table  2013  based on the entry E 111  of the flow definition table  1404 . The module control management unit  140  creates an entry E 132  of the internal transfer destination table  2013  based on the entry E 112  of the flow definition table  1404 .  
         [0112]     The module control management unit  140  creates the internal transfer destination table  2013  of the functional module  202  shown in  FIG. 5  based on the flow definition table  1404  having the content shown in  FIG. 2 . Specifically, the module control management unit  140  creates an entry E 141  of the internal transfer destination table  2013  based on the entry E 111  of the flow definition table  1404 . The module control management unit  140  creates an entry E 142  of the internal transfer destination table  2013  based on the entry E 113  of the flow definition table  1404 .  
         [0113]     Subsequently, the module control management unit  140  stores the internal transfer destination table  2013  created in the functional modules  201  and  202  corresponding to the internal transfer destination table  2013  (S 105 ). The module control management unit  140  stores the path table  1213  created in all the path retrieving units  121  and  122  (S 106 ).  
         [0114]     As described above, the module control management unit  140  updates the internal transfer destination table  2013  and the path table  1213 .  
         [0115]     Step S 104  may be performed before step S 103 . Similarly, step S 106  may be performed before step S 105 .  
         [0116]      FIG. 7  is a flowchart of packet transfer processing of the network interface  111  according to the first embodiment of this invention.  
         [0117]     First, the network interface  111  receives a packet from the external node  301  (S 111 ).  
         [0118]     Subsequently, the network interface  111  transmits the entire packet or a part of the packet received to the path retrieving unit  121 . A section for judging a path of the packet (e.g., header section) has to be included in a part of the packet.  
         [0119]     The path retrieving unit  121  retrieves an entry in which the received packet corresponds to the flow condition  12131  from the path table  1213 . Subsequently, the path retrieving unit  121  extracts the flow identifier  12132  and the next transfer destination  12133  from the entry retrieved. The path retrieving unit  121  transmits the flow identifiers  12132  and the next transfer destination  12133  extracted to the network interface  111 .  
         [0120]     The network interface  111  receives the flow identifier  12132  and the next transfer destination  12133  (S 112 ).  
         [0121]     Subsequently, the network interface  111  adds the flow identifier  12132  and the next transfer destination  12133  received to the head of the packet received from the external node  301  as an internal header section. The network interface  111  transmits the packet added with the internal header section to the switch  150  (S 113 ).  
         [0122]      FIG. 8  is a flowchart of packet processing of the functional module  201  according to the first embodiment of this invention.  
         [0123]     First, the functional module  201  receives a packet from the functional module interface  131  (S 121 ). Subsequently, the functional module  201  executes the functional processing program  2014  to thereby apply predetermined processing to the packet received (S 122 ).  
         [0124]     Subsequently, the functional module  201  extracts a flow identifier added to the received packet. The functional module  201  selects, from the internal transfer destination table  2013 , an entry in which the flow identifier extracted and the flow identifier  20131  of the internal transfer destination table  2013  coincide with each other. The functional module  201  extracts the next transfer destination  20132  of the entry selected (S 123 ).  
         [0125]     Subsequently, the functional module  201  replaces a next transfer destination added to the received packet with the next transfer destination  20132  extracted. The functional module  201  transmits the packet to the switch  150  via the functional module interface  131  (S 124 ).  
         [0126]      FIG. 9  is a diagram for explaining packet transfer processing of the packet communication device  100  according to the first embodiment of this invention.  
         [0127]     First, the network interface  111  receives a packet from the external node  301 . In this explanation, a protocol number of the packet received is “80”.  
         [0128]     Subsequently, the network interface  111  transmits a header section of the received packet to the path retrieving unit  121 . The path retrieving unit  121  retrieves an entry in which the header section received corresponds to the flow condition  12131  of the path table  1213  from the path table  1213 .  
         [0129]     Subsequently, the path retrieving unit  121  extracts the flow identifier  12132  and the next transfer destination  12133  from the entry retrieved. The path retrieving unit  121  transmits the flow identifier  12132  and the next transfer destination  12133  extracted to the network interface  111 .  
         [0130]     Specifically, since the protocol number of the packet is “80”, the path retrieving unit  121  retrieves the entry E 121  from the path table  1213 . The path retrieving unit  121  extracts “1” of the flow identifier  12132  and the “functional module  201 ” of the next transfer destination  12133  from the entry E 121  The path retrieving unit  121  transmits “1” of the flow identifier  12132  and the “functional module  201 ” of the next transfer destination  12133  to the network interface  111 .  
         [0131]     The network interface  111  adds the flow identifier  12132  and the next transfer destination  12133  received to the packet. The network interface  111  transmits the packet to the switch  150 .  
         [0132]     The switch  150  extracts the next transfer destination  12133  from the packet received. The switch  150  transfers the received packet to an interface of an apparatus corresponding to the next transfer destination  12133  extracted.  
         [0133]     Specifically, the switch  150  extracts the “functional module  201 ” of the next transfer destination  12133  from the packet received. The switch  150  transfers the received packet to the functional module interface  131  to which the “functional module  201 ” of the next transfer destination  12133  extracted is connected.  
         [0134]     The functional module interface  131  transfers the packet received from the switch  150  to the functional module  201  to which the functional module interface  131  is connected.  
         [0135]     The functional module  201  receives a packet from the functional module interface  131 . Subsequently, the functional module  201  executes the functional processing program  2014  to thereby apply predetermined processing to the packet received.  
         [0136]     Subsequently, the functional module  201  extracts the flow identifier  12132  added to the received packet. The functional module  201  retrieves, from the internal transfer destination table  2013  of the functional module  201 , an entry in which the flow identifier  12132  extracted and the flow identifier  20131  of the internal transfer destination table  2013  coincide with each other. The functional module  201  extracts the next transfer destination  20132  from the entry retrieved. The functional module  201  replaces the next transfer destination  12133  added to the received packet with the next transfer destination  20132  extracted.  
         [0137]     Specifically, the functional module  201  extracts “1” of the flow identifier  12132  added to the received packet. Subsequently, the functional module  201  retrieves, from the internal transfer destination table  2013 , the entry E 131  in which “1” of the flow identifier  12132  extracted and the flow identifier  20131  coincide with each other. The functional module  201  extracts the “functional module  202 ” of the next transfer destination  20132  from the entry E 131  retrieved.  
         [0138]     The functional module  201  replaces the “functional module  201 ” of the next transfer destination  12133  added to the received packet with the “functional module  202 ” of the next transfer destination  20132  extracted.  
         [0139]     The functional module  201  transmits the packet to the functional module interface  131  to which the functional module  201  is connected.  
         [0140]     The functional module interface  131  transfers the packet received to the switch  150 .  
         [0141]     The switch  150  transfers the packet in the same manner as the processing at the time when the switch  150  receives the packet from the network interface  111 .  
         [0142]     Specifically, the switch  150  extracts the “functional module  202 ” of the next transfer destination  20132  from the packet received. The switch  150  transfers the received packet to the functional module interface  132  to which the “functional module  202 ” of the next transfer destination  20132  extracted is connected.  
         [0143]     The functional module interface  132  transfers the packet received from the switch  150  to the functional module  202  to which the functional module interface  132  is connected.  
         [0144]     The functional module  202  processes the packet in the same manner as the processing performed by the functional module  201 .  
         [0145]     Specifically, the functional module  202  executes the functional processing program  2014  to thereby apply predetermined processing to the packet received. Subsequently, the functional module  202  extracts “1” of the flow identifier  12132  added to the received packet.  
         [0146]     Subsequently, the functional module  202  retrieves, from the internal transfer destination table  2013 , an entry E 141  in which “1” of the flow identifier  12132  extracted and the flow identifier  20131  coincide with each other. The functional module  202  extracts the “network interface  112 ” of the next transfer destination  20132  from the entry E 141  retrieved.  
         [0147]     The functional module  202  replaces the “functional module  202 ” of the next transfer destination  12133  added to the received packet with the “network interface  112 ” of the next transfer destination  20132  extracted.  
         [0148]     The functional module  202  transmits the packet to the functional module interface  132  to which the functional module  202  is connected.  
         [0149]     The functional module interface  132  transfers the packet received to the switch  150 .  
         [0150]     The switch  150  transfers the packet in the same manner as the processing at the time when the switch  150  receives the packet from the network interface  111 .  
         [0151]     Specifically, the switch  150  extracts the “network interface  112 ” of the next transfer destination  20132  from the packet received. The switch  150  transfers the received packet to the “network interface  112 ” of the next transfer destination  20132  extracted.  
         [0152]     The network interface  112  receives the packet from the switch  150 . Subsequently, the network interface  112  removes the flow identifier  12132  and the next transfer destination  20132  from the packet received.  
         [0153]     The network interface  112  transmits the packet, from which the flow identifier  121132  and the next transfer destination  20132  are removed, to the external node  302  to which the network interface  112  is connected.  
         [0154]     As described above, the packet communication device  100  transfers the packet.  
         [0155]     The packet communication device  100  in this embodiment adds only two pieces of information, a flow identifier and a next transfer destination, to a packet. In other words, the packet communication device  100  minimizes an amount of data of an internal header section to be added to the packet. Consequently, since an amount of traffic inside the packet communication device  100  is reduced, the packet communication device  100  can improve throughput.  
         [0156]     The packet communication device  100  in this embodiment adds a fixed length internal header section to a packet. This facilitates processing of a functional module for removing the internal header section added to the packet.  
         [0157]     Since the packet communication device  100  in this embodiment holds information on the fixed length internal header section, the packet communication device  100  can use a memory efficiently.  
       Second Embodiment  
       [0158]     In a second embodiment of this invention, the functional module interfaces  131  and  132  judge a transfer destination.  
         [0159]      FIG. 10  is a block diagram of a packet communication device  100  according to a second embodiment of this invention.  
         [0160]     The packet communication device  100  in the second embodiment has a constitution identical with that of the packet communication device in the first embodiment as shown in  FIG. 1  except the points described below. Components identical with those in the first embodiment are denoted by the identical reference symbols. Explanations of the components are omitted.  
         [0161]     A first difference is components included in the functional module interfaces  131  and  132 . The functional module interfaces  131  and  132  in this embodiment include processors  1311  and storage devices  1312 .  
         [0162]     The processors  1311  execute programs stored in the storage devices  1312  to thereby perform various kinds of processing.  
         [0163]     The internal transfer destination tables  2013  as shown in  FIG. 4  and the internal transfer destination retrieving programs  2015  are stored in the storage devices  1312 .  
         [0164]     The internal transfer destination tables  2013  and the internal transfer destination retrieving programs  2015  are identical with those stored in the storage devices  2012  of the functional modules  201  and  202  in the first embodiment. Thus, the internal transfer destination tables  2013  and the internal transfer destination retrieving programs  2015  are not stored in the storage devices  2012  of the functional modules  201  and  202  in this embodiment.  
         [0165]     A second difference is connection of the module control management unit  140 . In this embodiment, the module control management unit  140  is not connected to the functional modules  201  and  202  but is connected to the functional module interfaces  131  and  132 .  
         [0166]     Thus, the module control management unit  140  stores the internal transfer destination table  2013  in the functional module interfaces  131  and  132  rather than the functional modules  201  and  202  in the path processing as shown in  FIG. 6  in step S 105 . Since the other kinds of processing of the module control management unit  140  are identical with those in the first embodiment, explanations of the processing are omitted.  
         [0167]      FIG. 11  is a flowchart of packet transfer processing of the functional module interface  131  that receives a packet from the functional module  201  according to the second embodiment of this invention.  
         [0168]     First, the functional module interface  131  receives a packet from the functional module  201  (S 131 ).  
         [0169]     Subsequently, the functional module interface  131  extracts a flow identifier added to the packet received. The functional module interface  131  selects, from the internal transfer destination table  2013 , an entry in which the flow identifier extracted and the flow identifier  20131  of the internal transfer destination table  2013  coincide with each other. The functional module interface  131  extracts the next transfer destination  20132  of the entry selected (S 132 ).  
         [0170]     Subsequently, the functional module interface  131  replaces a next transfer destination added to the received packet with the next transfer destination  20132  extracted. The functional module interface  131  transfers the packet to the switch  150  (S 133 ).  
         [0171]      FIG. 12  is a diagram for explaining packet transfer processing of the packet communication device  100  according to the second embodiment of this invention.  
         [0172]     The packet transfer processing of the packet communication device  100  in this embodiment is identical with the packet transfer processing as shown in  FIG. 9  in the first embodiment except that the functional module interfaces  131  and  132  perform processing for judging a next transfer destination. Thus, an explanation of the identical processing is omitted and only differences will be explained.  
         [0173]     The packet transfer processing is identical with the packet transfer processing as shown in  FIG. 9  in the first embodiment until the functional module  201  applies the predetermined processing to a packet.  
         [0174]     After applying the predetermined processing to the received packet, the functional module  201  transmits the packet to the functional module interface  131 .  
         [0175]     The functional module interface  131  receives the packet from the functional module  201 . The functional module interface  131  extracts the flow identifier  12132  added to the packet received.  
         [0176]     Subsequently, the functional module interface  131  retrieves, from the internal transfer destination table  2013  of the functional module interface  131 , an entry in which the flow identifier  12132  extracted and the flow identifier  20131  of the internal transfer destination table  2013  coincide with each other. The functional module interface  131  extracts the next transfer destination  20132  from the entry retrieved.  
         [0177]     The functional module interface  131  replaces the next transfer destination  12133  added to the received packet with the next transfer destination  20132  extracted.  
         [0178]     The functional module interface  131  transmits the packet to the switch  150 .  
         [0179]     The packet transfer processing is identical with the packet transfer processing as shown in  FIG. 9  in the first embodiment after the transmission of the packet to the switch  150  until the functional module  202  applies the predetermined processing to the packet.  
         [0180]     After applying the predetermined processing to the received packet, the functional module  202  transmits the packet to the functional module interface  132 .  
         [0181]     The functional module interface  132  receives the packet from the functional module  202 . The functional module interface  132  extracts the flow identifier  12132  added to the packet received.  
         [0182]     Subsequently, the functional module interface  132  retrieves, from the internal transfer destination table  2013 , an entry in which the flow identifier  12132  extracted and the flow identifier  20131  coincide with each other. The functional module interface  132  extracts the next transfer destination  20132  from the entry retrieved.  
         [0183]     The functional module interface  132  replaces the next transfer destination added to the received packet with the next transfer destination  20132  extracted.  
         [0184]     The functional module interface  132  transmits the packet to the switch  150 .  
         [0185]     The packet transfer processing is identical with the packet transfer processing as shown in  FIG. 9  in the first embodiment after the transmission of the packet to the switch  150 .  
         [0186]     In the second embodiment, the functional module interfaces  131  and  132  include the internal transfer destination tables  2013  and the internal transfer destination retrieving programs  2015 . In other words, the functional modules  201  and  202  do not need to include the internal transfer destination tables  2013  and the internal transfer destination retrieving programs  2015 . Thus, it is possible to reduce processing of the functional modules  201  and  202 . Moreover, it is possible to create the functional modules  201  and  202  at low cost.  
       Third Embodiment  
       [0187]     In a third embodiment of this invention, a counter value is added to a packet inside the packet communication device  100 . This makes it possible to transfer the packet to the identical functional modules  201  and  202  plural times.  
         [0188]     It is possible to apply the third embodiment of this invention to the packet communication device  100  in both the first embodiment and the second embodiment. In this explanation, the third embodiment is applied to the packet communication device  100  in the first embodiment.  
         [0189]     A constitution of the packet communication device  100  in the third embodiment is identical with that of the packet communication device as shown in  FIG. 1  in the first embodiment except components of the internal transfer destination table  2013  stored in the functional module  201 . Thus, an explanation of the constitution of the packet communication device  100  is omitted.  
         [0190]     In an example explained below, the flow definition table  1404  shown in  FIG. 13  is created.  
         [0191]      FIG. 13  is a diagram of the flow definition table  1404  of the module control management unit  140  according to the third embodiment of this invention.  
         [0192]     Components of the flow definition table  1404  in the third embodiment are identical with those of the flow definition table as shown in  FIG. 2  in the first embodiment. The identical components are denoted by the identical reference symbols. Explanations of the components are omitted.  
         [0193]     For example, a packet with a protocol number “80” is transferred to the functional module  201 , the functional module  202 , the functional module  201 , and the network interface  112  in this order (an entry E 211 ).  
         [0194]     A packet with a transmission source IP address “192.168.10.0/24” is transferred to the functional module  201  and the network interface  112  in this order (an entry E 212 ). A packet with a transmission destination IP address “192.168.20.0/24” is transferred to the functional module  202  and the network interface  112  in this order (an entry E 213 ).  
         [0195]      FIG. 14  is a diagram of the internal transfer destination table  2013  of the functional module  201  according to the third embodiment of this invention.  
         [0196]     The internal transfer destination table  2013  in the third embodiment includes components identical with those in the internal transfer destination table as shown in  FIG. 4  in the first embodiment. The identical components are denoted by the identical reference symbols. Explanations of the components are omitted.  
         [0197]     The internal transfer destination table  2013  in the third embodiment further includes a counter value  20133 .  
         [0198]     The counter value  20133  is the number of times a packet passes through the functional modules  201  and  202 . The functional module  201  compares the counter value  20133  with a value of a counter added to the packet.  
         [0199]     Subsequently, the module control management unit  140  process which creates the internal transfer destination tables  2013  of the functional modules  201  and  202  identified hardware identifiers X are explained.  
         [0200]     First, the module control management unit  140  retrieves the hardware identifiers X from the transfer path  14043  of the flow definition table  1404 . Then, the module control management unit  140  creates one entry of the internal transfer destination table  2013  based on one of the hardware identifiers X retrieved.  
         [0201]     Specifically, the module control management unit  140  extracts the flow identifier  14042  of an entry in which the hardware identifier X retrieved is stored from the flow definition table  1404 . Subsequently, the module control management unit  140  stores the flow identifier  14042  extracted in the flow identifier  20131  of the internal transfer destination table  2013 .  
         [0202]     The module control management unit  140  extracts a hardware identifier stored right below the retrieved hardware identifier X from the transfer path  14043  of the flow definition table  1404 . The module control management unit  140  stores the hardware identifier extracted in the next transfer destination  20132  of the internal transfer destination table  2013 .  
         [0203]     Subsequently, the module control management unit  140  selects an entry in which the retrieved hardware identifier X is stored from the flow definition table  1404 . The module control management unit  140  counts, in the entry selected, the number of hardware identifiers stored on the retrieved hardware identifier X. The module control management unit  140  stores the value counted in the counter value  20133  of the internal transfer destination table  2013 .  
         [0204]     The module control management unit  140  repeats the processing described above for all the retrieved hardware identifiers X to create the internal transfer destination table  2013 .  
         [0205]     The module control management unit  140  creates the internal transfer destination table  2013  of the functional module  201  shown in  FIG. 14  based on the flow definition table  1404  shown in  FIG. 13 .  
         [0206]     Specifically, the module control management unit  140  creates an entry E 231  or entry E 232  of the internal transfer destination table  2013  based on the entry E 211  of the flow definition table  1404 . The module control management unit  140  creates an entry E 233  of the internal transfer destination table  2013  based on the entry E 212  of the flow definition table  1404 .  
         [0207]      FIG. 15  is a diagram of the internal transfer destination table  2013  of the functional module  202  according to the third embodiment of this invention.  
         [0208]     The internal transfer destination table  2013  of the functional module  202  is identical to the internal transfer destination table of the functional module  201  as shown in  FIG. 14  explained above, so explanations of the components are omitted.  
         [0209]     The module control management unit  140  creates the internal transfer destination table  2013  of the functional module  202  shown in  FIG. 14  based on the flow definition table  1404  shown in  FIG. 13 .  
         [0210]     Specifically, the module control management unit  140  creates an entry E 241  of the internal transfer destination table  2013  based on the entry E 211  of the flow definition table  1404 . The module control management unit  140  creates an entry E 242  of the internal transfer destination table  2013  based on the entry E 213  of the flow definition table  1404 .  
         [0211]      FIG. 16  is a flowchart of packet processing of the functional module  201  according to the third embodiment of this invention.  
         [0212]     First, the functional module  201  receives a packet from the functional module interface  131  (S 141 ).  
         [0213]     Subsequently, the functional module  201  executes the functional processing program  2014  to thereby apply predetermined processing to the packet received (S 142 ).  
         [0214]     Subsequently, the functional module  201  extracts a flow identifier and a counter value added to the received packet. The functional module  201  selects, from the internal transfer destination table  2013 , an entry in which the flow identifier extracted and the flow identifier  20131  of the internal transfer destination table  2013  coincide with each other and the counter value extracted and the counter value  20133  of the internal transfer destination table  2013  coincide with each other. The functional module  201  extracts the next transfer destination  20132  of the entry selected (S 143 ).  
         [0215]     Subsequently, the functional module  201  increases the value of the counter added to the received packet (S 144 ).  
         [0216]     Subsequently, the functional module  201  replaces a next transfer destination added to the received packet with the next transfer destination  20132  extracted. The functional module  201  transmits the packet to the switch  150  via the functional module interface  131  (S 145 ).  
         [0217]      FIG. 17  is a diagram for explaining packet transfer processing of the packet communication device  100  according to the third embodiment of this invention.  
         [0218]     First, the network interface  111  receives a packet from the external node  301 . In this explanation, a protocol number of the packet received is “80”.  
         [0219]     Subsequently, the network interface  111  transmits a header section of the received packet to the path retrieving unit  121 . The path retrieving unit  121  retrieves an entry in which the header section received corresponds to the flow condition  12131  of the path table  1213  from the path table  1213  as shown in  FIG. 3 .  
         [0220]     Subsequently, the path retrieving unit  121  extracts the flow identifier  12132  and the next transfer destination  12133  from the entry retrieved. The path retrieving unit  121  transmits the flow identifier  12132  and the next transfer destination  12133  extracted to the network interface  111 .  
         [0221]     Specifically, since a protocol number of the packet is “80”, the path retrieving unit  121  retrieves the entry E 121  from the path table  1213 . The path retrieving unit  121  extracts “1” of the flow identifier  12132  and the “functional module  201 ” of the next transfer destination  12133  from the entry E 121 . The path retrieving unit  121  transmits “1” of the flow identifier  12132  and the “functional module  201 ” of the next transfer destination  12133  to the network interface  111 .  
         [0222]     The network interface  111  adds the flow identifier  12132  and the next transfer destination  12133  received to the packet. The network interface  111  further adds a counter  1110 , a value of which is initialized (e.g., the value is “0”), to the packet. The network interface  111  transmits the packet added with the flow identifier  12132 , the next transfer destination  12133 , and the counter  1110  to the switch  150 .  
         [0223]     The switch  150  extracts the next transfer destination  12133  from the packet received. The switch  150  transfers the received packet to an interface of an apparatus corresponding to the next transfer destination  12133  extracted.  
         [0224]     Specifically, the switch  150  extracts the “functional module  201 ” of the next transfer destination  12133  from the packet received. The switch  150  transfers the received packet to the functional module interface  131  to which the “functional module  201 ” of the next transfer destination  12133  extracted is connected.  
         [0225]     The functional module interface  131  transfers the packet received from the switch  150  to the functional module  201  to which the functional module interface  131  is connected.  
         [0226]     The functional module  201  receives a packet from the functional module interface  131 . Subsequently, the functional module  201  executes the functional processing program  2014  to thereby apply predetermined processing to the packet received.  
         [0227]     Subsequently, the functional module  201  extracts the flow identifier  12132  and the counter value  1110  added to the received packet. The functional module  201  retrieves, from the internal transfer destination table  2013  of the functional module  201 , an entry in which the flow identifier  12132  extracted and the flow identifier  20131  of the internal transfer destination table  2013  coincide with each other and the counter value  1110  extracted and the counter value  20133  of the internal transfer destination table  2013  coincide with each other.  
         [0228]     Subsequently, the functional module  201  extracts the next transfer destination  20132  from the entry retrieved. Subsequently, the functional module  201  replaces the next transfer destination  12133  added to the received packet with the next transfer destination  20132  extracted. Further, the functional module  201  increases the value of the counter  1110  added to the received packet.  
         [0229]     Specifically, the functional module  201  extracts “1” of the flow identifier  12132  and the value “0” of the counter  1110  added to the received packet.  
         [0230]     Subsequently, the functional module  201  retrieves, from the internal transfer destination table  2013  of the functional module  201 , an entry E 231  in which “1” of the flow identifier  12132  extracted and the flow identifier  20131  of the internal transfer destination table  2013  coincide with each other and the value “0” of the counter  1110  extracted and the counter value  20133  of the internal transfer destination table  2013  coincide with each other.  
         [0231]     Subsequently, the functional module  201  extracts the “functional module  202 ” of the next transfer destination  20132  of the entry E 231  retrieved.  
         [0232]     Subsequently, the functional module  201  replaces the “functional module  201 ” of the next transfer destination  12133  added to the received packet with the “functional module  202 ” of the next transfer destination  20132  extracted. The functional module  201  increases the value “0” of the counter  1110  to “1”.  
         [0233]     The functional module  201  transmits the packet to the functional module interface  131  to which the functional module  201  is connected.  
         [0234]     The functional module interface  131  transfers the packet received to the switch  150 .  
         [0235]     The switch  150  transfers the packet in the same manner as the processing at the time when the switch  150  receives the packet from the network interface  111 .  
         [0236]     Specifically, the switch  150  extracts the “functional module  202 ” of the next transfer destination  20132  from the packet received. The switch  150  transfers the received packet to the functional module interface  132  to which the “functional module  202 ” of the next transfer destination  20132  extracted is connected.  
         [0237]     The functional module interface  132  transfers the packet received from the switch  150  to the functional module  202  to which the functional module interface  132  is connected.  
         [0238]     The functional module  202  processes the packet in the same manner as the processing performed by the functional module  201  explained above.  
         [0239]     Specifically, the functional module  202  executes the functional processing program  2014  to thereby apply predetermined processing to the packet received.  
         [0240]     Subsequently, the functional module  202  extracts “1” of the flow identifier  12132  and the value “1” of the counter  1110  added to the received packet.  
         [0241]     Subsequently, the functional module  202  retrieves, from the internal transfer destination table  2013  of the functional module  202 , an entry E 241  in which “1” of the flow identifier  12132  extracted and the flow identifier  20131  of the internal transfer destination table  2013  coincide with each other and the value “1” of the counter  1110  extracted and the counter value  20133  of the internal transfer destination table  2013  coincide with each other.  
         [0242]     Subsequently, the functional module  202  extracts the “functional module  201 ” of the next transfer destination  20132  of the entry E 241  retrieved.  
         [0243]     Subsequently, the functional module  202  replaces the “functional module  202 ” of the next transfer destination added to the received packet with the “functional module  201 ” of the next transfer destination  20132  extracted. The functional module  202  increases the value “1” of the counter  1110  added to the received packet to “2”.  
         [0244]     The functional module  202  transmits the packet to the functional module interface  132  to which the functional module  202  is connected.  
         [0245]     The functional module interface  132  transfers the packet received to the switch  150 .  
         [0246]     The switch  150  transfers the packet in the same manner as the above-described processing at the time when the switch  150  receives the packet from the network interface  111 .  
         [0247]     Specifically, the switch  150  extracts the “functional module  201 ” of the next transfer destination  20132  from the packet received. The switch  150  transfers the received packet to the functional module interface  132  to which the “functional module  201 ” of the next transfer destination  20132  extracted is connected.  
         [0248]     The functional module interface  131  transfers the packet received from the switch  150  to the functional module  201  to which the functional module interface  131  is connected.  
         [0249]     As a result, the functional module  201  processes the packet in the same manner described above.  
         [0250]     Specifically, the functional module  201  executes the functional processing program  2014  to thereby apply predetermined processing to the packet received.  
         [0251]     Subsequently, the functional module  201  extracts “1” of the flow identifier  12132  and the value “2” of the counter  1110  added to the received packet.  
         [0252]     Subsequently, the functional module  201  retrieves, from the internal transfer destination table  2013  of the functional module  201 , an entry E 232  in which “1” of the flow identifier  12132  extracted and the flow identifier  20131  of the internal transfer destination table  2013  coincide with each other and the value “2” of the counter  1110  extracted and the counter value  20133  of the internal transfer destination table  2013  coincide with each other.  
         [0253]     Subsequently, the functional module  201  extracts the “network interface  112 ” of the next transfer destination  20132  of the entry E 232  retrieved.  
         [0254]     Subsequently, the functional module  201  replaces the “functional module  201 ” of the next transfer destination added to the received packet with the “network interface  112 ” of the next transfer destination  20132  extracted. The functional module  201  increases the value “2” of the counter  1110  added to the received packet to “3”.  
         [0255]     The functional module  201  transmits the packet to the functional module interface  131  to which the functional module  201  is connected.  
         [0256]     The functional module interface  131  transfers the packet received to the switch  150 .  
         [0257]     The switch  150  transfers the packet in the same manner as the processing when receiving the packet from the network interface  111 .  
         [0258]     Specifically, the switch  150  extracts the “network interface  112 ” of the next transfer destination  20132  from the packet received. The switch  150  transfers the received packet to the “network interface  112 ” of the next transfer destination  20132  extracted.  
         [0259]     The network interface  112  receives the packet from the switch  150 . Subsequently, the network interface  112  removes the flow identifier  12132  and the next transfer destination  20132  from the packet received.  
         [0260]     The network interface  112  transmits the packet, from which the flow identifier and the next transfer destination are removed, to the external node  302  to which the network interface  112  is connected.  
       Fourth Embodiment  
       [0261]     In a fourth embodiment of this invention, a packet inside the packet communication device  100  includes the number of time the packet is transferred and hardware identifiers of apparatuses to which the packet is transferred.  
         [0262]      FIG. 18  is a block diagram of a packet communication device  100  in a fourth embodiment of this invention.  
         [0263]     The packet communication device  100  includes network interfaces  111  and  112 , path retrieving units  121  and  122 , functional module interfaces  131  and  132 , functional modules  201  and  202 , and a switch  150 .  
         [0264]     The network interfaces  111  and  112 , the functional modules  201  and  202 , and the switch  150  are identical with those in the packet communication device as shown in  FIG. 10  in the second embodiment. Thus, the identical components are denoted by the identical reference numerals. Explanations of the components are omitted.  
         [0265]     The path retrieving units  121  and  122  include the processors  1211  and the storage devices  1212 .  
         [0266]     The processors  1211  execute programs stored in the storage devices  1212  to thereby perform various kinds of processing. The path tables  1215  and the path retrieving programs  1214  are stored in the storage devices  1212 .  
         [0267]     The path tables  1215  indicate transfer paths of packets received by the network interfaces  111  and  112 . The path table  1215  is described later with reference to  FIG. 19 . The path retrieving programs  1214  retrieve the transfer paths of the packets received by the network interfaces  111  and  112  based on the path tables  1215 .  
         [0268]     The functional module interfaces  131  and  132  include processors  1311  and storage devices  1312 .  
         [0269]     The processors  1311  execute programs stored in the storage devices  1312  to thereby perform various kinds of processing. The transfer programs  1313  is stored in the storage device  1312 .  
         [0270]     The transfer programs  1313  process packets received from the functional modules  201  and  202  or the switch  150 . The transfer programs  1313  transfers the packets.  
         [0271]      FIG. 19  is a diagram of the path table  1215  of the path retrieving unit  121  and  122  in the fourth embodiment to this invention.  
         [0272]     The path table  1215  includes a flow condition  12151  and a transfer path  12152 .  
         [0273]     The flow condition  12151  is a condition for judging a transfer path of packets received by the network interfaces  111  and  112 .  
         [0274]     The transfer path  12152  is a path for transferring the packet. Hardware identifiers of apparatuses to which the packet is transferred are stored in the transfer path  12152  from the head in an order of transfer.  
         [0275]     For example, a packet with a protocol number “80” is transferred to the functional module  201 , the functional module  202 , and the network interface  112  in this order (entry E 311 ). Similarly, a packet with a transmission source IP address “192.168.10.0/24” is transferred to the functional module  201  and the network interface  112  in this order (entry E 312 ). A packet with a transmission source IP address “192.168.20.0/24” is transferred to the functional module  202  and the network interface  112  in this order (entry E 313 ).  
         [0276]      FIG. 20  is a flowchart of packet transfer processing of the network interface  111  according to the fourth embodiment of this invention.  
         [0277]     First, the network interface  111  receives a packet from the external node  301  (S 151 ).  
         [0278]     Subsequently, the network interface  111  transmits the entire packet received or a part of the packet to the path retrieving unit  121 . A section for judging a path of the packet (e.g., header section) has to be included in a part of the packet.  
         [0279]     The path retrieving unit  121  retrieves an entry in which the received packet corresponds to the flow condition  12151  from the path table  12153 . Subsequently, the path retrieving unit  121  extracts the transfer path  12152 . When there are hardware identifiers included in the transfer path  12152 , all of the hardware identifiers are extracted.  
         [0280]     The path retrieving unit  121  transmits the transfer path  12152  retrieved to the network interface  111 .  
         [0281]     The network interface  111  receives the transfer path  12152  (S 152 ).  
         [0282]     Subsequently, the network interface  111  counts the number of hardware identifiers included in the transfer path  12152  received. The network interface  111  adds the received transfer path  12152  to the head of the packet received from the external node  301 . The network interface  111  further adds the number of the hardware identifiers counted to the packet as a stack number counter. The stack number counter indicates the number of the hardware identifiers added to the packet.  
         [0283]     Consequently, the packet received from the external node  301  is changed as shown in  FIG. 21 .  
         [0284]     The network interface  111  transmits the packet added with the transfer path  12152  and the stack number counter to the switch  150  (S 153 ).  
         [0285]      FIG. 21  is a diagram for explaining a packet inside the packet communication device  100  in the forth embodiment of this invention.  
         [0286]     The packet inside the packet communication device  100  is obtained by adding an internal header section  502  to a packet  501  received from the external node  301 .  
         [0287]     The internal header section  502  includes a stack number counter  503  and a hardware identifier  504 .  
         [0288]     The hardware identifier  504  is an identifier for uniquely identifying an apparatus to which the packet is transferred. When there are plural apparatuses to which the packet is transferred, the packet includes the hardware identifiers  504  of all the apparatuses to which the packet is transferred.  
         [0289]     The stack number counter  503  indicates the number of hardware identifiers  504  added to the packet.  
         [0290]      FIG. 22  is a flowchart of packet transfer processing of the functional module interface  131  that receives a packet from the functional module  201  according to the fourth embodiment of this invention.  
         [0291]     First, the functional module interface  131  receives a packet from the functional module  201  (S 161 ).  
         [0292]     Subsequently, the functional module interface  131  deletes a hardware identifier added to the head of the packet received (S 162 ).  
         [0293]     Subsequently, the functional module interface  131  reduces a value of a stack number counter added to the received packet (S 163 ).  
         [0294]     The functional module interface  131  transmits the packet to the switch  150  (S 164 ).  
         [0295]      FIG. 23  is a diagram for explaining packet transfer processing of the packet communication device  100  according to the fourth embodiment of this invention.  
         [0296]     First, the network interface  111  receives a packet from the external node  301 . In this explanation, a protocol number of the packet received is “80”.  
         [0297]     Subsequently, the network interface  111  transmits a header section of the received packet to the path retrieving unit  121 .  
         [0298]     The path retrieving unit  121  retrieves an entry in which the received packet corresponds to the path table  1215  of the flow condition  12151  from the path table  1215 .  
         [0299]     Subsequently, the path retrieving unit  121  extracts the transfer path  12152  from the entry retrieved. The path retrieving unit  121  transmits the transfer path  12152  retrieved to the network interface  111 .  
         [0300]     Specifically, since the protocol number of the packet is “80”, the path retrieving unit  121  retrieves an entry E 311  from the path table  1215 . The path retrieving unit  121  extracts the “functional module  201 ”, the “functional module  202 ”, and the “network interface  112 ” of the transfer path  12152  from the entry E 311  and transmits the “functional module  201 ”, the “functional module  202 ”, and the “network interface  112 ” to the network interface  111 .  
         [0301]     The network interface  111  counts the number of hardware identifiers included in the transfer path  12152  received.  
         [0302]     Subsequently, the network interface  111  adds the received transfer path  12152  to the packet. The network interface  111  also adds the number of the hardware identifiers counter to the packet as the stack number counter  503 .  
         [0303]     Specifically, the network interface  111  adds the “functional module  201 ”, the “functional module  202 ”, and the “network interface  112 ” of the transfer path  12152  to the packet as the hardware identifiers  504 .  
         [0304]     In this explanation, the “functional module  201 ” added to the packet is set as a hardware identifier  504 A. Similarly, the “functional module  202 ” is set as a hardware identifier  504 B. The “network interface  112 ” is set as a hardware identifier  504 C.  
         [0305]     Moreover, the network interface  111  adds the number “3” of the hardware identifiers included in the transfer path  12152  to the packet as the stack number counter  503 .  
         [0306]     The network interface  111  transmits the packet to the switch  150 .  
         [0307]     The switch  150  extracts the hardware identifier  504  added to the head from the packet received. The switch  150  transfers the received packet to an apparatus corresponding to the head of the hardware apparatus  504 .  
         [0308]     Specifically, the switch  150  extracts the “functional module  201 ” of the hardware identifier  504 A added to the head from the received packet. The switch  150  transfers the received packet to the functional module interface  131  to which the “functional module  201 ” of the hardware identifier  504 A extracted is connected.  
         [0309]     The functional module interface  131  transfers the packet received from the switch  150  to the functional module  201  to which the functional module interface  131  is connected.  
         [0310]     The functional module  201  receives a packet from the functional module interface  131 . Subsequently, the functional module  201  executes the functional processing program  2014  to thereby apply predetermined processing to the packet received.  
         [0311]     The functional module  201  transmits the packet to the functional module interface  131  to which the functional module  201  is connected.  
         [0312]     The functional module interface  131  deletes the hardware identifier  504  added to the head of the packet from the packet received. Subsequently, the functional module interface  131  reduces a value of the stack number counter  503  added to the packet.  
         [0313]     Specifically, the functional module interface  131  deletes the “functional module  201 ” of the hardware identifier  504 A added to the head from the received packet. Subsequently, the functional module interface  131  changes “3” of the stack number counter  503  added to the packet to “2”.  
         [0314]     The functional module interface  131  transmits the packet processed to the switch  150 .  
         [0315]     The switch  150  transfers the packet in the same manner as the processing at the time when the switch  150  receives a packet from the network interface  111 .  
         [0316]     Specifically, the switch  150  extracts the “functional module  202 ” of the hardware identifier  504 B added to the head from the packet received. The switch  150  transfers the received packet to the functional module interface  132  to which the “functional module  202 ” of the hardware identifier  504 B extracted is connected.  
         [0317]     The functional module interface  132  transfers the packet received from the switch  150  to the functional module  202  to which the functional module interface  132  is connected.  
         [0318]     The functional module  202  receives the packet. Next, the functional module  202  executes the functional processing program  2014  to thereby apply predetermined processing to the packet received.  
         [0319]     The functional module  202  transmits the packet to the functional module interface  132  to which the functional module  202  is connected.  
         [0320]     The functional module interface  132  processes the packet received in the same manner as the processing of the functional module interface  131 .  
         [0321]     Specifically, the functional module interface  132  deletes the “functional module  202 ” of the hardware identifier  504 B added to the head from the received packet. Subsequently, the functional module interface  132  changes “2” of the stack number counter  503  added to the packet to “1,”.  
         [0322]     The functional module interface  131  transmits the packet processed to the switch  150 .  
         [0323]     The switch  150  transfers the packet in the same manner as the processing at the time when the switch  150  receives a packet from the network interface  111 .  
         [0324]     Specifically, the switch  150  extracts the “network interface  112 ” of the hardware identifier  504 C added to the head from the packet received. The switch  150  transfers the received packet to the network interface  112  of the hardware identifier  504 C extracted.  
         [0325]     The network interface  112  receives the packet from the switch  150 . Subsequently, the network interface  112  removes the stack number counter  503  and the hardware identifier  504  from the packet received.  
         [0326]     The network interface  112  transmits the packet, from which the stack number counter  503  and the hardware identifier  504  are removed, to the external node  302  to which the network interface  112  is connected.  
       Fifth Embodiment  
       [0327]     In a fifth embodiment of this invention, a packet inside the packet communication device  100  includes hardware identifiers of apparatuses to which the packet is transferred.  
         [0328]     Since the packet communication device  100  in the fifth embodiment of this invention is identical with that in the fourth embodiment as shown in  FIG. 18 , an explanation of the packet communication device  100  is omitted.  
         [0329]      FIG. 24  is a diagram for explaining a packet inside the packet communication device  100  according to the fifth embodiment of this invention.  
         [0330]     The packet inside the packet communication device  100  is obtained by adding the internal header section  502  to the packet  501  received from the external node  301 .  
         [0331]     The internal header section  502  includes N hardware identifiers  504 . The hardware identifiers  504  are identifiers for uniquely identifying apparatuses to which the packet is transferred. The number of the hardware identifiers  504  (e.g., N) included in the internal header section  502  is set by an administrator or the like in advance.  
         [0332]     When there are plural apparatuses to which the packet is transferred, the packet includes the hardware identifiers  504  of all the apparatuses to which the packet is transferred. When the number of apparatuses to which the packet is transferred is smaller than N, a dummy identifier is added to the packet to increase the number of the hardware identifiers  504  to N.  
         [0333]     The packet cannot include the hardware identifiers  504  larger than N in number. In other words, in the packet communication device  100  in this embodiment, the number of functional modules  201  and  202  to which the packet is transferred is limited to N at the maximum.  
         [0334]      FIG. 25  is a flowchart of packet transfer processing of the functional module interface  131  that receives a packet from the functional module  201  according to the fifth embodiment of this invention.  
         [0335]     First, the functional module interface  131  receives a packet from the functional module  201  (S 171 ).  
         [0336]     Subsequently, the functional module interface  131  deletes a hardware identifier added to the head of the packet received. The functional module interface  131  shifts hardware identifiers added to a position second from the head and the subsequent positions by one position forward, respectively (S 172 ). The functional module interface  131  adds a dummy identifier to the end of the hardware identifiers added to the packet.  
         [0337]     The functional module interface  131  transmits the packet to the switch  150  (S 173 ).  
         [0338]      FIG. 26  is a diagram for explaining packet transfer processing of the packet communication device  100  according to the fifth embodiment of this invention.  
         [0339]     First, the network interface  111  receives a packet from the external node  301 . In this explanation, a protocol number of the packet received is “80”.  
         [0340]     Subsequently, the network interface  111  transmits a header section of the received packet to the path retrieving unit  121 .  
         [0341]     The path retrieving unit  121  retrieves an entry in which the received header section corresponds to the flow condition  12151  of the path table  1215  from the path table  1215  as shown in  FIG. 19 .  
         [0342]     Subsequently, the path retrieving unit  121  extracts the transfer path  12152  from the entry retrieved. The path retrieving unit  121  transmits the transfer path  12152  extracted to the network interface  111 .  
         [0343]     Specifically, since the protocol number of the packet is “80”, the path retrieving unit  121  retrieves an entry E 311  from the path table  1215 . The path retrieving unit  121  extracts the “functional module  201 ”, the “functional module  202 ”, and the “network interface  112 ” of the transfer path  12152  from the entry E 311 . the path retrieving unit  121  transmits the “functional module  201 ”, the “functional module  202 ”, and the “network interface  112 ” to the network interface  111 .  
         [0344]     The network interface  111  counts the number of hardware identifiers included in the transfer path  12152  received. Subsequently, the network interface  111  subtracts the number of hardware identifiers counted from the number of the hardware identifiers  504  added to the packet (e.g., N=4). In this way, the network interface  111  calculates the number of dummy identifiers to be added to the packet.  
         [0345]     Subsequently, the network interface  111  adds the transfer path  12152  received to the packet. The network interface  111  further adds the dummy identifiers of the number calculated to the packet.  
         [0346]     Specifically, the network interface  111  adds the “functional module  201 ”, the “functional module  202 ”, and the “network interface  112 ” of the transfer path  12152  to the packet as the hardware identifiers  504 .  
         [0347]     The “functional module  201 ” added to the packet is set as the hardware identifier  504 A. Similarly, the “functional module  202 ” is set as the hardware identifier  504 B. The “network interface  112 ” is set as the hardware identifier  504 C.  
         [0348]     The network interface  111  further adds one dummy identifier  504 D to the packet.  
         [0349]     The network interface  111  transmits the packet to the switch  150 .  
         [0350]     The switch  150  extracts the hardware identifier  504  added to the head of the packet from the packet received. The switch  150  transfers the received packet to an interface of an apparatus corresponding to the hardware identifier  504  at the head extracted.  
         [0351]     Specifically, the switch  150  extracts the “functional module  201 ” of the hardware identifier  504 A added to the head from the packet received. The switch  150  transfers the received packet to the functional module interface  131  to which the “functional module  201 ” of the hardware identifier  504 A extracted is connected.  
         [0352]     The functional module interface  301  transfers the packet received from the switch  150  to the functional module interface  201  to which the functional module interface  301  is connected.  
         [0353]     The functional module  201  then receives the packet from the functional module interface  131 . Next, the functional module  201  executes the functional processing program  2014  to thereby apply predetermined processing to the packet received.  
         [0354]     The functional module  201  transmits the packet processed to the functional module interface  131  to which the functional module  201  is connected.  
         [0355]     Subsequently, the functional module interface  131  deletes the hardware identifier  504  added to the head of the received packet from the packet received. The functional module interface  131  shifts hardware identifiers  504  added to a position second from the head and the subsequent positions by one position forward, respectively. The functional module interface  131  adds a dummy identifier to the end of the hardware identifiers  504  added to the packet.  
         [0356]     Specifically, the functional module interface  131  deletes the “functional module  201 ” of the hardware identifier  504 A added to the head of the received packet from the packet received. Subsequently, the functional module interface  131  shifts the hardware identifiers  504 B,  504 C, and  504 D added to a position second from the head and the subsequent positions by one position forward, respectively. The functional module interface  131  adds the dummy identifier  505 D to the end of the hardware identifiers  504  added to the packet.  
         [0357]     The functional module interface  131  transmits the packet processed to the switch  150 .  
         [0358]     The switch  150  transfers the packet in the same manner as the processing at the time when the switch  150  receives a packet from the network interface  111 .  
         [0359]     Specifically, the switch  150  extracts the “functional module  202 ” of the hardware identifier  504 B added to the head from the packet received. The switch  150  transfers the received packet to the functional module interface  132  to which the “functional module  202 ” of the hardware identifier  504 B extracted is connected.  
         [0360]     The functional module interface  132  transfers the packet received from the switch  150  to the functional module  202  to which the functional module interface  132  is connected.  
         [0361]     The functional module  202  thereby receives the packet. Next, the functional module  202  executes the functional processing program  2014  to thereby apply predetermined processing to the packet received.  
         [0362]     The functional module  202  transmits the packet to the functional module interface  132  to which the functional module  202  is connected.  
         [0363]     The functional module interface  132  processes the packet received in the same manner as the processing of the functional module interface  131  explained above.  
         [0364]     Specifically, the functional module interface  132  deletes the “functional module  202 ” of the hardware identifier  504 B added to the head from the packet received. Subsequently, the functional module interface  131  shifts the hardware identifiers  504 C,  504 D, and  504 D added to a position second from the head and the subsequent positions by one position forward, respectively. The functional module interface  131  adds the dummy identifier  504 D to the end of the hardware identifiers  504  added to the packet.  
         [0365]     The functional module interface  131  transmits the packet processed to the switch  150 .  
         [0366]     The switch  150  transfers the packet in the same manner as the processing at the time when the switch  150  receives a packet from the network interface  111 .  
         [0367]     Specifically, the switch  150  extracts the “network interface  112 ” of the hardware identifier  504 C added to the head from the packet received. The switch  150  transfers the received packet to the “network interface  112 ” of the hardware identifier  504 C extracted.  
         [0368]     The network interface  112  receives the packet from the switch  150 . Subsequently, the network interface  112  removes the hardware identifier  504  from the packet received.  
         [0369]     The network interface  112  transmits the packet, from which the hardware identifier  504  is removed, to the external node  302  to which the network interface  112  is connected.  
       Sixth Embodiment  
       [0370]     In a sixth embodiment of this invention, the packet communication device  100  replaces flow identifiers to be added to a packet.  
         [0371]     It is possible to apply the sixth embodiment of this invention to the packet communication device  100  in both the first and the second embodiments. In this explanation, the sixth embodiment is applied to the packet communication device  100  in the first embodiment.  
         [0372]     A constitution of the packet communication device  100  in the sixth embodiment is identical with that of the packet communication device in the first embodiment as shown in  FIG. 1  except a constitution of the internal transfer destination table  2013  stored in the functional module  201 . Thus, an explanation of the constitution of the packet communication device  100  is omitted.  
         [0373]     In the following explanation, the flow definition table  1404  shown in  FIG. 13  is created.  
         [0374]      FIG. 27  is a diagram of the internal transfer destination table  2013  of the functional module  201  according to the sixth embodiment of this invention.  
         [0375]     The internal transfer destination table  2013  in the functional module  201  includes components identical with those in the internal transfer destination table in the first embodiment as shown in  FIG. 4 . The identical components are denoted by the identical reference symbols. Explanations of the components are omitted. The internal transfer destination table  2013  further includes a transfer flow identifier  20134 .  
         [0376]     The transfer flow identifier  20134  is a flow identifier added to a packet processed by the functional module  201 . In other words, when the functional module  201  receives a packet, the functional module  201  changes a flow identifier added to the packet to the flow identifier  20134 .  
         [0377]      FIG. 28  is a diagram of the internal transfer destination table  2013  of the functional module  202  according to the sixth embodiment of this invention.  
         [0378]     Since components of the internal transfer destination table  2013  of the functional module  202  are identical with those of the internal transfer destination table as shown in  FIG. 27  of the functional module  201 , an explanation of the internal transfer destination table  2013  is omitted.  
         [0379]      FIG. 29  is a flowchart of processing for creating the internal transfer destination table  2013  of the module control management unit  140  according to the sixth embodiment of this invention.  
         [0380]     The processing for creating the internal transfer destination table  2013  is performed in step S 104  of the path processing as shown in  FIG. 6  of the module control management unit  140 .  
         [0381]     First, the module control management unit  140  deletes the internal transfer destination tables  2013  stored in all the functional modules  201  and  202  (S 201 ).  
         [0382]     Subsequently, the module control management unit  140  specifies a maximum value of the flow identifier  14042  of the flow definition table  1404 . The module control management unit  140  sets a value obtained by adding 1 to the maximum value of the flow identifier  14042  of the flow definition table  1404  as m (S 202 ).  
         [0383]     For example, in the case of the flow definition table shown in  FIG. 13 , the module control management unit  140  sets “4” obtained by adding 1 to “3” of a maximum value  14042  of the flow identifier  1404  as m.  
         [0384]     Subsequently, the module control management unit  140  selects entries Y of the flow definition table  1404  one by one from the head in order (S 203 ). The module control management unit  140  applies the following processing to the entry Y selected.  
         [0385]     First, the module control management unit  140  sets a value of the flow identifier  14042  of the selected entry Y to p (S 204 ).  
         [0386]     Subsequently, the module control management unit  140  selects hardware identifier stored in the transfer path  14043  of the selected entry Y one by one from the head in order (S 205 ). One hardware identifier selected from the entry Y is assumed to be X. The module control management unit  140  applies the following processing to the selected hardware identifier X.  
         [0387]     The module control management unit  140  extracts a hardware identifier stored right below the selected hardware identifier X from the transfer path  14043  of the selected entry Y (S 206 ).  
         [0388]     Subsequently, the module control management unit  140  adds a new entry to the internal transfer destination tables  2013  of the functional modules  201  and  202  with the hardware identifier X.  
         [0389]     The module control management unit  140  stores p in the flow identifier  20131  of the new entry. The module control management unit  140  stores m in the transfer flow identifier  20134  of the new entry. The module control management unit  140  stores the hardware identifier extracted in step S 206  in the next transfer destination of the new entry (S 207 ).  
         [0390]     The module control management unit  140  sets p as a value of m and adds 1 to m (S 208 ).  
         [0391]     The module control management unit  140  judges whether all hardware identifiers stored in the transfer path  14043  of the selected entry Y are selected (S 209 ).  
         [0392]     When all the hardware identifiers are not selected, the module control management unit  140  judges that creation of the internal transfer destination table  2013  concerning the entry Y is not completed. Thus, the module control management unit  140  returns to step S 205  and repeats the processing for creating the internal transfer destination table  2013 .  
         [0393]     On the other hand, when all the hardware identifiers are selected, the module control management unit  140  judges that creation of the internal transfer destination table  2013  concerning the entry Y is completed. Thus, the module control management unit  140  judges whether all the entries of the flow definition table  1404  are selected (S 210 ).  
         [0394]     When all the entries are not selected, the module control management unit  140  judges that entries for which the internal transfer destination table  2013  is not created still remain. Thus, the module control management unit  140  returns to step S 203  and repeats the processing for creating the internal transfer destination table  2013 .  
         [0395]     On the other hand, when all the entries are selected, the module control management unit  140  judges that creation of the internal transfer destination table  2013  concerning the flow definition table  1404  is completed and ends the processing.  
         [0396]     As described above, the module control management unit  140  creates the internal transfer destination table  2013 .  
         [0397]     For example, the module control management unit  140  creates the internal transfer destination table  2013  of the functional module  201  shown in  FIG. 27  based on the flow definition table  1404  shown in  FIG. 13 . Specifically, the module control management unit  140  creates entries E 431  and E 432  of the internal transfer destination table  2013  based on the entry E 211  of the flow definition table  1404 . The module control management unit  140  creates an entry E 433  of the internal transfer destination table  2013  based on the entry E 212  of the flow definition table  1404 .  
         [0398]     Similarly, the module control management unit  140  creates the internal transfer destination table  2013  of the functional module  202  shown in  FIG. 28  based on the flow definition table  1404  shown in  FIG. 13 . Specifically, the module control management unit  140  creates an entry E 441  of the internal transfer destination table  2013  based on the entry E 211  of the flow definition table  1404 . The module control management unit  140  creates an entry E 442  of the internal transfer destination table  2013  based on the entry E 213  of the flow definition table  1404 .  
         [0399]      FIG. 30  is a flowchart of packet processing of the functional module  201  according to the sixth embodiment of this invention.  
         [0400]     First, the functional module  201  receives a packet from the functional module interface  131  (S 251 ). Subsequently, the functional module  201  executes the functional processing program  2014  to thereby apply predetermined processing to the packet received (S 252 ).  
         [0401]     Subsequently, the functional module  201  extracts a flow identifier added to the received packet. The functional module  201  selects, from the internal transfer destination table  2013 , an entry in which the flow identifier extracted and the flow identifier  20131  of the internal transfer destination table  2013  coincide with each other.  
         [0402]     The functional module  201  extracts the transfer flow identifier  20134  and the next transfer destination  20132  from the entry selected (S 253 ).  
         [0403]     The functional module  201  replaces the next transfer destination added to the received packet with the next transfer destination  20132  extracted. The functional module  201  replaces the flow identifier added to the received packet with the transfer flow identifier  20134 .  
         [0404]     The functional module  201  transmits the packet to the switch  150  via the functional module interface  131  (S 254 ).  
         [0405]      FIG. 31  is a diagram for explaining packet transfer processing of the packet communication device  100  according to the sixth embodiment of this invention.  
         [0406]     First, the network interface  111  receives a packet from the external node  301 . In this explanation, a protocol number of the packet received is “80”.  
         [0407]     Subsequently, the network interface  111  transmits a header section of the received packet to the path retrieving unit  121 . The path retrieving unit  121  retrieves an entry in which the header section received corresponds to the flow condition  12131  of the path table  1213  as shown in  FIG. 3  from the path table  1213 .  
         [0408]     Subsequently, the path retrieving unit  121  extracts the flow identifier  12132  and the next transfer destination  12133  from the entry retrieved. The path retrieving unit  121  transmits the flow identifier  12132  and the next transfer destination  12133  extracted to the network interface  111 .  
         [0409]     Specifically, since the protocol number of the packet is “80”, the path retrieving unit  121  retrieves the entry E 121  from the path table  1213 . The path retrieving unit  121  extracts “1” of the flow identifier  12132  and the “functional module  201 ” of the next transfer destination  12133  from the entry E 121  and transmits “1” and the “functional module  201 ” to the network interface  111 .  
         [0410]     The network interface  111  adds the flow identifier  12132  and the next transfer destination  12133  received to the packet. The network interface  111  transmits the packet to the switch  150 .  
         [0411]     The switch  150  adds the next transfer destination  12133  from the packet received. The switch  150  transfers the received packet to an interface of an apparatus corresponding to the next transfer destination  12133  extracted.  
         [0412]     Specifically, the switch  150  extracts the “functional module  201 ” of the next transfer destination  12133  from the packet received. The switch  150  transfers the received packet to the functional module interface  131  to which the “functional module  201 ” of the next transfer destination  12133  extracted.  
         [0413]     The functional module interface  131  transfers the packet received from the switch  150  to the functional module  201  to which the functional module interface  131  is connected.  
         [0414]     The functional module  201  receives a packet from the functional module interface  131 . Subsequently, the functional module  201  executes the functional processing program  2014  to thereby apply predetermined processing to the packet received.  
         [0415]     Subsequently, the functional module  201  extracts the flow identifier  12132  added to the received packet. The functional module  201  retrieves, from the internal transfer destination table  2013  of the functional module  201 , an entry in which the flow identifier  12132  extracted and the flow identifier  20131  of the internal transfer destination table  2013  coincide with each other.  
         [0416]     Subsequently, the functional module  201  extracts the transfer flow identifier  20134  and the next transfer destination  20132  from the retrieved entry.  
         [0417]     The functional module  201  replaces the next transfer destination  12133  added to the received packet with the next transfer destination  20132  extracted. Further, the functional module  201  replaces the flow identifier  12132  added to the received packet with the transfer flow identifier  20134  extracted.  
         [0418]     Specifically, the functional module  201  extracts “1” of the flow identifier  12132  added to the received packet.  
         [0419]     Subsequently, the functional module  201  retrieves, from the internal transfer destination table  2013  of the functional module  201 , the entry E 431  in which “1” of the flow identifier  12132  extracted and the flow identifier  20131  of the internal transfer destination table  2013  coincide with each other.  
         [0420]     The functional module  201  extracts “4” of the transfer flow identifier  20134  and the “functional module  202 ” of the next transfer destination  20132  from the entry E 431  retrieved.  
         [0421]     The functional module  201  replaces the “functional module  201 ” of the next transfer destination  12133  added to the received packet with the “functional module  202 ” of the next transfer destination  20132  extracted. The functional module  201  replaces “1” of the flow identifier added to the received packet with “4” of the transfer flow identifier  20134  extracted.  
         [0422]     The functional module  201  transmits the packet to the functional module interface  131  to which the functional module  201  is connected.  
         [0423]     The functional module interface  131  transfers the packet received to the switch  150 .  
         [0424]     The switch  150  transfers the packet in the same manner as the processing performed when the switch  150  receives the packet from the network interface  111 .  
         [0425]     Specifically, the switch  150  extracts the “functional module  202 ” of the next transfer destination  20132  from the packet received. The switch  150  transfers the received packet to the functional module interface  132  to which the “functional module  202 ” of the next transfer destination  20132  extracted is connected.  
         [0426]     The functional module interface  132  transfers the packet received from the switch  150  to the functional module  202  to which the functional module interface  132  is connected.  
         [0427]     The functional module  202  processes the packet in the same manner as the processing performed by the functional module  201 .  
         [0428]     Specifically, the functional module  202  executes the functional processing program  2014  to thereby apply predetermined processing to the packet received.  
         [0429]     Subsequently, the functional module  202  extracts “4” of the flow identifier added to the received packet.  
         [0430]     Subsequently, the functional module  202  retrieves, from the internal transfer destination table  2013  of the functional module  202 , the entry E 441  in which “4” of the flow identifier extracted and the flow identifier  20131  of the internal transfer destination table  2013  coincide with each other.  
         [0431]     The functional module  202  extracts “5” of the transfer flow identifier  20134  and the “functional module  201 ” of the next transfer destination  20132  from the entry E 441  retrieved.  
         [0432]     The functional module  202  replaces the “functional module  202 ” of the next transfer destination added to the received packet with the “functional module  201 ′ of the next transfer destination  20132  extracted. The functional module  202  replaces “4” of the flow identifier added to the received packet with “5” of the transfer flow identifier  20134  extracted.  
         [0433]     The functional module  202  transmits the packet to the functional module interface  132  to which the functional module  202  is connected.  
         [0434]     The functional module interface  132  transfers the packet received to the switch  150 .  
         [0435]     The switch  150  transfers the packet in the same manner as the processing performed when the switch  150  receives the packet from the network interface  111 .  
         [0436]     Specifically, the switch  150  extracts the “functional module  201 ” of the next transfer destination  20132  from the packet received. The switch  150  transfers the received packet to the functional module interface  131  to which the “functional module  201 ” of the next transfer destination  20132  extracted is connected.  
         [0437]     The functional module interface  131  transfers the packet received from the switch  150  to the functional module  201  to which the functional module interface  131  is connected.  
         [0438]     The functional module  201  processes the packet in the same manner as above.  
         [0439]     Specifically, the functional module  201  executes the functional processing program  2014  to thereby apply predetermined processing to the packet received.  
         [0440]     Subsequently, the functional module  201  extracts “5” of the flow identifier added to the received packet.  
         [0441]     Subsequently, the functional module  201  retrieves, from the internal transfer destination table  2013  of the functional module  201 , the entry E 432  in which “5” of the flow identifier extracted and the flow identifier  20131  of the internal transfer destination table  2013  coincide with each other.  
         [0442]     The functional module  201  extracts “6” of the transfer flow identifier  20134  and the “network interface  112 ” of the next transfer destination  20132  from the entry E 432  retrieved.  
         [0443]     The functional module  201  replaces the “functional module  201 ” of the next transfer destination  20132  added to the received packet with the “network interface  112 ” of the next transfer destination  20132  extracted. Then, the functional module  201  replaces “5” of the flow identifier added to the received packet with “6” of the transfer flow identifier  20134  extracted.  
         [0444]     The functional module  201  transmits the packet to the functional module interface  131  to which the functional module  201  is connected.  
         [0445]     The functional module interface  131  transfers the packet received to the switch  150 .  
         [0446]     The switch  150  transfers the packet in the same manner as the processing performed when the switch  150  receives the packet from the network interface  111 .  
         [0447]     Specifically, the switch  150  extracts the “network interface  112 ” of the next transfer destination  20132  from the packet received. The switch  150  transfers the received packet to the network interface  112  of the next transfer destination  20132  extracted.  
         [0448]     The network interface  112  receives the packet from the switch  150 . Subsequently, the network interface  112  removes the transfer flow identifier  20134  and the next transfer destination  20132  from the packet received.  
         [0449]     The network interface  112  transmits the packet, from which the transfer flow identifier  20134  and the next transfer destination  20132  are removed, to the external node  302  to which the network interface  112  is connected.  
       Seventh Embodiment  
       [0450]     In a seventh embodiment of this invention, the functional modules  201  and  202  in the third embodiment include the plural functional processing programs  2014 .  
         [0451]      FIG. 32  is a block diagram of a packet communication device  100  in a seventh embodiment of this invention.  
         [0452]     The packet communication device  100  in the seventh embodiment has a constitution identical with that of the packet communication device as shown in  FIG. 1  in the third embodiment except that the functional modules  201  and  202  include plural functional processing programs. Components identical with those in the packet communication device in the third embodiment are denoted by the identical reference symbols. Explanations of the components are omitted.  
         [0453]     The functional module  201  includes a functional processing program A  2014 A and a functional processing program B  2014 B. Each of the functional modules  201  and  202  may include two or more functional processing programs  2014 .  
         [0454]     In an example explained below, the flow definition table  1404  shown in  FIG. 33  is created.  
         [0455]      FIG. 33  is a diagram of the flow definition table  1404  of the module control management unit  140  according to the seventh embodiment of this invention.  
         [0456]     The flow definition table  1404  in the seventh embodiment includes components identical with those in the flow definition table as shown in  FIG. 13  in the third embodiment. The identical components are denoted by the identical reference symbols. Explanations of the components are omitted.  
         [0457]     In the transfer path  14043  of the flow definition table  1404  in the seventh embodiment, in addition to a path through which a packet is transferred, a processing content for the packet is stored. The processing content is, for example, an identifier of the functional processing program  2014  for processing the packet.  
         [0458]     For example, a packet with a protocol number “80” is transferred to the functional module  201  and processed by the functional processing program A  2014 A of the functional module  201 . Subsequently, the packet is transferred to the functional module  202  and processed by the functional processing program A  2014 A of the functional module  202 . The packet is transferred to the functional module  201  and processed by the functional processing program B  2014 B of the functional module  201 . The packet is transferred to the network interface  112  (an entry E 511 ).  
         [0459]     A packet with a transmission source IP address “192.168.10.0/24” is transferred to the functional module  201  and processed by the functional processing program A  2014 A of the functional module  201 . The packet is transferred to the network interface  112  (an entry E 512 ).  
         [0460]     Further, a packet with a transmission source IP address 192.168.20.0/24” is transferred to the functional module  202  and processed by the functional processing program B  2014 B of the functional module  202 . The packet is transferred to the network interface  112  (an entry E 513 ).  
         [0461]      FIG. 34  is a diagram of the internal transfer destination table  2013  of the functional module  201  according to the seventh embodiment of this invention.  
         [0462]     The internal transfer destination table  2013  of the functional module  201  includes components identical to those of the internal transfer destination table as shown in  FIG. 14  in the third embodiment. The identical components are denoted by the identical reference symbols.  
         [0000]     Explanations of the Components are Omitted  
         [0463]     The internal transfer destination table  2013  in the seventh embodiment further includes a processing content identifier  20135 .  
         [0464]     The processing content identifier  20135  is an identifier for uniquely identifying the functional program  2014  for processing the packet.  
         [0465]     Subsequently, a process in which the module control management unit  140  creates the internal transfer destination tables  2013  of the functional modules  201  and  202  having hardware identifiers X will be explained.  
         [0466]     First, the module control management unit  140  retrieves the hardware identifiers X from the transfer path  14043  of the flow definition table  1404 . Then, the module control management unit  140  creates one entry of the internal transfer destination table  2013  based on one of the hardware identifiers X retrieved.  
         [0467]     The module control management unit  140  extracts, from the flow definition table  1404 , the flow identifier  14042  of an entry in which the hardware identifier X retrieved is stored. Subsequently, the module control management unit  140  stores the flow identifier  14042  extracted in the flow identifier  20131  of the internal transfer destination table  2013 .  
         [0468]     The module control management unit  140  extracts a hardware identifier stored right below the retrieved hardware identifier X from the transfer path  14043  of the flow definition table  1404 . The module control management unit  140  stores the hardware identifier extracted in the next transfer destination  20132  of the internal transfer destination table  2013 .  
         [0469]     The module control management unit  140  selects, from the flow definition table  1404 , an entry in which the retrieved hardware identifier X is stored. The module control management unit  140  counts, in the entry selected, the number of hardware identifiers stored on the retrieved hardware identifier X. The module control management unit  140  stores the value counted in the counter value  20133  of the internal transfer destination table  2013 .  
         [0470]     The module control management unit  140  extracts a processing content stored in association with the retrieved hardware identifier X from the transfer path  14043  of the flow definition table  1404 . The module control management unit  140  stores the processing content extracted in the processing content identifier  20135  of the internal transfer destination table  2013 .  
         [0471]     The module control management unit  140  creates the internal transfer destination table  2013  of the functional module  201  shown in  FIG. 34  based on the flow definition table  1404  shown in  FIG. 33 .  
         [0472]     Specifically, the module control management unit  140  creates entries E 531  and E 532  of the internal transfer destination table  2013  based on the entry E 511  of the flow definition table  1404 . The module control management unit  140  creates an entry E 533  of the internal transfer destination table  2013  based on the entry E 512  of the flow definition table  1404 .  
         [0473]      FIG. 35  is a diagram of the internal transfer destination table  2013  of the functional module  202  according to the seventh embodiment of this invention.  
         [0474]     Since components of the internal transfer destination table  2013  of the functional module  202  are identical with those of the internal transfer destination table as shown in  FIG. 34  of the functional module  201 , an explanation of the internal transfer destination table  2013  is omitted.  
         [0475]     The module control management unit  140  creates the internal transfer destination table  2013  of the functional module  202  shown in  FIG. 35  based on the flow definition table  1404  shown in  FIG. 13 .  
         [0476]     Specifically, the module control management unit  140  creates an entry E 541  of the internal transfer destination table  2013  based on the entry E 511  of the flow definition table  1404 . The module control management unit  140  creates an entry E 542  of the internal transfer destination table  2013  based on the entry E 513  of the flow definition table  1404 .  
         [0477]      FIG. 36  is a flowchart of packet processing of the functional module  201  according to the seventh embodiment of this invention.  
         [0478]     First, the functional module  201  receives a packet from the functional module interface  131  (S 241 ).  
         [0479]     Subsequently, the functional module  201  extracts a flow identifier added to the packet received and a value of a counter. The functional module  201  selects, from the internal transfer destination table  2013 , an entry in which the flow identifier extracted and the flow identifier  20131  of the internal transfer destination table  2013  coincide with each other and the counter value extracted and the counter value  20133  of the internal transfer destination table  2013  coincide with each other.  
         [0480]     The functional module  201  extracts the processing content identifier  20135  from the entry selected. The functional module  201  executes the functional processing program  2014  corresponding to the processing content identifier  20135  extracted to thereby apply predetermined processing to the received packet (S 242 ).  
         [0481]     The functional module  201  extracts the next transfer destination  20132  from the selected entry (S 243 ).  
         [0482]     The functional module  201  increases the value of the counter added to the received packet (S 244 ).  
         [0483]     The functional module  201  replaces a next transfer destination added to the received packet with the next transfer destination  20132  extracted. The functional module  201  transmits the packet to the switch  150  via the functional module interface  131  (S 245 ).  
         [0484]     The other devices constituting the packet communication device  100  performs processing identical with that in the third embodiment. Thus, explanations of the devices are omitted.  
       Eighth Embodiment  
       [0485]     In an eighth embodiment of this invention, each of the functional modules  201  and  202  in the fourth embodiment include plural functional processing programs  2014 .  
         [0486]      FIG. 37  is a block diagram of the packet communication device  100  in an eighth embodiment of this invention.  
         [0487]     The packet communication device  100  in the eighth embodiment has a constitution identical with that in the fourth embodiment as shown in  FIG. 18  except that each of the functional modules  201  and  202  include plural functional processing programs. Components identical with those in the packet communication device in the fourth embodiment are denoted by the identical reference symbols. Explanations of the components are omitted.  
         [0488]     The functional module  201  includes the functional processing program A  2014 A and the functional processing program B  2014 B. Each of the functional modules  201  and  202  may include two or more functional processing programs  2014 .  
         [0489]      FIG. 38  is a diagram of the path table  1215  of the path retrieving units  121  and  122  according to the eighth embodiment of this invention.  
         [0490]     The path table  1215  in the eighth embodiment includes components identical with those in the path table as shown in  FIG. 19  in the fourth embodiment. The identical components are denoted by the identical reference symbols. Explanations of the components are omitted.  
         [0491]     In a transfer path  12152  of the path table  1215  in the eighth embodiment, in addition to a path through which a packet is transferred, a processing content for the packet is stored. The processing content is, for example, an identifier of the functional processing program  2014  for processing the packet.  
         [0492]      FIG. 39  is a flowchart of packet transfer processing of the network interface  111  according to the eighth embodiment of this invention.  
         [0493]     First, the network interface  111  receives a packet from the external node  301  (S 271 ).  
         [0494]     Subsequently, the network interface  111  transmits the entire packet received or a part of the packet to the path retrieving unit  121 . A section for judging a path of the packet (e.g., header section) has to be included in the part of the packet.  
         [0495]     The path retrieving unit  121  retrieves an entry in which the received packet corresponds to the flow condition  12151  from the path table  1215 . Subsequently, the path retrieving unit  121  extracts the transfer path  12152  from the entry retrieved.  
         [0496]     A hardware identifier and a processing content corresponding to the hardware identifier are included in the transfer path  12152 . The processing content corresponding to the hardware identifier is, for example, an identifier for uniquely identifying the functional processing program  2014  executed by the functional modules  201  and  202  with the hardware identifier.  
         [0497]     The path retrieving unit  121  transmits the transfer path  12152  retrieved to the network interface  111 .  
         [0498]     The network interface  111  receives transfer path  12152  (S 272 ).  
         [0499]     Subsequently, the network interface  111  counts the number of hardware identifiers included in the transfer path  12152  received. The network interface  111  adds the received transfer path  12152  to the head of the packet received from the external node  301 . The network interface  111  further adds the number of the hardware identifiers counted to the packet as a stack number counter. The stack number counter indicates the number of the hardware identifiers added to the packet.  
         [0500]     Consequently, the packet received from the external node  301  is changed as shown in  FIG. 40 .  
         [0501]     The network interface  111  transmits the packet to which the transfer path  12152  and the stack number counter are added to the switch  150  (S 273 ).  
         [0502]     The other devices constituting the packet communication device  100  perform processing identical with that in the fourth embodiment. Thus, explanations of the devices are omitted.  
         [0503]      FIG. 40  is a diagram for explaining a packet inside the packet communication device  100  according to the eighth embodiment of this invention.  
         [0504]     The packet inside the packet communication device  100  is obtained by adding the internal header section  502  to the packet  501  received from the external node  301 .  
         [0505]     The internal header section  502  includes the stack number counter  503 , the hardware identifier  504 , and a processing content  505 .  
         [0506]     The hardware identifier  504  is an identifier for uniquely identifying an apparatus to which the packet is transferred. When there are plural apparatuses to which the packet is transferred, the packet includes the hardware identifiers  504  of all the apparatuses to which the packet is transferred.  
         [0507]     The processing content  505  is associated with the hardware identifier  504 . An identifier for uniquely identifying the functional processing program  2014  executed by an apparatus with the associated hardware identifier  504  is stored in the processing content  505 .  
         [0508]     The stack number counter  503  indicates the number of hardware identifiers  504  added to the packet.  
         [0509]     It is also possible to apply this embodiment to the fifth embodiment.  
         [0510]     In this case, a stack number counter is not added to a packet in the step S 273  of the packet transfer processing as shown in  FIG. 39  of the network interface  111 .  
         [0511]     The network interface  111  changes the received packet to an internal packet shown in  FIG. 41 .  
         [0512]      FIG. 41  is a diagram for explaining a packet inside the packet communication device  100  according to the eighth embodiment of this invention.  
         [0513]     The packet inside the packet communication device  100  is obtained by adding the internal header section  502  to the packet  501  received from the external node  301 .  
         [0514]     The internal header section  502  includes N hardware identifiers  504  and N processing contents  505 . Constitutions of the hardware identifier  504  and the processing content  505  are identical with those in the packet as shown in  FIG. 40 . Thus, explanations of the hardware identifier  504  and the processing content  505  are omitted.  
         [0515]     When there are plural apparatuses to which the packet is transferred, the packet includes the hardware identifiers  504  and the processing contents  505  of all the apparatuses. When the number of the apparatuses to which the packet is transferred is smaller than N, a dummy identifier is added to the packet to increase the number of the hardware identifier  504  to N. Similarly, dummy processing contents equivalent in number to dummy identifiers are added to the packet to increase the number of processing contents to N.  
         [0516]     The packet cannot include the hardware identifiers  504  larger than N in number. In other words, in the packet transfer apparatus  100 , the number of functional modules  201  and  202  to which the packet is transferred is limited to N at the maximum.  
         [0517]     It is possible to apply this invention to a communication apparatus that transfers a packet on a network.  
         [0518]     While the present invention has been described in detail and pictorially in the accompanying drawings, the present invention is not limited to such detail but covers various obvious modifications and equivalent arrangements, which fall within the purview of the appended claims.