WO2004056051A1 - Return path derivation in packet-switched networks - Google Patents

Return path derivation in packet-switched networks Download PDF

Info

Publication number
WO2004056051A1
WO2004056051A1 PCT/IB2003/005261 IB0305261W WO2004056051A1 WO 2004056051 A1 WO2004056051 A1 WO 2004056051A1 IB 0305261 W IB0305261 W IB 0305261W WO 2004056051 A1 WO2004056051 A1 WO 2004056051A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
packet
network
return path
identifier
Prior art date
Application number
PCT/IB2003/005261
Other languages
French (fr)
Inventor
Kees G. W. Goossens
Edwin Rijpkema
Paul Wielage
Original Assignee
Koninklijke Philips Electronics N.V.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Koninklijke Philips Electronics N.V. filed Critical Koninklijke Philips Electronics N.V.
Priority to US10/539,199 priority Critical patent/US20060077974A1/en
Priority to AU2003276606A priority patent/AU2003276606A1/en
Priority to JP2004559991A priority patent/JP2006511115A/en
Priority to EP03813214A priority patent/EP1576773A1/en
Publication of WO2004056051A1 publication Critical patent/WO2004056051A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/06Deflection routing, e.g. hot-potato routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/36Backward learning

Definitions

  • the present invention relates to a method for determining the return path of a packet in a network, the network comprising a plurality of nodes and a plurality of links between the nodes, and wherein for each first node having at least one link with a second node, a link exists between the second node and the first node, the method being used when sending the packet from a source node to a destination node, via at least an intermediate node.
  • the present invention further relates to an integrated circuit, comprising a network, the network having a plurality of nodes and a plurality of links between the nodes, and wherein for each first node having at least one link with a second node, a link exists between the second node and the first node, the network being arranged to determine the return path of a packet when sending the packet from a source node to a destination node, via at least an intermediate node.
  • a network for transporting data comprises a group of two or more devices, which are referred to as nodes, linked together.
  • the nodes in a network may comprise switches, routers, or computer systems. These computer systems may also have peripheral devices that are necessary to make the computer system function.
  • the communication path between two neighboring nodes in the network is referred to as a link.
  • a link may be implemented by means of a single transmission channel.
  • two links between two nodes can be combined in a single transmission channel.
  • two neighboring nodes may have three or more links for communication between these two nodes, in order to increase the bandwidth of the communication. All these links may be implemented in one single transmission channel as well. Data is transported from a source node to a destination node through the network.
  • a network can be used, for example, for communication between several elements assembled on an integrated circuit, or for communication between several computer systems.
  • Data can be transported through the network as a message or as a packet.
  • a message is a user-defined data unit whereas a packet is a network-defined data unit.
  • message-switched networks messages are routed through the network to their destination, whereas in packet-switched networks, packets are routed through the network to their destination.
  • packet-switched networks a message that should be sent to a given destination is divided into several packets, which are sent to the destination. At the destination, the packets in a message are collected and reassembled into the original message.
  • packet-switched networks allows sharing the same data path among many users in the network at a finer granularity, by breaking down the communication between the source and the destination into relatively smaller data units.
  • packets and “packet- switched” will be used for reasons of efficiency, but these words can also be read as “message” and “message-switched”.
  • the packets can also be used to program the network, for example to reserve or free resources, or to set up or remove connections.
  • resources are the buffer capacity in a router or the bandwidth of a connection.
  • An example of setting up a connection is to set a series of routers in a network such that one or more packets can be sent from a source node to a destination node, via that connection.
  • an arbitration scheme combines the transmission of the packets over a single transmission channel. For example, Time Division Multiplexing (TDM) can be used, which combines data streams by assigning each stream a different time slot in a set. TDM repeatedly transmits data in a fixed sequence of time slots over a single transmission channel.
  • TDM Time Division Multiplexing
  • the reservation of resources or set up of a connection fails because this action cannot be executed in one of the nodes on the path via which the packet is routed.
  • An example is the failure due to a lack of resources such as buffer capacity in a node along the path. As a result, the desired connection can not be set up.
  • US2002/0031095 describes a method to set up the description of the return path, when sending a packet through a network.
  • the network comprises modules that are flexibly networked by means of at least two bi-directional connection interfaces in a physical point-to-point connection in an arbitrary network topology.
  • a module forwards the packet to another module, the number of the receiving interface of that module is stored in the packet. In this way, the return path can be derived from the list of receiving interfaces stored in the packet and corresponding to the modules that the packet has visited.
  • the object is achieved with a method for determining the return path of packet in a network of the kind set forth, characterized in that the method comprises the step of storing information in the intermediate node for deriving the return path.
  • the information on the return path is stored in nodes that the packet has visited on its path to the destination node.
  • the packet can derive its return path from the information saved in one or more of the nodes it has visited on its path to the destination node. No additional space is required in the packet to store information on the return path, which allows reducing the size of the packet.
  • An advantageous embodiment of the invention is characterized in the method further comprises steps of storing information in each node visited by the packet for deriving the return path, when sending the packet from a source node to a destination node, instead of storing the information in only a limited number of nodes visited by the packet or even centrally in only one node.
  • the information on the return path is distributedly saved in the nodes and when travelling the return path, the packet can travel from one node to the other, deriving information on the return path from each node.
  • An embodiment of the invention is characterized in that the information stored in the intermediate node comprises an identifier of the packet and information that encodes an output port of the intermediate node to be used for returning the packet.
  • the information stored in the intermediate node comprises an identifier of the packet and information that encodes an output port of the intermediate node to be used for returning the packet.
  • Figure 1 shows an embodiment of a network that uses the method for determining the return path of a packet in a network according to the invention, when sending a packet from a source node to a destination node using destination routing.
  • Figure 2 shows an embodiment of a network that uses the method for determining the return path of a packet in a network according to the invention, when sending a packet from a source node to a destination node using source routing.
  • Figure 1 shows an embodiment of a network that uses the method for determining the return path of a packet in a network according to the invention, when sending a packet from a source node to a destination node using destination routing, i.e. only information on the final destination is stored in the packet.
  • a network comprising nodes S, Rl, R2, R3 and D, which are coupled with links 107, 109, 111, 113, 115, 117, 119 and 121, via their input ports and output ports S_l, S_2, Rl_l, Rl_2, Rl_3, Rl_4, R2_l, R2 2, R2_3, R2_4, R3_l, R3_2, R3_3, R3_4, D_l and D_2.
  • the network 101 may be a network, or part of a network, of an integrated circuit.
  • the nodes S, Rl, R2, R3 and D may comprise routers or switches for sending a unit of data to its next destination.
  • the nodes S, Rl, R2, R3 and D may also comprise more input ports and output ports for coupling to other nodes, not shown in Figure 1.
  • the nodes S, Rl, R2, R3 and D have each stored a return relation, relating each input port of that node to an output port of that node such that when receiving a packet at said input port coming from a specific node, and sending the packet via said output port, it will be send to that specific node.
  • the nodes Rl, R2, R3 comprise a memory Ml, M2 and M3 respectively.
  • Nodes D and S comprise a memory as well, not shown in Figure 1.
  • a packet 123 is sent from source node S to destination node D.
  • the packet 123 is being arranged to program the network, e.g. to set-up or to remove connections, or to reserve or free resources, to name a few.
  • An example of setting up a connection is to couple an input port of a certain node to an output port of that node in order to send the packet in the desired direction.
  • Examples of resources are the buffer capacity in a router or the bandwidth of a connection, hi case the programming of the network is successful in each node, the packet is routed to the destination node D.
  • the programming of the network may fail in a certain node, for example due to a lack of resources, such as buffer capacity.
  • the packet 123 comprises an identifier ID, a destination address DEST and data DAT used for programming the network.
  • Each node S, Rl, R2, R3 and D has stored a destination relation, relating all destinations to the output ports of that node, in order to know which output port to use for sending a packet to a desired destination.
  • a node can determine which output port to use in order to send a packet to one of the neighboring nodes, given the destination address DEST of a packet received by that node.
  • Both the destination relation and the return relation can be programmed in a programmable memory present in the nodes S, Rl, R2, R3 and D, not shown in Figure 1, for example.
  • the destination address DEST is equal to the address of destination node D. Referring to 103, the path is shown that the packet 123 follows when sending the packet from source node S to destination node D. Referring to 105, the contents of the memories Ml, M2 and M3 are shown, when sending the packet 123 from source node S to destination node D.
  • a first step 1 the packet 123 is sent by source node S to node Rl, via output port S_l, link 107 and input port Rl_l.
  • Node Rl reads the identifier ID from the packet 123, and stores it combined with an identifier Rl_l from input port Rl_ l in memory Ml, as a pair ID, Rl_l.
  • node Rl determines which output port to use in order to forward the packet 123, which is output port Rl_3.
  • the packet 123 is sent to node R2, via output port Rl_3, link 111 and input port R2_l.
  • Node R2 reads the identifier ID from the packet 123, and stores it combined with an identifier R2_l from input port R2__l in memory M2, as a pair ID, R2_l.
  • node R2 determines which output port to use in order to forward the packet, which is output port R2_3.
  • the packet is sent to node R3, via output port R2_3, link 115 and input port R3_l.
  • Node R3 reads the identifier ID from the packet 123, and stores it combined with an identifier R3_l from input port R3__l in memory M3, as a pair LD, R3_l.
  • node R3 determines which output port to use in order to forward the packet, which is output port R3_3.
  • the packet is sent to destination node D, via output port R3_3, link 119 and input port D_l.
  • Destination node D reads the destination address DEST stored in packet 123, and when comparing with its own address it decides that it is the destination node. In case the programming of the network fails in node D, the packet 123 is returned from destination node D to source node S, using the distributedly saved return path, for reprogramming of the network.
  • Destination node D determines to use output port D_2 for sending the packet 123, from a combination of the identifier D_l of input port D_l via which the packet was received and the return relation stored in destination node D.
  • the packet 123 is sent to node R3, via output port D_2, link 121 and input port R3_4.
  • Node R3 reads the identifier ID from the packet 123, and verifies that this identifier is stored in memory M3 as a pair LD, R3_l .
  • Node R3 determines to use output port R3_2 for sending the packet, from a combination of the identifier R3_l of input port R3_l and the return relation stored in node R3.
  • the packet 123 is sent to node R2, via output port R3_2, link 117 and input port R2_4.
  • Node R2 reads the identifier ID from the packet 123, and detects that this identifier is stored in memory M2 as a pair ID, R2_l .
  • Node R2 determines to use output port R2_2 for sending the packet 123, from a combination of the identifier R2_l of input port R2_l and the return relation stored in node R2.
  • the packet 123 is sent to node Rl, via output port R2_2, link 113 and input port Rl_4.
  • Node Rl reads the identifier ID from the packet 123, and detects that this identifier is stored in memory Ml as a pair ID, Rl_l.
  • Node Rl determines to use output port R1 2 for sending the packet, from a combination of the identifier Rl_l of input port Rl_l and the return relation stored in node Rl.
  • the information stored on the return path in memory Ml in the form of the pair identifier ID and identifier Rl_l is removed.
  • the packet 123 is sent to source node S, via output port Rl_2, link 113 and input port S_2.
  • Source node S reads the identifier ID from the packet 123 and determines that it is the final destination of the packet 123 after detecting that the identifier ID is not stored in its internal memory, which is not shown in Figure 1.
  • the memories Ml, M2 and M3 may comprise a hash table or a content-addressable memory in order to efficiently implement the storage of the pair "identifier of the packet and identifier of the input port".
  • the memories Ml, M2 and M3 may also comprise information on the return path of other packets than packet 123, not shown in Figure 1.
  • the information on the return path is derived from the nodes that the packet 123 visits when being routed from the destination node D to the source node S.
  • the information is distributedly saved in the nodes and when travelling the return path, the packet can travel from one node to the other, deriving information on the return path from each node.
  • no additional space is required in the packet to store information on the return path, which allows reducing the size of the packet.
  • the pair "identifier of the packet and identifier of the output port" is stored in the memory Ml, M2 and M3 for determination of the return path of the packet 123.
  • the identifier of the output port is determined from the identifier of the input port via which the packet was received by a node and the return relation stored in that node. For example, after step 1 the node Rl reads the identifier ID from the packet 123 and stores it combined with an identifier Rl_2 in memory Ml , as a pair ID, Rl_2. The identifier Rl_2 is determined from a combination of the identifier Rl_l of input port Rl_l and the return relation stored in node Rl. After sending the packet 123 to node Rl in step 7, node Rl reads the identifier LD from packet 123 and verifies that this identifier is stored in memory Ml as a pair ID, Rl_2.
  • node Rl uses the identifier Rl_2 of output port Rl_2 node Rl sends the packet 123 to source node S via output port Rl_2, link 109 and input port S_2.
  • the number of input ports of the nodes Rl, R2 and R3 is larger than the number of output ports, storing the identifiers of the output ports instead of the identifiers of the input ports in memory Ml, M2 and M3 for determination of the return path requires less storage space.
  • the programming of the network may fail in a certain node before the destination node D is reached.
  • this node will route the packet 123 to source node S.
  • the packet travels the return path to the source node S in order to reprogram the network.
  • reprogramming of the network involves undoing of reservations that have been made until that point of the path.
  • reprogramming of the network may also include finding an alternative path to the destination node, during travelling the return path.
  • Node R3 determines to use output port R3_2 for sending the packet from a combination of the identifier R3_l of input port R3_l via which the packet 123 was received and the return relation stored in node R3.
  • the packet is sent to node R2, via output port R3_2, link 117 and input port R2_4. Subsequently, the packet 123 is routed to source node S, as described in a previous embodiment.
  • the reprogramming of a network may fail in a certain node, for example because access to a certain resource is denied as it is already being used.
  • a packet is routed to destination node D, but the programming of node R3 fails and subsequently the packet is routed to source node S using the information on the return path stored in the nodes Rl and R2, as described in a previous embodiment.
  • the reprogramming of the network fails in node R2, as access to a resource of this node is denied.
  • the node R2 reads the destination address DEST stored in packet 123, and using this destination address and the destination relation it determines to use output port R2_4 for routing the packet to the destination node D.
  • the information on the return path stored in the form of pair LD, R2_l in memory M2, remains present in memory M2.
  • the packet is sent to node R3, via output port R2_3, link 115 and input port R3_l.
  • node R3 a new attempt is made for programming the network. If this attempt succeeds, the packet 123 is sent to destination node D, as described in a previous embodiment. If the attempt fails, the packet is routed to source node S, as also described in a previous embodiment.
  • a different method for deriving an unique identifier of the packet may be used. For example, when using a time-division multiplexing arbitration scheme a slot table is used for a router in order to determine which output port of that router is connected to which unique input port of that router in a given time slot. As a result, a time slot can be used to uniquely identify a packet and to determine the return path, as follows. When travelling from a source node to a destination node, the time slot during which the packet is sent by a node is stored in the packet, and the value of the time slot is increased by one for each node, since it takes one slot to travel between two neighboring nodes.
  • the packet In case the packet has to travel the return path, it is sent to a node, for example to node R2 via input port R2_4. Assuming that the return relation of input port R2_4 is unique, output port R2_3 is uniquely identified by applying the return relation to input port R2_4. Next, using the time slot stored in the packet in combination with the identifier of output port R2_3, the identifier of the input port via which the packet was received when travelling from the source node to the destination node, i.e. R2_l, can be derived from the router table.
  • FIG. 2 shows an embodiment of a network that uses the method for determining the return path of a packet in a network according to the invention, when sending a packet from a source node to a destination node using source routing, i.e. the packet comprises information on the routing of that packet.
  • the information on the routing may be stored in the packet in the form of a series of output ports of subsequent nodes, so that each node detects from the packet which output port to use for sending the packet to the next node. While the packet is being routed to a destination node, information on the return path is being stored in the nodes.
  • a network is shown comprising nodes SI, R4, R5 and DI, which are connected with links 207, 209, 211, 213, 215 and 217, via their input ports and output ports Sl_l, Sl_2, R4_l, R4_2, R4_3, R4_4, R5_l, R5_2, R5_3, R5_4, Dl_l and
  • the network 201 may be a network, or part of a network, of an integrated circuit.
  • the nodes SI, R4, R5 and DI may comprise routers or switches for sending a unit of data to its next destination.
  • the nodes SI, R4, R5 and DI may also comprise more input ports and output ports for coupling to other nodes, not shown in Figure 2.
  • a packet 219 is sent from source node S 1 to destination node DI .
  • the nodes R4 and R5 comprise a memory M4 and M5 respectively.
  • Nodes SI and DI comprise a memory as well, not shown in Figure 2. For all nodes SI, R4, R5, and DI holds that if a first node has at least one link with a second node, also link exists between the second node and the first node.
  • the nodes SI, R4, R5, and DI have stored a return relation, relating each input port of that node to an output port of that node such that when receiving a packet at said input port coming from a specific node, and sending the packet via said output port, it will be send to that specific node.
  • the packet 219 is being arranged to program the network. In case the programming of the network is successful in each node, the packet is routed to the destination node D. However, the programming of the network may fail in a certain node, for example due to a lack of resources. In that case it is essential that the packet travels the return path to the source node in order to reprogram that part of the network visited so far. In this embodiment it is assumed that the programming of the network is successful until destination node DI.
  • Packet 219 comprises an identifier ID, a pointer P, output port identifiers Al and A2, a counter C and data DAT.
  • the identifier LD provides for a unique identification of the packet 219.
  • the pointer P points to the location within the packet 219 where the output port identifier is stored of the output port that should be used for sending the packet.
  • the output port identifiers Al and A2 uniquely identify the output ports via which the packet should be sent.
  • Counter C determines the total number of nodes that should be passed before reaching the destination node D.
  • the data DAT are used for programming the network. In other embodiments, different encodings for source routing are possible, as known by the person skilled in the art.
  • the pointer P Before sending the packet 219 from source node S 1 to destination node DI, the pointer P is defined such that it points to the location of output port identifier Al in packet 219.
  • Output port identifier Al is set equal to the output port identifier R4_3 of output port R4_3, and output port identifier A2 is set to the output port identifier R5_3 of output port R5_3.
  • the counter C is set to 2.
  • the packet 219 is sent by source node SI to node R4, via output port Sl_l, link 207 and input port R4_l .
  • the source node SI For selecting the proper output port in order to send the packet 219, the source node SI must have information about the network it is connected to, for example in the form of a destination relation stored in the node SI.
  • Node R4 reads the value of counter C and detects it is not the destination node, since the value of counter C is not equal to zero. The value of the counter C is lowered by one.
  • Node R4 reads the identifier LD from the packet 219, and stores it combined with the identifier R4_l from input port R4_l in memory M4, as a pair ID, R4_l.
  • Node R4 determines to use output port R4_3 for sending the packet 219, by reading the value of pointer P and using that value to read the output port identifier Al. Node R4 updates the pointer P such that it points to the location in packet 219 where output port identifier A2 is stored. In a next step 2, the packet 219 is sent to node R5, via output port R4_3, link 211 and input port R5_l . Node R5 reads the counter C and determines it is not the destination node, since the value of the counter C is not equal to zero. The value of the counter C is lowered by a value of one.
  • Node R5 reads the identifier LD from the packet 219, and stores it combined with the identifier R5_l from input port R5_l in memory M5, as a pair LD, R5_l .
  • Node R5 determines to use output port R5_3 for sending the packet 219, by reading the value of pointer P and using that value to read the output port identifier A2.
  • Node R5 determines that the pointer P does not have to be updated, since the value of the counter C is equal to zero.
  • the packet 219 is sent to node DI, via output port R5_3, link 213 and input port Dl_l.
  • Node DI reads the value of counter C and determines it is the destination node, since the value of counter C is equal to zero. Therefore, the value of C does not have to be updated and the value of pointer P is not read.
  • the packet 219 is routed from destination node DI to source node SI, using the distributedly saved return path, for reprogramming the network.
  • Node DI determines to use output port Dl_2 for sending the packet 219 back to source node SI, using the identifier Dl_l of the input port Dl_l via which the packet 219 was received and the return relation stored in node DI .
  • the packet is sent to node R5, via output port Dl_2, link 217 and input port R5_4.
  • Node R5 reads the identifier ID from the packet 219, and detects that this identifier is stored in memory M5 as a pair ID, R5_l .
  • Node R5 determines to use output port R5_2 for sending the packet 219, from a combination of the input port identifier R5_l of input port R5_l and the return relation stored in node R5.
  • Node R5 determines that the value of the pointer P does not have to be updated since the value of the counter C is equal to zero.
  • the node R5 increases the counter C by one.
  • the information on the return path stored in memory M5 in the form of the pair identifier ID and identifier R5_l is removed.
  • the packet is sent to node R4, via output port R5_2, link 211 and input port R4_4.
  • Node R4 reads the identifier ID from the packet 219, and detects that this identifier is stored in memory M4 as a pair LD, R4_ l.
  • Node R4 determines to use output port R4_2 for sending the packet 219, from a combination of the input port identifier R4_l of input port R4_l and the return relation stored in node R4.
  • Node R4 updates the pointer P such that it points to the location where output port identifier Al is stored, and increases the counter C by one.
  • the information on the return path stored in memory M4 in the form of the pair identifier LD and identifier R4_l is removed.
  • the packet is sent to node SI, via output port R4_2, link 209 and input port Sl_2.
  • Source node SI read the identifier ID from the packet 219, detects that this identifier is not stored in its internal memory, not shown in Figure 2, and determines that it is the destination node.
  • the programming of the network may fail in a certain node before the destination node DI is reached.
  • this node will route the packet 219 to the source node SI.
  • the packet 219 travels the return path to the source node SI in order to reprogram the network.
  • Node R5 determines to use output port R5_2 for routing the packet 219 to the source node SI, using the combination of the input port identifier R5_l of input port R5_l and the return relation stored in node R5.
  • Node R5 determines that the value of the pointer P does not have to be updated, since the value of the counter C is equal to zero.
  • Node R5 increases the counter C by one.
  • the packet is sent to node R4, via output port R5_l, link 211 and input port R4_3. Subsequently, the packet 219 is further routed to source node SI, as described in a previous embodiment.
  • the reprogramming of a network may fail, for example because access to a certain resource is denied in a specific node.
  • the packet 219 is routed to destination node DI, but the programming of the network fails in node R5 and subsequently the packet 219 is routed to source node S using the return information stored in the nodes, as described in an earlier embodiment.
  • the packet 219 is sent to node R4.
  • Node R4 updates the pointer P such that it points to the location in the packet 219 where output port identifier Al is stored, and the value of the counter C is increased by one.
  • the reprogramming of the network fails in node R4 and this node routes the packet to destination node DI.
  • Node R4 determines to use output port R4_3 for sending packet 219, by reading the value of pointer P and using that value to read the output port identifier Al .
  • Node R4 updates the pointer P such that it points to the location where output port identifier A2 is stored, and the value of the counter C is decreased by one.
  • the packet 219 is sent to node R5, via output port R4_3, link 211 and input port R5_l, as described in an earlier embodiment.
  • the information stored in the packet 219 for routing of the packet from source node SI to destination node DI remains in the packet 219, while the information on the return path is stored in the nodes R4 and R5.
  • the packet 219 can be routed more than one time to the destination node DI via the same path, as described in this embodiment, and each time attempting to program the network.
  • information on the return path is not stored in all nodes visited by the packet 123 on the path from the source node S to the destination node D.
  • no return information has to be stored in the nodes related to that part of the return path.
  • no information on the return path is stored in memory M2 of node R2, when sending packet 123 from source node S to destination node D.
  • node R3 sends the packet 123 to node R2, via output port R3_2, link 117 and input port R2_4.
  • Node R2 can only use output port R2_2 for routing the packet 123 to source node S, as can be determined from its destination relation, and sends the packet 123 to node Rl, via output port R2_2, link 113 and input port Rl_4. Subsequently, node Rl sends the packet 123 to source node S, as described in a previous embodiment.

