一种基于BIER信息的处理及装置的制作方法

文档序号:15683307发布日期:2018-10-16 20:47阅读:358来源:国知局

本发明涉及通信领域,尤其涉及一种基于位索引显式复制(bier,bitindexexplicitreplication)信息的处理方法及装置。



背景技术:

利用互联网协议(ip)实现组播转发之后,bier技术也慢慢开始发展了。由于采用bier技术能够减少节点处所存储的状态信息的数据量,所以成为了关注的焦点。

目前,bier信息主要是基于中间系统到中间系统(isis)或开放最短路径优先(ospf)等单播协议的扩展来携带,这样每支持一种单播协议,都需要这种单播协议做携带bier信息的扩展,不灵活。另外,现有的标准也不能够支持所有的单播协议,比如路由消息协议(rip,outinginformationprotocol)、静态路由等。在网络中只有rip或者静态路由协议时,bier信息因为没有方法进行传输,导致bier技术无法使用。

而且组播部署中常常会有不同单播协议互联的场景,目前这种场景不能够将bier技术应用在这种场景中。

综上所述,bier信息的传输依赖于具体的单播协议,限制了bier技术的应用。



技术实现要素:

为解决现有存在的技术问题,本发明实施例提供一种基于bier信息的处理方法及装置。

本发明实施例的技术方案是这样实现的:

本发明实施例提供了一种基于bier信息的处理方法,其特征在于,所述方法包括:

基于第一协议机制,利用bier信息生成报文;

将生成的报文发出;其中,

所述bier信息用于生成bier转发路由表;所述bier转发路由表是利用所述bier信息并结合第二协议的单播路由表生成的转发路由表;所述第一协议机制为能够传输bier信息、且与单播协议无关的协议机制。

上述方案中,所述基于第一协议机制,利用bier信息生成报文,包括以下之一:

基于扩展的与协议无关的组播(pim,protocolindependentmulticast)协议机制,利用bier信息生成第一报文;

基于ip机制,利用bier信息生成第二报文;在所述第二报文的源ip地址、入端口ip号与单播路由表的下一跳、出端口ip号符合时,所述第二报文能够被接收;

基于用户数据报协议(udp)机制,利用bier信息生成第三报文;在所述第三报文的源ip地址、入端口udp号与单播路由表的下一跳、出端口udp号符合时,所述第三报文能够被接收;

基于传输控制协议(tcp)机制,利用bier信息生成第四报文;在所述第四报文的源ip地址、入端口tcp号与单播路由表的下一跳、出端口tcp号符合时,所述第四报文能够被接收。

上述方案中,所述基于扩展的pim协议机制,利用bier信息生成第一报文,包括:

利用bier信息,生成基于pim协议的第一bier通告报文;所述第一bier通告报文包含能够实现bier格式封装的报文转发的信息;所述第一bier通告报文用于通告对应bier设备的bier信息。

上述方案中,所述基于扩展的pim协议机制,利用bier信息生成第一报文,包括:

利用bier信息,生成基于pim协议的第一bier管理报文;所述第一bier管理报文包含能够实现bier格式封装的报文转发的信息;所述第一bier通告报文用于通告网络中所有bier设备的bier信息。

上述方案中,生成bier管理报文之前,所述方法还包括:

基于pim协议,生成第二bier管理报文;

发出所述第二bier管理报文;所述第二bier管理报文用于选举网络中的bier设备管理器。

上述方案中,所述基于扩展的pim协议机制,利用bier信息生成第一报文,包括:

利用bier信息,生成基于pim协议的第二bier通告报文,并生成第二bier通告报文的类型、长度、值(tlv);所述第二bier通告报文包含能够实现bier格式封装的报文转发的信息;所述第二bier通告报文及tlv用于通告对应bier设备的bier信息;

相应地,将所述第二bier通告报文及tlv发出。

上述方案中,所述方法还包括:

基于pim协议,生成pimhello报文;

发出所述pimhello报文;所述pimhello报文用于通告bier设备的bier能力。

上述方案中,所述第二报文包含能够实现bier格式封装的报文转发的信息;所述第二报文用于通告网络中所有bier设备的bier信息。

上述方案中,所述第三报文包含能够实现bier格式封装的报文转发的信息;所述第三报文用于通告网络中所有bier设备的bier信息。

上述方案中,所述第四报文包含能够实现bier格式封装的报文转发的信息;所述第四报文用于通告网络中所有bier设备的bier信息。

上述方案中,发出第二报文、第三报文或第四报文时,使用以下方式之一发送报文:

采用单播方式发送报文;

采用广播或组播方式发送报文。

本发明实施例还提供了一种基于bier信息的处理方法,包括:

接收报文;接收的报文基于第一协议机制进行传输;

解析所述报文,得到bier信息;

基于得到的bier信息,并结合基于第二协议的单播路由表,生成bier转发路由表;其中,

所述第一协议机制为能够传输bier信息、且与单播协议无关的协议机制。

上述方案中,所述接收报文;接收的报文基于第一协议机制进行传输;解析所述报文,得到bier信息,包括以下之一:

接收第一报文;基于扩展的pim协议机制,解析所述第一报文,得到bier信息;

当第二报文的源ip地址、入端口ip号与单播路由表的下一跳、出端口ip号符合时,接收所述第二报文;基于ip机制,解析所述第二报文,得到bier信息;

