论文部分内容阅读
在软件定义网络(Software-Defined Networking,SDN)中,用户使用编程的方式管理网络的转发行为。SDN控制层的编程环境为用户提供编程语言来编写网络的控制策略,并将这些控制策略解释为底层SDN转发设备能够理解的消息格式,SDN转发设备根据这些消息安装转发规则从而对网络中的数据包进行处理。因此,编程环境的设计直接影响到用户对整个网络的控制,功能全面、简单易用的编程环境能够简化用户的编程复杂度,提高网络资源的管理效率。现有的SDN编程环境大多基于OpenFlow技术,但是该技术只支持固定的协议类型,因此不能对任意协议进行编程控制,这不仅限制了 SDN网络对不同协议的支持能力,也极大的限制了用户编程的能力。为了解决这一问题,华为提出协议无感知转发技术(Protocol-Oblivious Forwarding,POF),通过元组的字段表达形式和协议无关指令集来实现数据平面的协议无关。为了解放SDN的网络编程能力,本文针对现有编程环境的问题,提出并研制了一种面向协议无关网络的SDN编程环境PNPL。PNPL将用户编写的协议规范和网络策略自动转化为底层的多表流水线,一方面,PNPL动态的处理变长变序协议,自动为数据包生成解析图实例,并将协议规范映射为底层的多表流水线框架;另一方面,PNPL使用踪迹和扩展踪迹树记录网络策略对数据包、metadata以及多表的操作,自动为多表流水线添加和维护转发规则。本文的贡献主要包括两点:首先,从解析图、踪迹、扩展踪迹树等关键技术出发,提出了一种包含流水线设计和多角度编程的协议无关网络编程方法,从而优化数据平面的多表流水线,提高用户对网络的编程控制能力,解决POF带来的编程复杂度问题;其次,本文实现了上述方法,研制出一套完整的SDN编程环境PNPL,并将其部署在实际网络中。最后通过防火墙策略、源路由等功能测试和吞吐量、流水线质量等性能测试说明了方案的可行性。