Nova Patents
US8902892B2

Collective network routing

Summary by NHIP

Class-Based Network Routing

The method routes data packets by identifying their class identifier to select specific routes within embedded virtual logical networks. Nodes process identified packet collectives to compute results without reducing the total number of packets routed through the network.

Claim Score by NHIP

Read claim 1, the broadest

Abstract

Disclosed are a unified method and apparatus to classify, route, and process injected data packets into a network so as to belong to a plurality of logical networks, each implementing a specific flow of data on top of a common physical network. The method allows to locally identify collectives of packets for local processing, such as the computation of the sum, difference, maximum, minimum, or other logical operations among the identified packet collective. Packets are injected together with a class-attribute and an opcode attribute. Network routers, employing the described method, use the packet attributes to look-up the class-specific route information from a local route table, which contains the local incoming and outgoing directions as part of the specifically implemented global data flow of the particular virtual network.

US8902892B2, drawing sheet 1
Sheet 1 of 4

Term

Projected expiry 18 October 2026.

  1. Priority
  2. Filed
  3. Granted
  4. Today
  5. Projected expiry

19 claims: 4 independent, 15 dependent

  1. 1
    Broadest claimClaim Score 12, narrow(NHIP)A method of routing data packets in a computer network having a multitude of nodes and a multitude of links connecting the nodes together, each data packet including a class identifier identifying the data packet as belonging to one of a plurality of packet classes, the method comprising:embedding a plurality of configurable virtual logical networks in the computer network, each of the virtual logical networks being formed by a configurable set of the nodes of the computer network, and each of the packet classes being associated with one of said virtual logical networks;each node, for each of a defined set of data packets, looking at the data packet to identify the class of the data packet from the class identifier of the data packet;and routing the data packet from the node based on the identified class of the data packet;and wherein an identified collective of the data packets is processed to compute a number of resulting data packets based on data of the identified collective of packets without reducing the number of data packets routed through the network;wherein each node includes a route descriptor table including one or more route descriptors, each of the one or more route descriptors specifying one or more routes from said each node to one or more other nodes, and wherein each of the plurality of packet classes is associated with one of the one or more route descriptors, and wherein the routing step includes the steps of, each node, for each of the defined set of data packets, identifying the one of the route descriptors, in the route descriptor table of said each node, associated with the class of said each data packet;and routing the data packet from said each node to one or more of the other nodes on the one or more routes specified by the route descriptor with which the class of said each data packet is associated;and wherein to route the data packet through the one of the virtual logical networks associated with the one of the packet classes to which the data packet belongs;and changing the configuration of one or more of the configurable virtual logical networks by changing which ones of the nodes are in the configurable set of the nodes forming said one or more of the configurable virtual logical networks by changing one or more of the route descriptors of one or more of the route descriptor tables;and wherein: each node includes one or more channels, each of the channels for sending the data packets from said each node to a respective one of the other nodes;each route descriptor, of the route descriptor table of said each node, identifies one or more of said channels for routing the data packets, of the packet class associated with said each route descriptor, from said each node to one or more of the other nodes;the route descriptor of each node includes two bits associated with each of the channels of said each node;for each route descriptor of each node, a first of the two bits of the route descriptor indicates whether the channel associated with said first bit is a source channel for the packet class associated with said each route descriptor, and a second of the two bits of the route descriptor indicates whether the channel associated with said second bit is a target channel for data packets belonging to the packet class associated with said each route descriptor;and for each of the nodes: if one of the data packets enters said each node from one of the channels of the node that is indicated as a source channel by the route descriptor associated with the packet class to which said one of the data packets belongs, then routing said one of the data packets to the channels of the node indicated as target channels by the route descriptor associated with the packet class to which said one of the data packets belongs;and if one of the data packets enters said each node from one of the channels of the node that is not indicated as a source channel by the route descriptor associated with the packet class to which said one of the data packets belongs, then routing said one of the data packets to all the channels of the node indicated as source channels by the route descriptor associated with the packet class to which said one of the data packets belongs.
  2. 5
    An apparatus for routing data packets in a computer network having a multitude of nodes and a multitude of links connecting the nodes together, each data packet including a class identifier identifying the data packet as belonging to one of a plurality of packet classes, the apparatus comprising:a plurality of checking means, each of the checking means being located at a respective one of the nodes for checking each of a defined set of data packets, to identify the class of the data packet from the class identifier of the data packet;and a plurality of routing means, each of the routing means being located at a respective one of the nodes to route data packets from said one node to another one of the nodes based on the class of the data packets;and wherein an identified collective of the data packets is processed to compute a number of resulting data packets based on data of the identified collective of packets without reducing the number of data packets routed through the network;wherein a plurality of configurable virtual logical networks are embedded in the computer network, each of the virtual logical networks being formed by a configurable set of the nodes of the computer network, and each of the packet classes is associated with one of said virtual logical networks;wherein each node includes a route descriptor table including one or more route descriptors, each route descriptor specifying one or more routes from said each node to one or more of the other nodes, and wherein each of the plurality of packet classes is associated with one of the route descriptors, and wherein the data packets are routed from said one node to one or more of the other nodes by: each node, for each of the defined set of data packets, identifying the one of the route descriptors, in the route descriptor table of said each node, associated with the class of said each data packet;and routing the data packet from said each node to one or more of the other nodes on the one or more routes specified by the route descriptor with which the class of said each data packet is associated to route the data packet through the one of the virtual logical networks associated with the one of the packet classes to which the data packet belongs;and wherein: the configuration of one or more of the configurable virtual logical networks is changed by changing which ones of the nodes are in the configurable set of the nodes forming said one or more of the configurable virtual logical networks by changing one or more of the route descriptors of one or more of the route descriptor tables;each node includes one or more channels, each of the channels for sending the data packets from said each node to a respective one of the other nodes;each route descriptor, of the route descriptor table of said each node, identifies one or more of said channels for routing the data packets, of the packet class associated with said each route descriptor, from said each node to one or more of the other nodes;the route descriptor of each node includes two bits associated with each of the channels of said each node;for each route descriptor of each node, a first of the two bits of the route descriptor indicates whether the channel associated with said first bit is a source channel for the packet class associated with said each route descriptor, and a second of the two bits of the route descriptor indicates whether the channel associated with said second bit is a target channel for data packets belonging to the packet class associated with said each route descriptor;and for each of the nodes: if one of the data packets enters said each node from one of the channels of the node that is indicated as a source channel by the route descriptor associated with the packet class to which said one of the data packets belongs, then routing said one of the data packets to the channels of the node indicated as target channels by the route descriptor associated with the packet class to which said one of the data packets belongs;and if one of the data packets enters said each node from one of the channels of the node that is not indicated as a source channel by the route descriptor associated with the packet class to which said one of the data packets belongs, then routing said one of the data packets to all the channels of the node indicated as source channels by the route descriptor associated with the packet class to which said one of the data packets belongs.
  3. 11
    A program storage device readable by machine, tangibly embodying a program of instructions executable by the machine to perform method steps for routing data packets in a computer network having a multitude of nodes and a multitude of links connecting the nodes together, each data packet including a class identifier identifying the data packet as belonging to one of a plurality of packet classes, said method steps comprising:embedding a plurality of configurable virtual logical networks in the computer network, each of the virtual logical networks being formed by a configurable set of the nodes of the computer network, and each of the packet classes being associated with one of said virtual logical networks;each node, for each of a defined set of data packets, looking at the data packet to identify the class of the data packet from the class identifier of the data packet;and routing the data packet from said each node to another one of the nodes based on the identified class of the data packet;and wherein an identified collective of the data packets is processed to compute a number of resulting data packets based on data of the identified collective of packets without reducing the number of data packets routed through the network;wherein each node includes a route descriptor table including one or more route descriptors, each route descriptor specifying one or more routes from said each node to one or more of the other nodes, and wherein each of the plurality of packet classes is associated with one of the route descriptors, and wherein the routing step includes the steps of, each node, for each of the defined set of data packets, identifying the one of the route descriptors, in the route descriptor table of said each node, associated with the class of said each data packet;and routing the data packet from said each node to or more one of the other nodes on the one or more routes specified by the route descriptor with which the class of said each data packet is associated to route the data packet through the one of the virtual logical networks associated with the one of the packet classes to which the data packet belongs;and changing the configuration of one or more of the configurable virtual logical networks by changing which ones of the nodes are in the configurable set of the nodes forming said one or more of the configurable virtual logical networks by changing one or more of the route descriptors of one or more of the route descriptor tables;and wherein: each node includes one or more channels, each of the channels for sending the data packets from said each node to a respective one of the other nodes;each route descriptor, of the route descriptor table of said each node, identifies one or more of said channels for routing the data packets, of the packet class associated with said each route descriptor, from said each node to one or more of the other nodes;the route descriptor of each node includes two bits associated with each of the channels of said each node;for each route descriptor of each node, a first of the two bits of the route descriptor indicates whether the channel associated with said first bit is a source channel for the packet class associated with said each route descriptor, and a second of the two bits of the route descriptor indicates whether the channel associated with said second bit is a target channel for data packets belonging to the packet class associated with said each route descriptor;and for each of the nodes: if one of the data packets enters said each node from one of the channels of the node that is indicated as a source channel by the route descriptor associated with the packet class to which said one of the data packets belongs, then routing said one of the data packets to the channels of the node indicated as target channels by the route descriptor associated with the packet class to which said one of the data packets belongs;and if one of the data packets enters said each node from one of the channels of the node that is not indicated as a source channel by the route descriptor associated with the packet class to which said one of the data packets belongs, then routing said one of the data packets to all the channels of the node indicated as source channels by the route descriptor associated with the packet class to which said one of the data packets belongs.
  4. 15
    A method of identifying a collective of data packets on a computer system, the computer system including a multitude of interconnected processing nodes, and wherein a multitude of data packets are routed in the computer system, the method comprising the steps of:allocating a class identifier to identify a given class of data packets;providing each data packet in said given class with said class identifier identifying the data packet as belonging to one of a plurality of packet classes;providing each of the nodes with a set of channels for receiving and holding data packets;and each of at least some of the nodes, i) identifying a subset of the set of channels of the node, ii) evaluating the data packets at the node to identify the class of the data packet from the class identifier of the data packet, and iii) identifying said collective as complete when all of the channels of said subset have a data packet of the given class;and wherein an identified collective of the data packets is processed to compute a number of resulting data packets based on data of the identified collective of packets without reducing the number of data packets routed through the network;wherein a plurality of configurable virtual logical networks are embedded in the computer network, each of the virtual logical networks being formed by a configurable set of the nodes of the computer network, and each of the packet classes is associated with one of said virtual logical networks;wherein each of said at least some of the nodes includes a route descriptor table including one or more route descriptors, each the route descriptor specifying one or more routes for data packets from said node to one or more of the other nodes, and each of the plurality of packet classes is associated with one of the route descriptors, and further comprising the step of identifying the route descriptor, of the route descriptor table, associated with the class of the data packet to identify one or more routes for the collective of data packets from the node to one or more of the other nodes to route the data packet through the one or more of the virtual logical networks associated with the one of the packet classes to which the data packet belongs;and wherein: the configuration of one or more of the configurable virtual logical networks is changed by changing which ones of the nodes are in the configurable set of the nodes forming said one or more of the configurable virtual logical networks by changing one or more of the route descriptors of one or more of the route descriptor tables;each node includes one or more channels, each of the channels for sending the data packets from said each node to a respective one of the other nodes;each route descriptor, of the route descriptor table of said each node, identifies one or more of said channels for routing the data packets, of the packet class associated with said each route descriptor, from said each node to one or more of the other nodes;the route descriptor of each node includes two bits associated with each of the channels of said each node;for each route descriptor of each node, a first of the two bits of the route descriptor indicates whether the channel associated with said first bit is a source channel for the packet class associated with said each route descriptor, and a second of the two bits of the route descriptor indicates whether the channel associated with said second bit is a target channel for data packets belonging to the packet class associated with said each route descriptor;and for each of the nodes: if one of the data packets enters said each node from one of the channels of the node that is indicated as a source channel by the route descriptor associated with the packet class to which said one of the data packets belongs, then routing said one of the data packets to the channels of the node indicated as target channels by the route descriptor associated with the packet class to which said one of the data packets belongs;and if one of the data packets enters said each node from one of the channels of the node that is not indicated as a source channel by the route descriptor associated with the packet class to which said one of the data packets belongs, then routing said one of the data packets to all the channels of the node indicated as source channels by the route descriptor associated with the packet class to which said one of the data packets belongs.