一种业务链上数据包的关联方法及装置
技术领域
本发明涉及通信技术领域,尤其涉及一种业务链上数据包的关联方法及装置。
背景技术
传统数据中心网络的增值业务设备一般部署在汇聚层或核心层,其位置固定并且配置固定,无法根据客户对增值业务的不同需求提供动态的增值服务叠加、迁移和编程等。如果需要增加、删除和/或更改增值业务,需要重新对增值业务设备进行部署,同时还需要改变网络拓扑,如此,加大了管理和维护的难度。尤其在云计算时代,这种增值业务设备的部署方式显然不能满足客户的需求。
相对传统数据中心网络而言,业务链(英文:ServiceChain)的增值业务部署则灵活许多,增值业务可部署在核心交换机、架顶(英文:TopofRack,简称:TOR)交换机旁或虚拟机(英文:VirtualMachine,简称:VM)上。管理员可以为租户动态增加、删除和/或更改增值业务(物理的或虚拟的),有效提高灵活性和资源利用率。对于业务链增值业务,租户不用关心增值业务设备的具体部署位置和网络拓扑,并且,业务链允许租户根据不同的业务需求选择不同的增值业务。在把不同流量按照用户的需求送给不同的增值业务设备处理时,可以逐跳配置策略路由,也可以构建两者间的点到点隧道。鉴于配置和实现简单,业界一般采用隧道(英文:Tunnel)技术来实现业务链功能,即在不同增值业务设备之间建立点到点隧道,从而将经过不同增值业务设备串接起来。
对于增值业务设备,一般需要双向的数据流才能正常工作,如防火墙(英文:Firewall,简称:FW)、入侵防御系统(英文:IntrusionPreventionSystem,简称:IPS)、反病毒(英文:AntiVirus,简称:AV)等增值业务设备都需要双向的数据流。如何使业务链上行及下行的数据流进行关联,业界正在研究。
发明内容
本发明提供一种业务链上数据包的关联方法及装置,用以实现业务链中上行及下行的数据包的关联,并实现了业务链中网络地址转换(英文:NetworkAddressTranslation,简称:NAT)设备的串接。
第一方面,本发明提供一种业务链上数据包的关联方法,包括:
接收第一设备发送的属于第一业务流的第一上行数据包;所述第一业务流为需要所述业务链处理的业务流;
保存所述第一上行数据包中携带的第一业务流标识;所述第一业务流标识用于识别所述第一业务流;
在所述第一上行数据包的负载中增加所述业务链的地址链,形成第二上行数据包,所述地址链包括所述业务链上各增值业务设备的IP地址;
根据所述业务链的地址链,向所述业务链的第一增值业务设备发送所述第二上行数据包;所述第一增值业务设备为所述业务链的上行方向上的第一个增值业务设备;
接收所述业务链的第二增值业务设备返回的第三上行数据包;所述第三上行数据包是由所述业务链上的各增值业务设备依次对所述第二上行数据包处理后得到的;所述第二增值业务设备为所述业务链中上行方向上的最后一个增值业务设备;
删除所述第三上行数据包的负载中的所述地址链,形成第四上行数据包;
将所述第四上行数据包发送给第二设备;
接收所述第二设备发送的第一下行数据包;
在根据保存的所述第一业务流标识和所述第一下行数据包中携带的第二业务流标识确定所述第一下行数据包属于所述第一业务流的反向业务流时,关联所述第一下行数据包到所述第一业务流。
结合第一方面,在第一种可能的实现方式中,
在所述第一上行数据包的负载中增加所述业务链的地址链之前,所述方法还包括:
保存所述第一上行数据包的头部中包括的MAC地址信息;以及
删除所述第一上行数据包的包括所述MAC地址信息的头部;
在删除所述第三上行数据包的负载中的所述地址链之前,所述方法还包括:
为所述第三上行数据包添加包括源MAC地址和目的MAC地址的头部。
结合第一方面的上述任意一种实现方式,在第二种可能的实现方式中,接收第三上行数据包后,为所述第三上行数据包添加包括源MAC地址和目的MAC地址的头部之前,所述方法还包括:
保存所述第三上行数据包中携带的NAT转换关系,所述NAT转换关系由所述业务链上的NAT设备对所述第二上行数据包进行处理后写入所述第三上行数据包的负载中;
所述形成第四上行数据包之前,所述方法还包括:
删除所述第三上行数据包的负载中的所述NAT转换关系;
所述在根据保存的所述第一业务流标识和所述第一下行数据包中携带的第二业务流标识确定所述第一下行数据包属于所述第一业务流的反向业务流时,关联所述第一下行数据包到所述第一业务流,包括:
在根据保存的所述第一业务流标识、所述NAT转换关系和所述第一下行数据包中携带的第二业务流标识确定所述第一下行数据包属于所述第一业务流的反向业务流时,关联所述第一下行数据包到所述第一业务流。
结合第一方面的上述任意一种实现方式,在第三种可能的实现方式中,在所述第一上行数据包的负载中增加所述业务链的地址链,包括;
在所述第一上行数据包的负载中增加第一Tag,并在所述第一Tag中增加所述业务链的地址链;
所述第一Tag中还包括:
Tag长度以及NAT设备串接标识;所述NAT设备串接标识用于表明所述业务链中是否包括NAT设备。
结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,保存所述第一上行数据包的头部中包括的MAC地址信息,包括:
将所述第一上行数据包的头部中包括的MAC地址信息写入所述第一上行数据包的负载中增加的所述第一Tag中;
为所述第三上行数据包添加包括源MAC地址和目的MAC地址的头部包括:
在所述第三上行数据包的负载中携带的所述第一Tag中提取所述MAC地址信息,并
根据所述保存的MAC地址信息为所述第三上行数据包添加包括源MAC地址和目的MAC地址的头部。
结合第一方面的第三种可能的实现方式,在第五种可能的实现方式中,保存所述第一上行数据包的头部中包括的MAC地址信息,包括:
将所述第一上行数据包的头部中包括的MAC地址信息保存在本地;
为所述第三上行数据包添加包括源MAC地址和目的MAC地址的头部包括:
获取本地保存的所述MAC地址信息,根据所述MAC地址信息为所述第三上行数据包添加包括源MAC地址和目的MAC地址的头部。
结合第一方面的第三种至第五种中任意一种实现方式,在第六种可能的实现方式中,关联所述第一下行数据包到所述第一业务流,包括:
根据所述第一业务流标识获取所述地址链;
在所述第一下行数据包的负载中增加第二Tag,所述第二Tag包括反向地址链,所述反向地址链包含的各地址的顺序和所述地址链包含的各地址的顺序相反。
结合第一方面的第六种可能的实现方式,在第七种可能的实现方式中,关联所述第一下行数据包到所述第一业务流之后,还包括:
将在所述第一下行数据包的负载中增加第二Tag后形成的第二下行数据包发送给所述第二增值业务设备;
接收所述第一增值业务返回的第三下行数据包;
使用保存的所述MAC地址信息为所述第三下行数据包添加包括源MAC地址和目的MAC地址的头部,并删除所述第三下行数据包的负载中的第二Tag,形成第四下行数据包;所述第四下行数据包的源MAC地址为所述第四上行数据包的目的MAC地址,所述第四下行数据包的目的MAC地址为所述第四上行数据包的源MAC地址;
将所述第四下行数据包转发给所述第一设备。
第二方面,本发明提供一种业务链上数据包的关联装置,包括:
第一接收单元,用于接收第一设备发送的属于第一业务流的第一上行数据包;所述第一业务流为需要所述业务链处理的业务流;
存储单元,用于保存所述第一上行数据包中携带的第一业务流标识;所述第一业务流标识用于识别所述第一业务流;
第一增加单元,用于在所述第一上行数据包的负载中增加所述业务链的地址链,形成第二上行数据包,所述地址链包括所述业务链上各增值业务设备的IP地址;
第一发送单元,用于根据所述业务链的地址链,向所述业务链的第一增值业务设备发送所述第二上行数据包;所述第一增值业务设备为所述业务链的上行方向上的第一个增值业务设备;
第二接收单元,用于接收所述业务链的第二增值业务设备返回的第三上行数据包;所述第三上行数据包是由所述业务链上的各增值业务设备依次对所述第二上行数据包处理后得到的;所述第二增值业务设备为所述业务链中上行方向上的最后一个增值业务设备;
第一删除单元,用于删除所述第三上行数据包的负载中的所述地址链,形成第四上行数据包;
第二发送单元,用于将所述第四上行数据包发送给第二设备;
第三接收单元,用于接收所述第二设备发送的第一下行数据包;
关联单元,用于在根据保存的所述第一业务流标识和所述第一下行数据包中携带的第二业务流标识确定所述第一下行数据包属于所述第一业务流的反向业务流时,关联所述第一下行数据包到所述第一业务流。
结合第二方面,在第一种可能的实现方式中,
所述存储单元还用于,在所述第一增加单元在所述第一上行数据包的负载中增加所述业务链的地址链之前,保存所述第一上行数据包的头部中包括的MAC地址信息;
所述第一删除单元还用于,删除所述第一上行数据包的包括所述MAC地址信息的头部;
所述第一增加单元还用于,在所述第一删除单元删除所述第三上行数据包的负载中的所述地址链之前,为所述第三上行数据包添加包括源MAC地址和目的MAC地址的头部。
结合第二方面的上述任意一种实现方式,在第二种可能的实现方式中,
所述存储单元还用于,在所述第二接收单元接收第三上行数据包后,在所述第一增加单元为所述第三上行数据包添加包括源MAC地址和目的MAC地址的头部之前,保存所述第三上行数据包中携带的NAT转换关系,所述NAT转换关系由所述业务链上的NAT设备对所述第二上行数据包进行处理后写入所述第三上行数据包的负载中;
所述第一删除单元还用于,在形成第四上行数据包之前,删除所述第三上行数据包的负载中的所述NAT转换关系;
所述关联单元具体用于,在根据保存的所述第一业务流标识、所述NAT转换关系和所述第一下行数据包中携带的第二业务流标识确定所述第一下行数据包属于所述第一业务流的反向业务流时,关联所述第一下行数据包到所述第一业务流。
结合第二方面的上述任意一种实现方式,在第三种可能的实现方式中,在所述第一上行数据包的负载中增加所述业务链的地址链时,所述第一增加单元具体用于,
在所述第一上行数据包的负载中增加第一Tag,并在所述第一Tag中增加所述业务链的地址链;所述第一Tag中还包括:Tag长度以及NAT设备串接标识;所述NAT设备串接标识用于表明所述业务链中是否包括NAT设备。
结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,在保存所述第一上行数据包的头部中包括的MAC地址信息时,所述存储单元具体用于:
将所述第一上行数据包的头部中包括的MAC地址信息写入所述第一上行数据包的负载中增加的所述第一Tag中;
在为所述第三上行数据包添加包括源MAC地址和目的MAC地址的头部时,所述第一增加单元具体用于:
在所述第三上行数据包的负载中携带的所述第一Tag中提取所述MAC地址信息,并根据所述保存的MAC地址信息为所述第三上行数据包添加包括源MAC地址和目的MAC地址的头部。
结合第二方面的第三种可能的实现方式,在第五种可能的实现方式中,在保存所述第一上行数据包的头部中包括的MAC地址信息时,所述存储单元具体用于:
将所述第一上行数据包的头部中包括的MAC地址信息保存在本地;
在为所述第三上行数据包添加包括源MAC地址和目的MAC地址的头部时,所述第一增加单元具体用于:
获取本地保存的所述MAC地址信息,根据所述MAC地址信息为所述第三上行数据包添加包括源MAC地址和目的MAC地址的头部。
结合第二方面的第三种至第五种中任意一种实现方式,在第六种可能的实现方式中,在关联所述第一下行数据包到所述第一业务流时,所述关联单元具体用于:
根据所述第一业务流标识获取所述地址链;
在所述第一下行数据包的负载中增加第二Tag,所述第二Tag包括反向地址链,所述反向地址链包含的各地址的顺序和所述地址链包含的各地址的顺序相反。
结合第二方面的第六种可能的实现方式,在第七种可能的实现方式中,还包括:
第三发送单元,用于将在所述第一下行数据包的负载中增加第二Tag后形成的第二下行数据包发送给所述第二增值业务设备;
第四接收单元,用于接收所述第一增值业务返回的第三下行数据包;
第二增加单元,用于使用保存的所述MAC地址信息为所述第三下行数据包添加包括源MAC地址和目的MAC地址的头部;
第二删除单元,用于删除所述第三下行数据包的负载中的第二Tag,形成第四下行数据包;所述第四下行数据包的源MAC地址为所述第四上行数据包的目的MAC地址,所述第四下行数据包的目的MAC地址为所述第四上行数据包的源MAC地址;
第四发送单元,用于将所述第四下行数据包转发给所述第一设备。
本发明实施例中,只通过一个引流点,便能实现业务链中上行和下行两个方向的数据流的关联,并且能够支持NAT设备在业务链中的串接。
附图说明
图1为本发明实施例一提供的一种业务链上数据包的关联方法的原理示意图;
图2为本发明实施例一的技术方案示意图;
图3为本发明实施例一提供的一种业务链上数据包的关联方法的详细流程图;
图4为本发明实施例二提供的一种串接了NAT设备的业务链上数据包的关联方法的原理示意图;
图5为本发明实施例二提供的一种串接了NAT设备的业务链上数据包的关联方法的详细流程图;
图6为本发明实施例三提供的一种业务链上数据包的关联装置的结构示意图;
图7为本发明实施例四提供的一种业务链上数据包的关联装置的结构示意图。
具体实施方式
本发明实施例提供了一种业务链上数据包的关联方法及装置,能够实现业务链中上行及下行的数据包的关联。
下面结合说明书附图和各实施例对本发明技术方案进行说明。
实施例一
参阅图1所示,为本发明实施例的原理示意图。软件定义网络(英文:SoftwareDefinedNetwork,缩写:SDN)控制器1利用隧道技术将增值业务设备2和增值业务设备3串接形成业务链,业务链的两端连接在同一个引流点4上,其中,增值业务设备2和增值业务设备3均不为NAT设备。图1中,实线表示数据包不经过业务链时的正常转发,虚线表示数据包通过隧道进行转发,引流点4可视为支持业务链功能的交换机或者网关设备。用户5发出的上行数据包,先通过正常转发流程进入引流点4,由引流点4发送到业务链的增值业务设备2上,依次经增值业务设备2和增值业务设备3处理后,再次返回到引流点4,随后进行正常转发。同理,返回的下行数据包,也是先进入引流点4,再由引流点4发送到业务链的增值业务设备3上,依次经增值业务设备3和增值业务设备2处理后,再经引流点4发送给用户5。
如图2所示,将图1所示的技术方案抽象化为接口1、接口2及数个隧道接口。其中,接口1与接口2对等,引流点部署在VM与TOR之间。在实际的组网中,引流点可部署在数据中心的各个地方,只要流量能经过即可;隧道接口可以为二层隧道接口,也可以为三层隧道接口。图2中,不做业务链处理的业务流可以走普通二层交换机转发流程,基于介质访问控制(英文:MediaAccessControl,缩写:MAC)地址转发,如图2中的路径1、4、5、8,或路径5、8、1、4。需要做业务链处理的业务流则通过引流规则进入隧道,图2中的上行业务流的处理流程为1、2、3、4,下行业务流的处理流程为5、6、7、8。
上述方法的详细流程图如图3所示,具体包括以下步骤:
步骤301:接收第一设备发送的属于第一业务流的第一上行数据包;第一业务流为需要业务链处理的业务流。
其中,对于接收的每一个上行数据包,引流点会根据预先配置的策略对其进行检查。这里所说的预先配置的策略,可以是预先指定的IP地址,也可以是预先指定的端口,等等。对于与预设策略不匹配的上行数据包,引流点则确认该上行数据包属于不需要业务链处理的业务流,直接基于MAC地址通过普通二层交换机将该上行数据包转发给第二设备;对于与预设策略匹配的上行数据包,引流点则确认该上行数据包属于需要业务链处理的业务流,需要先通过引流规则将该上行数据包发送到业务链进行增值业务处理。
本发明实施例中,第一设备可以是客户端,第二设备可以是服务器或者网络中的任意一台计算机;也可以反之,第一设备是服务器或者网络中的任意一台计算机,第二设备是客户端。
步骤302:保存上述第一上行数据包中携带的第一业务流标识;该第一业务流标识用于识别上述第一业务流。
这里所说的第一上行数据包中携带的第一业务流标识,包括了第一上行数据包的源IP地址、目的IP地址、源端口、目的端口等可以识别第一业务流的信息。
步骤303:在上述第一上行数据包的负载中增加业务链的地址链,形成第二上行数据包,该地址链包括业务链上各增值业务设备的IP地址。
具体的,引流点在第一上行数据包的负载中增加第一标识(Tag),并在该第一Tag中增加业务链的地址链,该地址链即业务链的IP链(~RouteData),其内包含了引流点的IP及业务链上各增值业务设备的IP地址。此外,第一Tag还包括了:Tag类型(英文:Type)、Tag长度(英文:Length)、保留字符(英文:Reserved)以及NAT设备串接标识(英文:NAT_FLAG),其中,NAT_FLAG=0表示业务链上没有串接NAT设备,NAT_FLAG=1表示业务链上串接了NAT设备。本实施例中,第一Tag中的NAT_FLAG=0。完整的第一Tag参见表1所示。需要注意的是,引流点需要对第一上行数据包的第一Tag另行保存。
表1
在步骤303之前,为了防止在增值业务处理的过程中上行数据包的原始MAC地址信息被丢失或篡改,影响后续上行数据包到第二设备的正常转发,引流点还会保存上述第一上行数据包的头部中包括的MAC地址信息,以及删除第一上行数据包的包括该MAC地址信息的头部。
其中,引流点保存上行数据包的原始MAC地址信息,可以但不限于通过以下两种方法来实现:
方法一、
将第一上行数据包的头部中包括的MAC地址信息写入第一上行数据包的负载中增加的第一Tag中,如表2所示,~DestMAC表示第一上行数据包的目的MAC地址,~SourceMAC表示第一上行数据包的源MAC地址。
表2
方法二、
将第一上行数据包的头部中包括的MAC地址信息保存在引流点本地。
例如,可以将第一上行数据包的IP地址与MAC地址信息的对应关系保存在引流点本地,由引流点对二者之间的对应关系进行保存、维护和更新。
步骤304:根据业务链的地址链,向业务链的第一增值业务设备发送上述第二上行数据包;该第一增值业务设备为业务链的上行方向上的第一个增值业务设备。
步骤305:接收业务链的第二增值业务设备返回的第三上行数据包;该第三上行数据包是由业务链上的各增值业务设备依次对上述第二上行数据包处理后得到的;该第二增值业务设备为业务链中上行方向上的最后一个增值业务设备。
步骤306:删除上述第三上行数据包的负载中的地址链,形成第四上行数据包。
其中,在收到所述第三上行数据包后,删除上述第三上行数据包的负载中的地址链之前或之后,引流点会为该第三上行数据包添加包括源MAC地址和目的MAC地址的头部。
与上述保存MAC地址信息的两种方法对应的,也有以下两种方法可以实现将原始的MAC地址信息添加到第三上行数据包的头部中:
方法一、
在保存第一上行数据包的头部中包括的MAC地址信息时,若采用的是第一种方式,则此时可以从第三上行数据包的负载中携带的第一Tag中提取MAC地址信息,并根据提取的MAC地址信息为第三上行数据包添加包括源MAC地址和目的MAC地址的头部。
方法二、
在保存第一上行数据包的头部中包括的MAC地址信息时,若采用的是第二种方式,则此时可以获取本地保存的MAC地址信息,根据该MAC地址信息为第三上行数据包添加包括源MAC地址和目的MAC地址的头部。
例如,在保存第一上行数据包的头部中包括的MAC地址信息时,采用了将第一上行数据包的IP地址与MAC地址信息的对应关系保存在引流点本地的方式。由于业务链上没有串接NAT设备,经增值业务设备处理后返回的第三上行数据包的IP地址,与第一上行数据包的IP地址相同。此时可以根据第三上行数据包的IP地址,在本地保存的第一上行数据包的IP地址与MAC地址信息的对应关系中提取对应的第一上行数据包的MAC地址信息,根据该MAC地址信息为第三上行数据包添加包括源MAC地址和目的MAC地址的头部。
步骤307:将上述第四上行数据包发送给第二设备。
步骤308:接收第二设备发送的第一下行数据包。
步骤309:在根据保存的第一业务流标识和第一下行数据包中携带的第二业务流标识确定上述第一下行数据包属于第一业务流的反向业务流时,关联第一下行数据包到第一业务流。
具体的,当第一下行数据包中携带的第二业务流标识中的源IP地址、目的IP地址、源端口、目的端口中的一个或多个,分别与保存的第一业务流标识中的目的IP地址、源IP地址、目的端口、源端口中的一个或多个相匹配,则确定该第一下行数据包属于第一业务流的反向业务流。
当确定第一下行数据包属于第一业务流的反向业务流后,引流点便根据第一业务流标识获取相应的地址链,在第一下行数据包的负载中增加第二Tag,第二Tag包括反向地址链,反向地址链包含的各地址的顺序和地址链包含的各地址的顺序相反,从而完成第一下行数据包到第一业务流的关联。
例如,若第一Tag中的地址链为:IP1-IP2-IP3-IP1,那么添加到第一下行数据包的第二Tag中的反向地址链则为:IP1-IP3-IP2-IP1。如果第一Tag中还包括了源MAC地址和目的MAC地址分别为MAC1和MAC2,那么添加到第一下行数据包的第二Tag中的源MAC地址和目的MAC地址则分别为MAC2和MAC1。
引流点将第一下行数据包关联到第一业务流之后,将在该第一下行数据包的负载中增加第二Tag后形成的第二下行数据包发送给上述第二增值业务设备,并接收上述第一增值业务返回的第三下行数据包,然后使用保存的MAC地址信息为第三下行数据包添加包括源MAC地址和目的MAC地址的头部,并删除第三下行数据包的负载中的第二Tag,形成第四下行数据包,第四下行数据包的源MAC地址为第四上行数据包的目的MAC地址,第四下行数据包的目的MAC地址为第四上行数据包的源MAC地址;将第四下行数据包转发给第一设备后,便完成了第一业务流的处理流程。
上述实施例一仅通过一个引流点,便实现了业务链中上行及下行两个方向的数据流的关联。
上述实施例一为未串接NAT设备的业务链上数据包的关联方法,下面通过实施例二对串接了NAT设备的业务链上数据包的关联方法进行说明。
实施例二
本发明实施例提供了一种支持NAT设备串接的业务链上数据包的关联方法,参阅图4所示,为本发明实施例的原理示意图,SDN控制器1利用隧道技术将增值业务设备2和增值业务设备3串接形成业务链,业务链的两端连接在同一个引流点4上,其中,增值业务设备2为NAT设备。图4中,实线表示数据包不经过业务链时的正常转发,虚线表示数据包通过隧道进行转发,引流点4可视为支持业务链功能的交换机或者网关设备。用户5发出的上行数据包,先通过正常转发流程进入引流点4,由引流点4发送到业务链的增值业务设备2上,依次经增值业务设备2和增值业务设备3处理后,再次返回到引流点4,随后进行正常转发。同理,返回的下行数据包,也是先进入引流点4,再由引流点4发送到业务链的增值业务设备3上,依次经增值业务设备3和增值业务设备2,再经引流点4发送给用户5。
上述方法的详细流程图如图5所示,具体包括以下步骤:
步骤501:接收第一设备发送的属于第一业务流的第一上行数据包;第一业务流为需要业务链处理的业务流。
步骤502:保存上述第一上行数据包中携带的第一业务流标识;该第一业务流标识用于识别上述第一业务流。
上述步骤501和502的实现过程可以参考步骤301和302。
步骤503:在上述第一上行数据包的负载中增加业务链的地址链,形成第二上行数据包,该地址链包括业务链上各增值业务设备的IP地址。
步骤503的具体实现过程可以参考步骤303。不同的是,本实施例中,第一Tag中的NAT_FLAG=1。
步骤504:根据业务链的地址链,向业务链的第一增值业务设备发送上述第二上行数据包;该第一增值业务设备为业务链的上行方向上的第一个增值业务设备。
步骤505:接收业务链的第二增值业务设备返回的第三上行数据包;该第三上行数据包是由业务链上的各增值业务设备依次对上述第二上行数据包处理后得到的;该第二增值业务设备为业务链中上行方向上的最后一个增值业务设备。
步骤506:保存上述第三上行数据包中携带的NAT转换关系,该NAT转换关系由业务链上的NAT设备对上述第二上行数据包进行处理后写入第三上行数据包的负载中。
本发明实施例中,由于业务链上串接了NAT设备,第二上行数据包传输到NAT设备处理后,第二上行数据包的IP、端口将发生变化。为了保证后续第一下行数据包能够正确关联到第一业务流,NAT设备需要把第二上行数据包经NAT设备处理后的NAT转换关系填写到第二上行数据包的负载的第一Tag中。第三上行数据包的第一Tag如表3或表4所示,其中,~NATTranData即NAT转换关系,表征了第二上行数据包的IP地址、端口与第三上行数据包的IP地址、端口的对应关系。引流点接收到第三上行数据包后,在第三上行数据包携带的第一Tag中提取NAT转换关系,保存到本地。
表3
表4
步骤507:删除上述第三上行数据包的负载中的地址链和NAT转换关系,形成第四上行数据包。
其中,在收到所述第三上行数据包后,删除上述第三上行数据包的负载中的地址链和NAT转换关系之前或之后,引流点还会采用与步骤306类似的方法为该第三上行数据包添加包括源MAC地址和目的MAC地址的头部。
例如,如果在保存第一上行数据包的头部中包括的MAC地址信息时,采用了将第一上行数据包的IP地址与MAC地址信息的对应关系保存在引流点本地的方式。由于业务链上串接了NAT设备,经增值业务设备处理后返回的第三上行数据包的IP地址,与第一上行数据包的IP地址不相同。此时可以使用从第三上行数据包的负载的第一Tag中提取的NAT转换关系,对第三上行数据包的IP地址进行转换,确定与第三上行数据包的IP地址对应的第一上行数据包的IP地址,再根据确定出的第一上行数据包的IP地址,在本地保存的第一上行数据包的IP地址与MAC地址信息的对应关系中提取对应的第一上行数据包的MAC地址信息,并将提取的MAC地址信息添加到第三上行数据包的头部中。
步骤508:将上述第四上行数据包发送给第二设备。
步骤509:接收第二设备发送的第一下行数据包。
步骤510:在根据保存的第一业务流标识、NAT转换关系和第一下行数据包中携带的第二业务流标识确定上述第一下行数据包属于第一业务流的反向业务流时,关联第一下行数据包到第一业务流。
具体的,当第一下行数据包中的源IP地址、目的IP地址、源端口、目的端口中的一个或多个经过NAT转换关系转换后,分别与保存的第一业务流标识中的目的IP地址、源IP地址、目的端口、源端口中的一个或多个相匹配,则确定该第一下行数据包属于第一业务流的反向业务流。
当确定第一下行数据包属于第一业务流的反向业务流后,引流点便根据第一业务流标识获取相应的地址链,在第一下行数据包的负载中增加第二Tag,第二Tag包括反向地址链,反向地址链包含的各地址的顺序和地址链包含的各地址的顺序相反,从而完成第一下行数据包到第一业务流的关联。
例如,若第一Tag中的地址链为:IP1-IP2-IP3-IP1,那么添加到第一下行数据包的第二Tag中的反向地址链则为:IP1-IP3-IP2-IP1。如果第一Tag中还包括了源MAC地址和目的MAC地址分别为MAC1和MAC2,那么添加到第一下行数据包的第二Tag中的源MAC地址和目的MAC地址则分别为MAC2和MAC1。
引流点将第一下行数据包关联到第一业务流之后,将在该第一下行数据包的负载中增加第二Tag后形成的第二下行数据包发送给上述第二增值业务设备,并接收上述第一增值业务返回的第三下行数据包,然后使用保存的MAC地址信息为第三下行数据包添加包括源MAC地址和目的MAC地址的头部,并删除第三下行数据包的负载中的第二Tag,形成第四下行数据包,第四下行数据包的源MAC地址为第四上行数据包的目的MAC地址,第四下行数据包的目的MAC地址为第四上行数据包的源MAC地址;将第四下行数据包转发给第一设备后,便完成了含有NAT增值业务的第一业务流的处理流程。
需要说明的是,由于第三下行数据包中的NAT转换关系与上述第三上行数据包中的NAT转换关系呈反向关系的,因此,引流点可以不对第三下行数据包的NAT转换关系进行保存。
上述实施例二只通过一个引流点,便实现了业务链中串接了NAT设备时,上行及下行两个方向的数据流的关联。
根据上述实施例一和实施例二的方法,提供以下装置。
实施例三
本发明实施例提供一种业务链上数据包的关联装置,各增值业务设备通过隧道串接形成业务链,业务链的两端连接在同一个引流点上,该装置位于引流点上,用于实现上述各方法实施例,该装置的结构示意图如图6所示,包括:
第一接收单元601,用于接收第一设备发送的属于第一业务流的第一上行数据包;该第一业务流为需要业务链处理的业务流。
存储单元602,用于保存上述第一上行数据包中携带的第一业务流标识;该第一业务流标识用于识别第一业务流。
第一增加单元603,用于在第一上行数据包的负载中增加业务链的地址链,形成第二上行数据包,该地址链包括业务链上各增值业务设备的IP地址。
第一发送单元604,用于根据业务链的地址链,向业务链的第一增值业务设备发送上述第二上行数据包;该第一增值业务设备为业务链的上行方向上的第一个增值业务设备。
第二接收单元605,用于接收业务链的第二增值业务设备返回的第三上行数据包;该第三上行数据包是由业务链上的各增值业务设备依次对第二上行数据包处理后得到的;该第二增值业务设备为业务链中上行方向上的最后一个增值业务设备。
第一删除单元606,用于删除第三上行数据包的负载中的地址链,形成第四上行数据包。
第二发送单元607,用于将第四上行数据包发送给第二设备。
第三接收单元608,用于接收第二设备发送的第一下行数据包。
关联单元609,用于在根据保存的第一业务流标识和第一下行数据包中携带的第二业务流标识确定上述第一下行数据包属于第一业务流的反向业务流时,关联该第一下行数据包到第一业务流。
其中,
存储单元602还用于,在第一增加单元603在第一上行数据包的负载中增加业务链的地址链之前,保存第一上行数据包的头部中包括的MAC地址信息。
第一删除单元606还用于,删除第一上行数据包的包括MAC地址信息的头部。
第一增加单元603还用于,在第一删除单元606删除第三上行数据包的负载中的地址链之前,为第三上行数据包添加包括源MAC地址和目的MAC地址的头部。
存储单元602还用于,在第二接收单元605接收第三上行数据包后,在第一增加单元603为第三上行数据包添加包括源MAC地址和目的MAC地址的头部之前,保存第三上行数据包中携带的NAT转换关系,该NAT转换关系由业务链上的NAT设备对第二上行数据包进行处理后写入第三上行数据包的负载中。
第一删除单元606还用于,在形成第四上行数据包之前,删除第三上行数据包的负载中的NAT转换关系。
关联单元609具体用于,在根据保存的第一业务流标识、NAT转换关系和第一下行数据包中携带的第二业务流标识确定第一下行数据包属于第一业务流的反向业务流时,关联第一下行数据包到第一业务流。
在第一上行数据包的负载中增加业务链的地址链时,第一增加单元603具体用于,在第一上行数据包的负载中增加第一Tag,并在第一Tag中增加业务链的地址链;第一Tag中还包括:Tag长度以及NAT设备串接标识;该NAT设备串接标识用于表明业务链中是否包括NAT设备。
在保存第一上行数据包的头部中包括的MAC地址信息时,存储单元602可以有以下两种方式:
方法一、
存储单元602将第一上行数据包的头部中包括的MAC地址信息写入第一上行数据包的负载中增加的第一Tag中。
若存储单元602采用上述第一种方式保存MAC地址信息,在为第三上行数据包添加包括源MAC地址和目的MAC地址的头部时,相应的,第一增加单元603在第三上行数据包的负载中携带的第一Tag中提取MAC地址信息,并根据保存的MAC地址信息为第三上行数据包添加包括源MAC地址和目的MAC地址的头部。
方法二、
存储单元602将第一上行数据包的头部中包括的MAC地址信息保存在本地。
若存储单元602采用上述第二种方式保存MAC地址信息,在为第三上行数据包添加包括源MAC地址和目的MAC地址的头部时,相应的,第一增加单元603获取本地保存的MAC地址信息,根据MAC地址信息为第三上行数据包添加包括源MAC地址和目的MAC地址的头部。
在关联第一下行数据包到第一业务流时,关联单元609具体用于:
根据第一业务流标识获取地址链;
在第一下行数据包的负载中增加第二Tag,该第二Tag包括反向地址链,反向地址链包含的各地址的顺序和地址链包含的各地址的顺序相反。
进一步的,本装置还包括:
第三发送单元610,用于将在第一下行数据包的负载中增加第二Tag后形成的第二下行数据包发送给第二增值业务设备。
第四接收单元611,用于接收第一增值业务返回的第三下行数据包。
第二增加单元612,用于使用保存的MAC地址信息为第三下行数据包添加包括源MAC地址和目的MAC地址的头部。
第二删除单元613,用于删除第三下行数据包的负载中的第二Tag,形成第四下行数据包;该第四下行数据包的源MAC地址为上述第四上行数据包的目的MAC地址,该第四下行数据包的目的MAC地址为上述第四上行数据包的源MAC地址。
第四发送单元614,用于将第四下行数据包转发给所述第一设备。
上述实施例三提供了一种业务链上数据包的关联装置,能够实现业务链中上行和下行两个方向的数据流的关联,以及NAT设备在业务链中的串接。
实施例四
本发明实施例提供了一种业务链上数据包的关联装置,各增值业务设备通过隧道串接形成业务链,业务链的两端连接在同一个引流点上,该装置位于引流点上,该装置的结构示意图如图7所示,包括:
收发器71,用于接收第一设备发送的属于第一业务流的第一上行数据包;该第一业务流为需要业务链处理的业务流。
存储器72,用于保存上述第一上行数据包中携带的第一业务流标识;该第一业务流标识用于识别第一业务流。
处理器73,用于在第一上行数据包的负载中增加业务链的地址链,形成第二上行数据包,该地址链包括业务链上各增值业务设备的IP地址。
收发器71,还用于根据业务链的地址链,向业务链的第一增值业务设备发送上述第二上行数据包,该第一增值业务设备为业务链的上行方向上的第一个增值业务设备;以及接收业务链的第二增值业务设备返回的第三上行数据包,该第三上行数据包是由业务链上的各增值业务设备依次对第二上行数据包处理后得到的,该第二增值业务设备为业务链中上行方向上的最后一个增值业务设备。
处理器73,还用于删除上述第三上行数据包的负载中的地址链,形成第四上行数据包。
收发器71,还用于将上述第四上行数据包发送给第二设备;以及接收第二设备发送的第一下行数据包。
处理器73,还用于在根据保存的第一业务流标识和第一下行数据包中携带的第二业务流标识确定上述第一下行数据包属于第一业务流的反向业务流时,关联该第一下行数据包到第一业务流。
其中,
在处理器73在第一上行数据包的负载中增加业务链的地址链之前,存储器72还用于:保存第一上行数据包的头部中包括的MAC地址信息。
处理器73还用于,删除第一上行数据包的包括MAC地址信息的头部。
较佳的,在删除第三上行数据包的负载中的地址链之前,处理器73还用于:为第三上行数据包添加包括源MAC地址和目的MAC地址的头部。
较佳的,在收发器71接收第三上行数据包后,在处理器73为第三上行数据包添加包括源MAC地址和目的MAC地址的头部之前,存储器72还用于:保存第三上行数据包中携带的NAT转换关系,该NAT转换关系由业务链上的NAT设备对第二上行数据包进行处理后写入第三上行数据包的负载中。
在形成第四上行数据包之前,处理器73还用于:删除第三上行数据包的负载中的NAT转换关系。
在关联第一下行数据包到第一业务流时,处理器73具体用于:在根据保存的第一业务流标识、NAT转换关系和第一下行数据包中携带的第二业务流标识确定第一下行数据包属于第一业务流的反向业务流时,关联第一下行数据包到第一业务流。
在第一上行数据包的负载中增加业务链的地址链时,处理器73具体用于:在第一上行数据包的负载中增加第一Tag,并在第一Tag中增加业务链的地址链;第一Tag中还包括:Tag长度以及NAT设备串接标识;该NAT设备串接标识用于表明业务链中是否包括NAT设备。
在保存第一上行数据包的头部中包括的MAC地址信息时,处理器73可以有以下两种方式:
方法一、
处理器73将第一上行数据包的头部中包括的MAC地址信息写入第一上行数据包的负载中增加的第一Tag中。
若处理器73采用上述第一种方式保存MAC地址信息,在为第三上行数据包添加包括源MAC地址和目的MAC地址的头部时,相应的,处理器73则在第三上行数据包的负载中携带的第一Tag中提取MAC地址信息,并根据保存的MAC地址信息为第三上行数据包添加包括源MAC地址和目的MAC地址的头部。
方法二、
处理器73将第一上行数据包的头部中包括的MAC地址信息保存在本地。
若处理器73采用上述第二种方式保存MAC地址信息,在为第三上行数据包添加包括源MAC地址和目的MAC地址的头部时,相应的,处理器73则获取本地保存的MAC地址信息,根据MAC地址信息为第三上行数据包添加包括源MAC地址和目的MAC地址的头部。
在关联第一下行数据包到第一业务流时,处理器73具体用于:根据第一业务流标识获取地址链;在第一下行数据包的负载中增加第二Tag,该第二Tag包括反向地址链,反向地址链包含的各地址的顺序和地址链包含的各地址的顺序相反。
进一步的,
收发器71,还用于将在第一下行数据包的负载中增加第二Tag后形成的第二下行数据包发送给第二增值业务设备;以及接收第一增值业务返回的第三下行数据包。
处理器73,还用于使用存储器72保存的MAC地址信息为第三下行数据包添加包括源MAC地址和目的MAC地址的头部;以及删除第三下行数据包的负载中的第二Tag,形成第四下行数据包;该第四下行数据包的源MAC地址为上述第四上行数据包的目的MAC地址,该第四下行数据包的目的MAC地址为上述第四上行数据包的源MAC地址。
收发器71,还用于将第四下行数据包转发给第一设备。
上述实施例四提供了一种业务链上数据包的关联装置,能够实现业务链中上行和下行两个方向的数据流的关联,以及NAT设备在业务链中的串接。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。