一种报文转发方法和装置制造方法及图纸

技术编号:11079907 阅读:85 留言:0更新日期:2015-02-25 18:20
本发明专利技术提供了一种报文转发方法和装置,以解决报文转发过程中出现的广播环路、广播风暴的问题。其中一种报文转发方法包括:接收上一节点发送的报文;辨别报文的报文类型;当辨别出报文为广播报文时,判断报文是否已经转发或者达到最大转发跳数,若报文已经转发或者达到最大转发跳数,则丢弃报文;若报文未转发且未达到最大转发跳数,则更新报文,将更新后的报文转发给其他节点;当辨别出报文为单播报文时,判断报文的可选节点地址是否为当前节点的地址或者报文已经回复;若报文的可选节点地址不是当前节点的地址或者报文已经回复,则丢弃报文;若可选节点地址是当前节点的地址且报文未回复,则回复报文。本发明专利技术避免了广播环路和广播风暴的发生。

【技术实现步骤摘要】
一种报文转发方法和装置
本专利技术涉及测试
,特别是涉及一种报文转发方法和装置。
技术介绍
广播环路是指报文在网络节点之间不断传输却始终无法到达目的节点的一种现象。网络拓扑发生变化时,若网络收敛缓慢产生不协调或矛盾的路径选择,节点对无法到达目的节点的路由不予理睬,就会导致用户的报文不停地循环发送,占用大量网络带宽。下面结合图1对广播风暴进行说明,如图1所示节点S要发报文到节点F,中间ABCDE节点会将同一个报文转发多次,甚至S和F节点接收到多个同样的报文并再次转发,整个网络节点都在不断转发重复的报文,导致整个网络带宽被大量占用,资源被严重浪费。目前的报文转发方法会让中间ABCDE节点各转发同一个报文多次,容易导致广播环路和广播风暴,占用大量网络带宽,并且报文转发的效率低。
技术实现思路
本专利技术提供了一种报文转发方法和装置,以解决报文转发过程中出现的广播环路、广播风暴的问题。为了解决上述问题,本专利技术公开了一种报文转发方法,包括:接收上一节点发送的报文,所述报文包括:转发跳数和/或可选节点地址;辨别所述报文的报文类型,所述报文类型包括:广播报文和单播报文;当辨别出所述报文为广播报文时,判断所述报文是否已经转发或者达到最大转发跳数,若所述报文已经转发或者达到最大转发跳数,则丢弃所述报文;若所述报文未转发且未达到最大转发跳数,则更新所述报文,将更新后的报文转发给其他节点;当辨别出所述报文为单播报文时,判断所述报文的可选节点地址是否为当前节点的地址或者所述报文已经回复;若所述报文的可选节点地址不是所述当前节点的地址或者所述报文已经回复,则丢弃所述报文;若所述报文的可选节点地址是所述当前节点的地址且所述报文未回复,则回复所述报文。可选地,所述报文还包括:可选长度;所述辨别所述报文的报文类型,包括:查询所述报文的可选长度;当所述报文的可选长度可选长度为0时,辨别出所述报文为广播报文;当所述报文的可选长度可选长度为不为0时,辨别出所述报文为单播报文。可选地,所述判断所述报文是否已经达到最大转发跳数,包括:判断所述报文的转发跳数是否达到预设的转发阈值;当所述转发跳数达到预设的转发阈值时,判断所述报文达到最大转发跳数;当所述转发跳数未达到预设的转发阈值时,判断所述报文未达到最大转发跳数。可选地,所述报文还包括:报文序列号;所述判断所述报文是否已经转发,包括:查询所述当前节点的已发送列表,所述已发送列表由当前节点在每次转发后记录所转发的报文的报文序列号;判断所述报文的报文序列号是否在所述当前节点的已发送列表中;当所述报文的报文序列号在所述当前节点的已发送列表中时,判断所述报文已经转发;当所述报文的报文序列号不在所述当前节点的已发送列表中时,判断所述报文未转发。可选地,所述报文还包括:直接节点个数、直接节点地址和/或转发节点地址;所述更新所述报文包括:判断所述报文的直接节点个数是否为0;当所述报文的直接节点个数为0时,将所述报文的转发节点地址更新为当前节点的地址,将所述报文的转发跳数加一,将所述报文的直接节点个数更新为1,将所述报文的直接节点地址更新为所述上一节点的地址;当所述报文的直接节点个数不为0时,则判断当前节点的直接节点地址是否包含在所述报文的直接节点地址中;当所述当前节点的直接节点地址包含在所述报文的直接节点地址中时,丢弃所述报文;当所述当前节点的直接节点地址未包含在所述报文的直接节点地址中时,将所述报文的转发节点地址更新为所述当前节点的地址,将所述报文的转发跳数加一,将所述报文的直接节点个数更新为所述当前节点的直接节点个数,并将所述报文的直接节点地址更新为所述当前节点的直接节点的地址。可选地,所述报文还包括:直接节点地址;所述将更新后的报文转发给其他节点包括:按照更新后的报文的直接节点地址将所述更新后的报文转发给更新后的报文的直接节点。可选地,所述报文还包括:报文序列号;所述判断所述报文是否已经回复,包括:查询所述当前节点的已发送列表,所述已发送列表由当前节点在每次转发后记录所转发的报文的报文序列号;判断所述报文的报文序列号是否在所述当前节点的已发送列表中;当所述报文的报文序列号在所述当前节点的已发送列表中时,判断所述报文已经回复;当所述报文的报文序列号不在所述当前节点的已发送列表中时,判断所述报文未回复。可选地,所述报文还包括:可选长度、直接节点个数、直接节点地址和/或转发节点地址;所述回复所述报文包括:判断所述当前节点的直接节点地址是否包含在所述报文的直接节点地址中;当所述当前节点的直接节点地址包含在所述报文的直接节点地址中时,丢弃所述报文;当所述当前节点的直接节点地址未包含在所述报文的直接节点地址中时,将所述报文的转发节点地址更新为所述当前节点的地址,将所述报文的可选长度更新为所述当前节点除所述上一节点外的直接节点个数,将所述报文的可选节点地址更新为所述当前节点除所述上一节点外的直接节点地址,将所述报文的直接节点个数更新为所述当前节点的直接节点个数,并将所述报文的直接节点地址更新为所述当前节点的直接节点的地址;按照更新后的报文的直接节点地址进行回复。本专利技术还公开了一种报文转发装置,包括:接收模块,用于接收上一节点发送的报文,所述报文包括:转发跳数和/或可选节点地址;辨别模块,与所述接收模块相连,用于辨别所述报文的报文类型,所述报文类型包括:广播报文和单播报文;广播报文处理模块,与所述辨别模块相连,用于当所述辨别模块辨别出所述报文为广播报文时,判断所述报文是否已经转发或者达到最大转发跳数,若所述报文已经转发或者达到最大转发跳数,则丢弃所述报文;若所述报文未转发且未达到最大转发跳数,则更新所述报文,将更新后的报文转发给其他节点;单播报文处理模块,与所述辨别模块相连,用于当所述辨别模块辨别出所述报文为单播报文时,判断所述报文的可选节点地址是否为当前节点的地址或者所述报文已经回复;若所述报文的可选节点地址不是所述当前节点的地址或者所述报文已经回复,则丢弃所述报文;若所述报文的可选节点地址是所述当前节点的地址且所述报文未回复,则回复所述报文。可选地,所述报文还包括:可选长度;所述辨别模块包括:查询子模块,用于查询所述报文的可选长度;广播辨别子模块,与所述查询子模块相连,用于当所述查询子模块查询到所述报文的可选长度为0时,辨别出所述报文为广播报文;单播辨别子模块,与所述查询子模块相连,用于当所述查询子模块查询到所述报文的可选长度为不为0时,辨别出所述报文为单播报文。与现有技术相比,本专利技术包括以下优点:首先,本专利技术提供的报文转发方法,在当前节点已经转发过所述报文时,丢弃所述报文,可以保证同一个报文最多只被一个节点转发一次,避免了广播风暴的发生。具体可以通过报文中的报文序列号来实现,当所述报文的报文序列号在所述当前节点的已发送列表中时,判断所述报文已经转发,从而丢弃所述报文,这样同一个报文就不会被一个节点转发一次以上了,进一步避免了广播风暴的发生。其次,本专利技术提供的报文转发方法,在所述报文已经达到最大转发跳数时,丢弃所述报文,即对报文的最多转发次数进行了限制,可以避免出现广播环路。具体可以通过报文中的转发跳数来实现,当所述报文的转发跳数达到预设的阈值时,判断所述报文已经达到最大转发跳数,从而丢弃所述报文,这样同本文档来自技高网...
一种报文转发方法和装置

