论文部分内容阅读
流控制传输协议(Stream Control Transmission Protocol,SCTP)是一种尚在推广的传输层协议,在设计之初便融合传输控制协议(Transmission Control Protocol,TCP)和用户数据报协议(User Datagram Protocol,UDP)的优点,同时支持有序无序的消息模式。它除了TCP具备的拥塞管理和数据丢失重发,还具有多宿主、多流的独特机制,更具有天然的防止拒绝服务(Denial of Service,DOS)攻击的安全特性。因此,很多对稳定性和安全性有特殊要求的应用,都将SCTP作为主要的传输层协议,如果再将传输顺序考虑进来,SCTP无疑是最合适的一个选择。然而,由于SCTP无法穿越现有的网络地址转换(Network Address Translation,NAT)网关,目前SCTP多是在私有局域网上部署,广域公网上的落地难以推行,因此本文设计了基于可编程协议包处理器(Programming Protocol-Independent Packet processor,P4)的实现SCTP方案,将SCTP端到端的连接包裹在UDP报文中传输,有利于SCTP公网发展。P4使用自定义方式实现数据平面的设计,利用该语言协议无关、器件无关的特性,可以方便地进行可编程配置;针对性能要求,还可以通过平台相关的编译器,将设计直接部署到硬件设备上。本文主要工作是,使用可编程数据平面,实现类似RFC6951提供的UDP封装SCTP方案,在终端出口部署SCTP封装和解封装的模块。本次设计的创新点在于:使用P4语言作为SCTP的实现方式,将SCTP协议从内核协议栈中分离出来,使用可编程数据平面在交换设备上实现。本文利用软件定义网络(Software Defined Network,SDN)构建网络拓扑,通过了第二版行为级模型(behavioral model version 2,BMv2)软件交换机的测试验证,基本满足了SCTP的协议规范。在测试拓扑允许的最大10Mbps带宽下,UDP报文丢包率始终不超过1%,可以满足正常的公网上网需要。本设计为SCTP协议的公网部署提供了一种可行的方案,使得SCTP适合作为下一代传输层的协议使用。通过为普通UDP报文提供SCTP协议的功能,解决了当前SCTP使用过程中无法穿越类似防火墙或者NAT网关的问题。通过分离数据平面和控制平面的方式,使得本次设计的逻辑功能与设备无关,借助相应的后端编译器,能够根据实际需要选择不同的软件或硬件设备,满足不同的应用场景需要。