USB is a popular way to connect broadband networking devices to consumer PCs. Notable applications include LTE modems, cable modems and ADSL. MCCI® offers complete driver and firmware solutions for USB networking. Off-the-shelf eval drivers are available for Windows platforms.
The easiest way to understand the architecture of USB networking drivers is to start by considering a USB to Ethernet adapter. In this case, the Ethernet Network Interface Controller (NIC) is connected to the user's computer using USB. If a USB-to-Ethernet bridge is being used, the USB bus, an Ethernet NIC, and a physical Ethernet segment will all be present. If the NIC has been integrated into the target device (for example, as in a LTE modem or a cable modem), the software on the PC is the same, but the physical Ethernet segment is replaced by a software "virtual" Ethernet segment.
Although the following discussion focuses on CDC Ethernet as the transport protocol, it is equally true for CDC Network Control Model (NCM) -- NCM is faster, but the architecture is the same.
Figure 1 compares the USB remote NICs to local NIC architectures.
Figure 1. Remote NIC System Diagram
Figure 2 illustrates the virtual Ethernet architecture used in USB cable modems and home networking/SOHO routing applications.
Figure 2. Virtual Ethernet Architecture
Notice that the presence of two NICs implies that there are two Ethernet addresses embedded in the USB device. One would be associated with the NIC that was previously in the host; and one is associated with the NIC that was previously in the device. Frequently, however, this extra Ethernet address can be eliminated, because of the point-to-point nature of the link, especially if (as in cable modems) another NIC already has an Ethernet address assigned; the cable modem NIC address can also be used on the virtual Ethernet.
Figure 3 shows the driver architecture for Windows. For architectural reasons, MCCI uses a two part driver; this simplifies management, and separates the portion of the driver that's responsible for the NDIS interface from the portion of the driver that's responsible for the USB network protocol. Different versions of Windows use different versions of NDIS. With this architecture, MCCI can provide identical code at the USB layer in a way that is independent of NDIS version. When necessary, we substitute a different miniport layer that is tailored for the NDIS version used by the target version of Windows; but the USB layer doesn't need to change.
Figure 3. Windows Software Architecture -- Networking
A matching firmware architecture for a USB device implementation is shown in Figure 5. For more information see the MCCI USB DataPump Network Drivers.
Figure 5. Virtual Ethernet Device Block Diagram
The nature of, and the requirement for, the virtual Ethernet layer is somewhat application dependent. In many cases, especially if only one USB device port is to be supported, the Application NIC driver and the Virtual Ethernet can be integrated, resulting in increased efficiency.