Patent Publication Number: US-7586929-B2

Title: Method and system for content-oriented routing in a storage-embedded network

Description:
BACKGROUND OF THE INVENTION 
   (1) Field of the Invention 
   The present invention relates to routing method and a relay node in a network. More particularly, the invention relates to a data transmission control and a relay node for routing a data packet by using information for data identification in an application layer of the data packet in order to efficiently transfer large data which is, for example, multimedia data such as video image and sound, and intra-enterprise technical data. In particular, the invention relates to data packet transmission control, packet routing with store-and-forward method, and a relay node using a storage address in a network constructed by storage units as components. 
   (2) Description of Related Art 
   In a conventional network system, routing technique according to a network layer protocol of the International Organization for Standardization/Open Systems Interconnection (ISO/OSI) reference model is used. Major protocols are the routing information protocol (RIP) of determining the most optimized route based on the number of routers existing on a route, the open shortest path first (OSPF) of determining a preferred route from a link state, and a border gateway protocol (BGP) of determining a preferred communication route between autonomous systems on the basis of properties of a link. According to the protocols, routers notify each other of routing information held in themselves, thereby propagating a network topology. By a calculating method determined for each protocol, on the basis of information such as address information defined in a network layer and the type of a communication line, a correspondence table (routing table) for indicating the relation between a destination of data and a destination interface is generated. 
   Each of data relay nodes (routers) forming a network generates, as a routing table, a table indicative of correspondence between a destination address and an output port on the basis of routing information learned from the other routers and connection information of itself and holds the table in a memory. Between the routers, routing information is periodically exchanged according to a routing protocol. The routing table is updated each time a link failure or a change in the network topology occurs. 
   On the routing table, one output port determined as the most appropriated output port is registered as an output port corresponding to one destination address. A data packet whose destination is determined by each router on the basis of the routing table is sent out to a relay node or terminal having the destination network address. An existing IP network is characterized in that only one route from a router to a destination is determined on the basis of a network address. In the case where traffic is heavy in a certain area, since a section of high load and a section which is not usually used are formed in the network, the network bandwidth cannot be effectively used as a whole. 
   A technique of performing high-speed secure transmission by adding a function to an IP network is being developed. Multi protocol label switching (MPLS) is a technique to which attention is paid most at present and being standardized in IETF and the like. The MPLS is a technique of realizing traffic control by performing a flow control using a label in transfer between routers. The MPLS is a means for establishing a path of connection type in a connectionless network and is highly effective from the viewpoint of security. In the MPLS, a route is set with reference to a routing table in the network layer, and a path is uniquely assured depending on the bandwidth usage by traffic engineering. 
   A protocol such as RSVP-TE or CR-LDP is standardized in IETF. A technique of setting a route capable of transferring data more efficiently depending on network usage on a reserved route when a route establishing request is sent from an MPLS network edge router on the user side to an edge router on the data transmission side is being studied. However, since a route and a label are determined in accordance with network conditions at the time point of the route setting, this technique does not adapt to a dynamic route control during data communication. 
   In a method called policy routing of setting an efficient route by centralizing the management of network usage, in response to information of congestion, a failure, or the like in a network bandwidth, each router can dynamically change the route on the basis of predetermined operation criteria or policy. In the routing selection, however, the number of available routes is limited. A network technique for distributing large data is as follows. 
   As data becomes larger and an enterprise information system expands, a system called a content distribution network (CDN) is in increasing demand. An object of the technique is to increase availability of data by improving a response to a request. Concretely, main subjects are to limit the number of accesses to each server, to improve performance, and to reduce the delay in the data transfer by adopting distributed data arrangement. 
   As a mainly used means for efficiently distributing data to an end user, a cache is disposed on an access network side. Particularly, in content providing service such as Web service, data frequently used by a number of users is stored in a cache server located at a position close to the users than an origin server, and data is distributed to the users from the cache server in place of the origin server. This configuration can reduce a traffic amount in a core network, make network resources effectively used, shorten the response time to the user, and improve the availability of service. 
   As the information service becomes diverse, it becomes indispensable to identify user information traffic and information service traffic. At present, a switch adapted to a high-order layer, for example, layer 7 switch for switching traffic according to the information in an application layer is widely used. This type of switches are employed to reduce the load of servers. For example, in a system including a plurality of servers corresponding to different services, by distributing traffic to the servers according to the contents of a user request or the state of load on the servers, individual performance of the servers can be improved. 
   In a network in which a plurality of servers having the same content are located in places apart from each other, means for selecting an optimum server on the basis of the network address of the user to which data is to be distributed, loads on the servers and response time, and sending a request to the selected server is also employed. The server load distributing technique is a control technique of a local traffic in a site, and it is different from a routing control based on a network address. At the present stage, attention is paid to the techniques of reducing traffic and a technique related to a network control at the time of data transfer does not exist. 
   Due to broadening of a bandwidth of access lines, dramatic increase in memory capacity of storages and, further, spread of mobile communication terminals in recent years, traffic of multimedia data such as a moving image and sound via a network increases and relocation of business data frequently occurs. When large data is used via a network as a network bandwidth is being widened, it is predicted that burst data traffic frequently occurs in places in a network. Traffic tends to increase in the form that streaming data or the like continuously flows in a network bandwidth for predetermined time. 
   According to a conventional routing in the network layer, since a route on a network is unconditionally determined in a routing table, there is a tendency that traffic is concentrated on a specific route and link source usage is unbalanced. Particularly, in the case where dense traffic occurs in a section on the network, there is the possibility that congestion or a link failure caused by the congestion occurs due to constraints of performances of a route search processing and packet switching processing. 
   Each router has to distribute large data with short delay and at low loss rate. However, for the above-described reasons, it is difficult for a conventional network system to sufficiently deal with an increase in traffic accompanying distribution of large data. 
   In a CDN as a technique adapted to distribution of large amount of content, response to a request is improved by adopting a distributed arrangement of servers and caches. However, since the network layer routing protocol is used at the time of data distribution, a problem similar to that of the routing control remains unsolved. To be specific, when dense traffic is concentrated, transfer efficiency deteriorates. 
   On the other hand, IP-VPN service of combining routing control by traffic engineering with the CDN is in increasing demand and an interest in bandwidth control is growing. In the traffic engineering, however, a function addressing a change in bandwidth usage after setting of a route is not prepared, so that a problem of concentration of processes on a specific line remains unsolved when traffic is dense. This is one of critical problems to be solved in future in a network in which streaming data and real-time communication become the main stream instead of download data. A network node in future needs the function capable of efficiently using a bandwidth in order to distribute large data. 
   SUMMARY OF THE INVENTION 
   In view of the above points, an object of the invention is to provide a method and system for content-oriented routing in a storage-embedded network realizing reduced packet loss and reduced delay in transmission at the time of distributing a large amount of data, and improved distribution efficiency of an entire network by reducing congestion in the network, and capable of easily adding or deleting a router to and from an existing network and easily improving performance of a network. 
   Another object of the invention is to provide flexible routing control means adapted to QoS control according to an attribute of content and use state of a network in cooperation with a conventional network technique, and to improve data distributing efficiency. 
   A content relay node having a function of routing a data packet in an application layer according to the invention comprises: a receiving unit having a plurality of input ports; a transmitting unit having a plurality of output ports; a data processing unit; a switch unit for connecting the receiving unit, the transmitting unit, and the data processing unit; a plurality of storage shaving a data storing function; and a routing control unit for controlling the receiving unit, the transmitting unit, the switch unit, and the storages, wherein 
   each of the data packets includes a storage address for identifying the plurality of storages on a network and a data attribute, 
   the receiving unit has means for receiving a data packet, means for extracting the storage address and the data attribute from the data packet, means for transferring the data attribute to the routing control unit, and means for sending the data packet to the switch, the routing control unit has means for selecting, as a destination of a received data packet, one of the transmitting unit and the data processing unit on the basis of routing information including the storage address and instructing the switch unit to make switching, the storage has means for storing the received data, the switch unit has means for switching a route on the basis of the control signal, the data processing unit has means for storing or transmitting data on the basis of the data attribute, and the transmitting unit has means for processing the header of a data packet in accordance with a control signal from the control unit and means for transferring the data packet to a neighboring relay node. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
       FIG. 1  is a block diagram showing a basic configuration of a content relay node to which the invention is applied. 
       FIG. 2  is a flowchart of data transferring process, which relates to content-oriented routing according to the invention. 
       FIG. 3  is a block diagram showing the configuration of a communication protocol related to the content-oriented routing according to the invention. 
       FIG. 4  is a diagram showing a basic configuration of a header to be attached to each of data blocks divided at the time of transfer, which relates to the content-oriented routing according to the invention. 
       FIG. 5  is a flowchart of process of data segmentation and data packet creation in the content-oriented routing according to the invention. 
       FIG. 6  is a diagram showing basic components of a routing table related to routing control in the content-oriented routing according to the invention. 
       FIG. 7  is a flowchart showing the flow of general process of reproduction and storage of received data which relates to the content-oriented routing according to the invention. 
       FIG. 8  is a diagram showing basic configuration of a data header used for received data storing process in accordance with the invention. 
       FIG. 9  is a flowchart of process of reproducing data from a data packet in accordance with the invention. 
       FIG. 10  is a flowchart of process of checking perfection of data and process of sending a re-transmission request in the content-oriented routing of the invention. 
       FIG. 11  is a flowchart showing the flow of process of transmitting data stored in a content relay node in accordance with the invention. 
       FIG. 12  is a diagram showing the configuration of a data header of a re-transmission request packet to be sent to a content relay node as a packet source, in response to a data re-transmission request in the content-oriented routing according to the invention. 
       FIG. 13  shows an example of definition of a storage address in the invention. 
       FIG. 14  is a conceptual diagram of a network configuration using a storage address in the invention. 
       FIG. 15  is a flowchart showing received data processing and routing performed in a data processing unit which relates to the content-oriented routing according to the invention. 
       FIG. 16  is a flowchart of processes of routing and storing data into a storage which relates to the content-oriented routing according to the invention. 
       FIG. 17  is a flowchart showing a process of storing received data by a data processing unit in cooperation with a storage in the content-oriented routing according to the invention. 
       FIG. 18  is a flowchart showing a process of routing control wherein priority is given to each content in accordance with a feature of the invention. 
       FIG. 19  is a diagram showing basic elements of a data header for use in the routing priority control in accordance with a feature of the invention. 
       FIG. 20  shows an example of the configuration of a storage routing table which is referred to by a relay node in the case of performing routing priority control in accordance with a feature of the invention. 
       FIG. 21  is a diagram showing the flow of a data packet re-transmitting process between neighboring relay nodes in the content-oriented routing of the invention. 
       FIG. 22  is a network diagram for explaining effects of the data re-transmitting process between neighboring relay nodes in the content-oriented routing of the invention. 
       FIG. 23  is a block diagram showing a basic architecture for performing routing control in cooperation with a network layer routing protocol according to an embodiment of the invention. 
       FIG. 24  is a flowchart of a content-oriented routing process using network layer routing information according to an embodiment of the invention. 
       FIG. 25  is a diagram for explaining effects of the case of performing routing control in cooperation with a network layer in accordance with the invention. 
       FIG. 26  is a flowchart showing the flow of process in which the content-oriented routing of the invention and traffic engineering are combined. 
       FIG. 27  is a flowchart showing the flow of process in the case of adding a content relay node of the invention to an existing network. 
       FIG. 28  is a diagram showing a network configuration in the case of adding the content relay node of the invention to an existing network. 
   

   DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
   Embodiments of the invention will be described in detail. 
     FIG. 1  is a block diagram showing a basic configuration of an apparatus to which the invention is applied. It is assumed that a content relay node in the invention is used for a network in which heavy data traffic frequently occurs and an access network whose bandwidth is being broadened in recent years. 
   In order to connect with other network nodes and perform routing control, the content relay node has a data receiving unit  2  including a plurality of input ports (logical ports)  2 - 1  to  2 - n  connected to a plurality of lines  4 - 1  to  4 - n , respectively, and a data transmitting unit  3  having a plurality of output ports  3 - 1  to  3 - n  connected to a plurality of lines  5 - 1  to  5 - n , respectively. The content relay node has a software switch  1  for connecting the input and output ports in order to switch the path between incoming and outgoing routes in the node. Communication is performed with a program of a transport layer or below through the logical input and output ports  2 - 1  to  2 - n  and  3 - 1  to  3 - n  to transmit data. 
   The switch has the function of determining a combination of an input port and an output port necessary to transmit a data packet on the basis of a result of route search in a routing control unit and establishing a transfer route in the node. The switch also has the function of transmitting a copy of received data to a control unit (data processing unit  30 ) in order to temporarily store data at the time of relaying the data. 
   A routing control unit  10  has the function of performing a route search process of determining the destination of a data packet on the basis of data identification information of an application layer included in the data packet and the function of transmitting a control signal to the switch and the data transmitting unit on the basis of the result of the route search. The routing control unit  10  holds a storage routing table (SRT)  11  for routing. 
   The data processing unit  30  has the function of assembling and segmenting data at the time of data packet transmission/reception and temporarily storing received data. Data is read and written from and to a storage unit  20  via the data processing unit  30 . Information necessary for the process of assembling and segmenting data is included in the header portion of a data packet. Header information is extracted or written by the data receiving unit  2  or data transmitting unit  3 . The storage unit  20  connected to the data processing unit  30  is comprised of one or a plurality of storages  21  for storing data at the time of transferring large data or when a main memory becomes insufficient in the transfer process. The storage  21  may be a large capacity of memory, a hard disk, or a combination of a memory and a hard disk. The term “storage” is used as the general term for these constructions in the following description. 
   A signal processing in the node of the invention will now be described. A data packet supplied to the input ports  2 - 1  to  2 - n  sequentially passes through the receiving unit  2 , switch  1 , and transmitting unit  3  and is transferred to the next relay node via the output ports  3 - 1  to  3 - n . The receiving unit  2  extracts header information included in a received data packet and sends the header information as control information to the routing control unit  10 . 
   The routing control unit  10  determines an output port in the transmitting unit  3  on the basis of the control information such as destination node IP address received from the receiving unit  2  by referring to the storage routing table SRT  11  and sends a control signal to the switch  1  and the transmitting unit  3 . 
   By the control signal, the switch  1  determines correspondence between an input port and an output port and sends the data packet to the transmitting unit  3 . The control information extracted by the receiving unit  2  includes the destination node IP address, source node IP address, and an identifier indicative of other data attributes of the packet. The transmitting unit  3  transmits the data packet to the next relay node on the basis of the control information received from the routing control unit  10  after adding, as necessary, the header information to the data packet. 
   The configuration shown in  FIG. 1  is realized mainly by software and is described only by processes in the layer upper than a transport layer in the ISO/OSI reference model. Routing is determined in an upper layer. Transfer is executed by communicating with the lower layer protocol through the receiving and transmitting units. 
   The configuration of the content relay node of  FIG. 1  can be also designed by applying physical interfaces for the receiving and transmitting units and applying, for example, an N×N crossbar switch for the switch  1 . In this case, the receiving unit, switch, and transmitting unit relating to data transfer have configurations common to those of a conventional router architecture using a network layer address. In the receiving and transmitting units, a circuit for performing high-speed hardware process or the like is installed in order to perform a packet process exclusively. Determination of a route in the application layer using the SRT and the physical address in a data link layer or below are controlled in a direct linkage manner with the Network Storage Address (NSA). 
     FIG. 2  shows a flowchart of the content routing process according to the invention. 
   A data packet is supplied from the communication lines  4 - 1  to  4 - n  to the receiving unit  2  via the input ports  2 - 1  to  2 - n . In step  101 , the receiving unit  2  receives a packet. In step  102 , control information (hereinbelow, called a content header) such as destination information written in the head portion of an area storing application layer data on a packet is read out. In step  103 , whether the destination information included in the header matches the address of the node or not is determined. If YES, in step  104 , on the basis of the information of the header portion including the data header, data operating process of storing data inside the node or execution of the data is performed in accordance with the kind of received data after assembling data sent in the form of a plurality of packets as necessary. 
   If it is determined in step  103  that the received packet is a data packet whose destination is not the node but which is to be sent to the other destination via the node, in step  105 , the NSA of the next content relay node corresponding to the destination address is determined by referring to the SRT  11  held in the routing control unit  10 , and a combination of the input port of the packet and the output port obtained by the SRT  11  is sent to the switch  1 . By the control signal, connection between the input and output ports of the switch adapted to packet transfer is established, and the data is sent to the transmitting unit. 
   In step  106 , the data header is added by the transmitting unit  3  in accordance with the packet transmitting route determined in the routing control unit  10 , and the resultant data is sent out to the next relay node. After the transmission, whether the data transfer has succeeded or not is determined in step  107 . When it is determined that part or all of the data has failed to be sent due to some problem occurred between the node and the next relay node, a process of re-transmitting the data stored in the node is performed in step  108 . When it is determined that the data transfer has been completed normally, the routing process is finished. 
     FIG. 3  is a conceptual diagram showing the relation between protocols related to the content routing of the invention. 
   A network connecting content relay nodes is formed in layers of the storage address. As to the form of a network of autonomous transfer between neighboring nodes, in the embodiment, it is considered that a session between a source and a destination is established to transfer data more reliably by grasping a transfer state. 
   By using a high-reliably transfer protocol such as a transport layer protocol (TCP or the like) for transfer from the storage unit  20  of the node to a storage unit in the next relay node, data transfer between the relay nodes can be assured. Alternately, as shown in the embodiment of the invention, each of the content relay nodes may be provided with means for checking perfection of data at the time of storing the data into the storage unit. It is assumed that the neighboring relay nodes have a function of providing assurance of the perfection of data. Therefore, each time data transmission in an area is finished, the network bandwidth between nodes is released. 
     FIG. 4  shows basic elements of a data header used in the content routing of the invention. 
   A data packet comprises a content header  301  and data  302 . The content header  301  includes a destination Network Storage Address (NSA)  303  of the content relay node as a final destination at least in the storage network and a source NSA  304  as a source address. The content header  301  is used for processes such as a destination address search, data segmentation at the time of divided data transmission, and data reproduction at the time of divided data reception. 
     FIG. 5  shows a data segmentation process in the content routing according to the invention. 
   The data read out from the storage unit  20  in step  121  is divided into a plurality of cells having a size proper to data transmission in step  122 . A necessary header is added to each of the data cells in steps  123  and  124  and the resultant cell are sent out. Each time data passes through a content relay node, the data reproducing, data segmentation or data transfer is carried out by the data processing unit  30  in the node. On completion of the series of processing from data reception to data transmission in each relay node, the memory space is released. 
     FIG. 6  shows a basic configuration of the storage routing table (SRT) used in the content routing of the invention. 
   The SRT is stored in a memory of the routing control unit  10  and is used to retrieve an address  403  in the table corresponding to the destination address  303  of a packet sent from the receiving unit  2  to the routing control unit  10  and to determine an appropriate destination address  404 . The destination address obtained from the SRT is associated with the input port number of the packet and is used for controlling the switch  1 . 
   The SRT includes at least a final destination address  401  on the route through which data is transferred according to the routing method of the invention and a storage address  402  of the next relay node through which the packet passes on the route to the destination. Further, as reference information, auxiliary information such as the capacity of available memory space in a relay node existing on the route and lapse time since updating of the route may be also included. 
   In the routing method according to the invention, a route capable of utilizing the memory space in each node most effectively is selected on the basis of the capacity of the available memory space of a relay node. According to the method, a route can be determined independently of a routing table in the IP layer. Although the table is periodically updated here so as to be adapted to network topology and a use state of the memory space in a relay node, the table may be updated as necessary. 
     FIG. 7  shows the flow of process of storing received data into a storage area in the relay node. 
   The destination and attribute information of a data packet supplied to the receiving unit  2  according to the flowchart of  FIG. 2  is checked by a content header processing in step  102 . Whether the data is to be stored or not is determined in step  141  on the basis of external factors such as the available space in the storage of the relay node in the information network and individual header information such as attributes of relayed data. If it is determined that the data needn&#39;t be stored, only the routing processing is performed. 
   In the case of storing data, the data is rebuilt in step  142  according to information for data reproduction such as the content identifier included in the content header and the packet sequential number assigned when the data is transmitted in a divided data form. When it is determined that a part of the data is not received yet in step  143  of confirming data transfer, a re-transmission request is sent to the relay node at the immediately preceding stage or in the closest position in step  145 , and then, lost data is obtained. When the rebuilt data is stored in the routing control unit  10  or storage unit  20  in step  144 , the series of processing is finished. 
     FIG. 8  shows header information of a data packet related to data reproducing and storing process. 
   The header includes, in addition to the address information  303  and  304  used at the time of content routing, a data identifier  305  and an identifier  306  such as a sequential number assigned at the time of data segmentation. In this case, the sequential number  306  is associated with the data identifier  305 . 
   The process performed at the time of data reproduction in step  142  in  FIG. 7  is shown in  FIG. 9 . Data is distinguished by the data identifier  305  and packets having the same identifier are arranged in the correct order according to the packet sequential numbers  306  in step  163 . In step  164 , the data is rebuilt. 
     FIG. 10  shows a data packet checking process performed at the time of data reproduction. 
   On the basis of the sequential number  306  used as re-building information at the time of data reproduction, whether necessary packets have been received with reliability or not is determined in step  183 . When a data packet is not received or an incomplete packet is received, a re-transmission request is sent to the immediately preceding relay node in step  185 . 
     FIG. 11  shows the flow of process performed in the case where the relay node receives the data re-transmission request from the destination. 
   When the transmission request message is received in step  201 , in a manner similar to normal routing, content header processing, for example, detection of the requested identifier for data and/or packet from the received message is performed in step  202 . Subsequently, in step  203 , on the basis of the information such as the requested data and the requested sequential number, the necessary data is read out from the memory or storage and divided into cells in order to generate data packets. The cells are subjected to a content header processing of adding a content header to each cell in step  204 . In step  205 , the resultant packet is sent out to the next relay node. When completion of transmission is determined in step  206  of judging whether the transmission has succeeded or not, the data transmitting process is finished. 
     FIG. 12  shows the structure of the header of a packet indicative of a transmission request. 
   The header includes an identifier  305  for identifying requested data, the sequential number  306  of the required data, and an identifier of the request  307  indicating that the packet is of a re-sending request. 
     FIG. 13  shows an example of definition of the NSA as an embodiment of the invention. 
   The network storage address NSA is used not only as identification information of a storage such as an HDD which can be physically distinguished but also includes definition of an area which is logically partitioned and definition using a directory designation indicative of a storage location of data. Therefore, the correspondence between an interface (port) and the NSA can be changed variously according to the definition of the NSA, thereby to configure a flexible network. 
     FIG. 14  is a conceptual diagram for explaining an example of the network configuration in the case where each relay node has a plurality of NSAs. 
   The content routing network is expressed by using NSAs of the relay nodes. Consequently, when a certain relay node has a plurality of NSAs, for example, a plurality of data flows can be simultaneously relayed by selecting as necessary an NSA by which an area for data relay can be assured.  FIG. 14  is shown on assumption that data is distributed from a server  513  to users  511  and  512  via an edge node  505 . A relay node  501  has two NSAs and uses an area having a NSA “a” for a data flow  514   a . The edge node  505  uses an area having a NSA “c” for a data flow  524   b . When a data flow  514   b  is generated before the completion of the flow  514   a , the relay node  501  uses an are a having NSA “b”, thereby assuring a data transfer area for the data flow  514   b . The edge node  505  uses, for example, an area having NSA “e” to establish a route to the user. 
   The content relay node according to the invention has the content routing function and also the function of storing data into a storage. By transferring information while storing it, as compared with the conventional transfer method according to the network layer protocol, data can be distributed more reliably. 
     FIG. 15  shows a flowchart of process of routing received data after storing the data into the data control unit. This corresponds to a process performed in the case where received data has a small size or belongs to a data flow which does not have to be stored into a storage. 
   The receiving unit  2  performs processing on the content header  301  such as detection of a destination and extraction of data packet identification information. After that, processing of temporarily storing data on the basis of the header information is performed, and the reproduced data is stored into the data processing unit  30  in step  603 . In the following steps  604  to  607 , the routing process is performed according to the flowchart shown in  FIG. 2  and the stored data in the data processing unit  30  is deleted when completion of transmission is confirmed. In a re-transmission step  606 , a data packet or re-built data stored in the data processing unit is read out and transmitted after performing data segmentation and header addition as necessary. 
     FIG. 16  shows a process of storing received data into a storage. 
   The process of storing data and routing shown in step  625  is as described in  FIG. 15 . Data is constructed by the data processing unit  30 . In step  629 , it is determined whether enough space is available in the storage  20  of the node or not. If it is determined that the available space is small, the data is temporarily held in the memory of the data processing unit  30  in step  630 . It is considered that the data to be stored in the storage is different from the data to be temporarily stored in the memory in the case of  FIG. 15 . As soon as the enough memory area in the storage  20  becomes available, a process of storing data into the storage  20  and distributing data from the node is performed in step  631 , and the routine is finished. If the received data packet is not addressed to the node itself, the data area on the memory can be released after performing the routing process in a manner similar to the case of  FIG. 15 . 
     FIG. 17  shows processes for using the memory in the data processing unit  30  and the storage  20  in a linkage manner to store data. 
   In the case where there is no enough area for data reproduction in the memory space in step  642 , whether there is enough space in the storage or not is checked in step  643 . After that, the data stored on the memory is transferred to the storage  20  and data is rebuilt in the available space of the data processing unit  30 . The data is rebuilt in step  647  and is either stored in the memory or storage or subjected to a process. 
   When the storage has no space sufficient to accept the data in the memory, whether the received packet is addressed to the node itself or not is determined in step  645 . If YES, the packet is discarded and a re-transmission processing is requested. If NO, the routing processing is performed in step  648  without accompanying the storing process, thereby transmitting the received data to the next relay node. The process performed subsequent to the routing process in step  648  is as shown in  FIG. 2 . 
   By applying the content routing method of the invention, a route can be flexibly changed on the basis of information in the application layer. 
     FIG. 18  shows a flowchart of routing control performed in the case of data transfer of different priority levels, using a content identifier included in a content header as an embodiment of the invention. 
   By using the content identifier extracted from a data packet supplied to the input port in step  661 , the priority level of the data packet is determined in step  662 . In step  663 , the packet is sent out to a proper route by a route selecting process based on the priority and a necessary bandwidth. In the case where it is judged in step  664  that the bandwidth assured is insufficient to transfer the data packet, another route is set in step  665  and the data packet is transferred via the route in step  666 . 
     FIG. 19  shows an example of the structure of the header of a data packet for realizing priority route control. 
   The content header  301  includes priority  308  in processing of the data, in addition to the destination NSA  303 , source NSA  304  and data identifier  305 . As a method of linking the route information table and a content identifier, for example, a content routing table including a content identifier may be prepared or a method of preparing a plurality of SRTs by priorities may be used. 
     FIG. 20  shows an example of the configuration of an SRT for data packet priority control. 
   In the content routing method according to the invention, since each data is transferred while being stored in each relay node, it is unnecessary to request the source to re-transmit data at the time of a line failure. This hop-by-hop data re-transmission mechanism will be described with reference to  FIG. 21 . 
   It is now assumed that content relay nodes A  701 , B  702  and C  703  in the invention are connected in this order. According to conventional content routing, data is transferred by transmission  704  and  705  to the next relay node while being stored in the storage in each relay node. Two cases will be described below as an example of occurrence of re-transmission. 
   In the case where data is completely lost in a certain area (Case  1 ), the relay node C  703  cannot know the existence of a data flow. The relay node B  702  waits for predetermined time to confirm if data transmission has succeeded or not. If there is no confirmation response, the relay node B  702  transmits the data again. At this time, the data relay route is re-set as necessary. 
   In the case where data is partly lost (Case  2 ) the relay node C  703 , which is receiving the data, performs a process of reproducing data and confirming perfection of the data is performed. The relay node C  703  checks the content header information of the lost packet and sends a request for re-transmission  712  to the relay node B  702  at the preceding stage. If the requested data is held in the relay node B  702 , the data is re-transmitted ( 713 ) immediately to the relay node C  703 . 
   In the case where the requested data is not held in the relay node B  702 , a re-transmission request  714  is forwarded to the relay node A  701  preceding to the relay node B  702  and necessary data is transmitted from the relay node A  701  to the relay node C  703  by re-transmission  715  and  716 . 
   Effects in association with the case of using the hop-by-hop method will be described with reference to  FIG. 22 . 
   A data flow  813  distributed from a server  810  reaches a user terminal  807  via an edge node  801 , a core relay node  802 , and an edge, node  805 . Simultaneously with this data flow distribution, it is assumed that data transmission  812  is performed from the server  810  to a terminal  809  via the edge relay node  801 , core relay nodes  803  and  804 , and the edge node  806 . In the case where a part of data is lost due to a line failure between the edge node  806  and the core node  804 , the edge node  806  sends a re-transmission request to the core node  804 . The core node  804  transmits a necessary packet from among the data stored in itself. 
   Since a re-transmission request does not have to be forwarded to the server  810  unlike in the conventional network, the load of the data transfer processing on the server  810 , edge node  801 , and core node  802  is reduced and a process which does not exert an influence on transfer efficiency of the flow  813  can be realized. 
   Process for the case of using network layer information for route determination will now be described as an embodiment of the invention with reference to the flowchart of  FIG. 24 . 
     FIG. 23  shows a basic configuration of an architecture for applying the method. Since a plurality of routes to the destination of a received data packet normally exist, when a plurality of possible routes are detected, a destination is determined by using any means. As an example of the means, a method of mechanically giving priority to an NSA may be adopted. However, by using information such as a failure, congestion state, and line cost of a network layer protocol at the time of selecting a route in content routing, more efficient routing can be achieved. 
   From a packet received by an input port of a relay node in step  901 , the content header information is extracted by the receiving unit in step  902 . When it is judged in step  903  that the packet is not addressed to the node, the destination is determined on the basis of destination information in step  905 . When a plurality of next relay nodes to which the received packet can be sent exist ( 905 ) in step  907 , the status information of lines to each of the next relay nodes or load on the processing in the node is obtained by using a protocol in a lower layer such as ICMP or SNMP and, on the basis of the information together with the SRT, the most effective route is determined. The information of the network layer may be included in the SRT or a table for holding the state of a network may be prepared separately from the SRT. 
   Referring now to  FIG. 25 , the operation of the content relay node in cooperation with the network layer protocol will be described. 
   At the time of transferring data from a server  926  to the user, an edge relay node  921  generates the SRT by referring to the available capacities of the storages of the next relay nodes  922  and  923 . The relay node  921  has a plurality of candidates of the destination. 
   In the case where memory space in one of the next nodes is insufficient, the relay node  921  transfers data to the other node which has sufficient space. In a state where both of the next nodes are available for the data transfer, a route  930   a  of which cost is lower is selected by using the protocol of the network layer. Further, when it is determined that, by referring to routing information in the network layer such as ICMP, for example, the bandwidth of the route  930   a  is insufficient due to other traffic, the SCR is switched to a route  930   b.    
   All of routers in an existing network do not have to be replaced by the content relay node in the invention. The content relay node may be disposed, for example, every predetermined number of routers. 
     FIG. 26  is a flowchart for explaining a process of determining a route by using a traffic engineering (TE) function of MPLS. 
   In the embodiment, by the process according to  FIG. 2 , the header is extracted from a data packet and a destination NSA is determined with reference to the SRT in steps  941  to  945 . If a plurality of destinations exist or a plurality of routes to the next relay node exist, transfer routes (label switched paths) are set on the possible routes between the relay nodes in step  946 , and a route for data transfer is determined to assure the quality of transfer between nodes. 
     FIG. 27  shows a flow chart for explaining process in the content relay node at the time of introducing the content routing method of the invention to an IP network in the present state. 
   By introducing the content relay node according to the invention to an area where traffic is concentrated in a network layer, since the network layer protocol can exist together, it produces an advantage from the viewpoint of cost at the time of expanding a network. After receiving a data packet in step  1001 , at the time of extracting header information in the receiving unit  2 , whether the content routing method according to the invention is applicable to the data packet or not is determined in step  1002 . 
   The determination in step  1002  of whether the content routing is performed or not is made on the basis of the presence/absence of an upper layer header, a network bandwidth use state, data attributes, and the like. In the case where the content routing is not performed, in step  1003 , a data packet is transmitted through the content routing network according to a routing control using a protocol of the existing transport layer or lower. In step  1004 , transmitting and re-transmitting processes are carried out according to the conventional transfer control protocol such as TCP or UDP. When it is determined in step  1002  that a data packet needs content routing, a series of processing of the content routing shown in  FIG. 2  is performed in steps  1005  to  1009 . 
     FIG. 28  shows a conceptual diagram in the case of introducing the content routing method into an existing network. 
   Edge nodes (EN)  1101  and  1105  are edge nodes in a content routing network and core nodes (CN) are relay nodes placed in a core portion of the content routing network. Data transmitted from a server  1109  enters the network via an edge router  1106 . The routing process described in  FIG. 26  is carried out in each of relay nodes in the content routing network. The edge node  1101  checks the upper layer header, bandwidth information, data attributes, and the like. When it is judged that the content routing method is necessary, the upper layer header processing is performed and routing according to  FIG. 2  is carried out. The upper layer header may be added by the server  1109  or by the edge node  1101 . 
   At the time of data transfer from the content routing network to the existing network, a necessary upper layer header processing is performed by the edge node  1105 . Specifically, in the case where content routing is conducted between a server and a terminal device or between the content routing node  1105  and a terminal device, the upper layer header is held. In the case of using the upper layer header only in the content routing network, the upper layer header is deleted by the edge node  1105 . 
   According to the embodiments of the invention described above, in a data transfer on a network, at the time of transferring a large amount of data such as moving image data, sound data, and business data, a data transfer using a memory area in a storage is performed, thereby enabling content relay node to select a proper route according to traffic in the network and to avoid insufficient bandwidth caused by limitation of a route in the conventional routing and congestion accompanying the insufficient bandwidth. By introducing an NSA and conducting routing based on available space in a storage, a route can be set by the method independent of network layer routing, so that a bandwidth can be assured differently from the conventional manner. Consequently, coexistence with the existing protocols is possible, and more flexible network designing can be achieved by utilizing the characteristics of the protocols. 
   By conducting routing utilizing data attributes of an application layer, a finer network configuration as compared with the case of using a network interface of a conventional router can be constructed. Further, since a plurality of NSAs distinctive logically can be provided in a content relay node, the flexibility of assigning addresses is increased as compared with the case of using a network layer. Thus, effects such that the invention can be applied to priority control in data transfer and the efficiency of address management is increased are expected. 
   In the invention, by providing each content relay node with the data storing function to perform routing and storing of data at the same time, data can be distributed with reliability even in the case where heavy traffic occurs. Further, since a data flow is checked between relay nodes, even in the case where a network failure occurs during transfer of a large amount of data and forwarding failure occurs in part or all of data packets, necessary data can be re-transmitted from the nearest node, so that it is able to remarkably reduce the waste of network resources due to a number of re-transmission requests expected to be frequently issued when a large amount of content flows on the conventional network. 
   A content relay node according to the invention is easy to be introduced into an existing network. It is unnecessary to replace all of nodes in a network, and by introducing a content relay node of the invention to an area where traffic is heavy, the bandwidth can be effectively used and effects from the viewpoint of cost can be also expected. The invention realizes effective use of bandwidth which is difficult to be accomplished by conventional network technology. 
   The invention provides not only the configurations described in the scope of claims but also the following content-oriented routing method. 
   (1) A content-oriented routing method of routing a data packet on the basis of a data attribute in an application layer in a content relay node including: a receiving unit having a plurality of input ports; a transmitting unit having a plurality of output ports; a data processing unit; a switch unit for connecting the receiving unit, the transmitting unit, and the data processing unit; a plurality of storage shaving a data storing function; and a routing control unit for controlling the receiving unit, the transmitting unit, the switch unit, and the storages, each of the data packets including a storage address for identifying the plurality of storages on a network and a data attribute, 
   wherein the receiving unit executes a step of receiving a data packet, a step of extracting the storage address and the data attribute from the data packet, a step of transferring the data attribute to the routing control unit, and a step of sending the data packet to the switch unit, 
   the routing control unit executes the step of selecting the transmitting unit or the data processing unit as a destination of a received data packet on the basis of routing information including the storage address and instructing the switch unit to make switching, 
   the storage executes the step of storing the received data, 
   the switch unit executes the step of switching a route on the basis of the control signal, 
   the data processing unit executes the step of storing or transmitting data on the basis of the data attribute, and 
   the transmitting unit executes the step of processing the header of a data packet in accordance with a control signal from the control unit and the step of transferring a data packet to a neighboring relay node. 
   (2) In the content-oriented routing method, a storage routing table (SRT) expressed by using identification information (network storage address: NSA) for identifying a storage on a network is held in the control unit and a destination NSA corresponding to the destination NSA is determined by using the SRT. 
   (3) In the content-oriented routing method, the NSA is expressed by one piece of or a combination of a plurality of pieces of information indicative of position of a relay node on a network, identification information of a storage distinctive physically or logically, and information for specifying a data storage location by designating a directory or a block address in a storage area. 
   (4) In the content-oriented routing method, the receiving unit processes the header of the input packet and sends, in order to store received data into a memory in the control unit or into the storage, a copy of the input data to the control unit, and the control unit identifies the data packet on the basis of the header information and stores the received data in the node until transfer of the data at least to the next relay node is completed. 
   (5) The content-oriented routing method includes, in the data storing process, at least one of the step of storing received data in the form of a packet and the step of rebuilding data from a plurality of packets and storing the rebuilt data in the node. 
   (6) In the content-oriented routing method, in the case where the receiving unit detects a data transmission request, data stored in the node is read out and re-transmitted. 
   (7) In the content-oriented routing method, when the content relay node determines correspondence, to be registered in the SRT, between a destination NSA and the next NSA for relay, a route is judged on the basis of data size of a received data flow and available memory space in the next storage for relay, thereby to construct an SRT. 
   (8) In the content-oriented routing method, relay nodes constructing a network for content routing notify each other of available memory spaces of themselves. 
   (9) In the content-oriented routing method, the receiving unit determines whether data supplied to an input port is to be routed on the basis of a storage address or not. 
   (10) In the content-oriented routing method, route information obtained by function of a transfer protocol of a lower layer is used at the time of determining a transfer route. 
   (11) The content-oriented routing method further includes the step of dividing data into a plurality of packets in an application layer as necessary and transmitting the packets. 
   (12) In the content-oriented routing method, the data packet is comprised of a header including a data attribute of the application layer and data. 
   (13) In the content-oriented routing method, the header of the data packet includes a destination NSA of data and a source NSA of the data. 
   (14) In the content-oriented routing method, each of the data packets includes data identifiers indicating that the data packets are generated from the same data as a data attribute included in the header, and packet identifiers indicative of the order of the data packets as re-building information in the case where the data is transmitted in a divided form. 
   (15) In the content-oriented routing method, the data packet includes priority information of the data packet in its header in order to preferentially determine the route according to the data attribute.