当第三报文的源ip地址、入端口udp号与单播路由表的下一跳、出端口udp号符合时,接收所述第三报文;基于udp机制,解析所述第三报文,得到bier信息;

当第四报文的源ip地址、入端口tcp号与单播路由表的下一跳、出端口tcp号符合时,接收所述第四报文;基于tcp机制,解析所述第三报文,得到bier信息。

上述方案中,所述第一报文为第一bier通告报文;

相应地,解析所述第一bier通告报文,得到能够实现bier格式封装的报文转发的信息;所述第一bier通告报文用于通告对应bier设备的bier信息。

上述方案中,所述第一报文为第一bier管理报文;

相应地,解析所述第一bier管理报文,得到能够实现bier格式封装的报文转发的信息;所述第一bier通告报文用于通告网络中所有bier设备的bier信息。

上述方案中,接收所述第一bier管理报文之前,所述方法还包括:

接收第二bier管理报文;

基于pim协议,解析所述第二bier管理报文,得到候选bier管理器相关信息;

利用所述候选bier管理器相关信息,选举网络中的bier设备管理器。

上述方案中,所述第一报文为第二bier通告报文;

接收所述第二bier通告报文时,所述方法还包括:

接收所述第二bier通告报文的tlv;

解析tlv及bier通告报文,得到能够实现bier格式封装的报文转发的信息;所述第二bier通告报文及tlv用于通告对应bier设备的bier信息。

上述方案中,所述方法还包括:

接收pimhello报文;

通过基于pim协议,解析pimhello报文,获知bier设备的bier能力。

上述方案中,解析所述第二报文,得到能够实现bier格式封装的报文转发的信息;所述第二报文用于通告网络中所有bier设备的bier信息。

上述方案中,解析所述第三报文,能够实现bier格式封装的报文转发的信息;所述第三报文用于通告网络中所有bier设备的bier信息。

上述方案中,解析所述第四报文,能够实现bier格式封装的报文转发的信息;所述第四报文用于通告网络中所有bier设备的bier信息。

本发明实施例又提供了一种基于bier信息的处理装置,包括:

第一生成单元,用于基于第一协议机制,利用bier信息生成报文;

发送单元,用于将生成的报文发出;其中,

所述bier信息用于生成bier转发路由表;所述bier转发路由表是利用所述bier信息并结合第二协议的单播路由表生成的转发路由表;所述第一协议机制为能够传输bier信息、且与单播协议无关的协议机制。

上述方案中,所述第一生成单元,具体用于以下之一:

基于扩展的pim协议机制,利用bier信息生成第一报文;

基于ip机制,利用bier信息生成第二报文;在所述第二报文的源ip地址、入端口ip号与单播路由表的下一跳、出端口ip号符合时,所述第二报文能够被接收;

基于udp机制,利用bier信息生成第三报文;在所述第三报文的源ip地址、入端口udp号与单播路由表的下一跳、出端口udp号符合时,所述第三报文能够被接收;

基于tcp机制,利用bier信息生成第四报文;在所述第四报文的源ip地址、入端口tcp号与单播路由表的下一跳、出端口tcp号符合时,所述第四报文能够被接收。

本发明实施例还提供了一种基于bier信息的处理装置,包括:

接收及解析单元,用于接收报文;接收的报文基于第一协议机制进行传输;以及解析所述报文,得到bier信息;

第二生成单元,用于基于得到的bier信息,并结合基于第二协议的单播路由表,生成bier转发路由表;其中,

所述第一协议机制为能够传输bier信息、且与单播协议无关的协议机制。

上述方案中,所述接收及解析单元,具体用于以下之一:

接收第一报文;基于扩展的pim协议机制,解析所述第一报文,得到bier信息;

当第二报文的源ip地址、入端口ip号与单播路由表的下一跳、出端口ip号符合时,接收所述第二报文;基于ip机制,解析所述第二报文,得到bier信息;

当第三报文的源ip地址、入端口udp号与单播路由表的下一跳、出端口udp号符合时,接收所述第三报文;基于udp机制,解析所述第三报文,得到bier信息;

当第四报文的源ip地址、入端口tcp号与单播路由表的下一跳、出端口tcp号符合时,接收所述第四报文;基于tcp机制,解析所述第三报文,得到bier信息。

本发明实施例提供的基于bier信息的处理方法及装置,基于第一协议机制,利用bier信息生成报文;将生成的报文发出;接收报文;接收的报文基于第一协议机制进行传输;解析所述报文,得到bier信息;基于得到的bier信息,并结合基于第二协议的单播路由表,生成bier转发路由表;其中,所述第一协议机制为能够传输bier信息、且与单播协议无关的协议机制,也就是说,通过独立于单播协议的协议机制来传递bier信息,进行bier拓扑计算时,可以使用任意单播路由表,而不依赖于某种单播协议,即对单播没有特征的要求,从而能够摆脱bier技术对具体单播协议的依赖,不需要单播对bier扩展即可支持bier功能,如此,易于bier技术的推广。

附图说明

在附图(其不一定是按比例绘制的)中,相似的附图标记可在不同的视图中描述相似的部件。具有不同字母后缀的相似附图标记可表示相似部件的不同示例。附图以示例而非限制的方式大体示出了本文中所讨论的各个实施例。

