Patents by Inventor Dennis C. Ferguson

Dennis C. Ferguson has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Patent number: 7903659
    Abstract: A network device switches variable length data units from a source to a destination in a network. An input port receives the variable length data unit and a divider divides the variable length data unit into uniform length data units for temporary storage in the network device. A distributed memory includes a plurality of physically separated memory banks addressable using a single virtual address space and an input switch streams the uniform length data units across the memory banks based on the virtual address space. The network device further includes an output switch for extracting the uniform length data units from the distributed memory by using addresses of the uniform length data units within the virtual address space. The output switch reassembles the uniform length data units to reconstruct the variable length data unit. An output port receives the variable length data unit and transfers the variable length data unit to the destination.
    Type: Grant
    Filed: May 4, 2009
    Date of Patent: March 8, 2011
    Assignee: Juniper Networks, Inc.
    Inventors: Pradeep S. Sindhu, Dennis C. Ferguson, Bjorn O. Liencres, Nalini Agarwal, Hann-Hwan Ju, Raymond Marcelino Manese Lim, Rasoul Mirzazadeh Oskouy, Sreeram Veeragandham
  • Patent number: 7864769
    Abstract: Techniques are described to replicate multicast packets in accordance with a hierarchical data structure. For example, upon receiving a multicast packet, a packet-forwarding engine may communicate the packet to packet-forwarding engines corresponding to starting nodes of the hierarchical data structure. The packet-forwarding engines corresponding to starting nodes of the hierarchical data structure may replicate the multicast packet for local interface cards, and forward the replicated packets to the network. Furthermore, the packet-forwarding engines may replicate the packet for packet-forwarding engines corresponding to downstream nodes. In this manner, the packet replication process is distributed throughout the router decreasing the complexity of necessary replication hardware. Furthermore, the packet replication process is highly scalable resulting in a latency of one fabric hop when the number of packet-forwarding engines doubles.
    Type: Grant
    Filed: August 18, 2008
    Date of Patent: January 4, 2011
    Assignee: Juniper Networks, Inc.
    Inventors: Hsien-Chung Woo, Dennis C. Ferguson, Lawrence Hui
  • Publication number: 20100309916
    Abstract: A method and apparatus for in-line processing a data packet while routing the packet through a router in a system transmitting data packets between a source and a destination over a network including the router. The method includes receiving the data packet and pre-processing layer header data for the data packet as the data packet is received and prior to transferring any portion of the data packet to packet memory. The data packet is thereafter stored in the packet memory. A routing through the router is determined including a next hop index describing the next connection in the network. The data packet is retrieved from the packet memory and a new layer header for the data packet is constructed from the next hop index while the data packet is being retrieved from memory. The new layer header is coupled to the data packet prior to transfer from the router.
    Type: Application
    Filed: August 13, 2010
    Publication date: December 9, 2010
    Applicant: JUNIPER NETWORKS, INC.
    Inventors: Rasoul Mirzazadeh OSKOUY, Dennis C. Ferguson, Hann-Hwan Ju, Raymond Marcelino Manese Lim, Pradeep S. Sindhu, Sreeram Veeragandham, Jeff Zimmer, Michael M.Y. Hui
  • Publication number: 20100290342
    Abstract: A hierarchical traffic policer may include a first policer configured to pass first packets when a first condition is met. The first policer also may alter selection information within the passed first packets. A second policer may be configured to pass second packets when a second condition is met. The second policer may be further configured to pass all of the passed first packets from the first policer based on the altered selection information within the passed first packets.
    Type: Application
    Filed: July 23, 2010
    Publication date: November 18, 2010
    Applicant: JUNIPER NETWORKS, INC.
    Inventors: James WASHBURN, Spencer GREENE, Rami RAHIM, Stefan DYCKERHOFF, Dennis C. FERGUSON, Philippe LACROUTE
  • Publication number: 20100284271
    Abstract: A network device includes multiple packet processing engines implemented in parallel with one another. A spraying component distributes incoming packets to the packet processing engines using a spraying technique that load balances the packet processing engines. In particular, the spraying component distributes the incoming packets based on queue lengths associated with the packet processing engines and based on a random component. In one implementation, the random component is a random selection from all the candidate processing engines. In another implementation, the random component is a weighted random selection in which the weights are inversely proportional to the queue lengths.
    Type: Application
    Filed: July 21, 2010
    Publication date: November 11, 2010
    Applicant: JUNIPER NETWORKS, INC.
    Inventors: Dennis C. FERGUSON, Chi-Chung CHEN, Thomas M. SKIBO
  • Patent number: 7826375
    Abstract: Techniques are described that increase the reliability and quality of data transmissions of computer networks. The techniques provide for the generation of at least two duplicate data flows for carrying data in a computer network. The duplicate data flows are transmitted to a receiving device along paths within one or more intermediate networks. In addition, network devices, such as routers or switches within the network, for example, may cooperate to select paths for the data flows that have reduced or minimal common network elements. The network devices may share “fate-sharing” information that relates groups of network elements according to common characteristics, attributes or shared resources, e.g., a shared power supply, close proximity, common physical interface, for the purposes of facilitating selection of independent paths.
    Type: Grant
    Filed: February 12, 2008
    Date of Patent: November 2, 2010
    Assignee: Juniper Networks, Inc.
    Inventor: Dennis C. Ferguson
  • Publication number: 20100246584
    Abstract: Ordering logic ensures that data items being processed by a number of parallel processing units are unloaded from the processing units in the original per-flow order that the data items were loaded into the parallel processing units. The ordering logic includes a pointer memory, a tail vector, and a head vector. Through these three elements, the ordering logic keeps track of a number of “virtual queues” corresponding to the data flows. A round robin arbiter unloads data items from the processing units only when a data item is at the head of its virtual queue.
    Type: Application
    Filed: June 15, 2010
    Publication date: September 30, 2010
    Applicant: JUNIPER NETWORKS, INC.
    Inventors: Dennis C. FERGUSON, Philippe LACROUTE, Chi-Chung CHEN, Gerald CHEUNG, Tatao CHUANG, Pankaj PATEL, Viswesh ANANTHAKRISHNAN
  • Patent number: 7804833
    Abstract: A method and apparatus for in-line processing a data packet while routing the packet through a router in a system transmitting data packets between a source and a destination over a network including the router. The method includes receiving the data packet and pre-processing layer header data for the data packet as the data packet is received and prior to transferring any portion of the data packet to packet memory. The data packet is thereafter stored in the packet memory. A routing through the router is determined including a next hop index describing the next connection in the network. The data packet is retrieved from the packet memory and a new layer header for the data packet is constructed from the next hop index while the data packet is being retrieved from memory. The new layer header is coupled to the data packet prior to transfer from the router.
    Type: Grant
    Filed: March 5, 2007
    Date of Patent: September 28, 2010
    Assignee: Juniper Networks, Inc.
    Inventors: Rasoul Mirzazadeh Oskouy, Dennis C. Ferguson, Hann-Hwan Ju, Raymond Marcelino Manese Lim, Pradeep S. Sindhu, Sreeram Veeragandham, Jeff Zimmer, Michael M. Y. Hui
  • Patent number: 7801140
    Abstract: A method and device for in-line processing a data packet is provided. The data packet is received at a first buffer. The data packet is divided into a number of cells that are stored in a first queue. For each cell, a cell state code is stored that indicates an address of the corresponding cell in the first queue and an indication of a sequence order of the cell within the data packet.
    Type: Grant
    Filed: August 20, 2007
    Date of Patent: September 21, 2010
    Assignee: Juniper Networks, Inc.
    Inventors: Rasoul Mirzazadeh Oskouy, Dennis C. Ferguson, Hann-Hwan Ju, Raymond Marcelino Manese Lim, Pradeep S. Sindhu, Sreeram Veeragandham, Jeff Zimmer, Michael M. Y. Hui
  • Patent number: 7787472
    Abstract: A hierarchical traffic policer may include a first policer configured to pass first packets when a first condition is met. The first policer also may alter selection information within the passed first packets. A second policer may be configured to pass second packets when a second condition is met. The second policer may be further configured to pass all of the passed first packets from the first policer based on the altered selection information within the passed first packets.
    Type: Grant
    Filed: October 31, 2007
    Date of Patent: August 31, 2010
    Assignee: Juniper Networks, Inc.
    Inventors: James Washburn, Spencer Greene, Rami Rahim, Stefan Dyckerhoff, Dennis C. Ferguson, Philippe Lacroute
  • Patent number: 7782782
    Abstract: A network device includes multiple packet processing engines implemented in parallel with one another. A spraying component distributes incoming packets to the packet processing engines using a spraying technique that load balances the packet processing engines. In particular, the spraying component distributes the incoming packets based on queue lengths associated with the packet processing engines and based on a random component. In one implementation, the random component is a random selection from all the candidate processing engines. In another implementation, the random component is a weighted random selection in which the weights are inversely proportional to the queue lengths.
    Type: Grant
    Filed: April 24, 2008
    Date of Patent: August 24, 2010
    Assignee: Juniper Networks, Inc.
    Inventors: Dennis C Ferguson, Chi-Chung Chen, Thomas M Skibo
  • Patent number: 7764606
    Abstract: Ordering logic ensures that data items being processed by a number of parallel processing units are unloaded from the processing units in the original per-flow order that the data items were loaded into the parallel processing units. The ordering logic includes a pointer memory, a tail vector, and a head vector. Through these three elements, the ordering logic keeps track of a number of “virtual queues” corresponding to the data flows. A round robin arbiter unloads data items from the processing units only when a data item is at the head of its virtual queue.
    Type: Grant
    Filed: May 30, 2007
    Date of Patent: July 27, 2010
    Assignee: Juniper Networks, Inc.
    Inventors: Dennis C. Ferguson, Philippe Lacroute, Chi-Chung Chen, Gerald Cheung, Tatao Chuang, Pankaj Patel, Viswesh Ananthakrishnan
  • Publication number: 20100177777
    Abstract: A network device includes one or more sprayers, multiple packet processors, and one or more desprayers. The sprayers receive packets on at least one incoming packet stream and distribute the packets according to a load balancing scheme that balances the number of bytes of packet data that is given to each of the packet processors. The packet processors receive the packets from the sprayers and process the packets to determine routing information for the packets. The desprayers receive the processed packets from the packet processors and transmit the packets on at least one outgoing packet stream based on the routing information.
    Type: Application
    Filed: March 25, 2010
    Publication date: July 15, 2010
    Applicant: JUNIPER NETWORKS, INC.
    Inventors: Stefan DYCKERHOFF, Pankaj Patel, Pradeep Sindhu, Ashok Krishnamurthi, Hann-Hwan Ju, Ramalingam K. Anand, Dennis C. Ferguson, Chang-Hong Wu
  • Publication number: 20100177638
    Abstract: A data flow rate policer enforces data flow policies for a number of data flows using a probabilistic policy enforcement mechanism. The policer includes a memory that stores the state of each data flow in a compact data structure. Additionally, the policer includes one or more policing engines that implement the actual data flow policies based on information derived from the data structures. The policing engines may be implemented in hardware to increase performance.
    Type: Application
    Filed: March 26, 2010
    Publication date: July 15, 2010
    Applicant: JUNIPER NETWORKS, INC.
    Inventors: Dennis C. Ferguson, Devereaux C. Chen, John W. Stewart, III, James Washburn, Jeffrey R. Zimmer
  • Publication number: 20100150159
    Abstract: A network device for processing data packets includes input logic, a register, route lookup logic and output processing logic. The input logic receives a data packet having at least one multi-protocol label switching (MPLS) tag, stores the packet and forwards a portion of the packet including the MPLS tag. The route lookup logic receives the portion of the packet, generates next hop information based on the MPLS tag and determines whether at least one MPLS tag is to be removed from the packet before the packet is to be output by the network device. The route lookup logic also modifies a start offset value in the register for each MPLS tag that is to be removed and forwards the start offset. The output processing logic receives the start offset and begins processing the data packet for output at a location identified by the start offset.
    Type: Application
    Filed: February 26, 2010
    Publication date: June 17, 2010
    Applicant: JUNIPER NETWORKS, INC.
    Inventors: Dennis C. FERGUSON, Der-Hwa GAN
  • Patent number: 7724737
    Abstract: A network device includes a memory and a packet forwarding engine. The memory stores a multicast list table, tag descriptor data and layer 2 (L2) encapsulation data. The packet forwarding engine receives a first pointer to an entry in the multicast list table, the entry including a second pointer to the tag descriptor data. The packet forwarding engine utilizes the second pointer to retrieve the tag descriptor data, the tag descriptor data including a third pointer to the encapsulation data. The packet forwarding engine constructs a packet header utilizing the retrieved encapsulation data and appends the packet header to a packet payload for forwarding out of the packet forwarding engine.
    Type: Grant
    Filed: November 21, 2007
    Date of Patent: May 25, 2010
    Assignee: Juniper Networks, Inc.
    Inventors: Pradeep Sindhu, Raymond M. Lim, Dennis C. Ferguson
  • Patent number: 7720047
    Abstract: Techniques are described for managing periodic communications between devices. For example, a periodic packet process may receive configuration parameters from a routing protocol process. The periodic packet process may manage periodic communication sessions with neighboring devices in accordance with the configuration parameters from the routing protocol process. The periodic packet process may monitor for incoming periodic packets from a specified neighboring device in a specified periodic time interval. The periodic packet process may also send outbound periodic packets at a specified periodic time interval.
    Type: Grant
    Filed: November 29, 2007
    Date of Patent: May 18, 2010
    Assignee: Juniper Networks, Inc.
    Inventors: David M. Katz, Dennis C. Ferguson
  • Patent number: 7715449
    Abstract: A network device includes one or more sprayers, multiple packet processors, and one or more desprayers. The sprayers receive packets on at least one incoming packet stream and distribute the packets according to a load balancing scheme that balances the number of bytes of packet data that is given to each of the packet processors. The packet processors receive the packets from the sprayers and process the packets to determine routing information for the packets. The desprayers receive the processed packets from the packet processors and transmit the packets on at least one outgoing packet stream based on the routing information.
    Type: Grant
    Filed: January 17, 2006
    Date of Patent: May 11, 2010
    Assignee: Juniper Networks, Inc.
    Inventors: Stefan Dyckerhoff, Pankaj Patel, Pradeep Sindhu, Ashok Krishnamurthi, Hann-Hwan Ju, Ramalingam K. Anand, Dennis C. Ferguson, Chang-Hong Wu
  • Patent number: 7715315
    Abstract: A data flow rate policer enforces data flow policies for a number of data flows using a probabilistic policy enforcement mechanism. The policer includes a memory that stores the state of each data flow in a compact data structure. Additionally, the policer includes one or more policing engines that implement the actual data flow policies based on information derived from the data structures. The policing engines may be implemented in hardware to increase performance.
    Type: Grant
    Filed: April 27, 2007
    Date of Patent: May 11, 2010
    Assignee: Juniper Networks, Inc.
    Inventors: Dennis C. Ferguson, Devereaux C. Chen, John W. Stewart, III, James Washburn, Jeffrey R. Zimmer
  • Patent number: 7697544
    Abstract: A network device for processing data packets includes input logic, a register, route lookup logic and output processing logic. The input logic receives a data packet having at least one multi-protocol label switching (MPLS) tag, stores the packet and forwards a portion of the packet including the MPLS tag. The route lookup logic receives the portion of the packet, generates next hop information based on the MPLS tag and determines whether at least one MPLS tag is to be removed from the packet before the packet is to be output by the network device. The route lookup logic also modifies a start offset value in the register for each MPLS tag that is to be removed and forwards the start offset. The output processing logic receives the start offset and begins processing the data packet for output at a location identified by the start offset.
    Type: Grant
    Filed: April 26, 2007
    Date of Patent: April 13, 2010
    Assignee: Juniper Networks, Inc.
    Inventors: Dennis C. Ferguson, Der-Hwa Gan