论文部分内容阅读
基于OpenFlow协议的SDN(Software Defined Networking,软件定义网络)架构可使网络拥有者可实现对网络的编程,正成为SDN研究的热点。然而,现有SDN可编程性仅限于网络控制平面,OpenFlow交换机数据平面能支持的转发协议和包转发处理逻辑仍主要由固定功能的交换芯片决定。在此背景下提出的P4(Programming Protocol-Independent Packet Processors,编程协议无关包处理器)语言可实现协议无关的包处理,迅速成为当前可编程数据平面研究的热点,各大厂商纷纷推出P4开发平台。但是,现有P4开发平台的处理器系统和可编程交换芯片是由相互独立的不同器件和外围电路实现,交换设备的大尺寸和高功耗在演示教学和科研中也较为不便。本文据此提出利用具有高集成度、高性能和高性价比特点的片上系统SoC(System on Chip)实现P4开发原型系统,以满足教学和科研需求。本原型系统的硬件平台选用叠锶公司的ONetSwitch30开发板,它基于Xilinx公司推出的All-Programmable Zynq-7000器件,集成了基于ARM Cortex-A9双核处理器的处理系统(Processing System,PS)和基于Kintex-7 FPGA(Field-Programmable Gate Array,现场可编程门阵列)的可编程逻辑(Programmable Logic,PL)。该架构通过高带宽/高效率的AXI4接口完成PS部分和PL部分之间的数据交互,实现了处理器部分的软件可编程能力与FPGA部分的硬件可重构能力的无缝结合。采用ONetSwitch30平台实现的P4交换原型系统,既能够通过FPGA开发获得数据平面的可编程性,带来较高的转发性能,又能够依靠ARM处理器提供丰富灵活的应用功能。本文重点研究基于SoC的P4可编程数据交换原型系统的设计与实现。首先,分析并借鉴了Xilinx公司针对NetFPAG SUME板设计的SimpleSumeSwitch架构,提出一种采用SoC的P4交换机架构。其次,针对提出的P4-SoC架构完成如下设计与实现:利用Vivado开发套件中的IP集成器工具(IP Integrator,IPI)定制了MAC(Media Access Control,媒质接入控制)核、DMA(Direct Memory Access,直接存储器访问)核以及AXI Interconnect互联核等系统子模块;采用Verilog硬件描述语言设计交换机主数据通路中的两个通用模块,即输入仲裁模块以及输出缓冲队列模块;利用P4-SDNet编译器将P4源程序编译为HDL(Hardware Description Language,硬件描述语言)源码,采用Vivado将生成的HDL源码封装为相应的IP(Intellectual Property,知识产权)核。最后,将上述开发的所有IP核模块按照P4-SoC架构连接,并添加管脚、时序约束以完成整个硬件系统的整合。在ONetSwitch30开发板上搭建基于Linux系统的嵌入式开发环境,编写P4测试用例程序,并加载于本系统以完成P4规范中基本功能的测试验证。测试结果表明,本平台可以运行所加载的P4应用程序,可根据用户开发的不同P4应用实现不同的包处理转发功能,即实现协议无关交换原型系统;另外,在不影响P4应用运行性能的前提下,本平台设计软硬件资源的使用率不超过50%,给使用该P4开发平台的用户预留了充分的开发资源。