图1为本发明实施例一一种基于bier信息的处理方法流程示意图;

图2为本发明实施例一另一种基于bier信息的处理方法流程示意图;

图3为本发明实施例组网方式示意图;

图4为本发明实施例bier通告报文结构示意图;

图5为本发明实施例biermpls封装子类型结构示意图;

图6为本发明实施例pimhello报文bier选项的结构示意图;

图7为本发明实施例bier管理报文结构示意图;

图8为本发明实施例候选bier管理器发现过程中报文的传输方向示意图;

图9为本发明实施例其他节点向bier管理器发送自身bier信息的过程示意图;

图10为本发明实施例bier通告报文结构示意图;

图11为本发明实施例bier信息子类型结构示意图;

图12本发明实施例一种基于bier信息的处理装置结构示意图;

图13为本发明实施例另一种基于bier信息的处理装置结构示意图。

具体实施方式

下面结合附图及实施例对本发明再作进一步详细的描述。

组播是指:将多播数据分组(通常包括标识多播组的信息(例如,多播组地址)的数据分组)从源递送到多个接收方,而不会给源带来过重的负担。如本文所使用的,所述接收方是指已经订阅到主播组的主机(例如,计算设备或应用)。组播技术中,不是由源复制多播数据分组并将多播数据分组的副本发送到每一个接收方,而是由源发送多播组数据分组的单一副本并且多播使能(multicast-enabled)的路由器在到各个接收方的路径分叉的(一个或多个)点处复制分组。

多播技术中使用各种路由协议,比如ip等。基于ip的组播技术成为ip组播技术。那么随着技术的发展,为了减少节点处所存储的状态信息的数据量,提出了ber技术。在bier技术中,以位的形式将接收方信息附着到分组,并且基于接收方信息来转发分组。具体地,位位置被用作进入转发表的索引,并且分组指被复制给指定的节点。正是因为其特点,bier技术还可以称为“无状态多播”。

现有技术中,bier信息的传输必须依赖于具体的单播协议,这样就限制了bier技术的应用。

基于此,在本发明的各种实施例中:不对单播路由协议进行扩展,采用一种与单播协议无关的传输方式传输bier信息。

实施例一

本发明实施例提供一种基于bier信息的处理方法,如图1所示,该包括以下步骤:

步骤101:基于第一协议机制,利用bier信息生成报文;

步骤102:将生成的报文发出。

其中,所述bier信息用于生成bier转发路由表;所述bier转发路由表是利用所述bier信息并结合第二协议的单播路由表生成的转发路由表;所述第一协议机制为能够传输bier信息、且与单播协议无关的协议机制。

实际应用时,可以对pim协议进行扩展,以传输bier信息。

基于此,在一实施例中,步骤101的具体实现包括:

基于扩展的pim协议机制,利用bier信息生成第一报文。

这里,所述基于扩展的pim协议机制,利用bier信息生成第一报文,包括:

bier设备利用bier信息,生成基于pim协议的第一bier通告报文;所述第一bier通告报文包含能够实现bier格式封装的报文转发的信息;所述第一bier通告报文用于通告对应bier设备的bier信息。

这里,bier设备是指支持bier转发能力的设备。

其中,实际应用时,还可以将bier通告报文的一些属性信息不包含在报文中,而是通过单独的方式来体现。

基于此,所述基于扩展的pim协议机制,利用bier信息生成第一报文,包括:

利用bier信息,生成基于pim协议的第二bier通告报文,并生成第二bier通告报文的tlv;所述第二bier通告报文包含能够实现bier格式封装的报文转发的信息;所述第二bier通告报文及tlv用于通告对应bier设备的bier信息;

相应地,将所述第二bier通告报文及tlv发出。

另外,还可以利用bier管理报文来传输bier信息。

基于此,所述基于扩展的pim协议机制,利用bier信息生成第一报文,包括:

bier设备管理器利用bier信息,生成基于pim协议的第一bier管理报文;所述第一bier管理报文包含能够实现bier格式封装的报文转发的信息;所述第一bier通告报文用于通告网络中所有bier设备的bier信息。

这里,由于是bier设备管理器生成第一bier管理报文,以通告网络中所有bier设备的bier信息。所以需要先选举出网络中的bier设备管理器。

基于此,在一实施例中,网络中的候选bier设备管理器基于pim协议,生成第二bier管理报文;并发出所述第二bier管理报文;所述第二bier管理报文用于选举网络中的bier设备管理器。

具体来说,网络中的bier设备收到所有候选bier设备管理器泛洪的第二bier管理报文后,根据第二bier管理报文中携带的各候选bier设备管理器的优先级来选出bier设备管理器,当优先级相同时,通过第二bier管理报文中携带的各候选bier设备管理器的ip地址选出bier设备管理器。

选举出传输设备管理器后,其他bier设备需要将自身的bier信息通过bier通告报文发送至传输设备管理器,以便传输设备管理器汇总所有传输设备的bier信息并通过bier管理报文进行通告。

实际应用时,在对pim协议进行扩展的方案中,需要获知网络中的设备是否具备bier能力,即是否支持bier转发能力。此时,可以通过pimhello报文来实现。

基于此,在一实施例中,该方法还包括:

基于pim协议,生成pimhello报文;

发出所述pimhello报文;所述pimhello报文用于通告bier设备的bier能力。

