netlink server线程是一个控制平面线程,在ofp_init_global中启动,因而全局只有一个。netlink服务线程与内核互动。由于:有些事情内核一直在干,并且也干的很好,但是这些事情客户态干起来很吃力。因而,这些事情交给内核做,客户态通过netlink接收消息通知获取信息。
发一个包时,需要明确少量事情:当面对复杂网络时,发出一个包的时候,你需要知道用哪个网口发,并且发给谁,目的MAC地址是多少。还有少量其余信息:比方IP地址改变、网口up和down等等。这些信息可以通过netlink从内核进行同步。
由于这些信息获取,依赖于内核,因而只有启了SP宏之后,这些代码才启用。另外,根据OFP的注释和协议实现(ofp 实现了ARP协议),MAC地址表的信息获取不由本netlink服务负责。
从内核获取路由信息