The present invention relates to the field of networking.
Software-defined networking (SDN) is an approach to computer networking that allows network administrators to manage network services through abstraction of lower-level functionality. A system on a chip or System-on-Chip (SoC) is an integrated circuit (IC) that integrates all components of an electronic system into a single chip. It is possible to implement many networking features on a single chip using combinations of software and hardware.
A software and hardware co-validation for SDN SoC method and system are able to be used to test software and hardware using PCIe (or another implementation) utilizing sockets and messages as the communication medium.
In one aspect, a system comprises a software module, a hardware module and a Peripheral Component Interconnect express driver configured for communicating between the software module and the hardware module, wherein the Peripheral Component Interconnect express driver utilizes transmission control protocol packets for communicating and is embedded in a kernel of the system. Communicating includes intercepting a low level instruction and generating transmission control protocol socket connection. Communicating includes: generating a socket, identifying the socket, connecting to a client, sending and receiving messages to and from the client, translating the messages to transmission layer packets communicating with the driver and closing the socket. The software module comprises an application programming interface. The hardware module comprises an emulation of hardware. The hardware module comprises physical hardware components. The hardware module comprises a system-on-chip configuration. The Peripheral Component Interconnect express driver enables software defined network testing and hardware testing.
In another aspect, a device comprises a memory for storing information including a kernel, wherein the kernel includes a device driver configured for communicating with a system-on-chip configuration using one or more sockets and a processing component coupled to the memory, the processing component configured for processing the information. Communicating includes transmitting Peripheral Component Interconnect express transmission layer packets. The device driver is a Peripheral Component Interconnect express driver with Transmission Control Protocol sockets. The device driver is embedded in a kernel of the device. Communicating includes intercepting a low level instruction and generating transmission control protocol socket connection. Communicating includes: generating a socket, identifying the socket, connecting to a client, sending and receiving messages to and from the client, translating the messages to transmission layer packets communicating with the driver and closing the socket. The device driver enables software defined network testing and hardware testing.
In another aspect, a method programmed in a device comprises generating a socket, identifying the socket, connecting to a client, sending and receiving messages to and from the client, translating the messages to transmission layer packets communicating with a device driver and closing the socket. The transmission layer packets are Peripheral Component Interconnect express transmission layer packets. The device driver is a Peripheral Component Interconnect express driver with Transmission Control Protocol sockets. The device driver is embedded in a kernel of the device. The device driver enables software defined network testing and hardware testing.
In another aspect, a system comprises a software stack, a system-on-chip hardware module and a Peripheral Component Interconnect express driver configured for communicating between the software stack and the system-on-chip hardware module, wherein the Peripheral Component Interconnect express driver utilizes transmission control protocol packets for communicating and is embedded in a kernel of the system. Communicating includes intercepting a low level instruction and generating transmission control protocol socket connection. Communicating includes: generating a socket, identifying the socket, connecting to a client, sending and receiving messages to and from the client, translating the messages to transmission layer packets communicating with the driver and closing the socket. The software stack comprises an application programming interface. The Peripheral Component Interconnect express driver enables software defined network testing and hardware testing.
The foregoing will be apparent from the following more particular description of example embodiments of the invention, as illustrated in the accompanying drawings in which like reference characters refer to the same parts throughout the different views. The drawings are not necessarily to scale, emphasis instead being placed upon illustrating embodiments.
In traditional networking Application Specific Integrated Circuits (ASIC), many operations such as packet parsing, lookup, and others are hardened. With the evolution of a software defined network (SDN), recent ASIC technologies allow networking features to be defined in the software (as shown in
Multiple devices are able to be configured via the TCP socket, allowing for a single point of control when setting up a cloud of SDN devices/chips.
Software and SDN Application
Software used to program network ASICs has a very high level of abstraction, with several layers of APIs and feature specific code. Using these APIs, specific profiles are able to be developed and used by individuals/teams. A profile, in this case, refers to a particular device configuration enabling the device to carry out certain network functions.
For an SDN SoC, these profiles control the hardware device, hence they are important during deployment. Although the majority of software testing is done using the white model, this does not completely guarantee seemless integration with the post-silicon hardware. In the hardware section, a more robust approach to testing SDN software is discussed.
Furthermore, as SDN evolves, complicated hardware to support SDN-based configurations will be developed and will have a need to be verified end-to-end. One of the challenges in verification of an SDN SoC is that without some configuration from software, the ASIC will do very little. Software is what is used to define the feature set to overlay. Traditional hardware verification methods are able to be used to verify the hardware; however, whether or not this particular hardware is able to actually perform the features that the SDN defines are not able to be verified using a traditional simulation.
Software is important to ensure that an SDN SoC is able to function as a traditional packet processor. SDN provides a clear benefit to a user in that it provides flexibility to define features that their application utilizes.
Hardware
To verify a significant amount of the software stack, prior to post-silicon, a simulation-based or hardware-accelerated design (full-chip/device) is used. This allows verification and software engineers to quickly find bugs in both hardware and software within a reasonable amount of time. This approach also allows key features such as learning and table aging to be tested in real-time.
Although the device is able to be configured and initialized via many different interfaces, the primary and most common route is through PCI express (PCIe). Connected to the PCIe interface is a translator/driver, which converts messages to PCIe Transition Layer Packets (TLPs) and vice-versa. The driver is attached to the device, and it will also be simulated/emulated.
Communicating with Hardware
In an actual network environment, an application or software is running on a server communicating with the hardware device via direct connections. In the absence of the actual device, a key challenge is the communication mechanism used in the simulation/emulation environment. The communication mechanism should be light, fast, bi-directional, and transparent to the end user.
The method described herein allows communications between hardware and software via PCIe, using TCP sockets and messages as the communication medium.
PCIe root complex <----> TCP messages <----> host PCIe endpoint
The following is used to correctly set up and establish a connection and transfer messages.
1) create socket
2) identify socket
3) wait for incoming connection
4) client to connect
5) send and receive messages
6) translate messages to PCIe TLPs communicating with PCIe device Manager/Driver
7) close socket.
A key factor in maintaining a transparent layer is by embedding the code/logic in the lowest PCIe layer which resides in the software kernel space as shown in
In some embodiments, the software and hardware co-validation for SDN SoC application(s) 430 include several applications and/or modules. In some embodiments, modules include one or more sub-modules as well. In some embodiments, fewer or additional modules are able to be included.
Examples of suitable computing devices include a server, a personal computer, a laptop, a mobile device (e.g., smart phone), a network switch, a router, a hub, any other networking equipment and any other computing devices.
To utilize the software and hardware co-validation for SDN SoC method and system, software and hardware (or an emulation of hardware) are developed. Specifically, software and an emulation of hardware are developed for an SDN SoC. The software and hardware are then able to be tested using PCIe (or another implementation) utilizing sockets and messages as the communication medium. For example, after an individual/team generates one or more APIs and develops hardware or an emulation of the hardware, the individual/team or another entity is able to test the software and hardware using the software and hardware co-validation for SDN SoC method and system.
In operation, the software and hardware co-validation for SDN SoC method and system enable communication between hardware and software via PCIe using TCP sockets and messages which permits efficient testing and analysis of software and hardware aspects of an SoC. An entire software stack as well as hardware are able to be tested. Additionally, multiple chips (SoCs) are able to be programmed at the same time, not just one, as in previous implementations.
The present invention has been described in terms of specific embodiments incorporating details to facilitate the understanding of principles of construction and operation of the invention. Such reference herein to specific embodiments and details thereof is not intended to limit the scope of the claims appended hereto. It will be readily apparent to one skilled in the art that other various modifications may be made in the embodiment chosen for illustration without departing from the spirit and scope of the invention as defined by the claims.
Number | Name | Date | Kind |
---|---|---|---|
5847751 | Safadi | Dec 1998 | A |
6154464 | Feuerstraeter | Nov 2000 | A |
6182258 | Hollander | Jan 2001 | B1 |
6216098 | Clancey | Apr 2001 | B1 |
6253365 | Baldwin | Jun 2001 | B1 |
6377912 | Sample et al. | Apr 2002 | B1 |
6434517 | Le | Aug 2002 | B1 |
6665864 | Kawahito et al. | Dec 2003 | B1 |
6667985 | Drummond-Murray | Dec 2003 | B1 |
6694464 | Quayle et al. | Feb 2004 | B1 |
6728271 | Kawamura et al. | Apr 2004 | B1 |
6754612 | Vanfladern et al. | Jun 2004 | B1 |
6876941 | Nightingale | Apr 2005 | B2 |
7130783 | Harer et al. | Oct 2006 | B1 |
7185247 | Mak et al. | Feb 2007 | B2 |
7236918 | Roesner | Jun 2007 | B2 |
7237210 | Likovich, Jr. et al. | Jun 2007 | B2 |
7246332 | Likovich, Jr. et al. | Jul 2007 | B2 |
7284177 | Hollander et al. | Oct 2007 | B2 |
7325018 | Smith | Jan 2008 | B2 |
7472051 | Mariani | Dec 2008 | B2 |
7506281 | Secatch | Mar 2009 | B1 |
7519865 | Maly | Apr 2009 | B1 |
7526742 | Edwards | Apr 2009 | B1 |
7565631 | Banerjee et al. | Jul 2009 | B1 |
7796627 | Hurley et al. | Sep 2010 | B2 |
8214694 | McKechnie et al. | Jul 2012 | B1 |
8560893 | Hollander et al. | Oct 2013 | B1 |
8832622 | Xu | Sep 2014 | B1 |
8984490 | Dahan | Mar 2015 | B1 |
9135382 | Lu et al. | Sep 2015 | B1 |
9322872 | Hill | Apr 2016 | B2 |
9330227 | Han et al. | May 2016 | B1 |
9506982 | Han et al. | Nov 2016 | B2 |
9506984 | Vaishampayan | Nov 2016 | B1 |
9547041 | Siva | Jan 2017 | B2 |
9606176 | Miller et al. | Mar 2017 | B2 |
9626321 | Safranek et al. | Apr 2017 | B2 |
20020054608 | Wan et al. | May 2002 | A1 |
20020183956 | Nightingale | Dec 2002 | A1 |
20030110339 | Calvignac | Jun 2003 | A1 |
20030225565 | Garcia | Dec 2003 | A1 |
20050108596 | Deaton | May 2005 | A1 |
20050157653 | Zeitak | Jul 2005 | A1 |
20060190871 | Likovich, Jr. et al. | Aug 2006 | A1 |
20070217759 | Dodd | Sep 2007 | A1 |
20070264730 | Frodsham | Nov 2007 | A1 |
20070277163 | Avresky | Nov 2007 | A1 |
20080098366 | Fong | Apr 2008 | A1 |
20090144675 | Haufe | Jun 2009 | A1 |
20100031000 | Flynn | Feb 2010 | A1 |
20100306728 | Adeishar et al. | Dec 2010 | A1 |
20110010720 | Smith et al. | Jan 2011 | A1 |
20110063093 | Fung et al. | Mar 2011 | A1 |
20110145795 | Khanapurkar et al. | Jun 2011 | A1 |
20110307233 | Tseng et al. | Dec 2011 | A1 |
20120174068 | Guttleisch et al. | Jun 2012 | A1 |
20120198174 | Nellans et al. | Aug 2012 | A1 |
20120255022 | Ocepek et al. | Oct 2012 | A1 |
20120284432 | Chen | Nov 2012 | A1 |
20120284446 | Biran | Nov 2012 | A1 |
20120300649 | Parmar et al. | Nov 2012 | A1 |
20130007330 | Ryzhyk et al. | Jan 2013 | A1 |
20130028105 | Chew | Jan 2013 | A1 |
20130080761 | Garrett et al. | Mar 2013 | A1 |
20130081005 | Gounares et al. | Mar 2013 | A1 |
20130198706 | Mehta et al. | Aug 2013 | A1 |
20130318486 | Sasaki | Nov 2013 | A1 |
20140068360 | Lai et al. | Mar 2014 | A1 |
20140082242 | Murphy | Mar 2014 | A1 |
20140112339 | Safranek | Apr 2014 | A1 |
20140195711 | Bhatia | Jul 2014 | A1 |
20140244888 | Kallickal | Aug 2014 | A1 |
20140282312 | Stamness et al. | Sep 2014 | A1 |
20140289445 | Savich | Sep 2014 | A1 |
20150161385 | Gounares et al. | Jun 2015 | A1 |
20150234008 | Miller et al. | Aug 2015 | A1 |
20150286470 | Dahan | Oct 2015 | A1 |
20150301108 | Hamid et al. | Oct 2015 | A1 |
20160092329 | Musunuri et al. | Mar 2016 | A1 |
20160134653 | Vallone et al. | May 2016 | A1 |
20160139202 | Patel et al. | May 2016 | A1 |
20160139204 | Han et al. | May 2016 | A1 |
20160139205 | Siva et al. | May 2016 | A1 |
20160140006 | Siva et al. | May 2016 | A1 |
20160140284 | Han et al. | May 2016 | A1 |
20160140285 | Han et al. | May 2016 | A1 |
20160140286 | Siva et al. | May 2016 | A1 |
20160142280 | Krishnamoorthy et al. | May 2016 | A1 |
20160366036 | Gupta et al. | Dec 2016 | A1 |
Number | Date | Country |
---|---|---|
2336076 | Jun 1999 | GB |
Number | Date | Country | |
---|---|---|---|
20160283413 A1 | Sep 2016 | US |