实际应用时,可以基于ip、tcp或udp的方式来传输bier信息。

基于此,在一实施例中,所述基于第一协议机制,利用bier信息生成报文,包括以下之一:

bier设备管理器基于ip机制,利用bier信息生成第二报文;在所述第二报文的源ip地址、入端口ip号与单播路由表的下一跳、出端口ip号符合时,所述第二报文能够被接收;

bier设备管理器基于udp机制,利用bier信息生成第三报文;在所述第三报文的源ip地址、入端口udp号与单播路由表的下一跳、出端口udp号符合时,所述第三报文能够被接收;

bier设备管理器基于tcp机制,利用bier信息生成第四报文;在所述第四报文的源ip地址、入端口tcp号与单播路由表的下一跳、出端口tcp号符合时,所述第四报文能够被接收。

其中,所述第二报文包含能够实现bier格式封装的报文转发的信息;所述第二报文用于通告网络中所有bier设备的bier信息。

所述第三报文包含能够实现bier格式封装的报文转发的信息;所述第三报文用于通告网络中所有bier设备的bier信息。

所述第四报文包含能够实现bier格式封装的报文转发的信息;所述第四报文用于通告网络中所有bier设备的bier信息。

实际应用时,bier设备管理器是通过静态配置的方式产生的。

需要说明的是:本发明实施例中,能够实现bier格式封装的报文转发的信息可以包括不限于以下信息的全部或一部分:子域id(subdomain-id)、bier设备id(bfr-id)、bier设备ip地址(bfr-prefix)、位长度(bsl,bitstringlength)、标签信息(lable)等。

对应地,本发明实施例还提供了一种基于bier信息的处理方法,如图2所示,该方法包括:

步骤201:接收报文;接收的报文基于第一协议机制进行传输;

步骤202:解析所述报文,得到bier信息;

步骤203:基于得到的bier信息,并结合基于第二协议的单播路由表,生成bier转发路由表。

实际应用时,可以对pim协议进行扩展,以传输bier信息。

基于此,在一实施例中,步骤201~202,具体包括:

接收第一报文;基于扩展的pim协议机制,解析所述第一报文,得到bier信息。

其中,所述第一报文为第一bier通告报文;

相应地,解析所述第一bier通告报文,得到能够实现bier格式封装的报文转发的信息;所述第一bier通告报文用于通告对应bier设备的bier信息。

其中,实际应用时,还可以将bier通告报文的一些属性信息不包含在报文中,而是通过单独的方式来体现。

基于此,所述第一报文为第二bier通告报文;

接收所述第二bier通告报文时,所述方法还包括:

接收所述第二bier通告报文的tlv;

解析tlv及bier通告报文,得到能够实现bier格式封装的报文转发的信息;所述第二bier通告报文及tlv用于通告对应bier设备的bier信息。

另外,还可以利用bier管理报文来传输bier信息。

基于此,所述第一报文为第一bier管理报文;

相应地,解析所述第一bier管理报文,得到能够实现bier格式封装的报文转发的信息;所述第一bier通告报文用于通告网络中所有bier设备的bier信息。

这里,由于是bier设备管理器生成第一bier管理报文,以通告网络中所有bier设备的bier信息。所以需要先选举出网络中的bier设备管理器。

基于此,在一实施例中,该方法还可以包括:

接收第二bier管理报文;

基于pim协议,解析所述第二bier管理报文,得到候选bier管理器相关信息;

利用所述候选bier管理器相关信息,选举网络中的bier设备管理器。

具体来说,网络中的bier设备收到所有候选bier设备管理器泛洪的第二bier管理报文后,根据第二bier管理报文中携带的各候选bier设备管理器的优先级来选出bier设备管理器,当优先级相同时,通过第二bier管理报文中携带的各候选bier设备管理器的ip地址选出bier设备管理器。

选举出传输设备管理器后,其他bier设备需要将自身的bier信息通过bier通告报文发送至传输设备管理器,以便传输设备管理器汇总所有传输设备的bier信息并通过bier管理报文进行通告。

实际应用时,在对pim协议进行扩展的方案中,需要获知网络中的设备是否具备bier能力,即是否支持bier转发能力。此时,可以通过pimhello报文来实现。

基于此,在一实施例中,该方法还包括:

接收pimhello报文;

通过基于pim协议,解析pimhello报文,获知bier设备的bier能力。

实际应用时,可以基于ip、tcp或udp的方式来传输bier信息。

基于此,当基于ip的方式来传输bier信息时,解析所述第二报文,得到能够实现bier格式封装的报文转发的信息;所述第二报文用于通告网络中所有bier设备的bier信息。

当基于udp的方式来传输bier信息时,解析所述第三报文,能够实现bier格式封装的报文转发的信息;所述第三报文用于通告网络中所有bier设备的bier信息。

当基于tcp的方式来传输bier信息时,解析所述第四报文,能够实现bier格式封装的报文转发的信息;所述第四报文用于通告网络中所有bier设备的bier信息。

实际应用时,bier设备管理器是通过静态配置的方式产生的。

从上面的描述可以看出,本发明实施例提供的方案,可以对已有的pim协议进行扩展,也可以使用更为可靠的tcp/udp链接等方式,使其携带bier信息并在网络中通告。对bier边缘节点的选路(到bier边缘节点的下一跳)可以采用普通的静态路由,也可以使用单播协议计算的拓扑,对单播没有特殊要求。

