Page 90 - 《软件学报》2020年第9期
P. 90
张雯雯 等:SDN 数据平面软件一致性测试用例生成方法 2711
[2]
博士基于 SANE 实现了采用集中式控制器来管理网络的 Ethane 项目 .SANE/Ethane 项目正是 SDN 和
OpenFlow 的前身.SDN 的核心在于:利用分层的思想,实现数据平面与控制平面相分离. SDN 的优势在于增强了
传统网络灵活性,解决了传统网络可控性差的问题.
[3]
如图 1 所示,SDN 体系架构 分为 3 层:最底层为架构层(也被称为数据层、转发层),主要功能是实现数据
转发;中间层为控制层,实现 SDN 的主要功能,集中存储网络设备的控制逻辑,其控制逻辑控制数据平面数据包
转发;最上层为应用层,包含错综复杂的业务应用.控制层的控制逻辑通过 SDN 北向接口(northbound interface,
简称 NBI)与应用层进行通信,使用户按实际需求定制开发.控制层和数据层通过 SDN 南向接口(southbound
interface,简称 SBI)进行通信,控制数据层数据转发.
业务层
应用程序
A A A
P P P
I I I
控制层
网络服务
SDN 控制器
南向接口
网络设备 网络设备 网络设备
数据层
网络设备 网络设备
Fig.1 SDN network architecture
图 1 SDN 网络架构
交换机等路由设备是数据层的基本网络元素,不同的转发规则形成元素之间不同的数据通路连接.P4 编程
语言具有设备无关性,用户无需关心底层元素的实现细节,仅仅通过简明易懂的编程就可以实现快捷开发迅速
部署.因而,程序员可以通过可编程的控制逻辑控制整个 SDN 网络.具体来说,控制逻辑通过转换应用程序对数
据层元素进行低级控制,同时提供相关信息,还可以根据策略协调对于有限网络资源的需求,从而真正实现了软
件定义网络.
1.2 P4编程语言介绍
随着 SDN 的发展,OpenFlow 协议作为 SDN 的南向协议,一时间成为流行的标准用于控制平面和数据平面
的交互.OpenFlow 假设交换机具有固定的、众所周知的行为,通常在交换机 ASIC 的数据表中描述.传统的高性
能交换芯片支持一组固定的协议,因为它们直接在芯片中实现 IEEE 和 IETF 标准协议.用户无法更改其行为并
添加新协议或测量和控制数据路径的新方法.
然而 OpenFlow 并不真正控制交换机行为,它为我们提供了一种填充一组众所周知的表的方法.SDN 通常
与 OpenFlow 协议相关联,OpenFlow 协议是 SDN 的南向接口,目前已经发布了许多版本,其匹配域个数也不断增
加,但是每次更新匹配域,对应交换机的协议栈和数据包处理逻辑就要更新,降低了 OpenFlow 协议的可扩展性、
可编程性,因此对其协议的推广造成负面影响.
[4]
针对此问题,斯坦福大学的 Nick 教授及其团队研究出 P4 高级编程语言.2015 年 6 月在斯坦福大学 展开
对 P4 的相关工作.P4 是一种协议独立的语言,提供了编码结构,其范围从通用 CPU 到网络处理器、FPGA 和定