Our Open NX-OS Linux Network Architecture is made up of two primary layers:
- User space processes and software comprised of traditional NX-OS software processes (ospf, vpc, bgp, nxos, arp, vpc), and third-party user applications (configuration management, visibility/analytics, custom built agents/tools)
- 64 Bit Linux 3.4.10 Kernel Layer –> linux kernel netdevices and linux networking stack (route, arp tables)
What has been exposed in Open NX-OS network architecture is access to the linux kernel networking stack, where the switch physical and logical interfaces have representation as a net device and an IP address in the kernel layer. This design opens the door to management of the routing and front panel ports using unmodified linux based tools and applications. However there needs to be a synchronization function between NX-OS and the linux kernel layer, to ensure the two layers work effectively in tandem. This synchronization function between userspace NX-OS processes and kernel layer is provided by the netbroker module, which ensures changes implemented to physical and logical interfaces in NX-OS are reflected correctly to the linux netdevice interfaces. When NX-OS routing applications/processes like BGP program routes, they program these routes directly in the NX-OS route table, which pushes it to the linux kernel route table. Similarly if a route is installed at the linux kernel layer, the netbroker module checks the validity of the route addition by forwarding to the NX-OS Routing Information Base process, which then programs the route table in the hardware table if it’s deemed valid. In the architecture, VRFs are implemented using linux network namespaces. Network namespaces are a natural fit as they provide the same isolation capabilities as VRFs. A kernel net device is associated with one and only one network namespace and the routing and ARP tables are local to a network namespace such that tasks running in the namespace see only the resources assigned to the namespace. Namespaces are covered in detail in a subsequent section.