本发明实施例提供的基于bier信息的处理方法,基于第一协议机制,利用bier信息生成报文;将生成的报文发出;接收报文;接收的报文基于第一协议机制进行传输;解析所述报文,得到bier信息;基于得到的bier信息,并结合基于第二协议的单播路由表,生成bier转发路由表;其中,所述第一协议机制为能够传输bier信息、且与单播协议无关的协议机制,也就是说,通过独立于单播协议的协议机制来传递bier信息,进行bier拓扑计算时,可以使用任意单播路由表,而不依赖于某种单播协议,即对单播没有特征的要求,从而能够摆脱bier技术对具体单播协议的依赖,不需要单播对bier扩展即可支持bier功能,如此,易于bier技术的推广。

另外,采用udp或tcp链接的方式携带bier信息,并在网络中通告,如此,能够增加传输的可靠性。

实施例二

在实施例一的基础上,本实施例详细描述对pim协议进行扩展,以传输bier信息的过程。

本实施例中,组网方式如图3所示,在该网络中有多个节点,且这些多个节点上没有运行单播协议,而是通过在每个节点上配置静态路由来形成单播路由表。所以按照目前的实施方案,bier信息在这种组网里是无法进行传递的,因此该网络也就无法转发bier报文。

在本实施例中,bier信息可以通过pim协议扩展的方式在该网络里完成传递。

在pim协议扩展的方式中,需要新增pim报文类型、新增biermpls封装子类型以及新增的bierhello选项。具体包括:

第一,新增pim报文类型-bier通告报文

如图4所示,bier通告报文的字段包括:pim版本(pimver)、保留字段(reserved)、校验和(checksum)、类型(type)、子类型个数(subtypenum)、保持时间(holdtime)、保留字段(reserved1)、子域号(subdomain-id)、bfr号(bfr-id)、bfr前缀(bfr-prefix)、子类型(subtype)、长度(length)及子类型值(subtypevalue)。其中,

pim版本(pimver)、保留字段(reserved)、校验和(checksum)描述和rfc4601中的定义一致。

类型(type):本发明实施例对此不作限定,可以为目前未定义pim报文选项类型中的任意一种。

子类型个数(subtypenum):报文可以携带多个子类型,此字段为携带的子类型个数。长度1字节。

保持时间(holdtime):该信息需要保存的时间;实际应用时,可以设置默认210s。长度1字节。

保留字段(reserved1):默认填0。

子域号(subdomain-id):唯一的值,表征bier的子域。长度1字节。

bfr号(bfr-id):长度2字节,如果没有bfr-id,则设置为非法值。

bfr前缀(bfr-prefix):唯一标识设备的值,encoded-unicast格式,长度根据ipv4和ipv6不同,具体定义见rfc4601相关章节。

子类型(subtype):为bier相关的子类型定义,可扩展。长度1字节。

长度(length):为变长(即内容是变化的),子类型值的长度。长度1字节。

子类型值(subtypevalue):子类型的值。

第二,新增biermpls封装子类型

如图5所示,biermpls封装子类型的字段包括:

子类型(subtype):本发明实施例对此不作限定,比如为1;

标签范围(lblrangesize):标签范围,用于封装本sub-domain和本bitstring长度,长度1字节;

比特长度(bslen,bitstringlength):本字段长度,4比特(bit);

标签(lable):标签范围的起始标签,长度20bit。

第三,新增pimhello报文bier选项

如图6所示,新增的bierhello选项的字段包括:

选项类型(type):待定,可以为任意未使用的选项类型;

长度和值不做限制,长度可以为0,不携带值;在本发明实施例中可以定义为4,此选项表征bier转发能力。

下面详细描述bier信息的传输及拓扑建立过程。

以节点2为例,节点2的bier信息,包括:bfr-prefix信息,sub-domain-id信息,bsl信息等,都可以通过对pim协议进行扩展来实现传递。节点2利用自身的bier信息,形成bier通告报文,并基于图4所示的biermpls封装子类型对bier通告报文进行封装,然后发送给相邻节点1,3,5;相邻节点1,3,5收到节点2发送的信息后,解析后得到节点2的bier信息后;相邻节点1,3,5,利用与节点2相同的处理方式,将节点2的bier信息继续传递给网络中的其他节点,直至所有节点都收到节点2的bier信息。

在这个过程中,某些节点可能不支持bier转发能力,因此节点2的bier信息不会转发到不支持bier转发能力的节点。具体地,可以通过在pim协议建立邻居之前,进行能力协商来进行,以便不将bier信息转发给不支持bier转发能力的节点。更具体地,相邻节点之间通过在pimhello报文中的bier选项的值是否是4来判断节点是否支持bier转发能力。

同样地,其他节点的bier信息,也可以通过pim协议扩展的方式进行传递,即通过与上面描述的与节点2相同的处理方式来传递bier信息,这样,网络中的所有支持bier转发能力的节点都能收到其他节点的bier信息。

然后,各节点根据收到的bier信息进行路由计算;具体地,根据bier信息中的bfr-prefix信息(bier边缘节点的ip地址)直接查找本地的单播路由表(任意一种单播协议的单播路由表),获取相应的下一跳,以形成bier转发路由表。

