用于三层交换机的数据转发方法和装置的制作方法

文档序号:7710848阅读:163来源:国知局
专利名称:用于三层交换机的数据转发方法和装置的制作方法
技术领域
本发明涉及通信领域,尤其涉及一种用于三层交换才几的凄t据转 发方法和装置。
背景技术
三层交换机是在普通交换机上增加三层^各由功能,它是通过交 换机和路由器的有机结合实现的。三层交换机对首次接收到的数据
流软件路由后,产生MAC地址与IP地址的映射表,并进行石更件緩 存,当具有相同地址信息的数据流再次通过时,就可以才艮据此表直 接进行快速转发,即"一次路由,多次交换",有效提高了数据包转 发的效率,其中,」哽件緩存由ASIC芯片来实现。
为实it见三层^各由,ASIC芯片中配置了两种石更4牛表项L3 ( Layer 3,层三)表项和LPM ( Longest Prefix Matching,最长前缀匹配)表 项,L3表项中保存通过软件路由转发学习到的ARP/ND表项,该表 项用于索引到相应的二层转发信息以实现数据转发;LPM表中保存 通过^^由协议学习的网络前缀,在进行首次^t据软件^^由转发时, 由ARP/ND协议对该网络前缀的出4妄口地址进行解析,然后将解析 得到的ARP/ND表项保存到L3表项中的该地址索引的下一跳信息 中,同时LPM表中的网络前缀也会索引到该下一跳信息,这样, 就可以直接进4于二层封装转发下一个需要进4亍该最长匹配^各由查找 的凄t据流了。在IPv6地址方案中引入了 一种新的i也址--本i也链路i也址。网
络中的节点启动IPv6协议栈时,节点的每个4妄口会自动分配一个本 地链路地址,对于三层交换机来说,也就是在三层接口 IPv6使能的 情况下自动生成fe80::EUI-64的地址。本地链路地址具有如图l所 示的固定的地址格式,三层交换才几中的本地链^各地址的地址才各式由 特定前缀和学习到的接口 ID两部分組成,本地链3各地址的最高10 位为1111111010,即FE80::/64, 4妄口 ID是才艮才居i殳备的MAC i也址 按固定的规则生成的,其中的第17-32位为保留位。
由于三层交换^几记录的本地链3各地址的前缀不再表示该翁:才居的 出接口地址,所以在转发具有不同出接口地址的数据时,相关技术 中的用于三层交换机的数据转发方法和装置将从一个出接口转发应 该从不同出接口转发的数据,导致大量数据丢失。

发明内容
本发明的目的在于提供一种用于三层交换机的数据转发方法和 装置,能够解决相关技术中在转发具有不同出接口地址的数据时由 于无法查找出接口地址导致的大量数据丢失的技术问题。
根据本发明的一个方面,提供了 一种用于三层交换机的数据转 发方法,包括判断接收到的数据的地址是否是本地链路地址;如 果是,则记录地址和数据的出接口地址;按照地址和出接口地址对 数据进行转发。
优选地,判断接收到的数据的地址是否是本地链路地址具体包 括判断接收到的数据的地址的前IO位是否为1111111010;如果是, 则地址是本地《连路地址;如果不是,则地址不是本;也链路;也址。
优选地,记录地址和数据的出接口地址具体包括将地址的前 缀记录到三层交换才几的LPM表中的地址表项中的第1-16位,将地址的接口 ID记录到LPM表中的地址表项中的第65-128位;将凄史据 的出接口地址记录到LPM表中的地址表项中的第17-32位。
优选地,按照地址和出接口地址对数据进行转发具体包括查 找待转发的数据的地址和出接口地址;从出接口地址对应的出4妄口 将凄t据转发至地址。
优选地,如果接收到的数据的地址不是本地链路地址,则记录 数据的地址,并按照数据的地址转发数据。
根据本发明的另 一个方面,还提供了 一种用于三层交换机的数 据转发装置,包括地址区分模块,用于判断接收到的数据的地址 是否是本地链路地址;地址记录模块,用于在数据的地址是本地链 3各地址时,记录地址和lt据的出才妄口;也址;转发才莫块,用于4安照地 址和出接口地址对数据进行转发。
优选地,地址区分模块包括地址解析单元,用于解析接收到 的数据的地址;比较单元,用于将地址的前10位与1111111010进 4亍比4交;判断单元,用于在比4交单元的结果为地址的前10 4立与 1111111010相同时,判断地址是本i也链路地址;并用于在比4交单元 的结果为地址的前10位与1111111010不相同时,判断:i也址不是本 地链路地址。
优选地,地址记录才莫块包括地址记录单元,用于将地址的前 缀记录到三层交换机的LPM表中的地址表项中的第1-16位,并将 地址的4妄口 ID记录到LPM表中的地址表项中的第65-128位;出接 口地址记录单元,用于将凄t据的出才妄口地址记录到LPM表中的i也 址表项中的第17-32位。优选地,转发^T莫块包括查找单元,用于查找待转发的数据的 i也址和出4妄口 i也址;转发单元,用于/人出々妄口 i也址对应的出4妄口将 数据转发至地址。
优选地,地址记录模块还用于在数据的地址不是本地链3各地址 时,记录地址,并且转发才莫块还用于按照地址对数据进行转发。
借助于本发明的上述至少一个技术方案,通过记录地址为本地 4连5各;也址的凄t才居的i也址和出4妄口 J也址,然后#4居该;也址和出4妻口 ;也 址来转发该数据,所以避免了在转发时无法查找出4妻口地址造成的 只能从一个出接口转发数据导致的丢失数据的技术问题,达到提高 数据转发质量的技术效果。


