背景介绍
基于VPP开发一款网络设备,除使用VPP框架实现端口数据报文转发外,还需要对设备进行配置和管理,比较常用的是要实现ssh、web等相关服务,另外,由于VPP并未实现dhcp server的功能,控制面可能还需移植isc-dhcp类似的dhcp server。相关的用户态程序是基于Linux内核的socket来收发包的,因此,需要实现VPP和Linux内核协议栈通信的方法,可以将访问控制面的报文由VPP上送至Linux协议的协议栈。
实现原理
VPP和Linux内核协议栈通信有两种方法,分别是基于Linux的TAP/TUN和VETH两种机制,对这两种机制不了解的朋友,建议先阅读下如下两个衔接的内容:
TUN/TAP:https://segmentfault.com/a/1190000009249039
VETH:https://segmentfault.com/a/1190000009251098
基于TAP/TUN的方法:
如上图,PC的地址是192.168.1.2,Linux Kernel的管