各节点根据bier转发路由表,对收到的基于bier技术封装的报文进行转发。

上述过程中,各相邻节点之间通过pimhello报文中的bier选项来保活。

实施例三

在实施例一的基础上,本实施例详细描述对pim协议进行扩展,以传输bier信息的过程。

本实施例中,组网方式如图3所示,在该网络中有多个节点,且这些多个节点上没有运行单播协议,而是通过在每个节点上配置静态路由来形成单播路由表。所以按照目前的实施方案,bier信息在这种组网里是无法进行传递的,因此该网络也就无法转发bier报文。

在本实施例中,bier信息可以通过pim协议扩展的方式在该网络里完成传递。

这里,实施例二中通过各个节点均参与bier信息泛洪来完成bier信息的传递。而在本实施例中使用pim协议的候选管理器机制来完成bier信息的传递。

在pim协议扩展的方式中,需要新增pim报文类型、新增biermpls封装子类型、新增的bierhello选项。具体包括:

第一,新增pim报文类型-bier通告报文

bier通告报文的结构如图4所示,每个字段的具体含义已在前面描述,这里不再赘述。

第二,新增biermpls封装子类型

biermpls封装子类型的结构如图5所示,每个字段的具体含义已在前面描述,这里不再赘述。

第三,新增pimhello报文bier选项

新增的bierhello选项的字段如图6所示,每个字段的具体含义已在前面描述,这里不再赘述。

第四,新增pim报文类型-bier管理报文

在图7所示的bier管理报文的字段中:

pim版本(pimver)、保留字段(reserved)、校验和(checksum)描述和rfc4601中的定义一致;

bier管理器优先级(bier-mpriority):通过优先级选举bier管理器,本实施例中,默认优先级64,最大255,最小0,越大优先级越高;

碎片中bier个数(fragbiernumm):本碎片中的bier信息个数;

bier管理器地址(bier-maddress):bier管理器的地址,encoded-unicast格式,长度根据ipv4和ipv6不同,具体定义见rfc4601相关章节;

n标记:当n标记置位时,接受者不能转发此报文。

类型(type):本发明实施例并不限定,可以为目前未定义pim报文选项类型中的任意一种;

碎片标签(fragmenttag):bier管理报文分包时,表征是同一个报文;

其他字段含义与图3所示的bier通告报文的字段的含义相同,在此不一一复述。

下面详细描述bier信息的传输及拓扑建立过程。

首先,进行候选bier管理器发现过程。

具体地,支持bier转发能力的节点依据需要,将自身配置为管理器,即作为一个候选管理器,并通过图7所示的bier管理报文(基于图5所示的biermpls封装子类型封装)泛洪到网络中,已让其他节点获知自身为候选管理器。

其中,图8示出了候选bier管理器发现过程中报文的传输方向。如图8所示,该报文泛洪时,目的地址为-224.0.0.13(ipv4)或ff02::0d(ipv6)。接收节点根据到bier-maddress的单播路由进行路径校验(反向路径转发(rpf,reversepathforwarding)检查,以避免形成环),从而直接接收从单播下一跳邻居过来的报文。接收到此报文的节点,向所有邻居(相邻节点)继续泛洪。

在泛洪过程中,如果有新邻居接入,则接收节点立即向新邻居发送这个报文,报文的目的地址为邻居的单播地址,n标记置位。这种报文不需要进行rpf检查。

另外,对于不支持这种类型报文的设备,应当做透传泛洪处理。即直接透传该报文即可。

其中,接收节点接收到新的bier-m地址的报文,则这个地址的节点为候选bier管理器。

从上面的描述中可以看出,有候选管理器资格的节点,在发送pim协议报文(bier管理报文)时,携带自身的bier管理信息。

网络中每个候选管理器均通过上述过程让网络中的所有支持bier转发能力的节点获知自身为候选管理器。

接着,进行bier管理器选举过程。

通过上述过程,每个支持bier转发能力的节点就可以获知网络中的所有候选bier管理器,然后根据每个候选bier管理器发送的bier管理报文所携带的优先级进行选举,在这些候选bier管理器中,将优先级最高的候选bier管理器当选为目标bier管理器,当优先级最高的候选bier管理器有至少两个时,根据bier管理器的ip地址进行选举,ip地址大的候选bier管理器当选为目标bier管理器。

也就是说,在选举目标bier管理器时,先根据报文携带的优先级进行选举。优先级不同则优先级最高的当选为目标bier管理器;优先级相同则进一步根据ip地址大小选举,地址大的当选为目标bier管理器。

第三,bier信息通告

当确定目标bier管理器后,其他节点利用自身的bier信息,形成bier通告报文,并基于图5所示的biermpls封装子类型对bier通告报文进行封装,然后发送给目标bier管理器,如图9所示。

其中,这个报文是单播报文。保持时间可以设置为210s,通告报文可以60s周期性通告。

第四,进行bier信息泛洪

目标bier管理器收到各节点的bier通告报文后,连同本地的已经配置的bier信息,形成如图7所述的bier管理报文(基于图5所示的biermpls封装子类型封装),并周期性泛洪,泛洪周期可以默认60s,保持时间为收到的bier通告报文携带的保活时间。如果一个包填不下,则进行分包,分包报文的fragmenttag字段相同。

第五,生成bier转发路由表

