一种报文处理方法和装置
技术领域
本发明涉及国际电信联盟(ITU-T)G.8032v2的前向兼容技术,尤其涉及一种报文处理方法和装置。
背景技术
随着以太网向着多业务承载方向的发展,特别是一些业务对网络的可靠性、实时性要求越来越高,以太网广泛采用了环形的组网以提高网络可靠性。在环网的保护方法中,通常要求快速保护倒换,保护倒换时间要求达到50ms以下。目前这种快速保护倒换的技术有互联网工程任务组(IETF,Internet Engineering Task Force)的RFC3619、国际电信联盟(ITU-T,International Telecommunication Union)的G.8032等。
典型的以太环网保护的拓扑结构,如图1所示,节点A至节点F都为具有以太网交换功能的节点,网络M和节点B相连接,网络N和节点D相连接。网络M和网络N之间进行通信的物理路径有两条:网络M←→节点B←→节点C←→节点D←→网络N,以及网络M←→节点B←→节点A←→节点F←→节点E←→节点D←→网络N。
在应用以太环网保护技术时,通常定义了环保护链路和控制节点,即在以太环网无故障的情况下,环上对数据报文进行阻塞以防止环路形成的链路为环保护链路,拥有环保护链路的节点称为控制节点。如图2所示的拓扑结构中,环网包含的节点有A、B、C、D、E和F,包含的链路有<A,B>、<B,C>、<C,D>、<D,E>、<E,F>和<F,A>,其中,节点A为控制节点,与端口a2直连的链路<F,A>为环保护链路。通过对该段环保护链路的操作,可以进行环网的主用路径和保护路径的切换。
当环上链路完好时,控制节点阻塞与环保护链路相连端口的数据报文转发功能,网络中无环路产生,防止了由于网络环路引起的“广播风暴”。如图2所示,控制节点A阻塞了a2端口的数据报文转发功能,网络M和网络N之间的通信路径为:网络M←→节点B←→节点C←→节点D←→网络N。当环上链路发生故障时,控制节点开启与环保护链路相连端口的数据报文转发功能,从而保障了业务的连通。如图3所示,环上<B,C>链路发生故障时,控制节点A开启端口a2的数据报文转发功能,网络M和网络N之间的通信路径变为:网络M←→节点B←→节点A←→节点F←→节点E←→节点D←→网络N。
在ITU-T G.8032v1标准中规定了两种报文:信号失效(SF,Signal Fail)协议报文和无请求(NR,No Request)协议报文。SF协议报文是故障通知报文,其功能是:当节点检测到故障时,该节点沿环上端口周期性的发送SF协议报文,通知环上其他节点“环网发生了故障”;含有阻塞端口(对数据报文进行阻塞的无故障端口)的环上节点收到SF协议报文后,开启阻塞端口的数据报文转发功能。NR协议报文的功能是:节点检测到相邻链路故障消失时,沿环上两个方向的端口周期性的发送NR协议报文,通知环上其他节点“链路故障消失了”;控制节点收到NR协议报文后,启动等待恢复(WTR,Wait to Restore)定时器,当WTR定时器超时,控制节点关闭阻塞端口的数据报文转发功能,并沿环上两个方向的端口周期性的发送NR协议报文,通知环上的其他节点“环保护链路阻塞了”。
在ITU-T G.8032v2标准中增加了强制切换(FS,Force Switch)协议报文和手工切换(MS,Manual Switch)协议报文。当环上节点启动FS或MS时,会沿环上两个方向的端口周期性的发送FS或MS协议报文,通知环上的其他节点“环上发送强制切换或手工切换了”。含有阻塞端口(对数据报文进行阻塞的无故障端口)的环上节点收到FS或MS协议报文后,开启阻塞端口的数据报文转发功能。FS与MS的不同在于FS的优先级比SF高,MS的优先级比SF低,也就是说,当环网发送故障时,FS协议报文是能够在环网上存在的,而MS协议报文会被环网上的节点拒绝。
在ITU-T G.8032v1的协议报文中有4bit的“请求/状态(Request/State)”字段标识协议报文的类型,SF和NR协议报文在该字段中的编码值如下表所示:
表1
在ITU-T G.8032v2的协议报文中有4bit的“请求/状态”字段标识协议报文的类型,各协议报文在该字段中的编码值如下表所示:
表2
其中,当“请求/状态”字段的编码值为1110时,结合“子编码(Sub-code)”字段可以定义出新的协议报文类型,如下表所示:
表3
上述表3中的Flush报文主要用于多环场景中的子环域外地址刷新。
目前,G.8032v1和G.8032v2的协议报文是通过“Version”字段来区分的,G.8032v1的协议报文的“Version”字段值为0x00,G.8032v2的协议报文的“Version”字段值为0x01。
在G.8032v2的推进过程中,被要求向G.8032v1兼容,目前在G.8032v2中的前向兼容方法是:
当节点仅仅支持G.8032v1版本时,该节点将过滤掉FS和MS协议报文,对这两类报文只转发,不做进一步处理;当节点支持G.8032v2版本时,该节点可以识别FS和MS协议报文,且对这两类报文进行相应处理。
上述的兼容方法应用在某些情况下会存在问题,具体描述如下:如图4所示,节点A、B、C和F是支持G.8032v1的节点,节点D和E是支持G.8032v1的节点,节点A是控制节点。在环网无故障的情况下,节点A阻塞a2端口的数据报文转发功能,同时沿环上两个方向的端口周期性的发送NR报文。当系统在节点E的e2端口上启动强制切换时,节点E沿e1和e2端口向外周期性的发送FS协议报文。由于节点A、B、C和F是支持G.8032v1的节点,会将收到的FS协议报文过滤掉,不进行处理,因而节点A收到FS协议报文后不会打开a2端口的数据报文转发功能,环上将一直存在两个阻塞端口,使网络性能收到极大的破坏。同样的,如图5所示,由于控制节点A是支持G.8032v1的节点,其对节点E发送来的MS协议仅仅是过滤,而不进行处理。节点A收到MS报文后不会打开a2端口的数据报文转发功能,环上将一直存在两个阻塞端口。
由此可以看出,现有G.8032v2的前向兼容方案会造成环网上出现多个阻塞端口,从而影响网络性能。
发明内容
有鉴于此,本发明的主要目的在于提供一种报文处理方法和装置,以解决现有G.8032v2的前向兼容方案会造成环网上出现多个阻塞端口的问题。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供了一种报文处理方法,该方法包括:
以太环网上的节点根据自身所支持的版本类型,在只支持G.8032v1版本时,根据所接收报文的“请求/状态”字段解读所述报文的类型,并按解读的类型进行报文处理;
在支持G.8032v2版本时,根据所接收报文的“请求/状态”字段和“子编码”字段解读所述报文的类型,并按解读的类型进行报文处理。
该方法进一步包括:对各种类型的报文进行类型编码,并采用“请求/状态”字段和/或“子编码”字段进行标识,具体为:
对于无请求NR协议报文,仅采用“请求/状态”字段标识,且NR协议报文在G.8032v2版本中的“请求/状态”字段标识与在G.8032v1版本中一致;
对于信号失效SF协议报文、强制切换FS协议报文和手工切换MS协议报文,采用“请求/状态”字段和“子编码”字段标识,且所述SF协议报文、FS协议报文和MS协议报文在G.8032v2版本中的“请求/状态”字段标识,与G.8032v1版本中SF协议报文的“请求/状态”字段标识相同;在G.8032v2版本的“子编码”字段对所述SF协议报文、FS协议报文和MS协议报文进行区分标识;
对于Flush报文,其在G.8032v2版本中的“请求/状态”字段和“子编码”字段标识与在G.8032v1版本中一致。
该方法进一步包括:将NR协议报文的“请求/状态”字段标识为0000;将SF协议报文的“请求/状态”字段标识为1011,“子编码”字段标识为0000;将MS协议报文的“请求/状态”字段标识为1011,“子编码”字段标识为0001;将FS协议报文的“请求/状态”字段标识为1011,“子编码”字段标识为0010。
该方法进一步包括:对于只支持G.8032v1版本的节点,在接收到FS协议报文时,根据所述FS协议报文的“请求/状态”字段,将所述FS协议报文解读为SF协议报文,并按SF协议报文进行处理;在接收到MS协议报文时,根据所述MS协议报文的“请求/状态”字段,将所述MS协议报文解读为SF协议报文,并按SF协议报文进行处理。
该方法进一步包括:对于支持G.8032v2版本的节点,根据报文的“请求/状态”字段和“子编码”字段,在接收到SF协议报文、或FS协议报文、或MS协议报文时,仍分别对应解读为SF协议报文、FS协议报文、MS协议报文。
本发明还提供了一种报文处理装置,该装置包括:
版本类型确定模块,用于确定以太环网上的节点所支持的版本类型;
报文类型解读模块,用于根据所述节点支持的版本类型,在只支持G.8032v1版本时,根据节点所接收报文的“请求/状态”字段解读所述报文的类型;在支持G.8032v2版本时,根据节点所接收报文的“请求/状态”字段和“子编码”字段解读所述报文的类型;
报文处理模块,用于按解读的类型进行报文处理。
该装置进一步包括:类型编码模块,用于对各种类型的报文进行类型编码,并采用“请求/状态”字段和/或“子编码”字段进行标识,具体为:
对于NR协议报文,仅采用“请求/状态”字段标识,且NR协议报文在G.8032v2版本中的“请求/状态”字段标识与在G.8032v1版本中一致;
对于SF协议报文、FS协议报文和MS协议报文,采用“请求/状态”字段和“子编码”字段标识,且所述SF协议报文、FS协议报文和MS协议报文在G.8032v2版本中的“请求/状态”字段标识,与G.8032v1版本中SF协议报文的“请求/状态”字段标识相同;在G.8032v2版本的“子编码”字段对所述SF协议报文、FS协议报文和MS协议报文进行区分标识。
所述类型编码模块进一步用于,将NR协议报文的“请求/状态”字段标识为0000;将SF协议报文的“请求/状态”字段标识为1011,“子编码”字段标识为0000;将MS协议报文的“请求/状态”字段标识为1011,“子编码”字段标识为0001;将FS协议报文的“请求/状态”字段标识为1011,“子编码”字段标识为0010。
所述报文类型解读模块进一步用于,对于只支持G.8032v1版本的节点,在接收到FS协议报文时,根据所述FS协议报文的“请求/状态”字段,将所述FS协议报文解读为SF协议报文;在接收到MS协议报文时,根据所述MS协议报文的“请求/状态”字段,将所述MS协议报文解读为SF协议报文。
所述报文类型解读模块进一步用于,对于支持G.8032v2版本的节点,根据报文的“请求/状态”字段和“子编码”字段,在接收到SF协议报文、或FS协议报文、或MS协议报文时,仍分别对应解读为SF协议报文、FS协议报文、MS协议报文。
本发明所提供的一种报文处理方法和装置,由以太环网上的节点根据自身所支持的版本类型,在只支持G.8032v1版本时,根据所接收报文的“请求/状态”字段解读报文的类型,并按解读的类型进行报文处理;在支持G.8032v2版本时,根据所接收报文的“请求/状态”字段和“子编码”字段解读报文的类型,并按解读的类型进行报文处理。通过本发明解决了现有G.8032v2的前向兼容方案所造成的环网上出现多个阻塞端口的问题,提高了以太环网的性能。
附图说明
图1为现有技术中以太环网保护的拓扑结构示意图;
图2为现有技术中环网无故障情况下的数据转发示意图;
图3为现有技术中环网发生故障情况下的数据流保护倒换的示意图;
图4为现有技术中对应G.8032v2前向兼容方案的以太环网拓扑结构示意图一;
图5为现有技术中对应G.8032v2前向兼容方案的以太环网拓扑结构示意图二;
图6为本发明一种报文处理方法的流程图;
图7a为本发明强制切换的实施例所对应的以太环网拓扑结构示意图一;
图7b为本发明强制切换的实施例所对应的以太环网拓扑结构示意图二;
图8a为本发明手工切换的实施例所对应的以太环网拓扑结构示意图一;
图8b为本发明手工切换的实施例所对应的以太环网拓扑结构示意图二;
图8c为本发明手工切换的实施例所对应的以太环网拓扑结构示意图三;
图9为本发明一种报文处理装置的组成结构示意图。
具体实施方式
下面结合附图和具体实施例对本发明的技术方案进一步详细阐述。
为解决目前G.8032v2前向兼容中存在的环网中容易出现多个阻塞端口的问题,本发明所提供的一种报文处理方法,首先对各种类型的报文进行类型编码,并采用“请求/状态”字段和/或“子编码”字段进行标识,具体的:
对于NR协议报文,仅采用“请求/状态”字段标识,且NR协议报文在G.8032v2版本中的“请求/状态”字段标识与在G.8032v1版本中一致,即标识为0000;
对于SF协议报文、FS协议报文和MS协议报文,采用“请求/状态”字段和“子编码”字段标识,且SF协议报文、FS协议报文和MS协议报文在G.8032v2版本中的“请求/状态”字段标识,与G.8032v1版本中SF协议报文的“请求/状态”字段标识相同;在G.8032v2版本的“子编码”字段对SF协议报文、FS协议报文和MS协议报文进行区分标识;
对于Flush报文,其在G.8032v2版本中的“请求/状态”字段和“子编码”字段标识与在G.8032v1版本中一致,即“请求/状态”字段标识为1110,“子编码”字段标识为0000。
较佳的,对SF、MS和FS协议报文的“请求/状态”字段和“子编码”字段标识,具体如下表所示:
表4
从表4中可以看出,“请求/状态”字段的编码值与G.8032v1中的SF协议报文的编码值相同,各报文的描述如下:
当“请求/状态”字段的编码值为1011,“子编码”字段的编码值为0000时,标识的报文类型为SF协议报文;
当“请求/状态”字段的编码值为1011,“子编码”字段的编码值为0001时,标识的报文类型为MS协议报文;
当“请求/状态”字段的编码值为1011,“子编码”字段的编码值为0010时,标识的报文类型为FS协议报文。
在此类型编码的基础上,以太环网上的节点根据自身所支持的版本类型,在只支持G.8032v1版本时,根据所接收报文的“请求/状态”字段解读报文的类型,并按解读的类型进行报文处理;在支持G.8032v2版本时,根据所接收报文的“请求/状态”字段和“子编码”字段解读报文的类型,并按解读的类型进行报文处理。具体的:对于只支持G.8032v1版本的节点,在接收到FS协议报文时,会根据FS协议报文的“请求/状态”字段,将FS协议报文解读为SF协议报文,并按SF协议报文进行处理;在接收到MS协议报文时,会根据MS协议报文的“请求/状态”字段,将MS协议报文解读为SF协议报文,并按SF协议报文进行处理。对于支持G.8032v2版本的节点,根据报文的“请求/状态”字段和“子编码”字段,在接收到SF协议报文、或FS协议报文、或MS协议报文时,仍分别对应解读为SF协议报文、FS协议报文、MS协议报文。
下面结合图6,对本发明的报文处理方法进行详细阐述,具体流程包括以下步骤:
步骤601,节点收到报文时,读取该报文的“请求/状态”字段,并根据“请求/状态”字段的编码值,分三种情况进行处理,具体为:
情况1:如果“请求/状态”字段的编码值为0000,则执行步骤602;
情况2:如果“请求/状态”字段的编码值为1110,则执行步骤603;
情况3:如果“请求/状态”字段的编码值为1011,则执行步骤609。
步骤602,节点将该报文解读为NR协议报文,并按照预先配置的NR协议报文处理规则,执行对NR协议报文的处理。
步骤603,节点判断自身所支持的版本类型是否为G.8032v1,如果是,执行步骤604;否则,执行步骤605。
在本发明中所指的版本类型非G.8032v1即G.8032v2。
步骤604,节点只对该报文进行转发,忽略对该报文的进一步处理。
1110是在G.8032v2版本中定义的“请求/状态”字段的编码值,因此,当节点所支持的版本为G.8032v1时,无法对该报文进行识别,从而也就无需执行相应的报文处理。
步骤605~606,节点读取“子编码”字段,如果“子编码”字段的编码值为0000,执行步骤607;否则,执行步骤608。
步骤607,将该报文解读为Flush协议报文,并按照预先配置的Flush协议报文处理规则,执行对Flush协议报文的处理。
步骤608,将该报文解读为其他类型的协议报文(预留的其他扩展报文类型),并按照预先配置的报文处理规则,执行对其他类型的协议报文的处理。
步骤609,节点判断自身所支持的版本类型是否为G.8032v1,如果是,执行步骤610;否则,执行步骤611。
步骤610,将该报文解读为SF协议报文,并按照预先配置的SF协议报文处理规则,执行对SF协议报文的处理。
步骤611~614,节点读取“子编码”字段,如果“子编码”字段的编码值为0000,则将该报文解读为SF协议报文,并按照预先配置的SF协议报文处理规则,执行对SF协议报文的处理;如果“子编码”字段的编码值为0001,则将该报文解读为MS协议报文,执行对MS协议报文的处理;如果“子编码”字段的编码值为0010,则将该报文解读为FS协议报文,执行对FS协议报文的处理。
下面结合图7a、7b所示的拓扑结构,对环网发生强制切换的实施例进行详细说明。如图7a所示,节点A、B、C和F是仅仅支持G.8032v1的节点,节点D和节点E是支持G.8032v2的节点,节点A是控制节点。在环网无故障的情况下,节点A阻塞a2端口的数据报文转发功能,并沿着环上两个方向的端口(a1、a2)周期性的发送NR协议报文。
再如图7b所示,系统在节点E的e2端口上启动强制切换时,节点E沿着e1和e2端口向外周期性的发送FS协议报文。由于节点A、B、C和F是只支持G.8032v1的节点,当它们收到FS协议报文时,仅仅读取该报文中的“请求/状态”字段的编码值1011,而忽略“子编码”字段,因此这些节点将接收的FS协议报文解读为SF协议报文,并刷新各自的地址转发表。其中,控制节点A将收到的FS协议报文解读为SF协议报文后,还需要将a2端口的数据报文转发功能开启。
下面再结合图8a、8b、8c所示的拓扑结构,对环网发生手工切换的实施例进行详细说明。如图8a所示,节点B和C检测到<B,C>链路发生故障时,分别阻塞b1和c2端口的数据报文转发功能,刷新各自的地址转发表,并分别沿各自在环上完好的端口(b2、c1)周期性的发送SF协议报文。环上的其他节点收到SF报文后也刷新各自的地址转发表,控制节点A还需要开启a2端口的数据报文转发功能。如图8b所示,节点B和C检测到<B,C>链路故障消失时,节点B和C分别沿环上端口周期性的发送NR协议报文;当节点C接收到节点B发送来的NR协议报文时,发现报文中的节点号(Node_ID)比自身的节点号大,于是节点C停止发送NR协议报文,并打开c2端口的数据报文转发功能(节点B继续阻塞b1端口)。控制节点A接收到NR协议报文后,启动WTR定时器。
再如图8c所示,在节点A的WTR定时器运行时,系统在节点E的e2端口上启动手工切换,节点E沿e1和e2端口向外周期性的发送MS协议报文。由于节点A、B、C和F是只支持G.8032v1的节点,当它们收到MS协议报文时,仅仅读取协议报文中的“请求/状态”字段的编码值1011,而忽略“子编码”字段,因此这些节点将MS协议报文解读为SF报文。其中,节点B将收到的MS协议报文解读为SF协议报文后,还需要将b1端口的数据报文转发功能开启。
通过上述实施例的分析可以看出,本发明解决了现有G.8032v2的前向兼容方案会造成环网上出现多个阻塞端口的问题,从而提高了以太环网的性能。
对应上述报文处理方法,本发明还提供了一种报文处理装置,该装置应用于以太环网中的节点,如图9所示,该装置包括:版本类型确定模块11、报文类型解读模块12和报文处理模块13。其中,版本类型确定模块11,用于确定以太环网上的节点所支持的版本类型。报文类型解读模块12,用于根据节点支持的版本类型,在只支持G.8032v1版本时,根据节点所接收报文的“请求/状态”字段解读报文的类型;在支持G.8032v2版本时,根据节点所接收报文的“请求/状态”字段和“子编码”字段解读报文的类型。报文处理模块13,用于按解读的类型进行报文处理。
较佳的,该装置进一步包括类型编码模块14,用于对各种类型的报文进行类型编码,并采用“请求/状态”字段和/或“子编码”字段进行标识,具体为:
对于NR协议报文,仅采用“请求/状态”字段标识,且NR协议报文在G.8032v2版本中的“请求/状态”字段标识与在G.8032v1版本中一致;
对于SF协议报文、FS协议报文和MS协议报文,采用“请求/状态”字段和“子编码”字段标识,且SF协议报文、FS协议报文和MS协议报文在G.8032v2版本中的“请求/状态”字段标识,与G.8032v1版本中SF协议报文的“请求/状态”字段标识相同;在G.8032v2版本的“子编码”字段对SF协议报文、FS协议报文和MS协议报文进行区分标识。优选的,可以将NR协议报文的“请求/状态”字段标识为0000;将SF协议报文的“请求/状态”字段标识为1011,“子编码”字段标识为0000;将MS协议报文的“请求/状态”字段标识为1011,“子编码”字段标识为0001;将FS协议报文的“请求/状态”字段标识为1011,“子编码”字段标识为0010。
报文类型解读模块12进一步用于,对于只支持G.8032v1版本的节点,在接收到FS协议报文时,根据FS协议报文的“请求/状态”字段,将FS协议报文解读为SF协议报文;在接收到MS协议报文时,根据MS协议报文的“请求/状态”字段,将MS协议报文解读为SF协议报文。对于支持G.8032v2版本的节点,根据报文的“请求/状态”字段和“子编码”字段,在接收到SF协议报文、或FS协议报文、或MS协议报文时,仍分别对应解读为SF协议报文、FS协议报文、MS协议报文。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。