Abstract

A network for transporting data consists of a group of two or more nodes, such as switches, routers or computer systems, linked together. Data is transported from a source node to a destination node through the network. In packed-switched networks, small units of data called packets are routed through the network from a source node to a destination node. These packets can also be used to program the network. In some cases it is required that the packet travels the return path to the source node. In the present invention, the return path is derived from information stored in the nodes of the network.

Description

Return path derivation in packet-switched networks
TECHNICAL FIELD
The present invention relates to a method for determining the return path of a packet in a network, the network comprising a plurality of nodes and a plurality of links between the nodes, and wherein for each first node having at least one link with a second node, a link exists between the second node and the first node, the method being used when sending the packet from a source node to a destination node, via at least an intermediate node.
The present invention further relates to an integrated circuit, comprising a network, the network having a plurality of nodes and a plurality of links between the nodes, and wherein for each first node having at least one link with a second node, a link exists between the second node and the first node, the network being arranged to determine the return path of a packet when sending the packet from a source node to a destination node, via at least an intermediate node.
BACKGROUND ART
In general, a network for transporting data comprises a group of two or more devices, which are referred to as nodes, linked together. The nodes in a network may comprise switches, routers, or computer systems. These computer systems may also have peripheral devices that are necessary to make the computer system function. The communication path between two neighboring nodes in the network is referred to as a link. A link may be implemented by means of a single transmission channel. Alternatively, two links between two nodes can be combined in a single transmission channel. In different networks, two neighboring nodes may have three or more links for communication between these two nodes, in order to increase the bandwidth of the communication. All these links may be implemented in one single transmission channel as well. Data is transported from a source node to a destination node through the network. A network can be used, for example, for communication between several elements assembled on an integrated circuit, or for communication between several computer systems. Data can be transported through the network as a message or as a packet. A message is a user-defined data unit whereas a packet is a network-defined data unit. In so-called message-switched networks messages are routed through the network to their destination, whereas in packet-switched networks, packets are routed through the network to their destination. In case of packet-switched networks, a message that should be sent to a given destination is divided into several packets, which are sent to the destination. At the destination, the packets in a message are collected and reassembled into the original message. An advantage of packet-switched networks is that it allows sharing the same data path among many users in the network at a finer granularity, by breaking down the communication between the source and the destination into relatively smaller data units. In the remainder of this document, the words "packet" and "packet- switched" will be used for reasons of efficiency, but these words can also be read as "message" and "message-switched".
In packet-switched networks, besides sending data, the packets can also be used to program the network, for example to reserve or free resources, or to set up or remove connections. Examples of resources are the buffer capacity in a router or the bandwidth of a connection. An example of setting up a connection is to set a series of routers in a network such that one or more packets can be sent from a source node to a destination node, via that connection. When sharing the network among many users, an arbitration scheme combines the transmission of the packets over a single transmission channel. For example, Time Division Multiplexing (TDM) can be used, which combines data streams by assigning each stream a different time slot in a set. TDM repeatedly transmits data in a fixed sequence of time slots over a single transmission channel.
In some cases the reservation of resources or set up of a connection, for example, fails because this action cannot be executed in one of the nodes on the path via which the packet is routed. An example is the failure due to a lack of resources such as buffer capacity in a node along the path. As a result, the desired connection can not be set up.
Subsequently, reservations, for resources as well as setting up the connection, that have been made until that point of the path may have to be undone. It is therefore essential that the packet revisits the nodes of the path that it has visited before, i.e. it travels the return path to the source node. US2002/0031095 describes a method to set up the description of the return path, when sending a packet through a network. The network comprises modules that are flexibly networked by means of at least two bi-directional connection interfaces in a physical point-to-point connection in an arbitrary network topology. When a module forwards the packet to another module, the number of the receiving interface of that module is stored in the packet. In this way, the return path can be derived from the list of receiving interfaces stored in the packet and corresponding to the modules that the packet has visited.
It is a disadvantage of the prior art processor that the information on the return path is stored in the packet, which may increase the size of the packet, especially in case of packets containing solely the destination address instead of a complete description of the path through the network.
DISCLOSURE OF INVENTION
It is an object of the invention to provide an improved method for determining a return path of a packet in a network, which allows reducing the size of the packet.
The object is achieved with a method for determining the return path of packet in a network of the kind set forth, characterized in that the method comprises the step of storing information in the intermediate node for deriving the return path. The information on the return path is stored in nodes that the packet has visited on its path to the destination node. In case a failure occurs, for example, due to not being able to make reservations for resources in a specific node, the packet can derive its return path from the information saved in one or more of the nodes it has visited on its path to the destination node. No additional space is required in the packet to store information on the return path, which allows reducing the size of the packet. An advantageous embodiment of the invention is characterized in the method further comprises steps of storing information in each node visited by the packet for deriving the return path, when sending the packet from a source node to a destination node, instead of storing the information in only a limited number of nodes visited by the packet or even centrally in only one node. The information on the return path is distributedly saved in the nodes and when travelling the return path, the packet can travel from one node to the other, deriving information on the return path from each node. By storing information on the return path in all the nodes visited by the packet, the overhead for determining the return path can be reduced for each individual node.
An embodiment of the invention is characterized in that the information stored in the intermediate node comprises an identifier of the packet and information that encodes an output port of the intermediate node to be used for returning the packet. An advantage is that this information can be easily derived in the node and uniquely identifies the return path for each packet. According to the invention, an integrated circuit as defined in the introductory paragraph is characterized in that, the intermediate node is arranged to store information for deriving the return path. As a result, the size of the packets used in an on-chip communication network can be reduced, reducing the communication overhead. Preferred embodiments of an integrated circuit according to the invention are defined in the dependent claims.
BRIEF DESCRIPTION OF THE DRAWINGS
Figure 1 shows an embodiment of a network that uses the method for determining the return path of a packet in a network according to the invention, when sending a packet from a source node to a destination node using destination routing.
Figure 2 shows an embodiment of a network that uses the method for determining the return path of a packet in a network according to the invention, when sending a packet from a source node to a destination node using source routing.
DESCRIPTION OF EMBODIMENTS
Figure 1 shows an embodiment of a network that uses the method for determining the return path of a packet in a network according to the invention, when sending a packet from a source node to a destination node using destination routing, i.e. only information on the final destination is stored in the packet. Referring to 101, a network is shown, comprising nodes S, Rl, R2, R3 and D, which are coupled with links 107, 109, 111, 113, 115, 117, 119 and 121, via their input ports and output ports S_l, S_2, Rl_l, Rl_2, Rl_3, Rl_4, R2_l, R2 2, R2_3, R2_4, R3_l, R3_2, R3_3, R3_4, D_l and D_2. The network 101 may be a network, or part of a network, of an integrated circuit. The nodes S, Rl, R2, R3 and D may comprise routers or switches for sending a unit of data to its next destination. The nodes S, Rl, R2, R3 and D may also comprise more input ports and output ports for coupling to other nodes, not shown in Figure 1. For all nodes S, Rl, R2, R3 and D holds that if a first node has at least one link with a second node, also a link exists between the second node and the first node. The nodes S, Rl, R2, R3 and D have each stored a return relation, relating each input port of that node to an output port of that node such that when receiving a packet at said input port coming from a specific node, and sending the packet via said output port, it will be send to that specific node. The nodes Rl, R2, R3 comprise a memory Ml, M2 and M3 respectively. Nodes D and S comprise a memory as well, not shown in Figure 1. A packet 123 is sent from source node S to destination node D. The packet 123 is being arranged to program the network, e.g. to set-up or to remove connections, or to reserve or free resources, to name a few. An example of setting up a connection is to couple an input port of a certain node to an output port of that node in order to send the packet in the desired direction. Examples of resources are the buffer capacity in a router or the bandwidth of a connection, hi case the programming of the network is successful in each node, the packet is routed to the destination node D. However, the programming of the network may fail in a certain node, for example due to a lack of resources, such as buffer capacity. In that case it is essential that the packet travels the return path to the source node S in order to reprogram the network from that certain node onwards to the source node S, for example by releasing resources that were reserved. In this embodiment it is assumed that the programming of the network is successful until destination node D. The packet 123 comprises an identifier ID, a destination address DEST and data DAT used for programming the network. Each node S, Rl, R2, R3 and D has stored a destination relation, relating all destinations to the output ports of that node, in order to know which output port to use for sending a packet to a desired destination. Using this information, a node can determine which output port to use in order to send a packet to one of the neighboring nodes, given the destination address DEST of a packet received by that node. Both the destination relation and the return relation can be programmed in a programmable memory present in the nodes S, Rl, R2, R3 and D, not shown in Figure 1, for example. The destination address DEST is equal to the address of destination node D. Referring to 103, the path is shown that the packet 123 follows when sending the packet from source node S to destination node D. Referring to 105, the contents of the memories Ml, M2 and M3 are shown, when sending the packet 123 from source node S to destination node D. In a first step 1, the packet 123 is sent by source node S to node Rl, via output port S_l, link 107 and input port Rl_l. Node Rl reads the identifier ID from the packet 123, and stores it combined with an identifier Rl_l from input port Rl_ l in memory Ml, as a pair ID, Rl_l. Using the destination address DEST stored in packet 123 and its destination relation, node Rl determines which output port to use in order to forward the packet 123, which is output port Rl_3. In a next step 2, the packet 123 is sent to node R2, via output port Rl_3, link 111 and input port R2_l. Node R2 reads the identifier ID from the packet 123, and stores it combined with an identifier R2_l from input port R2__l in memory M2, as a pair ID, R2_l. Using the destination address DEST stored in packet 123 and its destination relation, node R2 determines which output port to use in order to forward the packet, which is output port R2_3. In a next step 3, the packet is sent to node R3, via output port R2_3, link 115 and input port R3_l. Node R3 reads the identifier ID from the packet 123, and stores it combined with an identifier R3_l from input port R3__l in memory M3, as a pair LD, R3_l. Using the destination address DEST stored in packet 123 and its destination relation, node R3 determines which output port to use in order to forward the packet, which is output port R3_3. In a next step 4, the packet is sent to destination node D, via output port R3_3, link 119 and input port D_l. Destination node D reads the destination address DEST stored in packet 123, and when comparing with its own address it decides that it is the destination node. In case the programming of the network fails in node D, the packet 123 is returned from destination node D to source node S, using the distributedly saved return path, for reprogramming of the network. Destination node D determines to use output port D_2 for sending the packet 123, from a combination of the identifier D_l of input port D_l via which the packet was received and the return relation stored in destination node D. In a next step 5, the packet 123 is sent to node R3, via output port D_2, link 121 and input port R3_4. Node R3 reads the identifier ID from the packet 123, and verifies that this identifier is stored in memory M3 as a pair LD, R3_l . Node R3 determines to use output port R3_2 for sending the packet, from a combination of the identifier R3_l of input port R3_l and the return relation stored in node R3. Subsequently, the information stored on the return path in memory M3 in the form of the pair identifier ID and identifier R3_l is removed. In a next step 6, the packet 123 is sent to node R2, via output port R3_2, link 117 and input port R2_4. Node R2 reads the identifier ID from the packet 123, and detects that this identifier is stored in memory M2 as a pair ID, R2_l . Node R2 determines to use output port R2_2 for sending the packet 123, from a combination of the identifier R2_l of input port R2_l and the return relation stored in node R2. Subsequently, the information stored on the return path in memory M2 in the form of the pair identifier LD and identifier R2_l is removed. In a next step 7, the packet 123 is sent to node Rl, via output port R2_2, link 113 and input port Rl_4. Node Rl reads the identifier ID from the packet 123, and detects that this identifier is stored in memory Ml as a pair ID, Rl_l. Node Rl determines to use output port R1 2 for sending the packet, from a combination of the identifier Rl_l of input port Rl_l and the return relation stored in node Rl. Subsequently, the information stored on the return path in memory Ml in the form of the pair identifier ID and identifier Rl_l is removed. In a next step 8, the packet 123 is sent to source node S, via output port Rl_2, link 113 and input port S_2. Source node S reads the identifier ID from the packet 123 and determines that it is the final destination of the packet 123 after detecting that the identifier ID is not stored in its internal memory, which is not shown in Figure 1. In this embodiment, the memories Ml, M2 and M3 may comprise a hash table or a content-addressable memory in order to efficiently implement the storage of the pair "identifier of the packet and identifier of the input port". The memories Ml, M2 and M3 may also comprise information on the return path of other packets than packet 123, not shown in Figure 1.
The information on the return path is derived from the nodes that the packet 123 visits when being routed from the destination node D to the source node S. The information is distributedly saved in the nodes and when travelling the return path, the packet can travel from one node to the other, deriving information on the return path from each node. As a result, no additional space is required in the packet to store information on the return path, which allows reducing the size of the packet. In other embodiments, the pair "identifier of the packet and identifier of the output port" is stored in the memory Ml, M2 and M3 for determination of the return path of the packet 123. The identifier of the output port is determined from the identifier of the input port via which the packet was received by a node and the return relation stored in that node. For example, after step 1 the node Rl reads the identifier ID from the packet 123 and stores it combined with an identifier Rl_2 in memory Ml , as a pair ID, Rl_2. The identifier Rl_2 is determined from a combination of the identifier Rl_l of input port Rl_l and the return relation stored in node Rl. After sending the packet 123 to node Rl in step 7, node Rl reads the identifier LD from packet 123 and verifies that this identifier is stored in memory Ml as a pair ID, Rl_2. Using the identifier Rl_2 of output port Rl_2 node Rl sends the packet 123 to source node S via output port Rl_2, link 109 and input port S_2. In case the number of input ports of the nodes Rl, R2 and R3 is larger than the number of output ports, storing the identifiers of the output ports instead of the identifiers of the input ports in memory Ml, M2 and M3 for determination of the return path requires less storage space.
In other embodiments, the programming of the network may fail in a certain node before the destination node D is reached. Referring to Figure 1, in case programming of the network fails in node R3, this node will route the packet 123 to source node S. As already mentioned, is it essential that the packet travels the return path to the source node S in order to reprogram the network. In this embodiment reprogramming of the network involves undoing of reservations that have been made until that point of the path. In different embodiments, reprogramming of the network may also include finding an alternative path to the destination node, during travelling the return path. Node R3 determines to use output port R3_2 for sending the packet from a combination of the identifier R3_l of input port R3_l via which the packet 123 was received and the return relation stored in node R3. In a next step 6, the packet is sent to node R2, via output port R3_2, link 117 and input port R2_4. Subsequently, the packet 123 is routed to source node S, as described in a previous embodiment.
In different embodiments, the reprogramming of a network may fail in a certain node, for example because access to a certain resource is denied as it is already being used. Referring to Figure 1, a packet is routed to destination node D, but the programming of node R3 fails and subsequently the packet is routed to source node S using the information on the return path stored in the nodes Rl and R2, as described in a previous embodiment. The reprogramming of the network fails in node R2, as access to a resource of this node is denied. The node R2 reads the destination address DEST stored in packet 123, and using this destination address and the destination relation it determines to use output port R2_4 for routing the packet to the destination node D. The information on the return path, stored in the form of pair LD, R2_l in memory M2, remains present in memory M2. In a next step 3, the packet is sent to node R3, via output port R2_3, link 115 and input port R3_l. In node R3, a new attempt is made for programming the network. If this attempt succeeds, the packet 123 is sent to destination node D, as described in a previous embodiment. If the attempt fails, the packet is routed to source node S, as also described in a previous embodiment.
In another embodiment, a different method for deriving an unique identifier of the packet may be used. For example, when using a time-division multiplexing arbitration scheme a slot table is used for a router in order to determine which output port of that router is connected to which unique input port of that router in a given time slot. As a result, a time slot can be used to uniquely identify a packet and to determine the return path, as follows. When travelling from a source node to a destination node, the time slot during which the packet is sent by a node is stored in the packet, and the value of the time slot is increased by one for each node, since it takes one slot to travel between two neighboring nodes. In case the packet has to travel the return path, it is sent to a node, for example to node R2 via input port R2_4. Assuming that the return relation of input port R2_4 is unique, output port R2_3 is uniquely identified by applying the return relation to input port R2_4. Next, using the time slot stored in the packet in combination with the identifier of output port R2_3, the identifier of the input port via which the packet was received when travelling from the source node to the destination node, i.e. R2_l, can be derived from the router table. Next, using the return relation and the identifier of the input port R2_l, the identifier of the output port R2_2 can be determined, and this output port is used for sending the packet in the direction of the source node, i.e. travelling the return path. Prior to sending the packet the value of the time slot stored in the packet is lowered by one. Figure 2 shows an embodiment of a network that uses the method for determining the return path of a packet in a network according to the invention, when sending a packet from a source node to a destination node using source routing, i.e. the packet comprises information on the routing of that packet. The information on the routing may be stored in the packet in the form of a series of output ports of subsequent nodes, so that each node detects from the packet which output port to use for sending the packet to the next node. While the packet is being routed to a destination node, information on the return path is being stored in the nodes. Referring to 201, a network is shown comprising nodes SI, R4, R5 and DI, which are connected with links 207, 209, 211, 213, 215 and 217, via their input ports and output ports Sl_l, Sl_2, R4_l, R4_2, R4_3, R4_4, R5_l, R5_2, R5_3, R5_4, Dl_l and
Dl_2. The network 201 may be a network, or part of a network, of an integrated circuit. The nodes SI, R4, R5 and DI may comprise routers or switches for sending a unit of data to its next destination. The nodes SI, R4, R5 and DI may also comprise more input ports and output ports for coupling to other nodes, not shown in Figure 2. A packet 219 is sent from source node S 1 to destination node DI . The nodes R4 and R5 comprise a memory M4 and M5 respectively. Nodes SI and DI comprise a memory as well, not shown in Figure 2. For all nodes SI, R4, R5, and DI holds that if a first node has at least one link with a second node, also link exists between the second node and the first node. The nodes SI, R4, R5, and DI have stored a return relation, relating each input port of that node to an output port of that node such that when receiving a packet at said input port coming from a specific node, and sending the packet via said output port, it will be send to that specific node. The packet 219 is being arranged to program the network. In case the programming of the network is successful in each node, the packet is routed to the destination node D. However, the programming of the network may fail in a certain node, for example due to a lack of resources. In that case it is essential that the packet travels the return path to the source node in order to reprogram that part of the network visited so far. In this embodiment it is assumed that the programming of the network is successful until destination node DI. Referring to 203, the path is shown that the packet 219 follows when sending the packet 219 from source node SI to destination node DI. Referring to 205, the contents of the memories M4 and M5 are shown, when sending the packet from source node SI to destination node DI. Packet 219 comprises an identifier ID, a pointer P, output port identifiers Al and A2, a counter C and data DAT. The identifier LD provides for a unique identification of the packet 219. The pointer P points to the location within the packet 219 where the output port identifier is stored of the output port that should be used for sending the packet. The output port identifiers Al and A2 uniquely identify the output ports via which the packet should be sent. Counter C determines the total number of nodes that should be passed before reaching the destination node D. The data DAT are used for programming the network. In other embodiments, different encodings for source routing are possible, as known by the person skilled in the art. Before sending the packet 219 from source node S 1 to destination node DI, the pointer P is defined such that it points to the location of output port identifier Al in packet 219. Output port identifier Al is set equal to the output port identifier R4_3 of output port R4_3, and output port identifier A2 is set to the output port identifier R5_3 of output port R5_3. The counter C is set to 2. In a first step 1, the packet 219 is sent by source node SI to node R4, via output port Sl_l, link 207 and input port R4_l . For selecting the proper output port in order to send the packet 219, the source node SI must have information about the network it is connected to, for example in the form of a destination relation stored in the node SI. Node R4 reads the value of counter C and detects it is not the destination node, since the value of counter C is not equal to zero. The value of the counter C is lowered by one. Node R4 reads the identifier LD from the packet 219, and stores it combined with the identifier R4_l from input port R4_l in memory M4, as a pair ID, R4_l. Node R4 determines to use output port R4_3 for sending the packet 219, by reading the value of pointer P and using that value to read the output port identifier Al. Node R4 updates the pointer P such that it points to the location in packet 219 where output port identifier A2 is stored. In a next step 2, the packet 219 is sent to node R5, via output port R4_3, link 211 and input port R5_l . Node R5 reads the counter C and determines it is not the destination node, since the value of the counter C is not equal to zero. The value of the counter C is lowered by a value of one. Node R5 reads the identifier LD from the packet 219, and stores it combined with the identifier R5_l from input port R5_l in memory M5, as a pair LD, R5_l . Node R5 determines to use output port R5_3 for sending the packet 219, by reading the value of pointer P and using that value to read the output port identifier A2. Node R5 determines that the pointer P does not have to be updated, since the value of the counter C is equal to zero. In a next step 3, the packet 219 is sent to node DI, via output port R5_3, link 213 and input port Dl_l. Node DI reads the value of counter C and determines it is the destination node, since the value of counter C is equal to zero. Therefore, the value of C does not have to be updated and the value of pointer P is not read. In case the programming of the network fails in node DI, the packet 219 is routed from destination node DI to source node SI, using the distributedly saved return path, for reprogramming the network. Node DI determines to use output port Dl_2 for sending the packet 219 back to source node SI, using the identifier Dl_l of the input port Dl_l via which the packet 219 was received and the return relation stored in node DI . In a next step 4, the packet is sent to node R5, via output port Dl_2, link 217 and input port R5_4. Node R5 reads the identifier ID from the packet 219, and detects that this identifier is stored in memory M5 as a pair ID, R5_l . Node R5 determines to use output port R5_2 for sending the packet 219, from a combination of the input port identifier R5_l of input port R5_l and the return relation stored in node R5. Node R5 determines that the value of the pointer P does not have to be updated since the value of the counter C is equal to zero. Next, the node R5 increases the counter C by one. The information on the return path stored in memory M5 in the form of the pair identifier ID and identifier R5_l is removed. In a next step 5, the packet is sent to node R4, via output port R5_2, link 211 and input port R4_4. Node R4 reads the identifier ID from the packet 219, and detects that this identifier is stored in memory M4 as a pair LD, R4_ l. Node R4 determines to use output port R4_2 for sending the packet 219, from a combination of the input port identifier R4_l of input port R4_l and the return relation stored in node R4. Node R4 updates the pointer P such that it points to the location where output port identifier Al is stored, and increases the counter C by one. The information on the return path stored in memory M4 in the form of the pair identifier LD and identifier R4_l is removed. In a next step 6, the packet is sent to node SI, via output port R4_2, link 209 and input port Sl_2. Source node SI read the identifier ID from the packet 219, detects that this identifier is not stored in its internal memory, not shown in Figure 2, and determines that it is the destination node.
Referring to Figure 2, in different embodiments the programming of the network may fail in a certain node before the destination node DI is reached. Referring to Figure 2, in case programming of the network fails in node R5, this node will route the packet 219 to the source node SI. As already mentioned, is it essential that the packet 219 travels the return path to the source node SI in order to reprogram the network. Node R5 determines to use output port R5_2 for routing the packet 219 to the source node SI, using the combination of the input port identifier R5_l of input port R5_l and the return relation stored in node R5. Node R5 determines that the value of the pointer P does not have to be updated, since the value of the counter C is equal to zero. Node R5 increases the counter C by one. In a next step 5, the packet is sent to node R4, via output port R5_l, link 211 and input port R4_3. Subsequently, the packet 219 is further routed to source node SI, as described in a previous embodiment.
Referring to Figure 2, in different embodiments the reprogramming of a network may fail, for example because access to a certain resource is denied in a specific node. The packet 219 is routed to destination node DI, but the programming of the network fails in node R5 and subsequently the packet 219 is routed to source node S using the return information stored in the nodes, as described in an earlier embodiment. The packet 219 is sent to node R4. Node R4 updates the pointer P such that it points to the location in the packet 219 where output port identifier Al is stored, and the value of the counter C is increased by one. Next, the reprogramming of the network fails in node R4 and this node routes the packet to destination node DI. Node R4 determines to use output port R4_3 for sending packet 219, by reading the value of pointer P and using that value to read the output port identifier Al . Node R4 updates the pointer P such that it points to the location where output port identifier A2 is stored, and the value of the counter C is decreased by one. In a next step 2, the packet 219 is sent to node R5, via output port R4_3, link 211 and input port R5_l, as described in an earlier embodiment. The information stored in the packet 219 for routing of the packet from source node SI to destination node DI remains in the packet 219, while the information on the return path is stored in the nodes R4 and R5. As a result, the packet 219 can be routed more than one time to the destination node DI via the same path, as described in this embodiment, and each time attempting to program the network.
Referring again to Figure 1, in different embodiments information on the return path is not stored in all nodes visited by the packet 123 on the path from the source node S to the destination node D. In case a part of the return path is unique and equal to the path the packet travels from source node S to destination node D, no return information has to be stored in the nodes related to that part of the return path. For example, in an embodiment where node R2 has only two input ports R2_l and R2_4, and two output ports R2_3 and R2_2, no information on the return path is stored in memory M2 of node R2, when sending packet 123 from source node S to destination node D. In case the programming of the network fails in node R3, the packet 123 is routed to the source node S, as described in a previous embodiment. Node R3 sends the packet 123 to node R2, via output port R3_2, link 117 and input port R2_4. Node R2 can only use output port R2_2 for routing the packet 123 to source node S, as can be determined from its destination relation, and sends the packet 123 to node Rl, via output port R2_2, link 113 and input port Rl_4. Subsequently, node Rl sends the packet 123 to source node S, as described in a previous embodiment. In this embodiment it is assumed that node R2 is not allowed to sent the packet back to node R3, when node R2 has received the packet from node R3 and the reprogramming of the network in node R2 is successful. It should be noted that the above-mentioned embodiments illustrate rather than limit the invention, and that those skilled in the art will be able to design many alternative embodiments without departing from the scope of the appended claims. In the claims, any reference signs placed between parentheses shall not be construed as limiting the claim. The word "comprising" does not exclude the presence of elements or steps other than those listed in a claim. The word "a" or "an" preceding an element does not exclude the presence of a plurality of such elements. In the device claim enumerating several means, several of these means can be embodied by one and the same item of hardware. The mere fact that certain measures are recited in mutually different dependent claims does not indicate that a combination of these measures cannot be used to advantage.