各节点根据收到的bier信息进行路由计算;具体地,根据bier信息中的bfr-prefix信息(bier边缘节点的ip地址)直接查找本地的单播路由表(任意一种单播协议的单播路由表),获取相应的下一跳,以形成bier转发路由表。

各节点根据bier转发路由表,对收到的基于bier技术封装的报文进行转发。

从上面的描述中可以看出,在本实施例中,先产生目标bier管理器,目标bier管理器收集到所有的节点bier信息后,汇集起来,发送给所有支持bier转发能力的节点,从而使得各个节点能获取到其他节点的bier信息,并用于路径计算,进而形成bier转发表。

在上述过程中,当某个支持bier转发能力的节点需要退出时,该节点通过如图4所示的新增的bier通告报文告知目标bier管理器,其中,保持时间设置为0,表明要撤销这个bier信息。

目标bier管理器收到该报文后,通过图7所示的bier管理报文进行泛洪。具体地,将bier管理报文的保持时间设置为0,表明此bier信息需要撤销。

上述过程中,各相邻节点之间通过pimhello报文中的bier选项来保活。

实施例四

在实施例一的基础上,本实施例详细描述对pim协议进行扩展,以传输bier信息的过程。

本实施例中,组网方式如图3所示,在该网络中有多个节点,且这些多个节点上没有运行单播协议,而是通过在每个节点上配置静态路由来形成单播路由表。所以按照目前的实施方案,bier信息在这种组网里是无法进行传递的,因此该网络也就无法转发bier报文。

在本实施例中,bier信息可以通过pim协议扩展的方式在该网络里完成传递。

在pim协议扩展的方式中,需要新增pim报文类型、新增bier信息子类型、新增biermpls封装子类型以及新增的bierhello选项。具体包括:

第一,新增pim报文类型-bier通告报文

图10为新增的bier通告报文的结构示意图;如图10所示,在该新增的bier通告报文的字段中:

pim版本(pimver)、保留字段(reserved)、校验和(checksum)描述和rfc4601中的定义一致;

子类型个数(subtypenum):报文可以携带多个子类型,此字段为携带的子类型个数,长度1字节;

保持时间(holdtime):该信息需要保存的时间,本发明实施例可以默认210s,长度1字节;

类型(type):本发明实施例不做限定,可以为目前未定义pim报文选项类型中的任意一种;

子类型(subtype):为bier相关的子类型定义,可扩展,长度1字节;

长度(length):为变长(即内容是变化的),子类型值的长度,长度1字节。

第二,新增bier信息子类型

图11为新增bier信息子类型结构示意图。如图11所示,在新增bier信息子类型的字段中:

子类型(subtype):本发明实施例不做具体要求,举例中为1;

保留字段(reserved1):默认填0;

子域号(subdomain-id):唯一的值,表征bier的子域。长度1字节;

bfr号(bfr-id):长度2字节,如果没有bfr-id,则设置为非法值;

bfr前缀(bfr-prefix):唯一标识设备的值,encoded-unicast格式,长度根据ipv4和ipv6不同,具体定义见rfc4601相关章节。

从上面的描述中可以看出,图11所描述的bier信息子类型(bier信息子属性)为图4所示的bier通告报文必须携带的属性,也就是说,在本实施例中图10和图11所示的信息之和相当于图4所示的bier通告报文。

第三,新增biermpls封装子类型

具体结构如图5所示。biermpls封装子类型中各字段已在实施例二中详述,这里不再赘述。

下面详细描述bier信息的传输及拓扑建立过程。

以节点2为例,节点2的bier信息,包括:bfr-prefix信息,sub-domain-id信息,bsl信息等,都可以通过对pim协议进行扩展来实现传递。节点2利用自身的bier信息,形成图10所示的bier通告报文,并形成图11所示的bier信息子类型,并基于图5所示的biermpls封装子类型对bier通告报文和bier信息子类型进行封装,然后发送给相邻节点1,3,5;相邻节点1,3,5收到节点2发送的信息后,解析后得到节点2的bier信息后;相邻节点1,3,5,利用与节点2相同的处理方式,将节点2的bier信息继续传递给网络中的其他节点,直至所有节点都收到节点2的bier信息。

在这个过程中,某些节点可能不支持bier转发能力,因此节点2的bier信息不会转发到不支持bier转发能力的节点。具体地,可以通过在pim协议建立邻居之前,进行能力协商来进行,以便不将bier信息转发给不支持bier转发能力的节点。更具体地,相邻节点之间通过在pimhello报文中的bier选项的值是否是4来判断节点是否支持bier转发能力。

同样地,其他节点的bier信息,也可以通过pim协议扩展的方式进行传递,即通过与上面描述的与节点2相同的处理方式来传递bier信息,这样,网络中的所有支持bier转发能力的节点都能收到其他节点的bier信息。

然后,各节点根据收到的bier信息进行路由计算;具体地,根据bier信息中的bfr-prefix信息(bier边缘节点的ip地址)直接查找本地的单播路由表(任意一种单播协议的单播路由表),获取相应的下一跳,以形成bier转发路由表。

各节点根据bier转发路由表,对收到的基于bier技术封装的报文进行转发。

上述过程中,各相邻节点之间通过pimhello报文中的bier选项来保活。