【技术保护点】
一种报文转发方法,其特征在于,包括:接收上一节点发送的报文,所述报文包括:转发跳数和/或可选节点地址;辨别所述报文的报文类型,所述报文类型包括:广播报文和单播报文;当辨别出所述报文为广播报文时,判断所述报文是否已经转发或者达到最大转发跳数,若所述报文已经转发或者达到最大转发跳数,则丢弃所述报文;若所述报文未转发且未达到最大转发跳数,则更新所述报文,将更新后的报文转发给其他节点;当辨别出所述报文为单播报文时,判断所述报文的可选节点地址是否为当前节点的地址或者所述报文已经回复;若所述报文的可选节点地址不是所述当前节点的地址或者所述报文已经回复,则丢弃所述报文;若所述报文的可选节点地址是所述当前节点的地址且所述报文未回复,则回复所述报文。

【技术特征摘要】
1.一种报文转发方法,其特征在于,包括:接收上一节点发送的报文,所述报文包括:转发跳数和/或可选节点地址;辨别所述报文的报文类型,所述报文类型包括:广播报文和单播报文;当辨别出所述报文为广播报文时,判断所述报文是否已经转发或者达到最大转发跳数,若所述报文已经转发或者达到最大转发跳数,则丢弃所述报文;若所述报文未转发且未达到最大转发跳数,则更新所述报文,将更新后的报文转发给其他节点;当辨别出所述报文为单播报文时,判断所述报文的可选节点地址是否为当前节点的地址或者所述报文已经回复;若所述报文的可选节点地址不是所述当前节点的地址或者所述报文已经回复,则丢弃所述报文;若所述报文的可选节点地址是所述当前节点的地址且所述报文未回复,则回复所述报文;所述报文还包括:直接节点个数、直接节点地址和/或转发节点地址;所述更新所述报文包括:判断所述报文的直接节点个数是否为0;当所述报文的直接节点个数为0时,将所述报文的转发节点地址更新为当前节点的地址,将所述报文的转发跳数加一,将所述报文的直接节点个数更新为1,将所述报文的直接节点地址更新为所述上一节点的地址;当所述报文的直接节点个数不为0时,则判断当前节点的直接节点地址是否包含在所述报文的直接节点地址中;当所述当前节点的直接节点地址包含在所述报文的直接节点地址中时,丢弃所述报文;当所述当前节点的直接节点地址未包含在所述报文的直接节点地址中时,将所述报文的转发节点地址更新为所述当前节点的地址,将所述报文的转发跳数加一,将所述报文的直接节点个数更新为所述当前节点的直接节点个数,并将所述报文的直接节点地址更新为所述当前节点的直接节点的地址。2.根据权利要求1所述的方法,其特征在于,所述报文还包括:可选长度;所述辨别所述报文的报文类型,包括:查询所述报文的可选长度;当所述报文的可选长度可选长度为0时,辨别出所述报文为广播报文;当所述报文的可选长度可选长度为不为0时,辨别出所述报文为单播报文。3.根据权利要求1所述的方法,其特征在于,所述判断所述报文是否已经达到最大转发跳数,包括:判断所述报文的转发跳数是否达到预设的转发阈值;当所述转发跳数达到预设的转发阈值时,判断所述报文达到最大转发跳数;当所述转发跳数未达到预设的转发阈值时,判断所述报文未达到最大转发跳数。4.根据权利要求1所述的方法,其特征在于,所述报文还包括:报文序列号;所述判断所述报文是否已经转发,包括:查询所述当前节点的已发送列表,所述已发送列表由当前节点在每次转发后记录所转发的报文的报文序列号;判断所述报文的报文序列号是否在所述当前节点的已发送列表中;当所述报文的报文序列号在所述当前节点的已发送列表中时,判断所述报文已经转发;当所述报文的报文序列号不在所述当前节点的已发送列表中时,判断所述报文未转发。5.根据权利要求1所述的方法,其特征在于,所述报文还包括:直接节点地址;所述将更新后的报文转发给其他节点包括:按照更新后的报文的直接节点地址将所述更新后的报文转发给更新后的报文的直接节点。6.根据权利要求1所述的方法,其特征在于,所述报文还包括:报文序列号;所述判断所述报文是否已经回复,包括:查询所述当前节点的已发送列表,所述已发送列表由当前节点在每次转发后记录所转发的报文的报文序列号;判断所述报文的报文序列号是否在所述当前节点的已发送列表中;当所述报文...

【专利技术属性】
技术研发人员:李腾飞
申请(专利权)人:北京盈进科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1