1.一种轻量级大规模自主网络协议功能测试方法,其特征在于,具体步骤包括:S1:基于控制平面代码实现网络交互协议,基于数据平面代码实现报文转发功能,然后将控制平面代码和数据平面代码打包到容器镜像中;所述步骤S1步骤包括:S1.1:宿主服务器中容器中运行的quagga作为控制平面,运行多种路由协议,完成整个网络的路由信息收敛与计算,在cd /usr/local/etc目录下编写需要运行的自主协议配置文件selfprotocol.conf,配置文件后启动协议:zebra -d,selfprotocol协议进程 -d;S1.2:宿主服务器中容器运行的click作为数据平面,通过网络接口驱动与数据收发来完成报文的转发;S2:将宿主服务器和实体设备按照测试拓扑互连,配置合适的IP地址,保证直连物理设备之间能相互通信;S3:在宿主服务器内安装上述打包的容器镜像,按照测试拓扑和规模创建并运行容器实例,同一服务器内的容器创建虚拟网卡完成互连,跨越服务器的容器之间创建VxLan隧道进行互连,服务器与实体设备之间创建macvlan容器网络进行互连;S4:通过主控服务器下发消息启动全网虚拟路由器网元与实体设备的协议实例,进行大规模协议功能测试。
2.根据权利要求1所述的一种轻量级大规模自主网络协议功能测试方法,其特征在于,在所述步骤S1中,协议测试网元采用轻量级虚拟化技术,能降低虚拟机网元对系统资源的消耗,同时包含应用协议程序和用户态协议栈,根据测试需要自主定制协议的控制平面和数据平面,降低协议测试复杂度。
3.根据权利要求1所述的一种轻量级大规模自主网络协议功能测试方法,其特征在于,所述步骤S1.2包括步骤如下:S1.2.1:数据平面的报文转发流程,数据平面在接收网络数据包后对数据包进行分类,提取数据包的报头并生成系统支持的摘要结构,摘要内容丢弃数据包中的真实数据而只保留指向保存在内存缓冲区中真实数据的指针,后面的操作之间只传递摘要内容而不传递整个数据包,提取协议报头中的目的地址信息,并前递数据包;S1.2.2:控制平面与数据平面的交互,在交互前启动click命令,进入到click目录下,运行click selfprotocol.click,click启动文件根据设备的接口信息来配置,quagga与click之间通过socket通信,Click创建一个特定的端口号作为宿主服务器调用socket的接口,如果被测协议为路由协议,当接收到控制平面发送的路由信息后Click将路由信息写入LinearXXLookup组件中自定义的动态转发表。
4.根据权利要求1所述的一种轻量级大规模自主网络协议功能测试方法,其特征在于,在所述步骤S3中,同一服务器内的容器创建虚拟网卡完成互连,跨越服务器的容器之间创建VxLan隧道进行互连,服务器与实体设备之间创建macvlan容器网络进行互连,根据测试需求创建对应的测试拓扑,实现与真实网络类似的协议功能测试,步骤如下:S3.1:服务器与服务器间容器创建VxLan隧道建立连接,在各宿主服务器上创建一个network namespace,然后在这个空间中创建网桥,并创建一个Vxlan的虚拟网络设备连接至网桥上,添加VxLan类型端口,创建容器并指定网口绑定宿主服务器的网桥,VxLan设备上会在创建容器时为其分配VxLan隧道ID,起到网络隔离的作用;S3.2:同宿主服务器内创建虚拟网卡完成互联,将同一宿主服务器内的容器创建为无网络模式,创建各容器的网络空间及名字,该创建各容器的网络空间及名字命令后生成一个容器网络空间进程号,根据测试拓扑给互相连接的两个容器的网口建立peer连接,将建立peer连接的网口分别加入到各容器生成的网络空间进程号中,并为创建的网口配置ip地址;S3.3:服务器与实体设备间容器创建macvlan容器网络完成互联,分别在宿主服务器上创建macvlan容器网络,创建后在宿主服务器上输入命令能看到命名的macvlan容器网络则表示创建网络成功,创建容器并指定使用macvlan容器网络。