DATA PACKET FORWARDING METHOD AND NETWORK DEVICE
本发明涉及通信技术领域,尤其涉及一种数据包转发方法和网络设备。 OpenFlow(开放流)就是将原本由交换机/路由器控制的数据包转发过程,转化为由Open Flow交换机(全称:OpenFlow Switch,简称:OFS)和OpenFlow控制服务器(全称:OpenFlow Controller,简称:OFC)来共同完成,从而实现了数据转发和路由控制的分离; OFS维护流表(FlowTable),并且只按照FlowTable进行转发,FlowTable本身的生成、维护以及下发完全由OFC来实现;具体的,OFS可以接收OFC所下发的流规则,并将其存储在FlowTable中,该FlowTable可以为多个流表,每个流表包括多个表项,每个表项即为一个流规则,该表项如图1所示可以包括匹配域(Match Field)、计数器(counters)和指令集(actions),其中,匹配域用来与接收到的数据包进行匹配,计数器记录了该表项与数据包匹配的统计信息,指令集决定如何转发数据包。 目前,在SDN(英文:Software Defined Network,中文:软件定义网络)模式下,为了便于管理,OFS的硬件学习和流表管理功能都是关闭的,当OFS针对接收到的数据包无法找到对应的转发规则时,则把该数据包转发给OFC,由OFC决定该包的转发动作,并下发新的转发规则到OFS,OFS再根据该转发规则转发该数据包; 现有技术的缺点:对于OFS接收到的新数据包(即通过查询FlowTable无法找到其对应的转发规则的数据包),都由OFC进行判决,降低了新数据包的处理效率;并且若OFS与OFC的链接中断,OFS更是无法处理接收到的新数据包,降低了网络性能。 发明内容 本发明提供了一种数据包转发方法和网络设备,可以通过软件层学习到的
转发规则对新数据包进行匹配,提高新数据包的处理效率,进而,提高网络性能。 本发明第一方面提供了一种数据包转发方法,所述数据包转发方法应用于网络设备,所述网络设备的硬件层的自我学习功能关闭且用于维护第一匹配表,所述网络设备的软件层的自我学习功能开启且用于维护第二匹配表,所述方法包括: 接收数据包,并检测所述第一匹配表中是否存在与所述数据包匹配的表项; 若所述第一匹配表中不存在与所述数据包匹配的表项,则获取本地物理地址和所述数据包的目的物理地址,并判断所述本地物理地址和所述数据包的目的物理地址是否相同; 若所述本地物理地址和所述目的物理地址不相同,则从所述第二匹配表中查找物理地址与所述目的物理地址匹配的表项,并根据所述目的物理地址匹配的表项生成二层转发表项; 根据所述二层转发表项转发所述数据包。 在第一方面的第一种可能实现方式中,若所述本地物理地址和所述目的物理地址相同,所述方法还包括: 获取所述数据包的目的IP地址,并从所述第二匹配表中查找与所述目的IP地址匹配的表项,并根据所述目的IP地址匹配的表项生成三层转发表项; 根据所述三层转发表项转发所述数据包。 结合第一方面的第一种可能实现方式,在第二种可能实现方式中, 所述二层转发表项的匹配域包括所述数据包的目的物理地址和虚拟局域网VLAN标识,所述二层转发表项的指令集包括输出端口号; 所述三层转发表项的匹配域包括至少一个以下匹配项:所述数据包的输入端口号、目的物理地址、目的IP地址和源IP地址,所述三层转发表项的指令集包括输出端口号、减TTL指令和修改物理地址指令。 结合第一方面以及第一方面的第一种至第二种中任一种可能实现方式,在第三种可能实现方式中,若所述第一匹配表中不存在与所述数据包匹配的表项,所述方法还包括:
将所述数据包发送至控制器,以使所述控制器生成转发表项生成指令; 接收所述控制器发送的所述转发表项生成指令,并根据所述转发表项生成指令在所述第一匹配表中生成转发表项。 在第一方面的第四种可能实现方式中,所述第一匹配表包括物理地址表,所述根据所述目的物理地址匹配的表项生成二层转发表项之后,所述方法还包括: 将所述二层转发表项保存到所述第一匹配表的物理地址表中。 结合第一方面的第四种可能实现方式,在第五种可能实现方式中,所述将所述二层转发表项保存到所述第一匹配表的物理地址表中之后,所述方法还包括: 获取所述二层转发表项在所述第一匹配表的索引号; 生成报告消息,并将所述报告消息发送至控制器,所述报告消息包括所述索引号和所述数据包,以使所述控制器根据所述数据包生成转发表项生成指令,所述转发表项生成指令中所述索引号; 接收所述控制器发送的所述转发表项生成指令,并根据所述转发表项生成指令中的所述索引号从所述第一匹配表中查找所述二层转发表项; 判断所述二层转发表项和所述转发表项生成指令指示生成的转发表项是否相同; 若所述二层转发表项和所述转发表项生成指令指示生成的转发表项不相同,则根据所述转发表项生成指令修改所述二层转发表项。 结合第一方面的第四种可能实现方式,在第六种可能实现方式中,所述将所述二层转发表项保存到所述第一匹配表的物理地址表中之后,所述方法还包括: 获取所述二层转发表项在所述第一匹配表的索引号; 生成报告消息,并将所述报告消息和所述二层转发表项发送给控制器,所述报告消息包括所述索引号和所述数据包,以使所述控制器根据所述数据包生成转发表项生成指令; 接收所述控制器在判定所述转发表项生成指令指示生成的转发表项与所述二层转发表项不相同时发送的所述转发表项生成指令,所述转发表项生成指
令包括所述索引号; 根据所述转发表项生成指令中的所述索引号从所述第一匹配表中查找所述二层转发表项,并根据所述转发表项生成指令修改所述二层转发表项。 在第一方面的第七中可能实现方式中,所述第二匹配表包括物理地址表,若所述第二匹配表中不存在物理地址与所述目的物理地址相同的表项,所述方法还包括: 记录所述数据包的源物理地址、VLAN标识以及输入端口号到所述第二匹配表的物理地址表中。 结合第一方面的第一种可能实现方式,在第八种可能实现方式中,所述第一匹配表包括路由表和地址解析协议ARP映射表中的至少一种,若所述第二匹配表中不存在与所述目的IP地址匹配的表项,所述方法还包括: 根据所述数据包的首部信息在所述第二匹配表中创建新的表项,并将创建的所述表项标注为“学习中”; 通过路由协议对接收的所述数据包进行路由; 根据路由结果更新创建的所述表项,并且将创建的所述表项的状态标注为“已学习”。 结合第一方面以及第一方面的第一种至第八种中任一种可能实现方式,在第九种可能实现方式中,所述方法包括: 接收所述控制器下发的至少一个表项,并将所述至少一个表项保存到所述第二匹配表中。 本发明第二方面提供了一种网络设备,所述网络设备的硬件层的自我学习功能关闭且用于维护第一匹配表,所述网络设备的软件层的自我学习功能开启且用于维护第二匹配表,所述网络设备包括: 包接收模块,用于接收数据包,并检测所述第一匹配表中是否存在与所述数据包匹配的表项; 业务判断模块,用于若所述第一匹配表中不存在与所述数据包匹配的表项,则获取本地物理地址和所述数据包的目的物理地址,并判断所述本地物理地址和所述数据包的目的物理地址是否相同; 二层业务处理模块,用于若所述本地物理地址和所述目的物理地址不相
同,则从所述第二匹配表中查找物理地址与所述目的物理地址匹配的表项,并根据所述目的物理地址匹配的表项生成二层转发表项; 包转发模块,用于根据所述二层转发表项转发所述数据包。 在第二方面的第一种可能实现方式中,所述网络设备还包括: 三层业务处理模块,用于若所述本地物理地址和所述目的物理地址相同,则获取所述数据包的目的IP地址,并从所述第二匹配表中查找与所述目的IP地址匹配的表项,并根据所述目的IP地址匹配的表项生成三层转发表项; 所述包转发模块还用于: 根据所述三层转发表项转发所述数据包。 结合第二方面的第一种可能实现方式,在第二种可能实现方式中, 所述二层转发表项的匹配域包括所述数据包的目的物理地址和虚拟局域网VLAN标识,所述二层转发表项的指令集包括输出端口号; 所述三层转发表项的匹配域包括至少一个以下匹配项:所述数据包的输入端口号、目的物理地址、目的IP地址和源IP地址,所述三层转发表项的指令集包括输出端口号、减TTL指令和修改物理地址指令。 结合第二方面以及第二方面的第一种至第二种中任一种可能实现方式,在第三种可能的实现方式中,所述包发送模块还用于: 若所述第一匹配表中不存在与所述数据包匹配的表项,则将所述数据包发送至控制器,以使所述控制器生成转发表项生成指令; 所述网络设备还包括: 指令接收模块,用于接收所述控制器发送的所述转发表项生成指令,并根据所述转发表项生成指令在所述第一匹配表中生成转发表项。 在第二方面的第四种可能实现方式中,所述第一匹配表包括物理地址表,所述二层业务处理模块还用于: 将所述二层转发表项保存到所述第一匹配表的物理地址表中。 结合第二方面的第四种可能实现方式,在第五种可能实现方式中,所述网络设备还包括: 索引号获取模块,用于获取所述二层转发表项在所述第一匹配表的索引号;
报告消息生成模块,用于生成报告消息; 报告消息发送模块,用于将所述报告消息发送至控制器,所述报告消息包括所述索引号和所述数据包,以使所述控制器根据所述数据包生成转发表项生成指令,所述转发表项生成指令中包括所述索引号; 指令接收模块,用于接收所述控制器发送的所述配置信息转发表项生成指令,并根据所述转发表项生成指令中的所述索引号从所述第一匹配表中查找所述二层转发表项; 表项判断模块,用于判断所述二层转发表项和所述转发表项生成指令指示生成的转发表项是否相同; 所述二层业务处理模块还用于: 若所述二层转发表项和所述转发表项生成指令指示生成的转发表项不相同,则根据所述转发表项生成指令修改所述二层转发表项。 结合第二方面的第四种可能实现方式,在第六种可能实现方式中,所述网络设备还包括: 索引号获取模块,用于获取所述二层转发表项在所述第一匹配表的索引号; 报告消息生成模块,用于生成报告消息; 报告消息发送模块,用于将所述报告消息和所述二层转发表项发送给控制器,所述报告消息包括所述索引号和所述数据包,以使所述控制器根据所述数据包生成转发表项生成指令; 指令接收模块,用于接收所述控制器在判定所述转发表项生成指令指示生成的转发表项与所述二层转发表项不相同时发送的所述转发表项生成指令,所述转发表项生成指令包括所述索引号; 所述二层业务处理模块还用于: 根据所述转发表项生成指令中的所述索引号从所述第一匹配表中查找所述二层转发表项,并根据所述转发表项生成指令修改所述二层转发表项。 在第二方面的第七中可能实现方式中,所述第二匹配表包括物理地址表,所述网络设备还包括: 软件学习模块,用于若所述第二匹配表中不存在物理地址与所述目的物理
地址相同的表项,则记录所述数据包的源物理地址、VLAN标识以及输入端口号到所述第二匹配表的物理地址表中。 结合第二方面的第一种可能实现方式,在第八种可能实现方式中,所述第一匹配表包括路由表和地址解析协议ARP映射表中的至少一种,所述网络设备还包括: 软件学习模块,用于: 若所述第二匹配表中不存在与所述目的IP地址匹配的表项,则根据所述数据包的首部信息在所述第二匹配表中创建新的表项,并将创建的所述表项标注为“学习中”; 通过路由协议对接收的所述数据包进行路由; 根据路由结果更新创建的所述表项,并且将创建的所述表项的状态标注为“已学习”。 在第二方面的第九种可能的实现方式中,所述网络设备还包括: 软件学习模块,用于接收所述控制器下发的至少一个表项,并将所述至少一个表项保存到所述第二匹配表中。 本发明三方面还提供一种网络设备,所述网络设备的硬件层的自我学习功能关闭且用于维护第一匹配表,所述网络设备的软件层的自我学习功能开启且用于维护第二匹配表,所述网络设备包括网络接口、存储器以及处理器,其中,所述存储器中存储一组程序,且处理器用于调用所述存储器中存储的程序,使得所述网络设备执行如第一方面提供的一种数据包转发方法的部分或全部步骤。 本发明第四方面还提供一种计算机存储介质,所述计算机存储介质存储有程序,所述程序执行时用于使计算机执行包括第一方面提供的一种数据包转发方法中的部分或全部步骤。 实施本发明,具有以下有益效果: 本发明中,当网络设备检测到第一匹配表中不存在与接收到的数据包匹配的表项时,则获取本地物理地址和数据包的目的物理地址进行业务判决,若本地物理地址和该目的物理地址不相同,则说明该数据包为二层业务,则从第二匹配表中查找物理地址与该目的物理地址相同的表项,并生成二层转发表项,
根据该二层转发表项转发该数据包,实现了通过软件层学习到的转发规则对新数据包进行匹配,提高了新数据包的处理效率,进而,提高了网络性能。 为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。 图1示出了一种表项的结构示意图; 图2是本发明第一实施例提供的一种数据包转发方法的流程示意图; 图3是本发明第二实施例提供的一种二层业务处理方法的流程示意图; 图4是本发明第三实施例提供的另一种二层业务处理方法的流程示意图; 图5是本发明第四实施例提供的一种三层业务处理方法的流程示意图; 图6是本发明第五实施例提供的另一种三层业务处理方法的流程示意图; 图7是本发明第六实施例提供的另一种数据包转发方法的流程示意图; 图8是本发明第七实施例提供的一种匹配表的更新方法的流程示意图; 图9是本发明第八实施例提供的另一种匹配表的更新方法的流程示意图; 图10是本发明第九实施例提供的一种网络设备的结构示意图; 图11是本发明第十实施例提供的另一种网络设备的结构示意图。 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。 在此部分,首先对本发明中各个实施例均涉及的一些基本概念进行说明。在TCP/IP参考模型和OSI参考模型中,对在模型的不同层的数据包有不同的称呼,比如帧、数据报文、分组等等,但为了方便起见,本发明统称为数据包。 本发明实施例提供的数据包转发方法应用于网络设备,如二层交换机、三
层交换机或路由器等,所述网络设备的硬件层的自我学习功能关闭且用于维护第一匹配表,即硬件层的学习模块不能对接收到的数据包进行学习,其第一匹配表中的各个表项是控制器下发的;所述网络设备的软件层的自我学习功能开启且用于维护第二匹配表,即软件层的学习模块可以对接收到的数据包进行学习,以更新第二匹配表,其中,软件层的学习模块如何进行自我学习请参照下述图3~图6对应的描述,在此不再赘述。 图2是本发明第一实施例提供的一种数据包转发方法的流程示意图,如图2所示所述方法可以包括: 步骤S201,接收数据包,并检测第一匹配表中是否存在与所述数据包匹配的表项;若第一匹配表中存在与所述数据包匹配的表项,则结束本流程;否则,执行步骤S202; 具体的,第一匹配表可以包括物理地址表、路由表和ARP(英文:Address Resolution Protocol,中文:地址解析协议)映射表中的至少一种,当网络设备接收到数据包时,可以先检测该数据包的业务类型,若该数据包为二层业务,则获取该数据包的目的物理地址,检测物理地址表是否存在物理地址和所述目的物理地址匹配的表项,若不存在,则说明第一匹配表中不存在与所述数据包匹配的表项,则执行步骤S202;若该数据包为三层业务,则获取该数据包的目的IP地址,将该目的IP地址与路由表的各个掩码进行按位“与”运算,若运算结果与对应的网络地址不相同,或者,检测其ARP映射表中是否存在IP地址与目的IP地址相同的表项,若不存在IP地址与目的IP地址相同的表项,则说明第一匹配表中不存在与所述数据包匹配的表项,则执行步骤S202。 步骤S202,获取本地物理地址和所述数据包的目的物理地址,并判断所述本地物理地址和所述数据包的目的物理地址是否相同;若所述本地物理地址和所述数据包的目的物理地址不相同,说明该数据包为二层业务,则执行二层业务的处理流程,即执行步骤S203;若所述本地物理地址和所述数据包的目的物理地址相同,说明该数据包为三层业务,则执行三层业务的处理流程,即执行步骤S205; 本发明实施例中,网络设备在检测到第一匹配表中不存在与所述数据包匹配的表项时,进一步将所述数据包与第二匹配表进行匹配,所述第二匹配表可
以是网络设备软件层维护的,该学习模块具有自我学习功能,第二匹配表中的表项比第一匹配表中的表项多,更有可能查询出与该数据包匹配的表项;相比现有技术,直接将该数据包发送至控制器,由控制器生成该数据包的转发规则而言,提高了新数据包的处理效率。 步骤S203,从第二匹配表中查找物理地址与所述目的物理地址匹配的表项,并根据所述目的物理地址匹配的表项生成二层转发表项; 所述第二匹配表包括物理地址表,对于二层业务,网络设备获取数据包的目的物理地址,查询第二匹配表的物理地址表中是否存在物理地址与该目的物理地址匹配的表项,若存在,则根据所述目的物理地址匹配的表项生成二层转发表项,所述二层转发表项的匹配域包括所述数据包的目的物理地址和虚拟局域网VLAN标识,所述二层转发表项的指令集包括输出端口号,所述输出端口号根据在第二匹配表中匹配的表项的输出端口号确定; 若所述第二匹配表中不存在物理地址与所述目的物理地址匹配的表项,网络设备还可以记录所述数据包的源物理地址、VLAN标识以及输入端口号到所述第二匹配表的物理地址表中;网络设备尽量对接收到的数据包进行学习,使第二匹配表中的物理地址表尽量多,可以提高数据包路由的成功率;假设,数据包A的源物理地址为11-22-33-44-55-66,目的物理地址为22-22-33-44-55-77,VLAN标识为11,通过网络设备的1号端口接入,网络设备检测到第二匹配表的物理地址表中不存在物理地址为22-22-33-44-55-77的表项,则在第二匹配表的物理地址表中创建新的表项,并将源物理地址、VLAN标识和输入端口号填入新建的所述表项中,当接收到目的物理地址为11-22-33-44-55-66的数据包时,则可以确定该数据包的转发规则,若没有记录数据包A的信息,当接收到目的物理地址为11-22-33-44-55-66的数据包时,也不能查询到该数据包的转发规则; 进一步的,网络设备还可以先检测所述第二匹配表中是否存在物理地址与该源物理地址匹配的表项,若不存在,再记录所述数据包的源物理地址、VLAN标识以及输入端口号到所述第二匹配表的物理地址表中,可以节约内存空间。 其中,网络设备还可以针对第二匹配表周期性地向控制器发送更新请求以更新本端存储的第二匹配表;控制器也可以周期性主动地向网络设备下发第二
匹配表,以更新网络设备本端存储的第二匹配表; 需要说明的是,若第二匹配表也不存在与该数据包匹配的表项,网络设备可以根据现有技术的处理方法,如丢去该数据包、通过默认输出端口转发等等处理所述数据包。 步骤S204,根据所述二层转发表项转发所述数据包; 将生成的所述二层转发表项下发到硬件,进而,可以根据该二层转发表项转发该数据包,需要说明的是,网络设备如何根据二层转发表项转发数据包是本领域技术人员可理解的,可以参考现有技术中根据在第一匹配表中匹配的表项转发数据包,在此不再赘述。 步骤S205,获取所述数据包的目的IP地址,并从所述第二匹配表中查找与所述目的IP地址匹配的表项,并根据所述目的IP地址匹配的表项生成三层转发表项; 所述第二匹配表包括路由表和ARP映射表中的至少一种,对于三层业务,网络设备获取数据包的目的IP地址,将该目的IP地址与路由表的各个掩码进行按位“与”运算,若运算结果与对应的网络地址相同,则根据其表项生成三层转发表项;或者,网络设备检测其ARP映射表中是否存在IP地址与目的IP地址相同的表项,若存在,则根据所述目的IP地址匹配的表项生成三层转发表项; 其中,所述三层转发表项的匹配域包括至少一个以下匹配项:所述数据包的输入端口号、目的物理地址、目的IP地址和源IP地址,所述三层转发表项的指令集包括输出端口号、减TTL指令和修改物理地址指令,所述输出端口号根据在第二匹配表中匹配的表项的输出端口号确定,所述减TTL指令用于减TTL,所述修改物理地址指令用于修改源物理地址和目的物理地址;可选的,所述三层转发表项还可以包括所述数据包的以太网类型; 若所述第二匹配表中不存在与所述目的IP地址匹配的表项,网络设备还可以根据所述数据包的首部信息在所述第二匹配表中创建新的表项,并将创建的所述表项标注为“学习中”,通过路由协议对接收的所述数据包进行路由,根据路由结果更新创建的所述表项,并且将创建的所述表项的状态标注为“已学习”。具体实现中,网络设备可以向其相邻的网络设备询问是否存在该数据
包的转发规则,若存在相邻的网络设备存在该数据包的转发规则,则根据其相邻的网络设备更新创建的所述表项,如根据该相邻的网络设备在本端网络设备的几号输出端口处确定所述输出端口号,再如根据该相邻的网络设备的物理地址确定目的物理地址等等,当更新了创建的所述表项后,再将该表项标识为“已学习”。 可理解的是,网络设备软件层的学习模块可以采用现有技术的学习方法对接收的数据包进行学习,本发明实施例提供的学习方法仅仅是一种可选的实施方式,不能以此限定本发明。 步骤S206,根据所述三层转发表项转发所述数据包; 将生成的所述三层转发表项下发到硬件,进而,可以根据该三层转发表项转发该数据包,需要说明的是,网络设备如何根据三层转发表项转发数据包是本领域技术人员可理解的,可以参考现有技术中根据在第一匹配表中匹配的表项转发数据包,在此不再赘述; 在图2所示的实施例中,当网络设备检测到第一匹配表中不存在与接收到的数据包匹配的表项时,则获取本地物理地址和数据包的目的物理地址进行业务判决,若本地物理地址和该目的物理地址不相同,则说明该数据包为二层业务,则从第二匹配表中查找物理地址与该目的物理地址匹配的表项,并生成二层转发表项,根据该二层转发表项转发该数据包;若本地物理地址和该目的物理地址相同,则说明该数据包为三层业务,则从第二匹配表中查找IP地址与数据包的目的IP地址匹配的表项,并生成三层转发表项,根据该三层转发表项转发该数据包,实现了通过软件层学习到的转发规则对新数据包进行匹配,提高了新数据包的处理效率,进而,提高了网络性能。 图3是本发明第二实施例提供的一种二层业务处理方法的流程示意图,本实施例提供的所述方法是基于第一匹配表中不存在与接收到的数据包匹配的表项,且判定本地物理地址和所述数据包的目的物理地址不匹配的情况下执行的,如图3所示本实施例的所述方法可以包括: 步骤S301,从第二匹配表中查找物理地址与数据包的目的物理地址匹配的表项,并根据所述目的物理地址匹配的表项生成二层转发表项。
步骤S302,根据所述二层转发表项转发所述数据包。 步骤S303,将所述二层转发表项保存到第一匹配表中。 可理解的是,步骤S302-S303之间没有严格的先后执行顺序,也可以是同步执行。 步骤S304,获取所述二层转发表项在所述第一匹配表的索引号; 该索引号为该二层转发表项在该第一匹配表中的位置,该索引号的具体表示形式本发明不做限定。 步骤S305,生成报告消息,并将所述报告消息发送至控制器,所述报告消息包括所述索引号和所述数据包,以使所述控制器根据所述数据包生成转发表项生成指令,所述转发表项生成指令中包括所述索引号; 所述报告消息可以为packed in消息,所述报告消息除了包括所述二层转发表项在所述第一匹配表中的索引号以及所述数据包以外,还可以包括reason字段,该reason为“事后上报”; 所述网络设备将生成的所述报告消息发送至控制器,以使所述控制器根据所述数据包生成转发表项生成指令。 步骤S306,接收所述控制器发送的所述转发表项生成指令,并根据所述转发表项生成指令中的所述索引号从所述第一匹配表中查找所述二层转发表项。 步骤S307,判断所述二层转发表项和所述转发表项生成指令指示生成的转发表项是否相同;若所述二层转发表项和所述转发表项生成指令指示生成的转发表项不相同,则执行步骤S308;否则,则结束本流程。 步骤S308,根据所述转发表项生成指令修改所述第一匹配表中的所述二层转发表项。 在包交换网络中,通信数据首先在源主机节点被切分和封装成多个数据包,则网络设备可能连续为所述多个数据包路由,在图3所示的实施例中,在第一匹配表中不存在与接收到的数据包匹配的表项,且判定本地物理地址和所述数据包的目的物理地址不相同的情况下,网络设备进一步可以将生成的二层转发表项保存到第一匹配表中,当接收到后续的数据包时,可以在第一匹配表中直接查询到匹配的表项,相比上一实施例,提高了通信数据整体的处理效率;
进一步的,网络设备还可以将本事件上报控制器,若控制器针对该数据包指示生成的转发表项与该二层转发表项不相同,网络设备还可以根据转发表项生成指令修改该二层转发表项,提高了路由的准确率。 图4是本发明第三实施例提供的另一种二层业务处理方法的流程示意图,本实施例提供的所述方法是基于第一匹配表中不存在与接收到的数据包匹配的表项,且判定本地物理地址和所述数据包的目的物理地址不相同的情况下执行的,如图4所示本实施例的所述方法可以包括: 步骤S401,从第二匹配表中查找物理地址与数据包的目的物理地址匹配的表项,并根据所述目的物理地址匹配的表项生成二层转发表项。 步骤S402,根据所述二层转发表项转发所述数据包。 步骤S403,将所述二层转发表项保存到第一匹配表的物理地址表中。 可理解的是,步骤S402-S403之间没有严格的先后执行顺序,也可以是同步执行。 步骤S404,获取所述二层转发表项在所述第一匹配表的索引号。 步骤S405,生成报告消息,并将所述报告消息和所述二层转发表项发送给控制器,所述报告消息包括所述索引号和所述数据包,以使所述控制器根据所述数据包生成转发表项生成指令; 所述报告消息可以为packed in消息,所述报告消息除了包括所述二层转发表项在所述第一匹配表中的索引号以及所述数据包以外,还可以包括reason字段,该reason为“事后上报”。 步骤S406,接收所述控制器在判定所述转发表项生成指令指示生成的转发表项与所述二层转发表项不相同时发送的所述转发表项生成指令,所述转发表项生成指令包括所述索引号。 步骤S407,根据所述转发表项生成指令中的所述索引号从所述第一匹配表中查找所述二层转发表项,并根据所述转发表项生成指令修改所述第一匹配表中的所述二层转发表项。 在图4所示的实施例中,在第一匹配表中不存在与接收到的数据包匹配的表项,且判定本地物理地址和所述数据包的目的物理地址不相同的情况下,网
络设备进一步可以将生成的二层转发表项保存到第一匹配表中,当接收到后续的数据包时,可以在第一匹配表中直接查询到匹配的表项,相比第一实施例,提高了通信数据整体的处理效率; 进一步的,网络设备还可以将生成的二层转发表项发送至控制器,由控制器判断根据接收的数据包指示生成的转发表项和二层转发表项是否相同,若相同,则结束本流程;若不相同,所述网络设备可以接收到该控制器下发的转发表项生成指令,并直接根据该转发表项生成指令修改二层转发表项,提高了路由的准确率。 图5是本发明第四实施例提供的一种三层业务处理方法的流程示意图,本实施例提供的所述方法是基于第一匹配表中不存在与接收到的数据包匹配的表项,且判定本地物理地址和所述数据包的目的物理地址相同的情况下执行的,如图5所示本实施例的所述方法可以包括: 步骤S501,获取数据包的目的IP地址,并从第二匹配表中查找与所述目的IP地址匹配的表项,并根据所述目的IP地址匹配的表项生成三层转发表项。 步骤S502,根据所述三层转发表项转发所述数据包。 步骤S503,将所述三层转发表项保存到第一匹配表中。 可理解的是,步骤S502-S503之间没有严格的先后执行顺序,也可以是同步执行。 步骤S504,获取所述三层转发表项在所述第一匹配表的索引号; 该索引号为该三层转发表项在该第一匹配表中的位置,该索引号的具体表示形式本发明不做限定。 步骤S505,生成报告消息,并将所述报告消息发送至控制器,所述报告消息包括所述索引号和所述数据包,以使所述控制器根据所述数据包生成转发表项生成指令,所述转发表项生成指令包括所述索引号; 所述报告消息可以为packed in消息,所述报告消息除了包括所述三层转发表项在所述第一匹配表中的索引号以及所述数据包以外,还可以包括reason字段,该reason为“事后上报”; 所述网络设备将生成的所述报告消息发送至控制器,以使所述控制器根据
所述数据包生成转发表项生成指令。 步骤S506,接收所述控制器发送的所述转发表项生成指令,并根据所述转发表项生成指令中的所述索引号从所述第一匹配表中查找所述三层转发表项。 步骤S507,判断所述三层转发表项和所述转发表项生成指令指示生成的的转发表项是否相同;若所述三层转发表项和所述转发表项生成指令指示生成的转发表项不相同,则执行步骤S308;否则,则结束本流程。 步骤S508,根据所述转发表项生成指令修改所述第一匹配表中的所述三层转发表项。 在图5所示的实施例中,在第一匹配表中不存在与接收到的数据包匹配的表项,且判定本地物理地址和所述数据包的目的物理地址相同的情况下,网络设备进一步可以将生成的三层转发表项保存到第一匹配表中,当接收到后续的数据包时,可以在第一匹配表中直接查询到匹配的表项,相比上一实施例,提高了通信数据整体的处理效率; 进一步的,网络设备还可以将本事件上报控制器,若控制器针对该数据包指示的转发表项与该三层转发表项不相同,网络设备还可以根据转发表项生成指令修改该三层转发表项,提高了路由的准确率。 图6是本发明第五实施例提供的另一种三层业务处理方法的流程示意图,本实施例提供的所述方法是基于第一匹配表中不存在与接收到的数据包匹配的表项,且判定本地物理地址和所述数据包的目的物理地址相同的情况下执行的,如图6所示本实施例的所述方法可以包括: 步骤S601,获取数据包的目的IP地址,并从第二匹配表中查找与所述目的IP地址匹配的表项,并根据所述目的IP地址匹配的表项生成三层转发表项。 步骤S602,根据所述三层转发表项转发所述数据包。 步骤S603,将所述三层转发表项保存到第一匹配表中。 可理解的是,步骤S602-S603之间没有严格的先后执行顺序,也可以是同步执行。 步骤S604,获取所述三层转发表项在所述第一匹配表的索引号。
步骤S605,生成报告消息,并将所述报告消息和所述三层转发表项发送给控制器,所述报告消息包括所述索引号和所述数据包,以使所述控制器根据所述数据包生成转发表项生成指令; 所述报告消息可以为packed in消息,所述报告消息除了包括所述三层转发表项在所述第一匹配表中的索引号以及所述数据包以外,还可以包括reason字段,该reason为“事后上报”。 步骤S606,接收所述控制器在判定所述转发表项生成指令指示生成的转发表项与所述三层转发表项不相同时发送的所述转发表项生成指令,所述转发表项生成指令包括所述索引号。 步骤S607,根据所述转发表项生成指令中的所述索引号从所述第一匹配表中查找所述三层转发表项,并根据所述转发表项生成指令修改所述第一匹配表中的所述三层转发表项。 在图6所示的实施例中,在第一匹配表中不存在与接收到的数据包匹配的表项,且判定本地物理地址和所述数据包的目的物理地址相同的情况下,网络设备进一步可以将生成的三层转发表项保存到第一匹配表中,当接收到后续的数据包时,可以在第一匹配表中直接查询到匹配的表项,相比第一实施例,提高了通信数据整体的处理效率; 进一步的,网络设备还可以将生成的三层转发表项发送至控制器,由控制器判断根据接收的数据包指示生成的转发表项和三层转发表项是否相同,若相同,则结束本流程;若不相同,所述网络设备可以接收到该控制器下发的转发表项生成指令,并直接根据该配置信息中的表项更新三层转发表项,提高了路由的准确率。 图7是本发明第六实施例提供的另一种数据包转发方法的流程示意图,本实施例的所述方法与第一实施例区别在于,如图7所示,本实施例的所述方法除了包括与第一实施例步骤S201~S206对应的步骤S701~706之外,还包括以下步骤: 步骤S707,若所述第一匹配表中不存在与所述数据包匹配的表项,则将所述数据包发送至控制器,以使所述控制器生成转发表项生成指令;
步骤S708,接收所述控制器发送的所述转发表项生成指令,并根据所述转发表项生成指令在所述第一匹配表中生成转发表项。 在图7所示的实施例中,当第一匹配表中不存在与数据包匹配的表项时,则将所述数据包发送给控制器,以使控制器下发对应的转发表项生成指令,并将根据所述转发表项生成指令在所述第一匹配表中生成转发表项,当接收到后续的数据包时,可以在第一匹配表中直接查询到匹配的表项,相比上一实施例,提高了通信数据整体的处理效率。 可理解的是,第三实施例与第五实施例或第六实施例在同一个实施例中可以同时存在,第四实施例与第五实施例或第六实施例在同一个实施例中也可以同时存在,也可以在一个实施例中只采用上述中的任一实施例与现有技术相结合的情况,本发明不限定。 图8是本发明第七实施例提供的匹配表的更新方法的流程示意图,本实施例的所述方法是从控制器角度描述的,如图8所示,本实施例的所述方法可以包括: 步骤S801,接收网络设备发送的报告消息,所述报告消息包括所述索引号和所述数据包; 所述索引号为网络设备生产的转发表项在第二匹配表中的存储位置,生成的所述转发表项可以是二层转发表项或三层转发表项。 步骤S802,根据所述数据包生成转发表项生成指令; 可理解的是,控制器如何根据接收的数据包生成转发表项生成指令是本领域技术人员可理解的,在此不再赘述。 步骤S803,生成包括所述索引号的转发表项生成指令。 步骤S804,将所述转发表项生成指令发送至所述网络设备,以使所述网络设备根据所述转发表项生成指令中的所述索引号从所述第一匹配表中查找对应的转发表项,并在判定所述转发表项生成指令指示生成的转发表项与查找到的对应的所述转发表项不相同时,根据所述转发表项生成指令修改查找到的对应的所述转发表项。 进一步的,控制器还可以接收网络设备在第一匹配表中查询不到与数据包
匹配的表项时发送的该数据包,控制器根据该数据包生成转发表项生成指令,再将该转发表项生成指令发送给网络设备,以使网络设备根据所述转发表项生成指令生成转发表项,并将生成的所述转发表项存在第一匹配表中; 再进一步的,控制器可以周期性的向网络设备发送第二匹配表,以使网络设备定期更新网络设备本端存储的第二匹配表; 其中,控制器也可以在接收网络设备针对第二匹配表发送的更新请求时,才向该网络设备发送第二匹配表。 图9是本发明第八实施例提供的另一种匹配表的更新方法的流程示意图,本实施例的所述方法是从控制器角度描述的,如图9所示,本实施例的所述方法可以包括: 步骤S901,接收网络设备发送的报告消息和转发表项,所述报告消息包括所述索引号和所述数据包; 所述索引号为网络设备生产的所述转发表项在第二匹配表中的存储位置,生成的所述转发表项可以是二层转发表项或三层转发表; 其中,该转发表项可以在所述报告消息中,也可以独立于所述报告消息。 步骤S902,根据所述数据包生成转发表项生成指令; 可理解的是,控制器如何根据接收的数据包生成转发表项生成指令是本领域技术人员可理解的,在此不再赘述。 步骤S903,判断生成的所述转发表项生成指令指示生成的转发表项和接收的所述转发表项是否相同;若相同,则结束本流程;否则执行步骤S904。 步骤S904,将所述转发表项生成指令发送至所述网络设备,以使所述网络设备根据所述转发表项生成指令中的所述索引号从所述第一匹配表中查找对应的转发表项,并根据所述转发表项生成指令修改查找到的所述转发表项。 进一步的,控制器还可以接收网络设备在第一匹配表中查询不到与数据包匹配的表项时发送的该数据包,控制器根据该数据包生成转发表项生成指令,再将该转发表项生成指令发送给网络设备,以使网络设备根据所述转发表项生成指令生成装法表项,并将生成的所述转发表项存在第一匹配表中; 再进一步的,控制器可以周期性的向网络设备发送第二匹配表,以使网络
设备定期更新网络设备本端存储的第二匹配表; 其中,控制器也可以在接收网络设备针对第二匹配表发送的更新请求时,才向该网络设备发送第二匹配表。 图10是本发明第九实施例提供的一种网络设备的结构示意图,所述网络设备的硬件层的自我学习功能关闭且用于维护第一匹配表,所述网络设备的软件层的自我学习功能开启且用于维护第二匹配表,如图10所示,所述网络设备10至少可以包括:包接收模块1001、业务判断模块1002、二层业务处理模块1003以及包转发模块1004,其中: 包接收模块1001,用于接收数据包,并检测所述第一匹配表中是否存在与所述数据包匹配的表项; 业务判断模块1002,用于若所述第一匹配表中不存在与所述数据包匹配的表项,则获取本地物理地址和所述数据包的目的物理地址,并判断所述本地物理地址和所述数据包的目的物理地址是否相同; 二层业务处理模块1003,用于若所述本地物理地址和所述目的物理地址不相同,则从所述第二匹配表中查找物理地址与所述目的物理地址匹配同的表项,并根据所述目的物理地址匹配的表项生成二层转发表项; 所述网络设备10如图10所示进一步可以包括软件学习模块1005,用于若所述第二匹配表中不存在物理地址与所述目的物理地址匹配的表项,则记录所述数据包的源物理地址、VLAN标识以及输入端口号到所述第二匹配表的物理地址表中。 包转发模块1004,用于根据所述二层转发表项转发所述数据包。 进一步的,所述网络设备10还可以包括: 三层业务处理模块1006,用于若所述本地物理地址和所述目的物理地址相同,则获取所述数据包的目的IP地址,并从所述第二匹配表中查找与所述目的IP地址匹配的表项,并根据所述目的IP地址匹配的表项生成三层转发表项; 所述包转发模块1004还用于: 根据所述三层转发表项转发所述数据包。
所述软件学习模块1005具体可以用于: 若所述第二匹配表中不存在与所述目的IP地址匹配的表项,则根据所述数据包的首部信息在所述第二匹配表中创建新的表项,并将创建的所述表项标注为“学习中”; 通过路由协议对接收的所述数据包进行路由; 根据路由结果更新创建的所述表项,并且将创建的所述表项的状态标注为“已学习”。 再进一步的,所述软件学习模块1005具体还可以用于: 接收所述控制器下发的至少一个表项,并将所述至少一个表项保存到所述第二匹配表中。 其中,所述二层转发表项的匹配域包括所述数据包的目的物理地址和虚拟局域网VLAN标识,所述二层转发表项的指令集包括输出端口号; 所述三层转发表项的匹配域包括至少一个以下匹配项:所述数据包的输入端口号、目的物理地址、目的IP地址和源IP地址,所述三层转发表项的指令集包括输出端口号、减TTL指令和修改物理地址指令。 可选的,所述包发送模块1004还用于: 若所述第一匹配表中不存在与所述数据包匹配的表项,则将所述数据包发送至控制器,以使所述控制器生成转发表项生成指令; 所述网络设备10还包括: 指令接收模块1007,用于接收所述控制器发送的所述转发表项生成指令,并根据所述转发表项生成指令在所述第一匹配表中生成转发表项。 其中,所述二层业务处理模块1003还可以用于: 将所述二层转发表项保存到所述第一匹配表的物理地址表中。 可选的,所述网络设备10还可以包括: 索引号获取1008,用于获取所述二层转发表项在所述第一匹配表的索引号; 报告消息生成模块1009,用于生成报告消息; 报告消息发送模块1010,用于将所述报告消息发送至控制器,所述报告消息包括所述索引号和所述数据包,以使所述控制器根据所述数据包生成转发
表项生成指令,所述转发表项生成指令中包括所述索引号; 指令接收模块1007,还用于接收所述控制器发送的所述转发表项生成指令,并根据所述转发表项生成指令中的所述索引号从所述第一匹配表中查找所述二层转发表项; 表项判断模块1011,用于判断所述二层转发表项和所述转发表项生成指令指示生成的转发表项是否相同; 所述二层业务处理模块1003还用于: 若所述二层转发表项和所述转发表项生成指令指示生成的转发表项不相同,则根据所述转发表项生成指令修改所述二层转发表项。 进一步的,所述报告消息发送模块1010还用于,将所述报告消息和所述二层转发表项发送给控制器,所述报告消息包括所述索引号和所述数据包,以使所述控制器根据所述数据包生成转发表项生成指令; 指令接收模块1007还用于,接收所述控制器在判定所述转发表项生成指令指示生成的转发表项与所述二层转发表项不相同时发送的所述转发表项生成指令,所述转发表项生成指令包括所述索引号; 所述二层业务处理模块1003还用于: 根据所述转发表项生成指令中的所述索引号从所述第一匹配表中查找所述二层转发表项,并根据所述转发表项生成指令修改所述第一匹配表中的所述二层转发表项。 可理解的是,本实施例的网络设备10的各功能模块的功能可根据上述方法实施例中的方法具体实现,可以具体对应参考图2或图8方法实施例的相关描述,此处不再赘述。 图11是本发明第十实施例提供的另一种网络设备的结构示意图,如图11所示,所述网络设备的硬件层的自我学习功能关闭且用于维护第一匹配表,所述网络设备的学习模块的自我学习功能开启且用于维护第二匹配表,该网络设备11可以包括:至少一个处理器111,例如CPU,至少一个网络接口112,至少一个通信总线113,存储器114。其中,通信总线113用于实现这些组件之间的连接通信。存储器114可以是高速RAM存储器,也可以是非易失的存储器
(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器114还可以是至少一个位于远离前述处理器111的存储装置。存储器114中存储一组程序代码,且处理器111用于调用存储器114中存储的程序代码,用于执行以下操作: 通过所述网络接口接收数据包,并检测所述第一匹配表中是否存在与所述数据包匹配的表项; 若所述第一匹配表中不存在与所述数据包匹配的表项,则获取本地物理地址和所述数据包的目的物理地址,并判断所述本地物理地址和所述数据包的目的物理地址是否相同; 若所述本地物理地址和所述目的物理地址不相同,则从第二匹配表中查找物理地址与所述目的物理地址匹配的表项,并根据所述目的物理地址匹配的表项生成二层转发表项; 根据所述二层转发表项转发所述数据包。 若所述本地物理地址和所述目的物理地址相同,所述处理器111还可以执行以下操作: 获取所述数据包的目的IP地址,并从所述第二匹配表中查找与所述目的IP地址匹配的表项,并根据所述目的IP地址匹配的表项生成三层转发表项; 根据所述三层转发表项转发所述数据包。 其中,所述二层转发表项的匹配域包括所述数据包的目的物理地址和虚拟局域网VLAN标识,所述二层转发表项的指令集包括输出端口号; 所述三层转发表项的匹配域包括至少一个以下匹配项:所述数据包的输入端口号、目的物理地址、目的IP地址和源IP地址,所述三层转发表项的指令集包括输出端口号、减TTL指令和修改物理地址指令。 进一步的,若所述第一匹配表中不存在与所述数据包匹配的表项,所述处理器111还可以执行以下操作: 将所述数据包发送至控制器,以使所述控制器生成转发表项生成指令; 接收所述控制器发送的所述转发表项生成指令,并根据所述转发表项生成指令在所述第一匹配表中生成转发表项。 进一步的,处理器111调用存储器114中存储的程序代码根据所述目的物理地址匹配的表项生成二层转发表项之后,还可以执行以下操作:
将所述二层转发表项保存到所述第一匹配表的物理地址表中。 在一种可选的实施方式中,处理器111调用存储器114中存储的程序代码将所述二层转发表项保存到所述第一匹配表的物理地址表中之后,还可以执行以下操作: 获取所述二层转发表项在所述第一匹配表的索引号; 生成报告消息,并将所述报告消息发送至控制器,所述报告消息包括所述索引号和所述数据包,以使所述控制器根据所述数据包生成转发表项生成指令,所述转发表项生成指令中包括所述索引号; 接收所述控制器发送的所述转发表项生成指令,并根据所述转发表项生成指令中的所述索引号从所述第一匹配表中查找所述二层转发表项; 判断所述二层转发表项和所述转发表项生成指令指示生成的转发表项是否相同; 若所述二层转发表项和所述转发表项生成指令指示生成的转发表项不相同,则根据所述转发表项生成指令修改所述第一匹配表中的所述二层转发表项。 在另一种可选的实施方式中,处理器111调用存储器114中存储的程序代码将所述二层转发表项保存到所述第一匹配表的物理地址表中之后,还可以执行以下操作: 获取所述二层转发表项在所述第一匹配表的索引号; 生成报告消息,并将所述报告消息和所述二层转发表项发送给控制器,所述报告消息包括所述索引号和所述数据包,以使所述控制器根据所述数据包生成转发表项生成指令; 接收所述控制器在判定所述转发表项生成指令指示生成的转发表项与所述二层转发表项不相同时发送的所述转发表项生成指令,所述转发表项生成指令包括所述索引号; 根据所述转发表项生成指令中的所述索引号从所述第一匹配表中查找所述二层转发表项,并根据所述转发表项生成指令修改所述第一匹配表中的所述二层转发表项。 可选的,所述第二匹配表包括物理地址表,若所述第二匹配表中不存在物
理地址与所述目的物理地址相同的表项,处理器111还可以执行以下操作: 记录所述数据包的源物理地址、VLAN标识以及输入端口号到所述第二匹配表的物理地址表中。 可选的,所述第一匹配表包括路由表和地址解析协议ARP映射表中的至少一种,若所述第二匹配表中不存在与所述目的IP地址匹配的表项,处理器111还可以执行以下操作: 根据所述数据包的首部信息在所述第二匹配表中创建新的表项,并将创建的所述表项标注为“学习中”; 通过路由协议对接收的所述数据包进行路由; 根据路由结果更新创建的所述表项,并且将创建的所述表项的状态标注为“已学习”。 进一步的,处理器111还可以调用存储器中的存储代码执行以下操作: 接收所述控制器下发的至少一个表项,并将所述至少一个表项保存到所述第二匹配表中。 可理解的是,本实施例的网络设备11的各功能模块的功能可根据上述方法实施例中的方法具体实现,可以具体对应参考图2或图8方法实施例的相关描述,此处不再赘述。 本发明实施例还提出了一种计算机存储介质,所述计算机存储介质存储有程序,所述程序执行时包括本发明实施例结合图2~图9所描述的方法中的部分或全部的步骤。 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。 以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Disclosed is a data packet forwarding method. The method comprises: receiving a data packet, and detecting whether an entry matching the data packet exists in a first matching table; if not, acquiring a local physical address and a destination physical address of the data packet, and determining whether the local physical address is the same as the destination physical address; if not, searching, in a second matching table, for an entry a physical address of which matches the destination physical address, and generating a layer 2 forwarding entry according to the entry matching the destination physical address; and forwarding the data packet according to the layer 2 forwarding entry. Also disclosed is a network device. By using the present invention, new data packets can be matched by means of a forwarding rule learned by means of a software layer, and the efficiency of processing the new data packets can be improved, thereby improving network performance. 一种数据包转发方法,其特征在于,所述数据包转发方法应用于网络设备,所述网络设备的硬件层的自我学习功能关闭且用于维护第一匹配表,所述网络设备的软件层的自我学习功能开启且用于维护第二匹配表,所述方法包括: 接收数据包,并检测所述第一匹配表中是否存在与所述数据包匹配的表项; 若所述第一匹配表中不存在与所述数据包匹配的表项,则获取本地物理地址和所述数据包的目的物理地址,并判断所述本地物理地址和所述数据包的目的物理地址是否相同; 若所述本地物理地址和所述目的物理地址不相同,则从所述第二匹配表中查找物理地址与所述目的物理地址匹配的表项,并根据所述目的物理地址匹配的表项生成二层转发表项; 根据所述二层转发表项转发所述数据包。 如权利要求1所述的方法,其特征在于,若所述本地物理地址和所述目的物理地址相同,所述方法还包括: 获取所述数据包的目的IP地址,并从所述第二匹配表中查找与所述目的IP地址匹配的表项,并根据所述目的IP地址匹配的表项生成三层转发表项; 根据所述三层转发表项转发所述数据包。 如权利要求2所述的方法,其特征在于, 所述二层转发表项的匹配域包括所述数据包的目的物理地址和虚拟局域网VLAN标识,所述二层转发表项的指令集包括输出端口号; 所述三层转发表项的匹配域包括至少一个以下匹配项:所述数据包的输入端口号、目的物理地址、目的IP地址和源IP地址,所述三层转发表项的指令集包括输出端口号、减TTL指令和修改物理地址指令。
如权利要求1-3任一项所述的方法,其特征在于,若所述第一匹配表中不存在与所述数据包匹配的表项,所述方法还包括: 将所述数据包发送至控制器,以使所述控制器生成转发表项生成指令; 接收所述控制器发送的所述转发表项生成指令,并根据所述转发表项生成指令在所述第一匹配表中生成转发表项。 如权利要求1所述的方法,其特征在于,所述第一匹配表包括物理地址表,所述根据所述目的物理地址匹配的表项生成二层转发表项之后,所述方法还包括: 将所述二层转发表项保存到所述第一匹配表的物理地址表中。 如权利要求5所述的方法,其特征在于,所述将所述二层转发表项保存到所述第一匹配表的物理地址表中之后,所述方法还包括: 获取所述二层转发表项在所述第一匹配表的索引号; 生成报告消息,并将所述报告消息发送至控制器,所述报告消息包括所述索引号和所述数据包,以使所述控制器根据所述数据包生成转发表项生成指令,所述转发表项生成指令中包括所述索引号; 接收所述控制器发送的所述转发表项生成指令,并根据所述转发表项生成指令中的所述索引号从所述第一匹配表中查找所述二层转发表项; 判断所述二层转发表项和所述转发表项生成指令指示生成的转发表项是否相同; 若所述二层转发表项和所述转发表项生成指令指示生成的转发表项不相同,则根据所述转发表项生成指令修改所述第一匹配表中的所述二层转发表项。 如权利要求5所述的方法,其特征在于,所述将所述二层转发表项保存到所述第一匹配表的物理地址表中之后,所述方法还包括: 获取所述二层转发表项在所述第一匹配表的索引号; 生成报告消息,并将所述报告消息和所述二层转发表项发送给控制器,所
述报告消息包括所述索引号和所述数据包,以使所述控制器根据所述数据包生成转发表项生成指令; 接收所述控制器在判定所述转发表项生成指令指示生成的转发表项与所述二层转发表项不相同时发送的所述转发表项生成指令,所述转发表项生成指令包括所述索引号; 根据所述转发表项生成指令中的所述索引号从所述第一匹配表中查找所述二层转发表项,并根据所述转发表项生成指令修改所述第一匹配表中的所述二层转发表项。 如权利要求1所述的方法,其特征在于,所述第二匹配表包括物理地址表,若所述第二匹配表中不存在物理地址与所述目的物理地址相同的表项,所述方法还包括: 记录所述数据包的源物理地址、VLAN标识以及输入端口号到所述第二匹配表的物理地址表中。 如权利要求2所述的方法,其特征在于,所述第一匹配表包括路由表和地址解析协议ARP映射表中的至少一种,若所述第二匹配表中不存在与所述目的IP地址匹配的表项,所述方法还包括: 根据所述数据包的首部信息在所述第二匹配表中创建新的表项,并将创建的所述表项标注为“学习中”; 通过路由协议对接收的所述数据包进行路由; 根据路由结果更新创建的所述表项,并且将创建的所述表项的状态标注为“已学习”。 如权利要求1-9任一项所述的方法,其特征在于,所述方法包括: 接收所述控制器下发的至少一个表项,并将所述至少一个表项保存到所述第二匹配表中。 一种网络设备,其特征在于,所述网络设备的硬件层的自我学习功能
关闭且用于维护第一匹配表,所述网络设备的软件层的自我学习功能开启且用于维护第二匹配表,所述网络设备包括: 包接收模块,用于接收数据包,并检测所述第一匹配表中是否存在与所述数据包匹配的表项; 业务判断模块,用于若所述第一匹配表中不存在与所述数据包匹配的表项,则获取本地物理地址和所述数据包的目的物理地址,并判断所述本地物理地址和所述数据包的目的物理地址是否相同; 二层业务处理模块,用于若所述本地物理地址和所述目的物理地址不相同,则从所述第二匹配表中查找物理地址与所述目的物理地址匹配的表项,并根据所述目的物理地址匹配的表项生成二层转发表项; 包转发模块,用于根据所述二层转发表项转发所述数据包。 如权利要求11所述的网络设备,其特征在于,所述网络设备还包括: 三层业务处理模块,用于若所述本地物理地址和所述目的物理地址相同,则获取所述数据包的目的IP地址,并从所述第二匹配表中查找与所述目的IP地址匹配的表项,并根据所述目的IP地址匹配的表项生成三层转发表项; 所述包转发模块还用于: 根据所述三层转发表项转发所述数据包。 如权利要求12所述的网络设备,其特征在于, 所述二层转发表项的匹配域包括所述数据包的目的物理地址和虚拟局域网VLAN标识,所述二层转发表项的指令集包括输出端口号; 所述三层转发表项的匹配域包括至少一个以下匹配项:所述数据包的输入端口号、目的物理地址、目的IP地址和源IP地址,所述三层转发表项的指令集包括输出端口号、减TTL指令和修改物理地址指令。 如权利要求11-13任一项所述的网络设备,其特征在于, 所述包发送模块还用于: 若所述第一匹配表中不存在与所述数据包匹配的表项,则将所述数据包发
送至控制器,以使所述控制器生成转发表项生成指令; 所述网络设备还包括: 指令接收模块,用于接收所述控制器发送的所述转发表项生成指令,并根据所述转发表项生成指令在所述第一匹配表中生成转发表项。 如权利要求11所述的网络设备,其特征在于,所述第一匹配表包括物理地址表,所述二层业务处理模块还用于: 将所述二层转发表项保存到所述第一匹配表的物理地址表中。 如权利要求15所述的网络设备,其特征在于,所述网络设备还包括: 索引号获取模块,用于获取所述二层转发表项在所述第一匹配表的索引号; 报告消息生成模块,用于生成报告消息; 报告消息发送模块,用于将所述报告消息发送至控制器,所述报告消息包括所述索引号和所述数据包,以使所述控制器根据所述数据包生成转发表项生成指令,所述转发表项生成指令中包括所述索引号; 指令接收模块,用于接收所述控制器发送的所述转发表项生成指令,并根据所述转发表项生成指令中的所述索引号从所述第一匹配表中查找所述二层转发表项; 表项判断模块,用于判断所述二层转发表项和所述转发表项生成指令指示生成的转发表项是否相同; 所述二层业务处理模块还用于: 若所述二层转发表项和所述转发表项生成指令指示生成的转发表项不相同,则根据所述转发表项生成指令修改所述二层转发表项。 如权利要求15所述的网络设备,其特征在于,所述网络设备还包括: 索引号获取模块,用于获取所述二层转发表项在所述第一匹配表的索引号; 报告消息生成模块,用于生成报告消息;
报告消息发送模块,用于将所述报告消息和所述二层转发表项发送给控制器,所述报告消息包括所述索引号和所述数据包,以使所述控制器根据所述数据包生成转发表项生成指令; 指令接收模块,用于接收所述控制器在判定所述转发表项生成指令指示生成的转发表项与所述二层转发表项不相同时发送的所述转发表项生成指令,所述转发表项生成指令包括所述索引号; 所述二层业务处理模块还用于: 根据所述转发表项生成指令中的所述索引号从所述第一匹配表中查找所述二层转发表项,并根据所述转发表项生成指令修改所述第一匹配表中的所述二层转发表项。 如权利要求11所述的网络设备,其特征在于,所述第二匹配表包括物理地址表,所述网络设备还包括: 软件学习模块,用于若所述第二匹配表中不存在物理地址与所述目的物理地址匹配的表项,则记录所述数据包的源物理地址、VLAN标识以及输入端口号到所述第二匹配表的物理地址表中。 如权利要求12所述的网络设备,其特征在于,所述第一匹配表包括路由表和地址解析协议ARP映射表中的至少一种,所述网络设备还包括: 软件学习模块,用于: 若所述第二匹配表中不存在与所述目的IP地址匹配的表项,则根据所述数据包的首部信息在所述第二匹配表中创建新的表项,并将创建的所述表项标注为“学习中”; 通过路由协议对接收的所述数据包进行路由; 根据路由结果更新创建的所述表项,并且将创建的所述表项的状态标注为“已学习”。 如权利要求11所述的网络设备,其特征在于,所述网络设备还包括: 软件学习模块,用于接收所述控制器下发的至少一个表项,并将所述至少
一个表项保存到所述第二匹配表中。 一种网络设备,其特征在于,所述网络设备的硬件层的自我学习功能关闭且用于维护第一匹配表,所述网络设备的软件层的自我学习功能开启且用于维护第二匹配表,所述网络设备包括网络接口、存储器以及处理器,其中,所述存储器中存储一组程序,且所述处理器用于调用所述存储器中存储的程序,使得所述网络设备执行如权利要求1至10任一所述的方法。 一种计算机存储介质,其特征在于,所述计算机存储介质存储有程序,所述程序执行时用于使计算机执行包括权利要求1-10中任一项所述的方法。
技术领域
背景技术
附图说明
具体实施方式