从上面的描述可以看出,在本实施例中,只是将图4所示的报文分成了图10所示的报文和图11所示的bier信息子类型,其他处理方式与实施例二的过程完全相同。所以,本实施例中的报文格式也适用于实施例三所描述的方案,与实施例三所不同的是:将图4所示的报文分成了图10所示的报文和图11所示的bier信息子类型。

实施例五

在实施例一的基础上,本实施例详细描述基于tcp传输bier信息的过程。

本实施例中,组网方式如图3所示,在该网络中有多个节点,且这些多个节点上没有运行单播协议,而是通过在每个节点上配置静态路由来形成单播路由表。所以按照目前的实施方案,bier信息在这种组网里是无法进行传递的,因此该网络也就无法转发bier报文。

在本实施例中,采用tcp传输的机制来实现bier信息的传输。该过程包括以下步骤:

首先,网络中的节点通过静态配置的方式指定bier管理器。

这里,配置的管理器地址在bier域中应当一致。

接着,支持bier转发能力的节点(bier设备)通过单播报文将bier信息传递到bier管理器。

这里,在本实施例中,此报文为tcpbier通告报文。

然后,bier管理器收到bier设备传递过来的bier信息后,用广播或协议组播目的地址向周围设备周期性泛洪。

支持bier转发能力的节点收到bier管理器方向发来的报文后,用bier管理器的ip地址查找单播路由表找到下一跳和出接口,只有收到报文的源ip、入接口和单播路由表的下一跳、出接口符合才接收,否则丢弃。

其中,当bier设备撤销bier信息时,需要向bier管理器发送不包含这个bier信息的tcpbier通告报文。

另外,当bier管理器发现和bier设备的tcp断链时,应当老化从这个bier设备收到的bier信息。

网络中的节点,通过静态配置方式指定管理器,bier设备在与管理器交互bier信息时,采用tcp链接通告方式进行,该方式可以使报文传递更为可靠。完成bier信息传递后,各个bier设备根据收到的其他bier设备的bier信息进行单播路由表的查找,并形成bier转发路由表。

实施例六

为实现本发明实施例的方法,本实施例提供一种基于bier信息的处理装置,如图12所示,该装置包括:

第一生成单元121,用于基于第一协议机制,利用bier信息生成报文;

发送单元122,用于将生成的报文发出;其中,

所述bier信息用于生成bier转发路由表;所述bier转发路由表是利用所述bier信息并结合第二协议的单播路由表生成的转发路由表;所述第一协议机制为能够传输bier信息、且与单播协议无关的协议机制。

其中,第一生成单元121,具体用于以下之一:

基于扩展的pim协议机制,利用bier信息生成第一报文;

基于ip机制,利用bier信息生成第二报文;在所述第二报文的源ip地址、入端口ip号与单播路由表的下一跳、出端口ip号符合时,所述第二报文能够被接收;

基于udp机制,利用bier信息生成第三报文;在所述第三报文的源ip地址、入端口udp号与单播路由表的下一跳、出端口udp号符合时,所述第三报文能够被接收;

基于tcp机制,利用bier信息生成第四报文;在所述第四报文的源ip地址、入端口tcp号与单播路由表的下一跳、出端口tcp号符合时,所述第四报文能够被接收。

另外,实际应用时,当该装置位于bier设备管理器上时,该装置还可以包括:

接收单元,用于获取bier信息。

本领域技术人员应当理解,图12所示的装置的各单元的实现功能可参照前述基于bier信息的处理方法的相关描述而理解。

实际应用时,所述第一生成单元121可由基于bier信息的处理装置中的处理器实现;所述发送单元122及接收单元可由基于bier信息的处理装置的通信接口实现。

为实现本发明实施例的方法,本实施例还提供了一种基于bier信息的处理装置,如图13所示,该装置包括:

接收及解析单元131,用于接收报文;接收的报文基于第一协议机制进行传输;以及解析所述报文,得到bier信息;

第二生成单元132,用于基于得到的bier信息,并结合基于第二协议的单播路由表,生成bier转发路由表;其中,

所述第一协议机制为能够传输bier信息、且与单播协议无关的协议机制。

其中,接收及解析单元132,具体用于以下之一:

接收第一报文;基于扩展的pim协议机制,解析所述第一报文,得到bier信息;

当第二报文的源ip地址、入端口ip号与单播路由表的下一跳、出端口ip号符合时,接收所述第二报文;基于ip机制,解析所述第二报文,得到bier信息;

当第三报文的源ip地址、入端口udp号与单播路由表的下一跳、出端口udp号符合时,接收所述第三报文;基于udp机制,解析所述第三报文,得到bier信息;

当第四报文的源ip地址、入端口tcp号与单播路由表的下一跳、出端口tcp号符合时,接收所述第四报文;基于tcp机制,解析所述第三报文,得到bier信息。

当该装置位于bier信息传输的中间节点上时,需要将收到的bier信息对相邻节点进行泛洪,或者需要为bier设备管理器发送自身的bier信息,所以实际应用时,该装置还可以包括:

发出单元,用于将bier信息发出。

本领域技术人员应当理解,图13所示的装置的各单元的实现功能可参照前述基于bier信息的处理方法的相关描述而理解。

实际应用时,所述接收及解析单元131可由基于bier信息的处理装置中的处理器结合通信接口实现;所述发送单元132可由基于bier信息的处理装置的通信接口实现。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1