专利名称:一种报文转发方法、装置和系统的制作方法
技术领域:
本发明涉及通信领域,尤其涉及一种报文转发方法、装置和系统。
背景技术:
根据IEEE802. 3标准规定,在一个标准的以太网媒体访问控制MAC帧中,有目的 MAC地址和源MAC地址,长度都是6个字节,目的MAC地址用以标识以太网帧要被送往的物 理设备,源MAC地址用以标识发出以太网帧的物理设备。目的MAC地址的第一个bit位(第 一个字节的最低bit位)表示目的MAC地址是单播地址还是组播地址,如果是0,表示单播 地址;如果是1,表示组播地址;如果目的MAC地址所述bit位全为1,则表示广播MAC地址, 带有广播MAC地址的以太网MAC帧会被转发到对应网络的所有物理设备。当收到以太网MAC帧后,设备会增加相应的转发表项,将以太网MAC帧的源MAC地 址、虚拟局域网标识VLAN ID和输入端口号记录下来,这叫做MAC地址的学习。相同的设备为了扩展端口或带宽,会连接起来作为一个设备来使用,这叫做级连, 级连设备之间进行连接的端口叫做级连端口或互连端口。IEEE 802. 3ad规定了链路聚合的实现方式,两个或多个物理端口绑定到一起作为 一个逻辑端口来使用,起到负荷分担和链路保护的作用,这个逻辑端口称为链路聚合组。负 荷分担是指根据特定的聚合选路算法,如根据报文中的目的MAC地址或源MAC地址,将报 文从链路聚合组中的不同物理端口发送出去。链路保护是指当链路聚合组中的某个物理 端口出现故障时,本来从这个物理端口转发出去的报文,可以自动选择从链路聚合组中的 其它物理端口转发出去。对于多个设备级连,或对于同一设备上单板之间互连,如图1所示,包括第一单 板100,第二单板110以及交换板120,其中,第一单板100包括输入端口 portl、输出端口 port3以及级连端口 port22,第二单板110包括port4,其中,port22用于连接第二单板110 实现第一单板100和第二单板110之间的级连,port3和port4聚合。第一单板100通过 portl接收交换板120的以太网MAC帧后,由于port3和port聚合,根据聚合算法,第一单 板100可能会选择port3来转发收到的以太网MAC帧,这样第二单板110学习不到以太网 MAC帧的源MAC地址,这样,当第二单板110通过port4收到发送给交换板120的以太网MAC 帧后,会一直进行广播。为解决这个问题,需要进行MAC地址的同步,目前常用的做法是,使 用CPU进行MAC地址同步,即第一单板100上的CPU定时读取MAC地址表中所有MAC地址, 将这些MAC地址封装在以太网MAC帧的数据段中,发送给第二单板110,第二单板110收到 这个以太网报文后,从以太网MAC帧的数据段中读取需要同步的MAC地址,将这些MAC地址 配置到本单板的MAC地址表中。然而在使用CPU进行MAC地址的同步时,由于MAC地址的数量通常比较大,一般在 16k以上,这要占用大量的CPU资源,影响CPU的处理性能,同时,CPU是按照一定周期进行 MAC地址的同步,同步不及时,可能会导致在一定时间内,数据报文进行广播,影响网络的处 理性能。
发明内容
本发明公开一种报文转发方法、装置和系统,用以解决跨板链路聚合单板/设备 或者级连单板/设备之间的MAC地址的同步问题。本发明的一个实施例提供一种报文转发方法,包括步骤接收来自交换板的报文; 获取所述报文的输入端口号,根据输入端口号查询存储有输入端口号与输出端口 号或级连端口号的对应关系的转发策略表,获取所述输入端口号对应的输出端口号和级连 端口号;通过级连端口号对应的端口将所述报文转发给级连单板,以使所述级连单板对所 述报文的源MAC地址进行学习。本发明的一个实施例提供一种单板,包括存储单元,用于存储转发策略表,所述转发策略表存储有输入端口号与输出端口 号或级连端口号的对应关系;接收单元,用于接收来自交换板的报文,获取所述报文的输入端口号;处理单元,根据所述输入端口号查询转发策略表,获取所述输入端口对应的输出 端口号和级连端口号;发送单元,通过级连端口号对应的端口将所述报文转发给级连单板,以使所述级 连单板对所述报文的源MAC地址进行学习。本发明的一个实施例提供一种报文转发系统,包括第一单板和第二单板,第一单板包含转发策略表,所述转发策略表存储有输 入端口号与输出端口号或级连端口号的对应关系,第一单板,收到来自交换板的报文后,获取报文的输入端口号,根据输入端口号 查询转发策略表,获取所述输入端口号对应的输出端口号和级连端口号,通过级连端口号 对应的端口将所述报文转发给第二单板,以使得第二单板对所述报文的源MAC地址进行学 习。本发明的实施例提供的方法、装置和系统具有以下优点或者有益效果单板/设 备在获取报文后根据转发策略将报文转发给级连单板或者跨板链路聚合单板,这个过程不 影响CPU的执行效率,也不需要将整个MAC地址表的内容进行同步。
图1为现有的单板聚合示意图;图2为本发明提供的报文转发方法流程图;图3为本发明提供的单板结构示意图;图4为本发明提供的报文转发系统示意图。
具体实施例方式下面将结合附图对本发明进行清楚、完整的说明本发明第一个实施例提供一种报文转发方法,该方法涉及第一单板和第二单板,其中,第一单板和第二单板可以属于同一个设备,也可以属于不同的级连设备,第一单板和 第二单板可以通过802. 3ad协议聚合或者级连。具体的步骤如图2所示,包括步骤200,第一单板接收报文(以太网报文或者其他以太网MAC帧)后,从报文中 获取源MAC地址,根据源MAC地址查询MAC地址表,执行步骤205。步骤205,如果MAC地址表中有记录且对应的端口号与输入端口号一致,则执行步 骤220 ;否则,对源MAC地址进行学习,执行步骤210。其中,对源MAC地址进行学习包括(1)如果MAC地址表中不存在源MAC地址,则把源MAC地址、虚拟局域网标识VLAN ID、输入端口号作为一个表项添加到MAC地址表中;(2)如果MAC地址表中存在源MAC地址,但是对应的端口号与输入端口号不相同, 则将MAC地址表中源MAC地址对应的端口号更新为输入端口号。步骤210,根据输入端口号查询转发策略表获取输入端口号的控制标识。转发策略表可以是一个单独的表,也可以嵌套于其它表中,用于反映输入端口号 与输出端口号、级连端口号的对应关系,转发策略表的结构如表1所示,本领域普通技术人 员可以得知,级连端口可以在级连单板之间互相传输报文,因此,当级连端口接收报文时, 相当于输入端口 ;当级连端口发送报文时,则相当于输出端口。在表1中,报文输入端口位 图可以包括单板上的级连端口,报文输出端口位图也可以包括单板上的级连端口,表 1
报文输入端口位图 VLAN内广播使能/禁止 报文输出端口位图表中字段分别描述如下(1)报文输入端口位图表示对从哪些端口进入的报文进行转发控制,范围是单 板上的所有端口,每个端口占用一个bit位。如果一个端口对应的bit位为真,则表示要对 从这个端口进入的报文进行控制,如果对应的bit位为假,则不控制,可以同时对多个端口 有效,以下实施例中,bit位为真以“1”表示,bit位为假以“0”表示。(2) VLAN内广播使能/禁止是否需要发送到当前VLAN的所有端口,如果为真,则 报文输出端口位图无效,VLAN内广播使能/禁止优选取值VLAN内广播使能时为真,取值 VLAN内广播禁止时为假。(3)报文输出端口位图当VLAN内广播使能/禁止为假时,该字段指定转发报文 的端口号,范围是单板上的所有端口,每个端口占用一个bit位。如果一个端口对应的bit 位置1,则表示报文要从这个端口转发出去,可以指定报文从一个或多个端口转发出去。步骤215,根据输入端口号查询转发策略表中的报文输入端口位图,获取所述输入 端口的控制标识,如果对应的bit位为“ 1 ”,说明该输入端口需要进行控制,执行步骤230 ; 如果对应的bit位为“0”,则说明该输入端口不需要控制,执行步骤220。步骤220,根据目的MAC地址查询MAC地址表获取发送报文的端口号。提取报文中的目的MAC地址,根据目的MAC地址查询MAC地址表,从MAC地址表中 获取与目的MAC地址对应的端口号,作为输出端口号,执行步骤250。步骤230,根据输入端口号查询转发策略表中获取对应端口号作为发送报文的端口号。获取转发策略表中与输入端口号对应的VLAN内广播使能/禁止的值,如果VLAN 内广播使能/禁止为真,则查询VLAN表,获取VLAN内所有的端口号,作为发送报文的端口 号;如果VLAN内广播使能/禁止标识为假,则获取转发策略表中对应的输出端口位图字段 中的端口号,作为发送报文的端口号。步骤235,发送报文的端口号包括级连端口号和/或输出端口号,如果是级连端口 号,则执行步骤240 ;如果是输出端口号,则执行步骤250。步骤240,将报文通过级连端口号对应的端口发送出去。如果发送报文的端口号为级连端口号,则将报文通过级连端口号对应的端口发送 给第二单板,以使得第二单板收到报文以后,对报文中的源MAC地址进行学习,这样,第二 单板上的MAC地址表中的内容可以和第一单板上的MAC地址表中的内容保持同步。步骤250,根据输出端口号发送报文。如果输出端口号属于聚合组中的端口号,则根据设定的聚合算法从聚合组中选择 至少一个端口发送报文,或者进行VLAN切换、三层转发等,具体可参照现有流程;如果输出端口号不属于聚合组,则将报文从输出端口号对应的端口发送出去,或 者进行VLAN切换或三层转发等。在如何根据转发策略表选择发送报文的端口的一个实施例中,如图1所示,第一 单板200从portl接收报文,查询第一单板200上的转发策略表,如果portl对应的VLAN 内广播使能/禁止为假,需要根据转发策略表中的输出端口位图获取发送报文的输出端口号。转发策略表示意图可以如表2所示,本领域普通技术人员可以得知,实际上,输入 端口位图字段中portl和port22对应的bit位优选为“ 1”,对应的输出端口位图中,port3 和port22对应的bit位优选为“ 1,,。表2 表中所表示的为从portl和port22接收的报文需要通过port22和port3发送 出去,其中,从port22收到的报文不需要发送给port22。因此,通过查询转发策略表可知, 从portl收到的报文需要发送到port22和port3,通过查询MAC地址表得知port22为级 连端口号,因此,报文会通过port22发送给第二单板210,以便于第二单板210对报文中的 源MAC地址进行学习。port3和port4被设置为聚合,因此,第一单板200会根据聚合算法 从port3和port4中选择一个将报文发送出去,如何根据聚合算法选择端口发送报文可参 照现有流程。本实施例提供的报文发送方法,实现级连单板之间的MAC地址同步,可以解决由 于多个单板的端口进行聚合,根据聚合算法,在发送报文时会选择一个单板上的端口发送 报文,导致其它级连单板学习不到源MAC地址,MAC地址不能同步的问题。如果报文是从级 连端口进入的,在进行MAC地址学习时,在MAC地址表中给源MAC地址设置一个级连标记, 单板在MAC地址老化周期到了以后,读取没有级连标记的MAC地址,将这些MAC地址通知其它级连单板,其它级连单板同步删除这些MAC地址。本实施例通过设定转发策略,根据转发策略将报文通过级连端口转发给级连单板 /级连设备,实现MAC地址同步,不影响已有的转发流程,不影响CPU的处理性能。本发明第二个实施例提供一种单板,如图3所示,单板300包括接收单元301、发送 单元302、处理单元303和存储单元304,存储单元304存储转发策略表,所述转发策略表用于存储输入端口号与输出端口 号、级连端口号的对应关系,包括报文输入端口位图、虚拟局域网内广播使能/禁止和报文 输出端口位图,其中,报文输入端口位图用于存储单板上的端口的控制标识,当端口号对应 的控制标识为真时,表明该端口号对应端口需要进行转发控制。存储单元304还用于存储MAC地址表,MAC地址表如表3所示表3 接收单元301,接收来自交换板的报文;处理单元303,从接收单元301接收的报文中获取源MAC地址,根据源MAC地址查 询MAC地址表,如果没有找到相同项,则将源MAC地址添加到MAC地址表中;根据输入端口号查询转发策略表中的输入端口位图,获取转发策略表中与输入端 口号对应的VLAN内广播使能/禁止的值,如果VLAN内广播使能/禁止为真,则查询VLAN 表,获取VLAN内所有的端口号,作为发送报文的端口号;如果VLAN内广播使能/禁止标识 为假,则获取转发策略表中对应的输出端口位图字段中的端口号,作为发送报文的端口号。发送单元302,根据处理单元303获取的发送报文的端口号发送所述报文。处理单元303获取的发送报文的端口号包括级连端口号和输出端口号,如果是级 连端口号,发送单元302将报文通过级连端口号对应的级连端口发送给级连单板。处理单元303还需要判断输出端口号是否属于聚合组的端口号,如果输出端口号 属于聚合组中的端口号,则根据设定的聚合算法从聚合组中选择至少一个端口,之后,通知 发送单元302从该端口发送报文,或者进行VLAN切换、三层转发等;如果输出端口不属于聚 合组,则通知发送单元302将报文从输出端口号对应的端口发送出去,或者进行VLAN切换、 三层转发等,具体可参照现有流程。本实施例提供的单板可以用在通信设备中,通信设备可以是数字用户线接入复用 器DSLAM、光线路终端0LT、光网络单元0NU、交换机等。本实施例提供的单板在收到报文时,查询转发策略表,根据输入端口号与输出端 口号、级连端口号的对应关系发送报文,获取输入端口号对应的级连端口,通过级连端口将 报文发送给级连设备,从而实现MAC地址的同步。本发明第三个实施例提供一种报文转发系统,包括第一单板100和第二单板110, 第一单板100和第二单板110可以是一个通信设备中的两个单板,也可以属于两个不同的 通信设备,第一单板100和第二单板110通过级连端口相连。第一单板100上包括转发策略表,转发策略表用于存储输入端口号与输出端口 号、级连端口号的对应关系,结构如表1所示。
第一单板100收到来自交换板的报文后,获取报文的输入端口号,根据输入端口 号查询转发策略表,获取所述输入端口号对应的输出端口号和级连端口号,从转发策略表 中获取级连端口和输出端口号的过程,可参照第一个实施例。第一单板100通过级连端口号对应的端口将所述报文转发给第二单板110,以使 得第二单板110对所述报文的源MAC地址进行学习。如果获取的输出端口号属于聚合组端口号,第一单板100则根据聚合算法从聚合 组中选择至少一个端口发送所述报文、或者进行VLAN切换、三层转发等,具体过程可参照 现有流程;如果所述输出端口号不属于聚合组中的端口号,第一单板100通过输出端口号对 应的端口发送报文、或者进行VLAN切换、三层转发等。本实施例提供的报文转发系统根据设定转发策略来转发报文,转发策略反映输入 端口号与输出端口号、级连端口号的对应关系,根据输入端口号查询到对应的级连端口号, 则将报文从对应的级连端口发送出去,这样可以使得级连设备也能学习到报文中的源MAC 地址,从而实现级连设备之间的MAC地址同步,而不需要将MAC地址表中的所有MAC地址全 部封装发送给级连设备来实现MAC地址的同步。本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可 以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储 介质可以包括ROM、RAM、磁盘或光盘等。显然,本领域的技术人员可以对本发明进行各种改动和变型。这样,倘若本发明的 这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些 改动和变型在内。
权利要求
一种报文转发方法,其特征在于,包括步骤接收来自交换板的报文;获取所述报文的输入端口号,根据输入端口号查询存储有输入端口号与输出端口号或级连端口号的对应关系的转发策略表,获取所述输入端口号对应的输出端口号和级连端口号;通过级连端口号对应的端口将所述报文转发给级连单板,以使所述级连单板对所述报文的源MAC地址进行学习。
2.根据权利要求1所述的方法,其特征在于,所述转发策略表包括报文输入端口位图、 虚拟局域网内广播使能/禁止和报文输出端口位图,所述报文输入端口位图存储有所述输 入端口号,所述报文输出端口位图存储有所述输入端口号对应的输出端口号和级连端口 号。
3.根据权利要求2所述的方法,其特征在于,所述根据输入端口号查询存储有输入端 口号与输出端口号与级连端口号的对应关系的转发策略表,获取所述输入端口号对应的输 出端口号和级连端口号具体包括根据输入端口号查询报文输入端口位图,获取所述输入端口号的控制标识;如果所述输入端口号的控制标识为真,对应的虚拟局域网内广播使能/禁止为真,则 获取所述报文中的虚拟局域网标识,根据所述虚拟局域网标识查询虚拟局域网表,获取对 应的输出端口号和级连端口号;如果所述输入端口号的控制标识为真,对应的虚拟局域网内广播使能/禁止为假,则 查询对应的报文输出端口位图,获取对应的输出端口号和级连端口号。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述报文转发方法还包括如果所述输出端口号属于聚合组中的端口号,则根据聚合算法从聚合组中选择至少一 个端口发送所述报文、或者进行虚拟局域网切换或三层转发;如果所述输出端口号不属于聚合组中的端口号,则通过所述输出端口号对应的端口发 送所述报文、或者进行虚拟局域网切换或三层转发。
5.一种单板,其特征在于,包括存储单元,用于存储转发策略表,所述转发策略表存储有输入端口号与输出端口号或 级连端口号的对应关系;接收单元,用于接收来自交换板的报文,获取所述报文的输入端口号;处理单元,根据所述输入端口号查询转发策略表,获取所述输入端口对应的输出端口 号和级连端口号;发送单元,通过级连端口号对应的端口将所述报文转发给级连单板,以使所述级连单 板对所述报文的源MAC地址进行学习。
6.根据权利要求5所述的单板,其特征在于,所述转发策略表包括报文输入端口位图、 虚拟局域网内广播使能/禁止和报文输出端口位图,所述报文输入端口位图存储所述输入 端口号,所述报文输出端口位图存储所述输入端口号对应的输出端口号和级连端口号。
7.根据权利要求5所述的单板,其特征在于,所述处理单元还用于判断所述输出端口 号是否属于聚合组中的端口,如果所述输出端口号属于聚合组中的端口号,则进行虚拟局域网切换或三层转发,或者根据聚合算法从聚合组中选择至少一个端口号,通知所述发送单元从所述至少一个端口 号对应的端口发送所述报文;如果所述输出端口号不属于聚合组中的端口号,则进行虚拟局域网切换或三层转发, 或者通知所述发送单元通过所述输出端口号对应的端口发送所述报文。
8.根据权利要求5-7任一项所述的单板,其特征在于,所述单板可用在通信设备中,所 述通信设备包括数字用户线接入复用器DSLAM、光线路终端0LT、光网络单元0NU或交换 机。
9.一种报文转发系统,其特征在于,包括第一单板和第二单板,第一单板包含转发策略 表,所述转发策略表存储有输入端口号与输出端口号或级连端口号的对应关系,第一单板,收到来自交换板的报文后,获取报文的输入端口号,根据输入端口号查询转 发策略表,获取所述输入端口号对应的输出端口号和级连端口号,通过级连端口号对应的 端口将所述报文转发给第二单板,以使得第二单板对所述报文的源MAC地址进行学习。
10.根据权利要求9所述的系统,其特征在于,所述第一单板和第二单板属于一个通信 设备,或者属于不同的通信设备。
全文摘要
本发明公开一种报文转发方法、装置和系统,其中方法包括第一单板获取报文中的源MAC地址和输入端口号,根据所述源MAC地址查询MAC地址表;如果没有找到相同项,则对源MAC地址进行学习;根据输入端口号查询转发策略表以获取转发策略,并根据所述转发策略将所述报文发送给第二单板,使得第二单板对源MAC地址进行学习从而实现MAC地址同步。本发明通过获取转发策略在不改变现有的转发流程的情况下实现MAC地址的同步,不影响CPU的执行效率。
文档编号H04L12/46GK101877667SQ200910107028
公开日2010年11月3日 申请日期2009年4月30日 优先权日2009年4月30日
发明者马书雷 申请人:华为技术有限公司