Claims

CLAIMS:
1. A method for determining the return path of a packet in a network, the network comprising a plurality of nodes and a plurality of links between the nodes, and wherein for each first node having at least one link with a second node, a link exists between the second node and the first node, the method being used when sending the packet from a source node to a destination node, via at least an intermediate node, characterized in that the method comprises the step of storing information in the intermediate node for deriving the return path.
2. A method for determining the return path of a packet in a network according to claim 1 , characterized in that the method further comprises steps of storing information in each node visited by the packet for deriving the return path, when sending the packet from a source node to a destination node.
3. A method for determining the return path of a packet in a network according to claim 1 , characterized in that the information stored in the intermediate node comprises an identifier of the packet and information that encodes an output port of the intermediate node to be used for returning the packet.
4. An integrated circuit, comprising a network, the network having a plurality of nodes and a plurality of links between the nodes, and wherein for each first node having at least one link with a second node, a link exists between the second node and the first node, the network being arranged to determine the return path of a packet when sending the packet from a source node to a destination node, via at least an intermediate node, characterized in that, the intermediate node is arranged to store information for deriving the return path.
5. An integrated circuit according to claim 4, characterized in that each node of the plurality of nodes is arranged to store information for deriving the return path.
6. An integrated circuit according to claim 4, characterized in that the intermediate node is arranged to store an identifier of the packet and information that encodes an output port of the intermediate node to be used for returning the packet.
PCT/IB2003/005261 2002-12-18 2003-11-18 Return path derivation in packet-switched networks WO2004056051A1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US10/539,199 US20060077974A1 (en) 2002-12-18 2003-11-18 Return path derivation in packet-switched networks
AU2003276606A AU2003276606A1 (en) 2002-12-18 2003-11-18 Return path derivation in packet-switched networks
JP2004559991A JP2006511115A (en) 2002-12-18 2003-11-18 Return path derivation in packet-switched networks
EP03813214A EP1576773A1 (en) 2002-12-18 2003-11-18 Return path derivation in packet-switched networks

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP02080356 2002-12-18
EP02080356.5 2002-12-18

