一切坏消息在Linux 4.0内核中终结。
Linux 4.0引入了一个switchdev框架,它代表一类拥有“交换”能力芯片的多网口设备的抽象。其中每一个网口就是一个port,在switchdev框架中被注册成一个net_device。除此之外,内核中自带了一个rocker driver,演示了一个实际的设备驱动的实现。整个switchdev的示意图如下所示:
注意,理想化的实现中,OpenFlow控制器可以直接将流表注入到设备中,从而指导设备直接进行数据包交换。流表的内容超级复杂,不是本文的目标,但是相信在后一个内核版本中会出现相关的Document。
采用了硬件交换模块的Linux BOX和原来的截然不同了,它更像是一个高端的专业网络设备,类似Cisco那样的。它看起来就是下面的样子: