网络操作系统选择与相关技术解析
1. 运行第三方应用的模型
在交换机上运行第三方应用时,有三种不同的模型:
- 特定供应商用户空间模型 :此模型要求对应用进行修改,以使用网络操作系统(NOS)供应商的 API。即使像 ping 和 Secure Shell (SSH) 这样简单的日常应用,也需要修改才能在这种 NOS 上运行。
- 内核模型 :任何基于标准 Linux API 编写的应用都能在此模型下工作。例如,研究人员测试新的路由协议时可利用该模型。而且,由于 Linux API 几乎能保证更改不会破坏现有的用户空间应用(尽管可能需要重新编译),代码在未来的内核版本中也大概率能正常工作。
- 混合模型 :如果第三方应用仅依赖与内核同步的内容(如 IP 路由),则可以使用标准 Linux API;否则,必须使用供应商特定的 API。
2. 编程交换芯片
当本地网络状态进入 NOS 后,如何将该状态推送到交换芯片呢?由于交换芯片类似于以太网网卡或磁盘,显然需要设备驱动程序。驱动程序可以是传统的设备驱动(即在 Linux 内核中实现),也可以在用户空间实现。目前,最常见的模型是将驱动程序放在用户空间,主要原因如下:
- 大多数交换芯片供应商仅提供用户空间的驱动程序。
- 直到最近,Linux 内核都没有针对数据包交换芯片的抽象或模型。虽然内核提供了许多设备抽象,如块设备、字符设备、网络设备等,但没有与数据包交换芯片等效的抽象。
- 许多人认为在用户空间编写驱动程序比在内核中更简单。
用户空