Publications (1)

Publication Number Publication Date
WO2004056051A1 true WO2004056051A1 (en) 2004-07-01

Family

ID=32524042

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IB2003/005261 WO2004056051A1 (en) 2002-12-18 2003-11-18 Return path derivation in packet-switched networks

Country Status (7)

Country Link
US (1) US20060077974A1 (en)
EP (1) EP1576773A1 (en)
JP (1) JP2006511115A (en)
KR (1) KR20050087838A (en)
CN (1) CN1729661A (en)
AU (1) AU2003276606A1 (en)
WO (1) WO2004056051A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8634428B2 (en) 2009-09-21 2014-01-21 At&T Intellectual Property I, L.P. Method and system for symmetric routing

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2892877B1 (en) * 2005-10-28 2008-01-11 Centre Nat Rech Scient ROUTER AND ROUTING NETWORK
WO2011072274A1 (en) 2009-12-11 2011-06-16 Juniper Networks, Inc. Media access control address translation in virtualized environments
US9398568B2 (en) * 2010-11-24 2016-07-19 Koninklijkle Philips Electronics N.V. System and method for optimizing data transmission to nodes of a wireless mesh network
JP5836477B2 (en) * 2012-03-09 2015-12-24 三菱電機株式会社 Data communication apparatus, data communication system, and data communication method
US8989017B2 (en) * 2012-12-14 2015-03-24 Intel Corporation Network congestion management by packet circulation
US9282036B2 (en) 2013-02-20 2016-03-08 International Business Machines Corporation Directed route load/store packets for distributed switch initialization
US9276760B2 (en) 2013-03-15 2016-03-01 International Business Machines Corporation Directed route load/store packets for distributed switch initialization

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6271946B1 (en) * 1999-01-25 2001-08-07 Telcordia Technologies, Inc. Optical layer survivability and security system using optical label switching and high-speed optical header generation and detection

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5191650A (en) * 1989-08-16 1993-03-02 International Business Machines Corporation Virtual chains for session initiation in a distributed computer network
WO1992022971A1 (en) * 1991-06-18 1992-12-23 Fujitsu Limited Method for determining alternative route
JP2856050B2 (en) * 1993-11-30 1999-02-10 日本電気株式会社 Routing control method
JP3615057B2 (en) * 1998-07-17 2005-01-26 株式会社東芝 Label switching path setting method and node device
DE10037969C2 (en) * 2000-08-03 2002-10-24 Siemens Ag Process for the detection of flexible networking of modules with any network topology and for the exchange of information between such modules

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6271946B1 (en) * 1999-01-25 2001-08-07 Telcordia Technologies, Inc. Optical layer survivability and security system using optical label switching and high-speed optical header generation and detection

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
AWDUCHE D O ET AL: "RSVP-TE: Extensions to RSVP for LSP Tunnels", IETF RFC, 1 February 2001 (2001-02-01), XP002199928 *
PERKINS C E ET AL: "Cd-hoc On-Deman Distance Vector Routing", PROCEEDINGS WMCSA, XX, XX, 25 February 1999 (1999-02-25), pages 90 - 100, XP002173721 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8634428B2 (en) 2009-09-21 2014-01-21 At&T Intellectual Property I, L.P. Method and system for symmetric routing

