Programming Protocol-Independent Packet Processors

Posted 031602523liu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Programming Protocol-Independent Packet Processors相关的知识,希望对你有一定的参考价值。

引言


  • OpenFlow协议固定的包头域数目,使得南向协议过于死板。
  • P4可以实现自定义包头,增加灵活性。
  • P4是OpenFlow未来发展的方向。

We propose P4 as a strawman proposal for how OpenFlow should evolve in the future.

  • P4的三个目标:
    • 可重新配置。
    • 协议无关性。
    • 目标无关性:强调了P4的通用性。

1. INTRODUCTION


技术分享图片

  • 可以看出:随着版本的迭代,OpenFlow协议越来越复杂。
  • 不再像OpenFlow一样重复的扩展包头,交换机应该支持灵活的“匹配-动作”机制,灵活的包解析机制。这样带来的好处是:
    • 网络供应商扩展新功能变得简单。
    • 控制器应用可以通过通用的南向接口(OpenFlow2.0)来利用交换机的这些功能。
    • 简化南向协议。(与OpenFlow1.x相比)

技术分享图片

  • P4:用来配置交换机,告诉交换机如何处理包。
  • existing APIs:例如OpenFlow,被设计用来填充固定功能交换机中的转发表。
  • Figure 1展示了P4与existing APIs的关系:P4提高了网络编程的抽象程度,P4也可以称为像OpenFlow一样的南向协议。

That is, we believe that future generations of OpenFlow should allow the controller to tell the switch how to operate, rather than be constrained by a fixed switch design.

  • 全文框架
    • 一个关于P4的实例。
    • P4如何实现自定义包头,包解析,多张“匹配-动作”表以及多张表之间的控制流。
    • P4编译器的功能及实现。
  • Related work
    • Yadav et al:提出了OpenFlow的一个抽象转发模型,但是忽略了编译器。
    • Kangaroo:介绍了可编程包解析的概念。
    • Song:提出了协议无关,但是他的目标交换机更加倾向于网络处理器。
    • ONF:介绍了表达交换机的匹配能力的类型表。
    • NOSIX:“匹配-动作”表的灵活规范,但是没有考虑协议无关,也没有提出一种语言来定义自定义包头,包解析,多张“匹配-动作”表以及多张表之间的控制流。
    • Other recent work:提出了用于数据平面监视、拥塞控制和队列管理的编程接口。
    • The Click modular router:在软件中支持灵活的数据包处理,但无法将程序配置到各种目标交换机。

2. P4 LANGUAGE BY EXAMPLE


背景:网络部署分为核心交换机与边缘交换机。终端主机与边缘交换机直接相连,边缘交换机通过高带宽的核心交换机相连,核心交换机负责包的转发。

例子是这样的
  • 一个L2网络,使用ToR相连的交换机做为边缘设备。边缘设备之间用2层核心交换机相连。

L2网络:
OSI网络模型分为七层:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
L1代表layer 1就是物理层 L2是数据链路层 L3是网络层

ToR连接技术:
TOR(Top of Rack)是一种数据中心的布线方式。其他的布线方式还有EOR(End of Row)和MOR(Middle of Row)。
TOR接入方式就是在标准的42U的服务器机柜的最上面安装接入交换机。服务器的网口都接入到机柜上部的交换机上。这个接入交换机再通过铜缆或光纤接入到网络机柜的汇聚或核心交换机上。这种组网的好处是简化布线,从服务器机柜到列头柜只有很少的电缆。
这种布局要求每个服务器机柜的服务器密度比较高。
从网络设计上看,TOR布局中每台交换机上的VLAN/子网不会太多,在网络规划的时候也尽量避免让一个VLAN跨了多台交换机,所以TOR布局时一个VLAN范围不会太大,所包含的端口不会太多。但对于EOR来说,一个VLAN范围可能会更大,包含的端口更多。
还有一点,TOR布局的交换机数量多,EOR布局的交换机数量少,所以两者的维护管理工作量也不同。

  • 假设终端主机数目增多,二层核心交换的的转发表Overflowing,有以下三种方法来解决这个问题:
方案 做法 不足
MPLS 为每个数据包打上一个Tag,转发时只根据这个Tag来转发。 分发标签,多标签难实现
PortLand 重写MAC地址 破坏网络调试工具、增加ARP协议的负担
P4 mTag:结合上面二者。把核心路由的转发路线以及目的定界符(PortLand‘s Pseudo MAC)编码为4字节的Tag,核心交换机在转发时只需检查4字节中的1个字节即可完成转发。这个标签可以由数据包经过的第一个ToR交换机打上,也可以由主机上的NIC打上。这个例子采用了前者。 -







以上是关于Programming Protocol-Independent Packet Processors的主要内容,如果未能解决你的问题,请参考以下文章

Programming In hardware Programming in software

programming terms

C200 Programming

CAB402 Programming

Defensive Programming 随笔

ECS 50: Programming