IP Library Granted Patent US 10,348,621
Granted Patent B2
US 10,348,621 · App. 14/925,809 · Granted Jul 9, 2019

Universal customer premise equipment

Inventor: Robert Bays (San Francisco, CA)
Assignee: AT&T Intellectual Property I. L. P.
H04L45/586G06F2009/45595
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,348,621
App. No.
14/925,809
Granted
Jul 9, 2019
Kind
B2
Abstract

Systems, methods, apparatus and computer-readable medium are described for improving efficiency and robustness for processing network packets at a network device, such as a customer premises equipment (CPE). The network device may include a plurality of physical network interfaces for receiving and transmitting network packets, and one or more processing entities. The one or more processing entities may provide a first router for providing routing functionality, wherein the first router is not virtualized, enable a virtual machine to execute a second router for providing routing functionality and forward a network packet using the first router or the second router from the device. The one or more processors may be configured to execute instructions associated with the first router from user space.

Claims (39)

1. A device, comprising:

a memory configured for storing instructions;

a plurality of network ports for receiving and transmitting network packets; and

one or more processors configured to:

execute a first set of instructions from a user space of a host software stack that implements a first software routing functionality corresponding to a first router, the first software routing functionality being provided without using a virtual machine;

receive a first network packet at the device from a first network port from the plurality of network ports;

copy the first network packet to the user space;

forward the first network packet using the first software routing functionality in the user space, by performing a first processing of the first network packet, using one or more real-time threads allocated by a kernel, in a software level 2 or a level 3 packet processing pipeline of the host software stack;

start a first virtual machine and enable the first virtual machine comprising a second set of instructions that implements a second software routing functionality corresponding to a second router;

receive a second network packet at the device from a first remote device; and

forward the second network packet to a second remote device using the second software routing functionality of the first virtual machine by performing a second processing of the second network packet in the software level 2 or the level 3 packet processing pipeline of the host software stack.

2. The device of claim 1 , wherein the second network packet is sent to the first virtual machine without exiting the device.

3. The device of claim 1 , wherein the one or more processors are further configured to update a state of the first virtual machine in response to a change to a data model, wherein the change to the data model is based on a received operational mode command and the data model comprises an interface for exposing updatable parameters associated with the first virtual machine.

4. The device of claim 1 , wherein the device is a customer premises equipment.

5. The device of claim 1 , wherein the device is a network device.

6. The device of claim 1 , wherein forwarding of the first network packet using the first software routing functionality comprises performing routing or switching of the first network packet.

7. The device of claim 1 , wherein the device is further configured to upgrade the second software routing functionality executing in the first virtual machine.

8. A method comprising:

executing a first set of instructions from a user space of a host software stack that implements a first software routing functionality corresponding to a first router, the first software routing functionality being provided without using a virtual machine;

receiving a first network packet from a first network port from a plurality of network ports;

copying the first network packet to the user space;

forwarding the first network packet using the first software routing functionality in the user space, by performing a first processing of the first network packet, using one or more real-time threads allocated by a kernel, in a software level 2 or a level 3 packet processing pipeline of the host software stack;

starting a first virtual machine and enable the first virtual machine comprising a second set of instructions that implements a second software routing functionality corresponding to a second router;

receiving a second network packet from a first remote device; and

forwarding the second network packet to a second remote device using the second software routing functionality of the first virtual machine by performing a second processing of the second network packet in the software level 2 or the level 3 packet processing pipeline of the host software stack.

9. The method of claim 8 , further comprising updating a state of the first virtual machine in response to a change to a data model, wherein the change to the data model is based on a received operational mode command and the data model comprises an interface for exposing updatable parameters associated with the first virtual machine.

10. The method of claim 8 , wherein forwarding of the first network packet using the first software routing functionality comprises performing routing or switching of the first network packet.

11. The method of claim 8 , further comprising upgrading the second software routing functionality executing in the first virtual machine.

12. A non-transitory computer readable medium having stored thereon program code that, when executed by a processor, cause the processor to perform operations comprising:

executing a first set of instructions from a user space of a host software stack that implements a first software routing functionality corresponding to a first router, the first software routing functionality being provided without using a virtual machine;

receiving a first network packet from a first network port from a plurality of network ports;

copying the first network packet to the user space;

forwarding the first network packet using the first software routing functionality in the user space, by performing a first processing of the first network packet, using one or more real-time threads allocated by a kernel, in a software level 2 or a level 3 packet processing pipeline of the host software stack;

starting a first virtual machine and enable the first virtual machine comprising a second set of instructions that implements a second software routing functionality corresponding to a second router;

receiving a second network packet from a first remote device; and

forwarding the second network packet to a second remote device using the second software routing functionality of the first virtual machine by performing a second processing of the second network packet in the software level 2 or the level 3 packet processing pipeline of the host software stack.

13. The non-transitory computer readable medium of claim 12 , wherein the processor is further configured to update a state of the first virtual machine in response to a change to a data model, wherein the change to the data model is based on a received operational mode command and the data model comprises an interface for exposing updatable parameters associated with the first virtual machine.

14. The non-transitory computer readable medium of claim 12 , wherein forwarding of the first network packet using the first software routing functionality comprises performing routing or switching of the first network packet.

15. The non-transitory computer readable medium of claim 12 , wherein the operations further comprise upgrading the second software routing functionality executing in the first virtual machine.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 11, 2021
From: AT&T INTELLECTUAL PROPERTY I, LP
To: CIENA CORPORATION
Reel/Frame 058088/0833 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 9, 2017
From: BROCADE COMMUNICATIONS SYSTEMS, INC.
To: AT&T INTELLECTUAL PROPERTY I, L.P.
Reel/Frame 043248/0750 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 28, 2015
From: BAYS, ROBERT
To: BROCADE COMMUNICATIONS SYSTEMS, INC.
Reel/Frame 036906/0751 →
Continuity (4)
Provisional Application 62072971 · Oct 30, 2014
Provisional Application 62075175 · Nov 4, 2014
Provisional Application 62241059 · Oct 13, 2015
Related Publication 20160127226A1 · May 5, 2016