Also Published As

Publication number Publication date
JP2006511115A (en) 2006-03-30
CN1729661A (en) 2006-02-01
EP1576773A1 (en) 2005-09-21
US20060077974A1 (en) 2006-04-13
KR20050087838A (en) 2005-08-31
AU2003276606A1 (en) 2004-07-09

Similar Documents

Publication Publication Date Title
US5953312A (en) Method and apparatus for determining alternate routes in a network using a connection-oriented protocol
EP2613479B1 (en) Relay device
EP0234191B1 (en) Packet-switched communications network with parallel virtual circuits for re-routing message packets
US5687168A (en) Link state routing device in ATM communication system
US6434612B1 (en) Connection control interface for asynchronous transfer mode switches
EP0580281B1 (en) Network routing and addressing
US5926101A (en) Method and apparatus for routing messages in a network of nodes with minimal resources
US5216670A (en) Message stripping protocol for a communication network
US20050135343A1 (en) Cluster system, cluster member, and failure recovery method and program thereof
US7366112B2 (en) Communication network control system, control method, node and program
JPS62188450A (en) Dtermination of alternate route
US7991006B2 (en) Filtering redundant packets in computer network equipments
US7983195B2 (en) Method of routing virtual links in a frame-switching network with guaranteed determinism
US8295202B2 (en) Dynamic connectivity determination
CN112448900A (en) Data transmission method and device
JPS60264142A (en) Route designating method
CN103931147A (en) Path diversity in a connection-oriented network
US6992979B2 (en) Maintaining information to optimize restorable dynamic routing with shared backup
US20070110052A1 (en) System and method for the static routing of data packet streams in an interconnect network
US20080123666A1 (en) Electronic Device And Method Of Communication Resource Allocation
US20060077974A1 (en) Return path derivation in packet-switched networks
JP2003163682A (en) Routing device and router device
JP2000324127A (en) Bypass selection method and system, fault recovery method and system, node and network system
FI104593B (en) Hierarchical synchronization procedure
CN112751768A (en) Service message forwarding method, device and computer storage medium

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): BW GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2003813214

Country of ref document: EP

ENP Entry into the national phase

Ref document number: 2006077974

Country of ref document: US

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 1020057011337

Country of ref document: KR

Ref document number: 10539199

Country of ref document: US

Ref document number: 20038A66434

Country of ref document: CN

WWE Wipo information: entry into national phase

Ref document number: 2004559991

Country of ref document: JP

WWP Wipo information: published in national office

Ref document number: 1020057011337

Country of ref document: KR

WWP Wipo information: published in national office

Ref document number: 2003813214

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 10539199

Country of ref document: US