附图用来提供对本发明的进一步理解,并且构成说明书的一部 分,与本发明的实施例一起用于解释本发明,并不构成对本发明的 限制。在附图中
图1是IETF (Internet Engineering Task Force,因4争网工禾呈专门 小组)定义的本地链^各地址4各式;
图2是根据本发明第一实施例的用于三层交换机的数据转发方 法的流禾呈图3是三层交换机中的示例性网络拓朴结构;
图4是经图2所示的用于三层交换:才几的凄t据转发方法处理后的 本i也《连路i也址的示意图;图5是根据本发明第二实施例的用于三层交换机的数据转发装 置的方沖匡图6是根据本发明第三实施例的用于三层交换机的数据转发方 法的流禾呈图。
具体实施例方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此 处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本 发明。
在以下的描述中,为了解释的目的,描述了多个特定的细节, 以4是供对本发明的透彻理解。然而,4艮显然,在没有这些特定细节 的情况下,也可以实现本发明,此外,在不沖突的情况下,即在不 背离所附权利要求阐明的精神和范围的情况下,下述实施例以及实 施例中的各个细节可以进4亍各种组合。
第一实施例
图2是根据本发明第一实施例的用于三层交换机的数据转发方 法的流程图。如图2所示,才艮据本发明第一实施例的用于三层交换 机的数据转发方法包括
步骤S202,判断接收到的数据的地址是否是本地链路地址;
步骤S204,如果是,则记录地址和数据的出接口地址;
步骤S206,按照地址和出接口地址对数据进行转发。
才艮据本发明第一实施例的用于三层交换^^的tt据转发方法通过 记录地址为本地链3各:l也址的凄t据的地址和出"l妾口 ;也址,然后才艮据该地址和出接口地址来转发该数据,所以避免了在转发时无法查找出 接口地址造成的只能从一个出接口转发数据导致的丢失数据的技术 问题,达到提高数据转发质量的技术效果。
例如,对于如图3所示的网络拓朴结构来说,设备必定会遇到 ARP/ND表项重复的问题,相关才支术中的SW1的库欠件;洛由可以学习 到两条ND表项
fe80::eui—sw2 mac—sw2 interface vlan 10
fe80::eui一sw2 mac—sw2 interface vlan20
在软件路由层面上来说,这两条表项是不同的,它们有着不同 的出4姿口 ,分别是vlan 10和vlan20, ^旦相关#支术中的三层交4灸才几的 ASIC芯片无法区分这两条表项的,因为相关技术中的ASIC芯片只 能记录一条fe80::eui—sw2,当软件路由模块每次学习到其之后,都 会触发硬件表项更新,从而反复改变出端口 gei一l/1和gei—2/1,这 样本来是从两个端口转发的流量都会转发到同 一个端口 ,结果会造 成大量数据报文丟失。
根据本实施例的用于三层交换机的数据转发方法将在判断地址 为本i也链路地址后,将出才妄口 ;也址vlanl 0和vlan20 i己录到LPM表 中的地址表项中的第17-32位,从而避免了上述问题,达到提高凝: 据转发质量的目的。
优选地,判断接收到的数据的地址是否是本地链路地址具体包 括判断接收到的数据的地址的前IO位是否为1111111010;如果是, 则地址是本;也链^各i也址;如果不是,则;也址不是本i也链^各:l也址。
IPv6协-议中*见定,本地链i 各地址的前10位为1111111010。本 地链路地址是在IPv6中应用范围受限制的地址类型,应用范围限制在连接到同一本地链路的节点之间,因此该地址是一种作为路由协
议中学习到的网络前缀的下一跳的很好选择。事实上,当前IPv6路 由协议RIPng、 OSPFv3、 ISIS for IPv6、 BGP4+都是使用本地链路 ;也址4乍为下一iE兆;也址的。
优选地,记录地址和4fet据的出接口地址具体包括将地址的前 缀记录到三层交换机的LPM表中的地址表项中的第1-16位,将地 址的4妄口 ID记录到LPM表中的地址表项中的第65-128位;将凄t据 的出4妄口地址记录到LPM表中的地址表项中的第17-32 ^f立。
LPM表中的地址表项中的第17-32位为保留位,所以将出接口 地址记录到LPM表中的地址表项中的第17-32位不会改变软件i 各由 层面的地址结构,也不会影响到数据流的软件转发流程。
才艮据本发明第 一实施例用于三层交换才几的数据转发方法处理的 本地链路地址的变化如图4所示,软件路由转发层面的本地链^各地 址与经才艮据本发明第 一实施例用于三层交换^几的数据转发方法处理 后的本地链路地址呈一对多映射关系,从而避免了地址冲突。
优选地,按照地址和出接口地址对数据进行转发具体包括查 找待转发的数据的地址和出接口地址;从出接口地址对应的出4妄口 将数据转发至地址。
对于从不同接口上学习到的具有相同的本地链路地址的数据, 可以通过第17-32位上记录的地址进4亍区分,乂人而避免在L3表项中 产生重复的本地链^各地址,以避免地址沖突,最终在转发时,能够 /人不同的出4妄口来转发凄t据。
优选地,4艮据本发明第 一 实施例的用于三层交换机的数据转发 方法还包括步骤S208,如果接收到的数据的地址不是本地链^各地 址,则记录数据的地址,并按照数据的地址转发凄t据。对于不存在本地链路地址的IPv4数据来说,三层交换才几的数据 转发是非常完美的,因为在网络设备中每一个具体的网络前缀都会 对应 一个不同的出4妾口 IP i也址,也就是下一j 兆IP i也址,/人而不会 出现地址冲突的问题。对于IPv6地址中的非本地链路地址来"i兌,其 前缀地址也对应于不同的出接口地址,所以也不存在无法区分出4妻 口地址的问题。因此,对于非本地链路地址,只需要4姿照相关4支术 中的转发方案执行数据转发即可。
根据本发明第一实施例的用于三层交换机的数据转发方法避免 了在转发时无法查找出接口地址造成的只能从一个出接口转发数据 导致的丢失数据的技术问题,达到了提高数据转发质量的技术效果。
第二实施例
图5是根据本发明第二实施例的用于三层交换机的数据转发装 置的方冲匡图。
如图5所示,根据本发明第二实施例的用于三层交换机的数据 转发装置包括地址区分才莫块502,用于判断4妄收到的凝:据的地址 是否是本地链路地址;地址记录才莫块504,用于在凄t据的;也址是本 地链路地址时,记录地址和数据的出接口地址;转发模块506,用 于按照地址和出接口地址对数据进行转发。
根据本发明第二实施例的用于三层交换机的数据转发装置通过 地址区分模块来判断接收到的数据的地址是否是本地链路地址,并 通过地址记录才莫块来记录地址为本地链路地址的凄t据的地址和出4妄 口地址,然后利用转发才莫块来根据该地址和出接口地址来转发该数 据,所以避免了在转发时无法查找出接口地址造成的只能从一个出 接口转发数据导致的丢失数据的技术问题,达到提高数据转发质量 的技术效果。优选地,地址区分模块包括地址解析单元,用于解析接收到 的数据的地址;比较单元,用于将地址的前10位与1111111010进 4亍比4支;判断单元,用于在比專交单元的结果为纟也址的前10位与 1111111010相同时,判断地址是本地链路地址;并用于在比较单元 的结果为地址的前10位与1111111010不相同时,判断地址不是本 地链路地址。
IPv6协i义中^L定,本地《连路地址的前10 4立为1111111010。本 地《连3各地址是在IPv6中应用范围受限制的i也址类型,应用范围限制 在连接到同 一本地链路的节点之间,因此该地址是一种作为路由协 议中学习到的网络前缀的下一跳的很好选择。事实上,当前IPv6路 由协议RIPng、 OSPFv3、 ISIS for IPv6、 BGP4+都是使用本地链3各 地址作为下一沒匕i也址的。
优选i也,i也址i己录才莫块包4舌i也址记录单元,用于^^也址的前 缀记录到三层交换机的LPM表中的地址表项中的第1-16位,并将 ;也址的4妄口 ID i己录到LPM表中的i也iih表项中的第65-128 4立;出4妾 口;也址i己录单元,用于^夺凄t才居的出才妻口i也址i己录到LPM表中的i也 址表项中的第17-32位。
LPM表中的地址表项中的第17-32位为保留位,所以将出4妄口 地址记录到LPM表中的地址表项中的第17-32位不会改变專欠件3各由 层面的地址结构,也不会影响到数据流的软件转发流程。
优选地,转发模块包括查找单元,用于查找待转发的数据的 地址和出接口地址;转发单元,用于/人出接口地址对应的出接口将 凄t据转发至地址。
对于乂人不同4娄口上学习到的具有相同的本地链路地址的凄t才居, 可以通过第17-32位上记录的i也址进4亍区分,乂人而避免在L3表项中产生重复的本地链路地址,以避免地址冲突,最终在转发时,能够 从不同的出4妄口来转发凄史据。
优选地,地址记录才莫块还用于在数据的地址不是本地链路地址 时,记录地址,并且转发—莫块还用于4姿照地址对凄t据进4于转发。
对于不存在本地链路地址的IPv4ft据来i兌,三层交换才几的凄t据 转发是非常完美的,因为在网络设备中每一个具体的网络前缀都会 对应一个不同的出4妾口 IP地址,也就是下一跳IP地址,乂人而不会 出现地址冲突的问题。对于IPv6地址中的非本地链^各地址来说,其 前缀;也址也只于应于不同的出4妄口 i也址,所以也不存在无法区分出4妻 口地址的问题。因此,对于非本地链路地址,只需要按照相关技术 中的转发方案执行数据转发即可。
根据本发明第二实施例的用于三层交换机的数据转发装置避免 了在转发时无法查找出接口地址造成的只能从一个出接口转发数据 导致的丟失数据的技术问题,达到了提高数据转发质量的技术效果。
第三实施例
图6是根据本发明第三实施例的用于三层交换机的数据转发方 法的流程图。如图6所示,4艮据本发明第三实施例的用于三层交换: 机的数据转发方法包括
步骤S602: ARP/ND才莫块动态学习后,触发;更件表项添加或者 删除操作;在本步骤中,无论是添加还是删除,都需要对本地链路 地址进行映射查找,因为在软件路由层上使用的是原地址,而在硬 件表项中使用的是索引了三层接口的本地链路地址,所以如果不进 行映射操作,将造成硬件表项不能查找命中删除的故障;步骤S604:判断接收到的数据地地址是否是本地链路地址;在 本步骤中,对上层才莫块传递过来的地址进行解析以提取其前10位的 前缀进行判断,如果该地址不是本地链路地址,贝'J转步骤S608;如 果该地址是本地链路i也址,则执4亍步骤S606;
步骤S606:根据三层接口的全局索引值生成新的本地链路地 址;在本步骤中,会首先根据上层传来的三层接口号进行三层信息 查找,获取该三层接口的全局索引号,因为该值嵌入硬件地址中是 为了进行地址识别区分,防止地址冲突的,所以必须估文到全局唯一, 避免二次引入重复;在获取三层接口的全局索引号之后,4巴该地址 填充到本地链^各地址的第17-32位的位置;
步骤S608:调用驱动接口写硬件表项;在本步骤中,将上层传 递来的地址以及二层封装信息添加到硬件L3表项,或者对二层表 项信息进行更新,并删除无效》更件表项信息。
冲艮据本发明实施例的用于三层交换机的数据转发方法由于只针 对本地链路地址的石更件表项进行》f改,所以不影响全局IPv6地址的 跨VLAN硬件转发;而因为本地链路地址的使用范围是限定在链路 范围之内的,也就不存在使用该地址进行三层硬件数据转发的情况。 另外,基于本地链路地址的数据通信都是通过二层进行转发的,不 涉及三层硬件表项,它在硬件表项中的作用只是为LPM条目创建 下一if兆所需的二层封装信息,所以通过本方案可以4艮好的解决IPv6 本地链路地址在三层交换机硬件表中的冲突问题。
借助于本发明的上述至少一个^支术方案,用于三层交换才几的凝:
据转发方法和装置避免了在转发时无法查找出接口地址造成的只能 从一个出接口转发数据导致的丢失数据的技术问题,达到了提高数
据转发质量的技术效果。显然,本领域的技术人员应该明白,上述的本发明的各模块或 各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算 装置上,或者分布在多个计算装置所组成的网络上,可选地,它们 可以用计算装置可执行的程序代码来实现,从而,可以将它们存储
在存储装置中由计算装置来执行,或者将它们分别制作成各个集成
电路模块,或者将它们中的多个模块或步骤制作成单个集成电赠4莫 块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述^又为本发明的优选实施例而已,并不用于限制本发明, 对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在 本发明的精神和原则之内,所作的任何修改、等同替换、改进等, 均应包含在本发明的4呆护范围之内。
权利要求
1.一种用于三层交换机的数据转发方法,其特征在于,包括判断接收到的数据的地址是否是本地链路地址;如果是,则记录所述地址和所述数据的出接口地址;按照所述地址和所述出接口地址对所述数据进行转发。
2. 根据权利要求1所述的数据转发方法,其特征在于,判断接收 到的数据的地址是否是本地链路地址具体包括判断接收到的所述数据的地址的前10位是否为 1111111010;如果是,则所述地址是本地链路地址;如果不是,则所述地址不是本地链3各地址。
3. 根据权利要求1所述的数据转发方法,其特征在于,记录所述 地址和所述凄t据的出接口地址具体包括将所述地址的前缀记录到所述三层交换4几的最长前缀匹 酉己LPM表中的地址表项中的第1-16 4立,将所述i也址的4妄口 ID 记录到所述LPM表中的地址表项中的第65-128位;将所述数据的出接口地址记录到所述LPM表中的地址表 项中的第17-32 4立。
4. 根据权利要求1所述的数据转发方法,其特征在于,接照所述 地址和所述出接口地址对所述数据进行转发具体包括查找待转发的数据的地址和出接口地址;从所述出接口地址对应的出接口将所述凄t据转发至所述 地址。
5. 根据权利要求1所述的数据转发方法,其特征在于,如果4妄收 到的数据的地址不是本地链路地址,则记录所述数据的地址, 并4要照所述凄t据的地址转发所述数据。
6. —种用于三层交换机的数据转发装置,其特征在于,包括地址区分模块,用于判断接收到的数据的地址是否是本地 链路地址;地址记录才莫块,用于在所述凄t据的i也址是本地链^各:t也址 时,记录所述地址和所述数据的出接口地址;转发模块,用于按照所述地址和所述出接口地址对所述数 据进行转发。
7. 根据权利要求6所述的数据转发装置,其特征在于,所述地址 区分模块包括地址解析单元,用于解析接收到的所述凄t据的地址;比專交单元,用于^1夸所述;也址的前l(H立与1111111010进4亍比较;判断单元,用于在所述比4交单元的结果为所述i也址的前 l(H立与1111111010相同时,判断所述;l也址是本:l也链if各i也址; 并用于在所述比较单元的结果为所述地址的前10位与 1111111010不相同时,判断所述地址不是本地链路地址。
8. 根据权利要求6所述的数据转发装置,其特征在于,所述地址 记录才莫块包括;也址i己录单元,用于爿夸所述:l也址的前纟炎i己录到所述三层交换机的LPM表中的地址表项中的第1-16位,并将所述地址的 4妄口 ID记录到所述LPM表中的地址表项中的第65-128 4立;出接口地址记录单元,用于将所述凄t据的出4妄口地址记录 到所述LPM表中的地址表项中的第17-32位。
9. 根据权利要求6所述的数据转发装置,其特征在于,所述转发 模块包括查找单元,用于查找4寺转发的凄t据的地址和出4妄口;也址;转发单元,用于乂人所述出接口地址对应的出4妾口将所述凄t 据转发至所述地址。
10. 根据权利要求6所述的数据转发装置,其特征在于,所述地址 记录模块还用于在所述数据的地址不是本地链路地址时,记录 所述地址,并且所述转发纟莫块还用于4安照所述地址对所述凄史据 进行转发。
全文摘要
本发明公开了一种用于三层交换机的数据转发方法和装置,该方法包括判断接收到的数据的地址是否是本地链路地址;如果是,则记录地址和数据的出接口地址;按照地址和出接口地址对数据进行转发。本发明实现了提高数据转发质量的技术效果。
文档编号H04L29/06GK101616159SQ20091016082
公开日2009年12月30日 申请日期2009年7月24日 优先权日2009年7月24日
发明者刘晓东 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1