按需获取路由的方法及网关与流程

文档序号:25991748发布日期:2021-07-23 21:03阅读:57来源:国知局
本申请是于2016年1月18日提交国家知识产权局、申请号为cn201610031655.4、发明名称为“按需获取路由的方法及网关”的中国专利申请的分案申请,申请号为cn201610031655.4的中国专利申请的全部内容通过引用结合在本申请中。本发明涉及通信领域,尤其涉及一种按需获取路由的方法及网关。
背景技术
::在分布式网关的网络架构下,局域网(英文:localareanetwork,简称:lan)中存在多个网关。主机改变其网关时,主机的媒体接入控制(英文:mediaaccesscontrol,简称:mac)地址和网际协议(英文:internetprotocol,简称:ip)地址不改变。分布式网关架构的报文转发方式是,无论收发报文的主机是否处于同一个广播域(英文:broadcastdomain,简称:bd),发送方主机均将报文发给发送方主机的网关,由网关根据报文的目的ip地址,将该报文发送给接收方主机。接收方主机可能通过局域网中的另一网关访问网络,因此发送方主机的网关的转发表中,需要存储局域网中所有通过其他网关访问网络的主机的主机路由。当局域网中存在大量的主机时,大量主机路由占用的转发表的存储资源多。技术实现要素:本申请提供了一种按需获取路由的方法及装置,用于在分布式网关的网络架构下,按照实际的报文转发需求获取路由,节约转发表的存储资源。第一方面,提供了一种按需获取路由的方法,所述方法包括:第一网关接收第一报文,所述第一报文包括第一网际协议ip地址;所述第一网关在转发表中查找所述第一ip地址的下一跳失败;所述第一网关向至少一个网关发送第二报文,所述第二报文携带所述第一ip地址,所述第二报文用于指示接收所述第二报文的网关确定所述第一ip地址标识的主机是否通过所述接收所述第二报文的网关访问网络;所述第一网关接收来自第二网关的第三报文,所述第二网关是所述至少一个网关中的一个网关,所述第三报文用于指示所述第一ip地址标识的主机通过所述第二网关访问网络;所述第一网关将所述第二网关的地址作为所述第一ip地址的下一跳的地址写入所述转发表。所述第一网关不需要预先存储第一报文的ip地址的下一跳,而是可以根据被访问主机按需获取路由。因此,在网络中存在大量主机的情况下,所述第一网关不需要存储与所述第一网关没有通信需求的主机的ip地址的下一跳。有利于节约转发表的存储资源。可选的,所述第二报文还携带第一报文的第一虚拟可扩展局域网vxlan网络标识vni,所述第一网关向至少一个网关发送所述第二报文之前,所述方法还包括:所述第一网关确定所述第一报文的所述第一vni。举例来说,所述第一网关确定所述第一vni具体包括:所述第一网关确定接收所述第一报文的端口;所述第一网关根据所述端口到所述第一vni的映射,确定所述第一vni。所述第一网关在转发表中查找所述第一报文中的ip地址的下一跳之前,还包括:所述第一网关根据所述第一vni到所述转发表的映射,确定所述转发表。可选的,所述方法还包括,所述第一网关接收来自第三网关的第四报文,所述第四报文携带第二ip地址;所述第一网关确定能够获取到所述第二ip地址标识的主机的mac地址;所述第一网关向所述第三网关发送第五报文,所述第五报文用于指示所述第二ip地址标识的主机通过所述第一网关访问网络。可选的,所述第四报文中还携带第二vni,所述第一网关确定能够获取到所述第二ip地址标识的主机的mac地址,包括:所述第一网关在所述第二vni标识的vxlan段中尝试获取所述第二ip地址标识的主机的mac地址。可选的,所述第一网关向至少一个网关发送第二报文之前,所述方法还包括:所述第一网关根据多个vni到多个网关的映射表确定对应于所述vni的所述至少一个网关。可选的,所述第一报文为数据报文,所述第一ip地址为所述第一报文的目的ip地址,所述方法还包括:所述第一网关为所述第一报文做vxlan封装以得到第六报文;所述第一网关发送所述第六报文;其中,所述第六报文的vxlan首部中的vni字段的值为所述vni;所述第六报文的外层ip首部的目的ip地址为所述第二网关的ip地址。第二方面,一种网络设备,其特征在于,包括:处理器,存储器和网络接口,所述存储器用于存储转发表,所述处理器用于:通过所述网络接口接收第一报文,所述第一报文包括第一网际协议ip地址;在所述存储器存储的所述转发表中查找所述第一ip地址的下一跳失败;通过所述网络接口向至少一个网关发送第二报文,所述第二报文携带所述第一ip地址,所述第二报文用于指示接收所述第二报文的网关确定所述第一ip地址标识的主机是否通过所述接收所述第二报文的网关访问网络;通过所述网络接口接收来自第一网关的第三报文,所述第一网关是所述至少一个网关中的一个网关,所述第三报文用于指示所述第一ip地址标识的主机通过所述第一网关访问网络;将所述第一网关的地址作为所述第一ip地址的下一跳的地址,写入所述存储器存储的所述转发表。该方面的技术效果与第一方面相同。可选的,所述第二报文还携带第一报文的第一虚拟可扩展局域网vxlan网络标识vni,所述处理器还用于,在向至少一个网关发送所述第二报文之前,确定所述第一报文的所述第一vni。可选的,所述处理器还用于:通过所述网络接口接收来自第二网关的第四报文,所述第四报文携带第二ip地址;确定能够获取到所述第二ip地址标识的主机的mac地址;通过所述网络接口向所述第二网关发送第五报文,所述第五报文用于指示所述第二ip地址标识的主机通过所述第一网络访问网络。可选的,所述第四报文中还携带第二vni,所述确定能够获取到所述第二ip地址标识的主机的mac地址,具体包括:在所述第二vni标识的vxlan段中尝试获取所述第二ip地址标识的主机的mac地址。第三方面,提供了一种按需获取路由的第一网关,包括第一接收单元,存储单元,查找单元,发送单元,第二接收单元以及处理单元,其中,所述第一接收单元,用于接收第一报文,所述第一报文包括第一网际协议ip地址;所述存储单元,用于存储转发表;所述查找单元,用于在所述存储单元存储的所述转发表中查找所述第一ip地址的下一跳;所述发送单元,用于在所述存储单元存储的所述转发表中查找所述第一ip地址的下一跳失败时,在所述查找单元查找所述第一ip地址的下一跳失败后,用于向至少一个网关发送第二报文,所述第二报文携带所述第一ip地址,所述第二报文用于指示接收所述第二报文的网关确定所述第一ip地址标识的主机是否通过所述接收所述第二报文的网关访问网络;所述第二接收单元,用于接收来自第二网关的第三报文,所述第二网关是所述至少一个网关中的一个网关,所述第三报文用于指示所述第一ip地址标识的主机通过所述第二网关访问网络;所述处理单元,用于获取所述第二接收单元接收的所述第三报文,并根据所述第三报文将所述第二网关的地址作为所述第一ip地址的下一跳的地址写入所述存储单元存储的所述转发表。该方面的技术效果与第一方面的技术效果相同。可选的,所述第二报文还携带第一报文的第一虚拟可扩展局域网vxlan网络标识vni,所述查找单元还用于,在所述发送单元向至少一个网关发送所述第二报文之前:确定所述第一报文的所述第一vni。可选的,所述第二接收单元还用于,接收来自第三网关的第四报文,所述第四报文携带第二ip地址;所述查找单元还用于,获取所述第二接收单元接收的所述第四报文,并确定能够获取到所述第四报文携带的所述第二ip地址标识的主机的mac地址;所述发送单元还用于,向所述第三网关发送第五报文,所述第五报文用于指示所述第二ip地址标识的主机通过所述第一网络访问网络。可选的,所述第四报文中还携带第二vni,所述查找单元用于确定能够获取到所述第二ip地址标识的主机的mac地址,具体包括:在所述第二vni标识的vxlan段中尝试获取所述第二ip地址标识的主机的mac地址。第四方面,提供了一种计算机存储介质,用于储存为上述第一网关所用的计算机软件指令,其包含用于执行上述方面所设计的程序。可选的,基于所述第一方面,第二方面,第三方面以及第四方面的任一方面,所述第一报文为地址解析协议arp报文,所述第一ip地址为所述第一报文的目标ip地址,或者,所述第一报文为邻居发现协议ndp报文,所述ip地址为所述第一报文的目标地址。第一网关接收到arp报文或ndp报文时,意味着发送所述第一报文的主机可能即将与所述第一ip地址标识的主机通信。第一网关在接收到所述第一报文时就向其他网关发送用于获取所述第一ip地址的下一跳,有利于在不存储没有通信需求的主机的ip地址的前提下,较早的获取存在通信需求的主机的ip地址的下一跳。有利于提高后续报文转发的效率。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本申请实施例提供的一种应用场景示意图。图2为本申请实施例提供的一种按需获取路由的方法流程图。图3为本申请实施例提供的一种按需获取路由的方法流程图。图4为本申请实施例提供的一种第一网关的结构示意图。图5为本申请实施例提供的另一种第一网关的结构示意图。具体实施方式本申请实施例描述的应用场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。图1为本申请实施例提供的一种应用场景示意图。数据中心网络(英文:datacenternetwork,简称:dcn)中包括第一网关101,第二网关102以及第三网关103。主机106可以通过第一网关101,第二网关102或者第三网关103中的任一网关访问所述dcn。同理,主机107可以通过第一网关101,第二网关102或者第三网关103中的任一网关访问所述dcn。举例来说,所述主机可以是个人计算机(英文:personalcomputer),移动电话(英文:cellphone),智能手机(英文:smartphone),平板电脑(英文:tabletcomputer),可穿戴设备(英文:wearabledevice),个人数码助理(英文:personaldigitalassistant,简称:pda),移动互联网设备(英文:mobileinternetdevice,简称:mid)和电子书阅读器(英文:e-bookreader)等,也可以是虚拟机(英文:virtualmachine,简称:vm)。当所述主机是虚拟机时,所述虚拟机可以在服务器上运行。在某个主机,例如主机106,通过不同的网关访问所述dcn时,所述主机106的mac地址和ip地址均不改变。例如,主机106是虚拟机,所述虚拟机从与第一网关101连接的服务器迁移到与第二网关102连接的服务器时,所述虚拟机的mac地址和ip地址均不改变。因此,处于同一个广播域(英文:broadcastdomain,简称:bd)的主机可能通过不同的网关访问网络。为了减少广播报文的数量,在上述分布式网关的网络架构下报文的转发方式为:主机106向主机107发送报文的过程中,无论主机106和主机107是否在同一个广播域,主机106均将其网关的mac地址作为向主机107发送的报文的mac地址。例如,主机106通过第一网关101访问所述dcn时,将报文发送给第一网关101。第一网关101接收到报文后,剥掉该报文的以太帧首部(英文:ethernetframeheader),获取该报文中的目的ip地址,并根据该报文中的目的ip地址,转发该报文。在采用上述报文转发方式时,要使主机106能够向主机107发送报文,则与主机106连接的第一网关101,需要在转发表中预先存储主机107的主机路由(英文:hostroute),该主机路由中包括主机107的ip地址,以及主机107的ip地址的下一跳(英文:nexthop)。即,第一网关101需要预先存储所述主机107当前访问网络使用的网关。例如,在图1中,第一网关101需要知道所述主机107当前通过第二网关102访问网络,还是通过第三网关103访问网络。因此,在主机107通过第二网关102访问网络时,所述第二网关102就需要将所述主机107的主机路由公告(英文:advertise)给所述dcn中其他网关,例如公告给第一网关101和第三网关103,所述第一网关101以及所述第三网关103存储主机107的ip地址的下一跳为所述第二网关102。下面以所述第一网关101,第二网关102以及第三网关103之间通过虚拟可扩展局域网(英文:virtualextensiblelocalareanetwork,简称:vxlan)隧道转发数据报文,通过边际网关协议(英文:bordergatewayprotocol,简称:bgp)公告主机路由为例,对于上述报文转发和主机路由公告过程进行说明。第一网关101,第二网关102以及第三网关103之间通过边际网关协议(英文:bordergatewayprotocol,简称:bgp)预先建立连接,即所述第一网关101,所述第二网关102以及第三网关103之间,两两互为bgp邻居(英文:bgppeer)。主机107与第二网关102建立连接时,所述第二网关102将所述主机107的主机路由通过bgp报文公告给所述dcn中的其他网关,例如第一网关101以及第三网关103。所述第一网关101在路由表中保存主机107的主机路由,并将所述第二网关102作为主机107的下一跳。第一网关101,第二网关102以及第三网关103,均为vxlan隧道终点(英文:vxlantunnelendpoint,简称:vtep)。如果主机106和主机107属于不同的广播域,主机106要向主机107发送数据报文,则主机106将主机107的ip地址作为该数据报文的目的ip地址,将第一网关的mac地址作为该数据报文的目的mac地址,将该数据报文发送给第一网关101。如果主机106和主机107属于相同的广播域,主机106想将主机107的mac地址作为该数据报文的目的mac地址。因此,主机106在发送数据报文之前,先在所述广播域中广播用于请求主机107的mac地址的第二报文。例如,所述第二报文在网际协议第四版(英文:internetprotocolversion4,简称:ipv4)中可以是地址解析协议(英文:addressresolutionprotocol,简称:arp)请求报文。例如,所述第二报文在网际协议第六版(英文:internetprotocolversion6,简称:ipv6)中可以是互联网控制消息协议(英文:internetcontrolmessageprotocol,简称:icmp)中的邻居发现协议(英文:neighbordiscoveryprotocol,简称:ndp)报文。所述第一网关101接收第二报文之后,所述第一网关101通过代理(英文:proxy)机制,向所述主机106发送第二报文的应答报文,指示主机106,主机107的ip地址对应的mac地址为第一网关101的mac地址。主机106将第一网关101的mac地址作为所述第一报文的mac地址,将所述第一报文发送给所述第一网关101。因此,无论主机106和主机107是否属于相同的广播域,主机106向主机107发送数据报文时,都将第一网关101的mac地址作为该数据报文的mac地址。所述第一网关101收到该数据报文之后,根据接收该数据报文的端口,确定该数据报文的vxlan网络标识(英文:vxlannetworkidentifier,简称:vni)。其中,vni也可以称作vxlan段标识(英文:vxlansegmentid)。第一网关101中存储了多个vni中每个vni到转发表的对应关系。第一网关101根据所述第一报文的vni确定转发表。所述转发表中预先存储了第二网关102通过bgp协议公告的主机107的主机路由,该主机路由中包括主机107的地址,以及主机107的地址对应的下一跳为所述第二网关102。第一网关101通过vxlan隧道将所述数据报文发送给第二网关102。即,第一网关101对该数据报文做vxlan封装。具体包括,第一网关101在该数据报文外层依次封装vxlan首部(英文:vxlanheader),外层用户数据报(英文:userdatagramprotocol,简称:udp)首部(英文:outerudpheader)以及外层ip首部(英文:outeripheader)。其中,vxlan首部中的vni为该数据报文的vni,所述外层ip首部中的目的ip地址为第二网关102的ip地址。其他字段的封装可参见请求注解(英文:requestforcomments,简称:rfc)7348协议。所述第二网关102收到经过vxlan封装后的该数据报文之后,根据该报文的vxlan首部中的vni确定转发表,所述转发表存储了所述vxlan段的主机的ip地址与mac地址的对应关系。所述第二网关102在所述转发表中查找到主机107的mac地址,将该数据报文发送给所述主机107。上述方案中,第一网关101需要在转发表中预先存储所有通过其他网关访问网络的主机路由。在所述dcn中存在大量主机时,主机路由的数量也十分庞大。其中一些主机之间可能没有通信需求,因此一些主机路由可能是所述第一网关101不需要的。存储所述第一网关101不需要的主机路由,占用转发表的存储资源。本申请实施例提供一种按需获取路由的方法。用于在分布式网关的网络架构下,按照实际的报文转发需求获取路由,节约转发表的存储资源。图2示出了本申请实施例提供的一种按需获取路由的方法。举例来说,所述方法可以应用于图1所示的分布式网关中。图2所示的方法中的第一网关,可以采用图1中所示的第一网关101。图2所示的方法中的第二网关,可以采用图1中所示的第二网关102。所述方法包括以下步骤。s201,第一网关接收第一报文,所述第一报文包括第一ip地址。第一ip地址标识的主机不是第一报文的发送方,例如第一报文来自第一主机,第一ip地址标识的主机为第二主机。举例来说,所述第一报文是由图1所示的主机106向第一网关101发送的报文。在一种可能的示例中,所述第一报文是数据报文。所述第一ip地址是第一报文中的目的ip地址(英文:destinationipaddress)。例如,第一报文是主机106要向主机107发送的数据报文。所述目的ip地址是主机107的ip地址。在另一种可能的示例中,所述第一报文为arp报文,所述第一ip地址为所述第一报文的目标协议地址(英文:targetprotocoladdress,简称:tpa)。例如,主机106要根据ipv4向主机107发送数据报文。主机106和主机107属于相同的广播域。主机106在向主机107发送数据报文之前,先在广播arp报文,以获取主机107的mac地址。在又一种可能的示例中,所述第一报文为ndp报文,所述第一ip地址为所述第一报文的目标地址(英文:targetaddress)。例如,主机106要根据ipv6向主机107发送数据报文。主机106和主机107属于相同的广播域。主机106在向主机107发送数据报文之前,先在发送ndp报文(例如邻居恳求(英文:neighborsolicitation)),以获取主机107的mac地址。s202,所述第一网关在转发表中查找所述第一ip地址的下一跳失败。本申请中,转发表中存储多个ip地址,以及所述多个ip地址中各个ip地址的下一跳。举例来说,当某个主机通过其他网关(例如第二网关)访问网络时,转发表中存储的ip地址的下一跳,可以包括该网关(例如第二网关)的ip地址,即转发表中存储所述主机的ip地址到该网关(例如第二网关)的ip地址的映射。举例来说,当某个主机通过存储该转发表的网关(例如第一网关)访问网络,转发表中存储的ip地址的下一跳,可以包括该主机的mac地址,即转发表中存储所述主机的ip地址到所述主机的mac地址的映射。进一步地,转发表中还可以存储ip地址的下一跳的出接口标识。举例来说,转发表可以是路由信息库(英文:routinginformationbase,简称:rib)或者转发信息库(英文:forwardinginformationbase,简称:fib)。可选的,在s201和s202之间,所述第一网关还执行以下步骤:所述第一网关确定所述第一报文的第一vni。例如,所述第一网关确定接收所述第一报文的端口;所述第一网关根据所述端口与虚拟可扩展局域网vxlan网络标识vni的映射,确定所述第一报文的所述vni;以及所述第一网关根据所述vni,确定所述vni的所述转发表。具体来说,不同vni所标识的vxlan段的主机之间不能互相通信。在第一网关中,存储多个转发表,以及每个vni到转发表的映射。例如,每个转发表是一个虚拟路由转发(英文:virtualroutingandforwarding,简称:vrf)实例(英文:instance)。所述第一网关在转发表中查找所述第一ip地址的下一跳失败是指,第一网关没有在转发表中查找到所述第一报文中的ip地址的下一跳。s203,所述第一网关向至少一个网关发送第二报文,所述第二报文携带所述第一ip地址,所述第二报文用于指示接收所述第二报文的网关确定所述第一ip地址标识的主机是否通过所述接收所述第二报文的网关访问网络。在一种可能的示例中,所述第一网关可以在多个vni中到多个网关的映射表中查找具有所述第一报文的所述vni的网关。该映射表中存储了所述第一报文的vni到至少一个网关的映射。所述至少一个网关,是局域网中允许所述vni的主机连接的网关。所述第一网关根据所述查找的结果,确定具有所述第一报文的所述vni的所述至少一个网关。在另一种可能的示例中,所述第一网关向局域网中所有网关发送所述第二报文。举例来说,所述第一网关和所述至少一个网关之间,可以是图1所述的bgp邻居。所述第二报文可以是bgp报文。进一步地,所述第二报文可以是bgp中定义的更新(英文:update)报文。所述第一ip地址可以携带在update报文中的路径属性(英文:pathattribute)字段中。具体为,在构成pathattribute字段的类型-长度-取值(英文:type-length-value,简称:tlv)中定义一个type,用于标识所述第二报文。所述第一ip地址携带在value字段中。可选的,所述第二报文中还携带所述第一报文的vni。例如,所述第一报文的vni和所述第一ip地址均携带在上述update报文中的pathattribute字段中。可选的,所述第二报文中还携带所述第一ip地址的广播域的标识。例如,第一网关中存储了多个ip子网网段与广播域的对应关系。所述第一网关根据所述第一ip地址对应的广播域,获取所述广播域的标识。例如,所述广播域的标识,所述第一报文的vni和所述第一ip地址均携带在上述update报文中的pathattribute字段中。s301,第二网关接收来自第一网关的所述第二报文。第二网关确定能够获取到所述第二报文中携带的所述第一ip地址标识的主机的mac地址。可选的,如果所述第二报文还携带所述第一报文的vni,所述第二网关确定能够获取到所述第一ip地址标识的主机的mac地址,具体包括所述第二网关在所述vni对应的vxlan段中确定能够获取到所述第一ip地址标识的主机的mac地址。举例来说,第二网关获取所述第二报文中携带的所述第一ip地址标识的主机的mac地址,可以包括第二网关从存储的多个ip地址与mac地址的映射表中,查找所述第一ip地址对应的mac地址。例如,第一ip地址标识的主机是主机107,所述映射表中存储第一ip地址对应的mac地址是主机107的mac地址。主机107在与第二网关建立连接时,将主机107的mac地址发送给第二网关,第二网关将主机107的mac地址与ip地址的对应关系保存到所述多个ip地址与mac地址的映射表中。如果所述第二报文还携带所述第一报文的vni,所述第二网关中还存储所述vni与所述多个ip地址与mac地址的映射表中的对应关系。所述多个ip地址与mac地址的映射表,存储的是所述vni对应的vxlan段中的ip地址与mac地址的映射。举例来说,第二网关确定能够获取所述第二报文中携带的所述第一ip地址标识的主机的mac地址,还可以包括第二网关向通过第二网关访问网络的主机广播请求报文,所述请求报文用于请求主机107的mac地址。例如,所述请求报文,如图1中所述,在ipv4协议中可以是arp报文,或者在ipv6中可以是ndp报文。第二网关根据主机107对请求报文的回应,获取第一ip地址对应的mac地址。如果所述第二报文还携带所述第一报文的vni,则所述第二网关在广播所述请求报文时,根据所述vni确定广播所述请求报文的端口,向所述vni对应的vxlan段的主机广播所述请求报文。如果所述第二报文还携带s202中所述广播域标识,则所述第二网关在广播所述请求报文时,根据所述vni以及所述广播域标识,共同确定广播所述请求报文的端口,向所述vni对应的vxlan段中属于所述广播域的主机广播所述请求报文。s302,所述第二网关向所述第一网关发送第三报文,所述第三报文用于指示所述第二ip地址标识的主机通过所述第一网关访问网络。举例来说,所述第三报文可以是bgp报文。具体来说,所述第三报文可以采用与所述第二报文相同的报文格式,例如均采用bgp中的update报文。所述第三报文中携带的pathattribute字段中的value字段与所述第二报文中的value字段相同,type字段定义一个标识,用于标识所述第三报文的类型。s204,所述第一网关接收来自所述第二网关的所述第三报文,所述第三报文用于指示所述第一ip地址标识的主机通过所述第二网关访问网络。所述第一网关将所述第二网关的地址作为所述第一ip地址的下一跳地址写入所述转发表。具体来说,第三报文中携带了发送第三报文的网关的源地址,所述第一网关根据所述第三报文中的源地址,确定所述第二网关。举例来说,所述第一报文为数据报文,所述方法还包括s205,所述第一网关为所述第一报文做vxlan封装以得到封装后的第一报文;所述第一网关发送所述封装后的第一报文。其中,所述封装后的第一报文的vxlan首部中的vni字段的值为所述第一报文的所述vni;所述封装后的第一报文的外层ip首部的目的ip地址为所述第二网关的ip地址。举例来说,所述第一报文为主机106向第一网关请求所述第一ip地址标识的主机的mac地址的报文,例如arp报文或ndp报文。所述方法还包括,所述第一网关将所述第一网关的mac地址发送给所述主机106。可选地,第一网关也可以应其他网关的要求确定某个ip地址(例如第二ip地址)标识的主机是否通过所述第一网关访问网络时,确定该ip地址标识的主机是否通过所述第一网关访问网络。所述第一网关确定该ip地址标识的主机是否通过所述第一网关访问网络的步骤和上述s301-s302中第二网关确定第一ip地址标识的主机是否通过所述第一网关访问网络的步骤类似。例如,如果第一网关接收来自第三网关的指示第一网关确定第二ip地址标识的主机是否通过所述第一网关访问网络的第四报文时,如图3所示,所述方法进一步包括s401,s402以及s403。s401,所述第一网关接收来自第三网关的第四报文,所述第四报文携带第二ip地址。s402,所述第一网关获取所述第二ip地址对应的mac地址。s403,所述第一网关向所述第三网关发送第五报文,所述第五报文用于指示所述第三网关将所述第一网关的地址作为所述第二ip地址的下一跳的地址。其中,s401和s402中,第一网关根据第四报文携带的第二ip地址,获取所述第二ip地址对应的mac地址的具体实现方式,可以采用图2所示的s301中第二网关根据所述第二报文携带的第一ip地址,获取所述第一ip地址对应的mac地址的具体实现方式。s403中,所述第一网关向所述第三网关发送第五报文的具体实现方式,可以采用图2所示的s302中第二网关向所述第一网关发送第三报文的具体实现方式。图4是本申请实施例提供的一种第一网关的结构示意图。如图4所示,第一网关500包括处理器501,存储器502以及网络接口503。存储器502用于存储转发表。举例来说,存储器502包括但不限于内容寻址存储器(英文:content-addressablememory,简称:cam),例如三态内容寻址存储器(英文:ternarycam,简称:tcam),随机存取存储器(英文:random-accessmemory,简称:ram)。网络接口503可以是有线接口,例如光纤分布式数据接口(英文:fiberdistributeddatainterface,简称:fddi)、以太网(英文:ethernet)接口。网络接口503也可以是无线接口,例如无线局域网接口。处理器501包括但不限于中央处理器(英文:centralprocessingunit,简称:cpu),网络处理器(英文:networkprocessor,简称:np),专用集成电路(英文:application-specificintegratedcircuit,简称:asic)或者可编程逻辑器件(英文:programmablelogicdevice,缩写:pld)中的一个或多个。上述pld可以是复杂可编程逻辑器件(英文:complexprogrammablelogicdevice,缩写:cpld),现场可编程逻辑门阵列(英文:field-programmablegatearray,缩写:fpga),通用阵列逻辑(英文:genericarraylogic,缩写:gal)或其任意组合。存储器502也可以集成在处理器501中。如果存储器502和处理器501是相互独立的器件,存储器502和处理器501相联,例如存储器502和处理器501可以通过总线通信,网络接口503和处理器501可以通过总线通信,网络接口503也可以与处理器501直连。处理器501用于执行以下操作:通过所述网络接口503接收第一报文,所述第一报文包括第一网际协议ip地址;在所述存储器502存储的所述转发表中查找所述第一ip地址的下一跳失败;通过所述网络接口503向至少一个网关发送第二报文,所述第二报文携带所述第一ip地址,所述第二报文用于指示接收所述第二报文的网关确定所述第一ip地址标识的主机是否通过所述接收所述第二报文的网关访问网络;通过所述网络接口503接收来自第二网关的第三报文,所述第二网关是所述至少一个网关中的一个网关,所述第三报文用于指示所述第一ip地址标识的主机通过所述第二网关访问网络;将所述第二网关的地址作为所述第一ip地址的下一跳的地址,写入所述存储器存储的所述转发表。举例来说,处理器501可以包括np和cpu,所述np和所述cpu通过总线通信。np用于执行转发面的操作,cpu用于执行控制面的操作。具体来说,np执行通过所述网络接口503接收第一报文;以及在所述存储器502存储的所述转发表中查找所述第一报文中的ip地址的下一跳。np查找所述第一报文中的ip地址的下一跳失败之后,np将所述ip地址通过总线发送给cpu。具体来说,np查找下一跳,一种可能的方式是,如果所述存储器是ram,np可以读取存储器中转发表的信息,查找所述第一ip地址的下一跳;另一种可能的方式是,如果所述存储器是cam,np将所述第一ip地址发送给存储器,指示存储器在转发表中查找第一ip地址匹配的表项,所述表项中存储所述第一ip地址的下一跳,存储器将查找结果发送给np。查找下一跳失败,可以是指np没有在转发表中查找到第一ip地址匹配的表项。查找下一跳失败,也可以是指存储器将查找失败的结果发送给np,例如转发表中存在通用的表项,当第一ip地址与转发表中其他表项均不匹配时,存储器将所述通用的表项作为查找的结果,发送给np。cpu生成所述第二报文并通过所述网络接口503向至少一个网关发送所述第二报文。进一步地,cpu通过所述网络接口503接收来自第二网关的第三报文,将所述第二网关的地址作为所述第一ip地址的下一跳的地址。cpu通过总线将所述第一ip地址以及所述第一ip地址的下一跳地址发送给np。np将所述第一ip地址以及所述第一ip地址的下一跳地址写入所述存储器501存储的所述转发表。可选的,所述处理器501在所述存储器502存储的所述转发表中查找所述第一报文中的ip地址的下一跳之前,还执行以下步骤:确定接收所述第一报文的端口;根据所述端口到虚拟可扩展局域网vxlan网络标识vni的映射,确定所述vni;以及根据所述vni到所述转发表的映射,确定所述转发表。举例来说,该步骤可以由np执行。np通过总线向cpu发送所述ip地址时,还向cpu发送所述vni。可选的,所述第二报文还携带所述vni。可选的,所述处理器501通过所述网络接口503向至少一个网关发送第二报文之前,所述处理器501还执行:在多个vni中到多个网关的映射表中查找具有所述vni的网关;根据所述查找的结果,确定所述至少一个网关。举例来说,该步骤可以由cpu执行。所述多个vni中到多个网关的映射表可以存储于所述cpu的内存中。所述第一报文为数据报文,所述第一ip地址为所述第一报文的目的ip地址,所述处理器还执行:为所述第一报文做vxlan封装以得到第三报文;通过所述网络接口发送所述第三报文;其中,所述第三报文的vxlan首部中的vni字段的值为所述vni;所述第三报文的外层ip首部的目的ip地址为所述第二网关的ip地址。举例来说,该步骤可以由np执行。可选的,所述第一报文为地址解析协议arp报文,所述第一ip地址为所述第一报文的目标ip地址tpa,或者,所述第一报文为邻居发现协议ndp报文,所述ip地址为所述第一报文的目标地址targetaddress。可选的,所述处理器501还执行:通过所述网络接口503接收来自第三网关的第四报文,所述第四报文携带第二ip地址;获取所述第二ip地址对应的mac地址;通过所述网络接口向所述第三网关发送第五报文,所述第五报文用于指示所述第三网关将所述第一网关的地址作为所述第二ip地址的下一跳的地址。举例来说,该步骤可以由cpu执行。可选的,所述第四报文中还携带虚拟可扩展局域网vxlan网络标识vni,所述处理器501获取所述第二ip地址对应的mac地址,具体包括:所述处理器501在所述vni对应的vxlan段中获取所述第二ip地址对应的mac地址。举例来说,该步骤可以由cpu执行。本实施例提供的第一网关500可以应用于图2和图3实施例的方法中,实现其第一网关的功能。所述第一网关可以实现的其他附加功能,以及与其他网关的交互过程,请参照方法实施例中对第一网关的描述,在这里不再赘述。图5是本申请实施例提供的另一种第一网关的结构示意图。如图5所示,第一网关600包括第一接收单元601,存储单元602,查找单元603,发送单元604,第二接收单元605以及处理单元606。所述第一接收单元601,用于接收第一报文,所述第一报文包括第一网际协议ip地址;所述存储单元602,用于存储转发表;所述查找单元603,用于获取所述第一接收单元601接收的所述第一报文,并在所述存储单元602存储的所述转发表中查找所述第一ip地址的下一跳失败;所述发送单元604,用于在所述查找单元603查找所述第一ip地址的下一跳失败后,向至少一个网关发送第二报文,所述第二报文携带所述第一ip地址,所述第二报文用于指示接收所述第二报文的网关确定所述第一ip地址标识的主机是否通过所述接收所述第二报文的网关访问网络;所述第二接收单元605,用于接收来自第二网关的第三报文,所述第二网关是所述至少一个网关中的一个网关,所述第三报文用于指示所述第一ip地址标识的主机通过所述第二网关访问网络;所述处理单元,用于获取所述第二接收单元接收的所述第三报文,并根据所述第三报文将所述第二网关的地址作为所述第一ip地址的下一跳的地址写入所述存储单元存储的所述转发表。可选的,所述第二报文还携带第一报文的第一虚拟可扩展局域网vxlan网络标识vni,所述查找单元603还用于,在所述发送单元向至少一个网关发送所述第二报文之前:确定所述第一报文的所述第一vni。可选的,所述第一报文为地址解析协议arp报文,所述第一ip地址为所述第一报文的目标ip地址tpa,或者,所述第一报文为邻居发现协议ndp报文,所述ip地址为所述第一报文的目标地址targetaddress。可选的,所述第二接收单元605还用于,接收来自第三网关的第四报文,所述第四报文携带第二ip地址;所述查找单元603还用于,获取所述第二接收单元605接收的所述第四报文,并确定能够获取到所述第四报文携带的所述第二ip地址标识的主机的mac地址;所述发送单元604还用于,向所述第三网关发送第五报文,所述第五报文用于指示所述第二ip地址标识的主机通过所述第一网络访问网络。可选的,所述第四报文中还携带第二vni,所述查找单元603用于确定能够获取到所述第二ip地址标识的主机的mac地址,具体用于:在所述第二vni标识的vxlan段中尝试获取所述第二ip地址标识的主机的mac地址。图5所示的第一网关600与图4所示的第一网关500可以是同一个装置,例如均为图2和图3的方法中所述的第一网关。可以认为,图4从物理的角度显示了第一网关包括的内容,而图5从逻辑的角度显示了第一网关包括的内容。可选地,图5所示的第一接收单元601,第二接收单元602以及发送单元604,可以由图4所示的网络接口503来实现,图5所示的查找单元603以及处理单元606可以由图4所示的处理器501来实现,图5所示的存储单元602可以由图4所示的存储器502来实现。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1