SCTP多归属技术在VPN网络中的应用
2020-01-18许多
文/许多
VPN技术可以保护在公网上传输的私有信息不会被窃取和篡改,从而在不安全的Internet公网上开辟了一个安全的私有网络,因此得到应用广泛。在基于MPLS(Multi-Protocol Label Switch,多协议标签交换)的VPN网络设备中,一般根据接口将设备划分为多个VRF(Virtual Route Forwarding Instance,虚拟路由转发实例),每个VRF对应一个VPN私有网络,不同VRF之间相互隔离无法通信。
SCTP是在传统的传输层协议TCP(Transmission Control Protocol,传输控制协议)的基础上改进而来的,是在IP网络上建立下一代高质量通信和电子商务的关键部分。SCTP较TCP的一大改进就是SCTP支持多归属功能,一条SCTP偶联(即连接)可以跨越多条通信路径,这些路径可以是物理上或逻辑上不同的,从而实现路径备份和负荷分担,即可以充分利用多条路径的网络带宽,又能够提高容错性,避免局部网络故障导致的业务中断。
SCTP多归属功能,需要双方在建链协商阶段互相通告各自支持的多个IP地址。对于划分了多VRF的设备来说,每个IP地址都归属于某个私网或公网VRF域。但是,VRF的标识符VrfName或VrfID,仅仅是本设备内部分配的,不能在SCTP协商报文中随同IP地址一起通告给对端设备;VRF所对应的设备接口,虽然可以通过划分VLAN来区分VRF,但VLAN的标识号只能在二层局域网络中有效,不能穿越三层IP网络,更不能被SCTP协商报文用于通告给对端。因此,VRF网络中要想实现SCTP多归属,存在着诸多困难。
本文克服现有技术在VPN网络中部署SCTP多归属存在的问题和缺陷,提供一种实现VPN网络中SCTP多归属的方法和装置,应用于网络通信。
1 技术思路
图1:VPN网络的SCTP多归属
图2:心跳报文封装格式
图3:通路管理信息表
VPN网络SCTP多归属的组网如图1,假设SCTP的两个端点设备A和设备B,使用多个接口,通过多个VPN网络进行连接。这里,公网也被当作是一个特殊的VPN网络。设备的多个接口,可以是不同的物理接口或同一个接口上的多个子接口。SCTP偶联的IP地址具体选择哪个接口是由VRF路由决定的。SCTP偶联的多个本端IP与多个对端IP之间交叉配对形成通路,例如:对端通告2个IP,本端有3个IP,则形成6个地址对,即6条通路。
现有的心跳(HeartBeat,以下简称HB)检测和通路管理,无法区分VRF,因此首先考虑对标准的SCTP心跳报文进行扩展,使用其报文净荷部分,定义新的封装格式用于支持VRF通路的检测,如图2所示。发送的心跳检测报文中封装有本端IP、对端IP和VRF标识,以便在收到心跳应答时能确定是属于哪一条通路的哪个VRF。这里IP地址可以是IPv4,也可以是IPv6的。
在心跳检测报文支持标识VRF后,可进一步管理基于VRF的通路,对不同的通路进行检测以便确定其有效性和状态。
对SCTP多归属中基于VRF的多条通路进行检测和管理,具体方法为:
(1)SCTP在建链协商阶段收到对端通告的多个IP地址后,将每个对端IP地址与每个本端IP地址配对,交叉配对形成多条通路,写入通路信息表;通路信息表中建链所用的那条通路具备VRF信息(由上层业务在发起建链时指定),其他每条通路的VRF信息都为空。SCTP建链成功后,本端对每条通路中的对端IP地址,遍历设备的所有VRF路由表进行匹配查找,将存在有效路由的VRF标识记录下来,状态为Pending。
SCTP通路管理信息表如图3所示。
(2)本端对于每条通路周期性地发送HB报文(心跳检测请求),每条通路需要针对每条通路中的VRF发送HB报文,HB报文中的HB信息块如图2所示,封装入通路IP地址和相应的VRF标识。SCTP两端都会按照各自的周期主动发送HB报文,HB报文中捎
2 基于VRF的通路检测和管理
带有HeartBeat_Info(简称HB_Info)信息,是一个可变长度的非透明数据块,其信息通常只需要发送方识别即可,这里除VRF标识外,还可以包含其他信息(例如对端IP地址和发送时间);对端收到本端发送的HB报文后,需要直接确认并回应HeartBeat_Ack(简称HB_Ack)报文,将HB_Info信息原样封装到HB_Ack中返回。为了提高心跳检测效率,每条通路中可以将多个VRF形成的多个HB报文一起发送出去。
本端收到对端回应的HB_Ack报文后,取出其中的VRF标识,作为该通路的有效VRF信息(状态为Active),同时记录下该VRF的RTT(Round-Trip Time,双向传输时间)和SRTT(Smoothed RTT,平滑的双向传输时间);如果某个Pending状态的VRF在发送HB检测次数超过门限后仍未收到HB_Ack应答,则将该VRF从通路信息表中移除。设备需要针对每条通路的每个VRF维护管理信息,其心跳检测次数门限等于所属通路的检测次数门限。
(3)经过一段时间的HB心跳检测,每条通路都得到较为稳定的VRF信息,此后如果有VRF通路的心跳检测次数超过门限,则将该VRF状态标记为Inactive。SCTP处于偶联建立状态时一直需要进行通路检测,只有当该通路的所有VRF信息都标记为Inactive时,该通路才被认为是未激活的。只要心跳检测收到应答,则对应的通路VRF状态标记为Active;只要通路中存在一个Active的VRF,则该通路被认为是激活的。
需要说明的是,如果通路存在多个Active的VRF,则以SRTT最小的VRF作为当前主用VRF,该通路的RTT和SRTT也使用主用VRF的,该通路传输数据时使用主用VRF。通路主用VRF是动态更新的,即如果通路中有其他VRF的SRTT小于当前主用VRF的SRTT,或当前主用VRF状态变为Inactive时,则需要将主用VRF切换到其他VRF上。在实际部署时,通路中Active的VRF数量一般是很有限的。
当设备的VRF路由表发生变化时,可以重新按照上面的方法,将存在有效路由的VRF放入通路信息表中进行检测。当VRF路由表发生变化时,由VRF路由管理单元主动通知SCTP模块。SCTP稳定运行一段时间后,也可以重新按照上面的方法,定期将存在有效路由的VRF放入通路信息表中进行检测。
3 结束语
本文将VRF网络和SCTP多归属的优势相结合,提出VRF网络中实现SCTP多归属的技术,既能保证数据传输的安全性和可靠性,又便于实施路径备份和负荷分担,避免网络通路中单点故障给业务带来的传输中断。同时,所述技术对本端IP网络层的实现方式以及外部的组网形式、对端SCTP的处理方式都没有特殊要求,具有很强的通用性和实用性。