一种路径选择方法、装置、网络设备以及ED设备与流程

文档序号:17985283发布日期:2019-06-22 00:22阅读:265来源:国知局
一种路径选择方法、装置、网络设备以及ED设备与流程
本公开涉及计算机通信领域,尤其涉及一种路径选择方法、装置、网络设备以及ed设备。
背景技术
:vxlan(virtualextensiblelan,虚拟扩展局域网)数据中心互联是指:多个数据中心的边缘设备ed(edgedevice,边缘设备)之间通过dci(datacenterinterconnect,数据中心互联)隧道相连。每个数据中心ed与该数据中心中的vtep(vxlantunnelendpoint,vxlan隧道端点)通过vxlan隧道相连,vtep与该数据中心中的vm(virtualmachine,虚拟机)相连。技术实现要素:有鉴于此,本公开提供一种路径选择方法、装置、网络设备以及ed设备,用以实现网络设备按照最短路径转发针对目标vm的报文。具体地,本公开是通过如下技术方案实现的:根据本申请的第一方面,提供一种路径选择方法,所述方法应用于网络设备,所述网络设备与多个邻居ed相连,所述多个邻居ed中的任意两个邻居ed之间通过dci隧道相连,所述方法包括:向邻居ed发送针对目标vm的报文;所述针对目标vm的报文为目的地址是目标vm地址的报文;接收邻居ed发送的携带有所述目标vm地址的通告报文,并依据所述通告报文检测所述目标vm是否在所述邻居ed所属数据中心中;所述通告报文还携带有目标dci隧道的目的地址;其中,所述邻居ed通过该目标dci隧道转发针对所述目标vm的报文;若所述目标vm不在所述邻居ed所属数据中心中,则检测所述目标dci隧道的目的地址所指示的ed是否与本网络设备直连;若所述目标dci隧道的目的地址所指示的ed与本网络设备直连,则在针对所述目标vm的多个等价转发表中,将出接口为目标接口的转发表项进行无效设置;其中,所述目标接口为接收该通告报文的接口。根据本申请的第二方面,提供一种路径选择方法,所述方法应用于数据中心的边缘设备ed,所述ed与网络设备相连,所述ed还与其他ed通过dci隧道相连,所述网络设备与所述其他ed相连,所述方法包括:接收到网络设备发送的针对目标vm的报文;所述针对目标vm的报文为目的地址是目标vm地址的报文;检测该目标vm是否在本ed所属数据中心中;若否,则确定本ed用于转发所述报文的目标dci隧道的目的地址,并基于该目标vm地址、所述目标dci隧道的目的地址,构造用于指示该目标vm不在本ed所属数据中心的第一通告报文,并将第一通告报文发送给所述网络设备。根据本申请的第三方面,提供一种路径选择装置,所述装置应用于网络设备,所述网络设备与多个邻居ed相连,所述多个邻居ed中的任意两个邻居ed之间通过dci隧道相连,所述装置包括:发送单元,用于向邻居ed发送针对目标vm的报文;所述针对目标vm的报文为目的地址是目标vm地址的报文;第一检测单元,用于接收邻居ed发送的携带有所述目标vm地址的通告报文,并依据所述通告报文检测所述目标vm是否在所述邻居ed所属数据中心中;所述通告报文还携带有目标dci隧道的目的地址;其中,所述邻居ed通过该目标dci隧道转发针对所述目标vm的报文;第二检测单元,用于若所述目标vm不在所述邻居ed所属数据中心中,则检测所述目标dci隧道的目的地址所指示的ed是否与本网络设备直连;设置单元,用于若所述目标dci隧道的目的地址所指示的ed与本网络设备直连,则在针对所述目标vm的多个等价转发表中,将出接口为目标接口的转发表项进行无效设置;其中,所述目标接口为接收该通告报文的接口。根据本申请的第四方面,提供一种路径选择装置,其特征在于,所述装置应用于数据中心的边缘设备ed,所述ed与网络设备相连,所述ed还与其他ed通过dci隧道相连,所述网络设备与所述其他ed相连,所述装置包括:接收单元,用于接收到网络设备发送的针对目标vm的报文;所述针对目标vm的报文为目的地址是目标vm地址的报文;检测单元,用于检测该目标vm是否在本ed所属数据中心中;构造单元,用于若否,则确定本ed用于转发所述报文的目标dci隧道的目的地址,并基于该目标vm地址、所述目标dci隧道的目的地址,构造用于指示该目标vm不在本ed所属数据中心的第一通告报文,并将第一通告报文发送给所述网络设备。根据本申请的第五方面,提供一种网络设备,其特征在于,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使执行如第一方面所述方法。根据本申请的第六方面,提供一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有机器可执行指令,在被处理器调用和执行时,所述机器可执行指令促使所述处理器执行如第一方面所述方法。根据本申请的第七方面,提供一种ed,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使执行第二方面所述方法。根据本申请的第八方面,提供一种机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,在被处理器调用和执行时,所述机器可执行指令促使所述处理器执行第二方面所述方法。由上述描述可知,网络设备接收邻居ed发送的针对所述目标vm的通告报文;所述通告报文携带有目标vm的地址、以及以目标dci隧道的目的地址;若网络设备确定所述通告报文指示所述目标vm不在所述邻居ed所属数据中心中,且检测到所述目标dci隧道的目的地址所指示的ed与本网络设备直连,则在针对所述目标vm的多个等价转发表中,将出接口为接收该通告报文的接口的转发表项进行无效设置,从而使得网络设备可以按照最短路径转发针对目标vm的报文,避免了因采用较长路径转发报文而造成ed之间的dci隧道带宽浪费的问题。附图说明图1是本公开一示例性实施例示出的一种vxlan数据中心互联的组网示意图;图2是本公开一示例性实施例示出的一种路径选择方法的流程图;图3是本公开一示例性实施例示出的一种lldp报文的结构示意图;图4是本公开一示例性实施例示出的另一种路径选择方法的流程图;图5是本公开一示例性实施例示出的一种数据中心互联的组网示意图;图6是本公开一示例性实施例示出的一种路径选择装置的框图;图7是本公开一示例性实施例示出的一种网络设备的硬件结构图;图8是本公开一示例性实施例示出的另一种路径选择装置的框图;图9是本公开一示例性实施例示出的一种ed设备的硬件结构图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。如图1所示,ed11、ed12和ed13分别是数据中心11、数据中心12和数据中心13的边缘设备,ed11和ed12通过dci11隧道相连、ed11和ed13通过dci12隧道相连、ed12和ed13通过dci13隧道相连。ed11与数据中心中的vtep11通过vxlan隧道11相连、ed12与数据中心中的vtep12通过vxlan隧道12相连、ed13与数据中心中的vtep13通过vxlan隧道13相连。假设vm11属于数据中心2,vm11与vtep12相连。假设,图1中的ed11、ed12和ed13同时作为网关设备接收来自于网络设备的外网流量。假设网络设备接收到发往vm11的报文时,网络设备可通过下面三条路径的任一条路径转发该报文。路径1:网络设备—>ed12—>vtep12—>vm11;路径2:网络设备—>ed11—>ed12—>vtep12—>vm11;路径3:网络设备—>ed13—>ed12—>vtep12—>vm11。然而,通过路径2和路径3转发该报文时,报文的转发路径较长,会占用ed11和ed12、以及ed13和ed12之间的dci隧道的带宽。在介绍本公开提供的路径选择方法之前,先介绍下在图1所示的组网中,以网络设备通过路径1和路径2转发针对vm11的报文为例,对该组网的报文转发方法以及各ed和网络设备上的一些表项进行介绍。在图1中,假设网络设备上的接口a11与ed11上的接口a12相连,网络设备上的接口a21与ed12上的接口a22相连,网络设备上的接口a31和ed13上的接口a32相连。在图1所示的组网中,vm通常会对应一个vsi(virtualswitchinstance,虚拟交换实例)虚接口,而vsi虚接口与vsi实例绑定(即一个vsi实例可以绑定一个或多个vsi虚接口)。假设,vm11与vsi虚接口vsiinterface10对应,vsiinterface10与vsi实例(即vsi10)绑定。在图1所示的组网中,由于ed11、ed13和ed12都可以转发vm11的流量,所以ed11、ed12和ed13上均创建有vsiinterface10,假设vsiinterface10在ed11、ed12和ed13上的ip地址均为10.0.0.1,mac地址为mac11。1、网络设备上的转发表项网络设备上的针对vm11的等价转发表项如表101所示。表1012、针对ed11上的表项:ed11保存有针对vm11的转发表项和arp(addressresolutionprotocol,地址解析协议)表项,以及vsi虚接口标识和vsi实例的绑定关系。ed11上针对vm11的转发表项如表102所示。表102ed11上针对表102所示转发表项的arp表项如表103所示。ip地址mac地址出接口vsi实例标识10.0.0.1mac11dci11隧道口vsi10表1033、针对ed12的表项:ed12上针对vm11的转发表项如表104所示。目的地址出接口下一跳vm11vsiinterface10vm11表104ed12上针对vm11的arp表项如表105所示。表1051)网络设备通过路径1转发针对vm11的报文101。网络设备可查找目的地址为vm11的等价转发表项,查找到的3个等价转发表项如表101所示。网络设备可基于表101中第三行所示的转发表项,将报文101发送给ed12。ed12可在本地记录的转发表中,查找目的地址为vm11的转发表项,查找到的转发表项如表104所示。ed12可获取表104中的出接口(即vsiinterface10)以及下一跳(即vm11)。然后,ed12可在本地记录的vsi虚接口与vsi实例的绑定关系中,确定vsiinterface10绑定的vsi实例(即vsi10)。然后,ed12可以vsi10和vm11为关键字,在本地的arp表中查找与该关键字匹配的arp表项,查找出的arp表项如表105所示。ed12可依据表105,对报文101进行vxlan封装,并通过vxlan隧道12发送给vtep12,由vtep12将报文101转发给vm11。2)网络设备通过路径2转发针对vm11的报文101。网络设备可查找目的地址为vm11的等价转发表项,查找到的3个等价转发表项如表101所示。网络设备可基于表101中第二行所示的转发表项,将报文101发送给ed11。ed11可在本地记录的转发表中,查找目的地址为vm11的转发表项,查找到的转发表项如表102所示。ed11可获取表102中的下一跳(即10.0.0.1)以及出接口(即vsiinterface10)。ed11可在本地记录的vsi虚接口标识和vsi实例标识的对应关系中,查找vsiinterface10对应的vsi实例标识(即vsi10)然后,ed11可以vsi10和下一跳10.0.0.1为关键字,在本地记录的arp表中查找与该关键字对应的arp表项,查找到的arp表项如表103所示。ed11可获取查找到的该arp表项的出接口(即dci11隧道口),然后ed11可对报文1进行dci11隧道的隧道封装,并将封装后的报文102发送个ed12。ed12在接收到ed11发送的该报文102后,可对该报文进行解封装得到报文101,并将报文101通过表104和表105发送给vtep12,由vtep12将报文101发送给vm11(ed12将报文101转发给vm11的处理流程与上文描述相似,这里不再赘述)。本公开旨在提出一种路径选择方法,使得网络设备选择较短的路径1转发针对vm11的流量,而避免通过较长的路径2和路径3转发针对vm11的流量,从而大大节省了ed11和ed12之间的dci11隧道、以及ed12和ed13之间的dci13隧道的带宽。具体地,在本公开中,网络设备通过将与路径2对应转发表项(即表101中的第二行转发表项)和与路径3对应的转发表项(即表101中的第四行转发表项)进行无效设置,使得网络设备在发送针对vm11的报文时,只能通过与路径1对应的转发表项(即表101中的第三行转发表项)进行转发,从而实现了网络设备选择路径1来转发发往vm11的流量。下面详细介绍本公开提供的路径选择方法。参见图2,图2是本公开一示例性实施例示出的一种路径选择方法的流程图,该方法可应用在与网络设备相连的邻居ed上,可包括如下所示步骤。步骤201:邻居ed接收到网络设备发送的针对目标vm的报文。步骤202:邻居ed检测该目标vm是否在本ed所属数据中心中。需要说明的是,本申请所述的针对目标vm的报文是指:目的地址是目标vm地址的报文,下文不再赘述。在一种可选的实现方式中,在检测目标vm是否在本ed所属数据中心中时,邻居ed可基于本地记录的与所述报文匹配的转发表项和arp表项,确定用于转发所述报文的隧道口。若确定出的隧道口为vxlan隧道口,则确定目标vm在本ed所属数据中心。若确定出的隧道口为dci隧道口,则确定目标vm不在本ed所属数据中心。具体地,邻居ed可在本地记录的转发表中,查找目的地址为该目标vm地址的转发表项。然后,邻居ed可获取查找到的转发表项的出接口(即vsi虚接口)以及下一跳。接着,邻居ed可在本地记录的虚接口和vsi实例的对应关系中,确定查找到的转发表项中记录的vsi虚接口对应的vsi实例。然后,邻居ed可以以该确定出的vsi实例和该转发表项记录的下一跳为关键字,在本地记录的arp表项中查找与该关键字对应的目标arp表项。若查找到的目标arp表项的出接口为vxlan隧道口,邻居ed则可确定该目标vm在本ed所属数据中心中,若查找到的目标arp表项的出接口是dci隧道口,则确定该目标vm不在本ed所属数据中心中。步骤203:若该目标vm不在本ed所属数据中心中,邻居ed确定本ed用于转发所述报文的目标dci隧道的目的地址,并基于该目标vm地址、所述目标dci隧道的目的地址,构造用于指示该目标vm不在本ed所属数据中心的第一通告报文,并将第一通告报文发送给所述网络设备。步骤204:若该目标vm在本ed所属数据中心中,则基于所述目标vm地址,构造用于指示该vm在本ed所属数据中心的第二通告报文,并将第二通告报文发送给所述网络设备。1)介绍下“邻居ed确定本ed用于转发所述报文的目标dci隧道的目的地址”的实现方式。若该目标vm不在本ed所属数据中心中,邻居ed可将上述步骤202中查找到的目标arp表项的出接口记录的dci隧道作为目标dci隧道。然后,邻居设备可在本地隧道配置中,查找目标dci隧道的目的地址。需要说明的是,邻居ed是通过目标dci隧道转发针对目标vm的报文。该目标dci隧道的源地址就是目标dci隧道在邻居ed上的dci隧道口地址。2)通告报文该通告报文可以是基于现有协议报文进行字段扩展而构造,也可以通过私有协议而构造。这里只是对通告报文进行示例性地说明,不进行具体地限定。例如,该通告报文可以基于lldp协议的报文进行字段扩展构造。例如,如图3所示,本公开对lldp报文中的lldpdu字段中的madtlv字段进行了扩展。madtlv字段包括:type字段、length字段和value字段。其中,type字段,表明该扩展tlv的类型。比如可将该字段的取值设置为0x7d,以此来表示该type字段类型为针对dci/e的扩展。length字段表示长度,用于标识各个字段的长度。本公开在value字段中扩展出了dci/e字段、reserved字段、vmaddr字段和dstip字段。其中,dci/e字段:用于表征vm是否在发送本lldp报文的ed所属的数据中心中。若该dci/e字段取值为1时,表明vm在发送本lldp报文的ed所属的数据中心中。若该dci/e字段取值为0时,表明vm不在发送本lldp报文的ed所属的数据中心中。当dci/e字段取值为0时,dstip字段有效。当dci/e字段取值为1时,dstip字段无效。dci/e字段的长度可以为1bits。上述reserved字段为保留字段,长度通常为7bits。上述vmaddr字段用于记录vm地址,通常为128bits.上述dstip字段用于记录:转发针对目标vm的报文的dci隧道的目的地址。通常为128bits。当若该目标vm不在本ed所属数据中心中,邻居ed可构造lldp报文,并将lldp报文中的dci/e字段取值设置为0,将vmaddr字段的取值设置为目标vm的地址,将dstip字段的取值设置为目标dci隧道的目的地址,形成第一通告报文,并发送给网络设备。若该目标vm在本ed所属数据中心中,邻居ed可构造lldp报文,并将lldp报文中的dci/e字段设置为1,形成第二通告报文,并将第二通告报文发送给网络设备。参见图4,图4是本公开一示例性实施例示出的另一种路径选择方法的流程图,该方法可应用在网络设备上,可包括如下所示步骤。步骤401:网络设备向邻居ed发送针对目标虚拟机vm的报文。步骤402:网络设备接收邻居ed发送的针对所述目标vm的通告报文,并依据所述通告报文检测所述目标vm是否在所述邻居ed所属数据中心中;所述通告报文携带有目标vm的地址、以及以目标dci隧道的目的地址;其中,所述邻居ed通过该目标dci隧道转发针对所述vm的报文,所述目标dci隧道的源地址为所述邻居ed上的目标dci隧道口地址。步骤403:若所述通告报文指示所述目标vm不在所述邻居ed所属数据中心中,网络设备则检测所述目标dci隧道的目的地址所指示的ed是否与本网络设备直连。步骤404:若目标dci隧道的目的地址所指示的ed与本网络设备直连,网络设备则在针对所述目标vm的多个等价转发表中,将出接口为目标接口的转发表项进行无效设置;其中,目标接口为接收该通告报文的接口。在一种可选的实现方式中,网络设备在通过目标接口接收到接收邻居ed发送的针对所述目标vm的通告报文后,可依据所述通告报文检测所述目标vm是否在所述邻居ed所属数据中心中。若所述通告报文指示所述目标vm在所述邻居ed所属数据中心中,网络设备可在针对所述目标vm的多个等价转发表中,保留出接口为目标接口的转发表项的有效设置。若所述通告报文指示所述目标vm不在所述邻居ed所属数据中心中,则进一步检测所述目标dci隧道的目的地址所指示的ed是否与本网络设备直连。若目标dci隧道的目的地址所指示的ed与本网络设备直连,则在针对所述目标vm的多个等价转发表中,将出接口为目标接口的转发表项进行无效设置。若所述目标dci隧道的目的地址所指示的ed不与本网络设备直连,网络设备则在针对所述目标vm的多个等价转发表中,保留出接口为目标接口的转发表项的有效设置。在另一种可选的实现方式中,网络设备在通过目标接口接收到接收邻居ed发送的针对所述目标vm的通告报文后,可检测目的地址为该目标vm、出接口为目标接口(即接收该针对该目标vm的通告报文的接口)的转发表项是否有效。若目的地址为该目标vm、出接口为目标接口的转发表项无效,则不处理该通告报文。若目的地址为该目标vm、出接口为目标接口的转发表项有效,网络设备则可依据所述通告报文检测所述目标vm是否在所述邻居ed所属数据中心中。若所述通告报文指示所述目标vm在所述邻居ed所属数据中心中,网络设备可在针对所述目标vm的多个等价转发表中,保留出接口为目标接口的转发表项的有效设置,并将出接口不是该目标接口的转发表项进行无效设置。若所述通告报文指示所述目标vm不在所述邻居ed所属数据中心中,则进一步检测所述目标dci隧道的目的地址所指示的ed是否与本网络设备直连。若目标dci隧道的目的地址所指示的ed与本网络设备直连,则在针对所述目标vm的多个等价转发表中,将出接口为目标接口的转发表项进行无效设置。若所述目标dci隧道的目的地址所指示的ed不与本网络设备直连,网络设备则在针对所述目标vm的多个等价转发表中,保留出接口为目标接口的转发表项的有效设置,并将出接口不是目标接口的转发表项进行无效设置。这样做的好处是:一方面,由于网络设备在保留出接口为目标接口的转发表项有效设置的同时,还将出接口不是该目标接口的转发表项进行无效设置,所以网络设备可以加快对较长路径对应的转发表项的无效设置。另一方面,网络设备在通过目标接口接收到通告报文后,在确定目的地址为所述目标vm、出接口为所述目标接口的转发表项有效时,才基于通告报文进行转发表项有效或者无效设置,而当确定该转发表项无效时,网络设备可以不处理该通告报文,这样可以大大减轻网络设备的工作负荷。下面对步骤401和步骤402中的一些实现细节进行介绍。1)确定通告报文的类型在一种可选的实现方式中,网络设备可检测该通告报文指定字段的取值,若该指定字段的取值为第一预设值(比如1),则表明该通告报文用于指示所述目标vm在所述邻居ed所属数据中心中,若该指定字段的取值为第二预设至(比如0),则表明该通告报文用于指示所述目标vm不在所述邻居ed所属数据中心中。需要说明的是,当该通告报文为上述lldp报文时,该指定字段为上述dci/e字段。2)检测所述目标dci隧道的目的地址所指示的ed是否与本网络设备直连在实现时,邻居设备可向与本网络设备相连的所有ed发送目标arp请求报文;所述目标arp请求报文的目的地址为所述目标dci隧道的目的地址。若在发送目标arp请求报文后的预设时长内接收到针对该目标arp请求报文的arp响应报文,邻居设备可确定目标dci隧道的目的地址所指示的ed与本网络设备直连。若在发送目标arp请求报文后的预设时长内未接收到针对该目标arp请求报文的arp响应报文,邻居设备则可确定目标dci隧道的目的地址所指示的ed不与本网络设备直连。需要说明的是,目标dci隧道的目的地址通常是一个dci隧道的隧道端口的地址。目标dci隧道的目的地址所指示的ed是指:目标dci隧道的目的地址所指示的dci隧道端口所在ed。此外,在本公开实施例中,当邻居设备接收到所述vm发送的用于指示该虚拟机跨数据中心的迁移报文后,向所述网络设备发送携带有该vm地址的迁移通告报文,以使网络设备将目的地址为该vm地址的所有等价转发表项进行有效设置。网络设备在可接收所述邻居ed发送的针对所述vm的迁移通告报文;所述迁移通告报文携带有该vm地址,所述迁移通告报文用于指示所述vm跨数据中心迁移。网络设备可在已记录的转发表中,查找目的地址为该vm地址的所有等价转发表项,并将所有等价转发表项进行有效设置。其中,该迁移通告报文可以是rarp(rarp:reverseaddressresolutionprotocol,反向地址转换协议)报文,这里只是对迁移通告报文进行示例性地说明,不进行具体地限定。由上述描述可知,网络设备接收邻居ed发送的针对所述目标vm的通告报文;所述通告报文携带有目标vm的地址、以及以目标dci隧道的目的地址;其中,所述邻居ed通过该目标dci隧道转发针对所述vm的报文,所述目标dci隧道的源地址为所述邻居ed上的目标dci隧道口地址;若网络设备确定所述通告报文指示所述目标vm不在所述邻居ed所属数据中心中,且检测到所述目标dci隧道的目的地址所指示的ed与本网络设备直连,则在针对所述目标vm的多个等价转发表中,将出接口为接收该通告报文的接口的转发表项进行无效设置,从而使得网络设备可以按照最短路径转发针对目标vm的报文,避免了因采用较长路径转发报文而造成ed之间的dci隧道带宽浪费的问题。此外,本公开网络设备对等价转发表项的有效和无效设置都是基于流量触发的,而不需要依赖任何额外工具部署,大大降低了本公开提供的路径选择方法的成本。下面通过具体地例子对本公开提供的路径选择方法进行详细地说明。参见图5,图5是本公开一示例性实施例示出的一种数据中心互联的组网示意图。首先,先介绍下图5中各个设备的连接关系。1)dut(即上文所述的网络设备)通过普通链路与ed51、ed52和ed53相连。具体地,dut通过本地a511端口与ed52上的a512端口相连。a512端口的ip地址假设为ip2。dut通过本地a501端口与ed51上的a502端口相连,a502端口的ip地址假设为ip1。dut通过本地a521端口与ed53上的a522端口相连,a522端口的ip地址假设为ip3。2)ed51和ed52通过dci51隧道相连,ed51和ed53通过dci52隧道相连,ed52和ed53通过dci53隧道相连,ed53和ed54通过dci54隧道相连。假设:从ed51到ed52的dci51隧道源地址为1.0.0.1,目的地址为1.0.0.2;从ed51到ed53的dci52隧道源地址为2.0.0.1,目的地址为2.0.0.2;从ed53到ed52的dci53隧道源地址为3.0.0.1,目的地址为3.0.0.2;从ed52到ed53的dci53隧道源地址为3.0.0.2,目的地址为3.0.0.1;从ed53到ed54的dci54隧道源地址为4.0.0.1,目的地址为4.0.0.2。3)ed52和vtep52通过vxlan隧道52相连,vtep52与ed52所属数据中心2中的vm51相连。4)ed54和vtep54通过vxlan隧道54相连,vtep52与ed54所属数据中心4中的vm52相连。此外,假设vm51与vsiinterface10(vsi虚接口)对应,vsi10(vsi实例)与vsiinterface10对应。vm52与vsiinterface20(vsi虚接口)对应,vsi20(vsi实例)与vsiinterface20绑定。在图5所示组网中,ed51、ed52和ed53上均创建有vsiinterface10和vsiinterface20这两个vsi虚接口。ed51、ed52和ed53上创建的vsiinterface10的ip地址均为10.0.0.1,mac地址为mac1。ed51、ed52和ed53上创建的vsiinterface20的ip地址均为20.0.0.1,mac地址为mac2。下面对本公开提供的路径选择方法进行详细地说明。实施例1:dut接收到上游设备发送的报文1,报文1的目的地址为vm51。在本例中,dut上的转发表如表501所示。当然表501只是示出了dut转发表上的一部分,这里只是对dut上的转发表进行示例性说明,不进行具体地限定。在初始阶段,dut上的转发表项均被设置为有效。目的地址出接口下一跳vm51a501ip1vm51a511ip2vm51a521ip3vm52a501ip1vm52a511ip2vm52a521ip3表501当dut接收到报文1时,dut可在表501中查找目的地址是vm51的转发表项,在本例中,dut可查找到针对vm51的3个等价转发表项。这三个转发表项分别是表501第二行转发表项、第三行转发表项和第四行转发表项。dut可按照查找到的这3个等价转发表项,分别将报文1发送给ed51、ed52和ed53。1、对于ed51来说ed51上配置了转发表和arp表,ed51还配置vsiinterface10和vsi10的绑定关系,vsiinterface20和vsi20的绑定关系。1)ed51上的转发表ed51上的转发表如表502所示,表502只是示出的ed51上的转发表的一部分,这里只是对ed51上的转发表进行示例性地说明,不进行具体地限定。表5022)ed51上的arp表ed51的arp表如表503所示,表503只是示出了ed51上的arp表的一部分,这里只是对ed51上的arp表进行示例性地说明,不进行具体地限定。表503当ed51接收到dut发送的报文1时,可在表502查找目的地址是vm51的转发表项,查找到的转发表项为表502的第二行转发表项。然后,ed51可基于本地记录的vsi实例和vsi虚接口之间的绑定关系,确定表502的第二行转发表项的出接口(即vsiinterface10)绑定的vsi实例标识(即vsi10)。然后,ed51可以以表502第二行转发表项的下一跳(即10.0.0.1)和vsi10为关键字,在表503所示的arp表中查找与该关键字对应的arp表项,查找到的arp表项即为表503第一行arp表项。由于表503第一行arp表项的出接口为dci51隧道口,所以,ed51可确定vm51不在ed51所属的数据中心中。ed51可查找与dci51隧道的隧道配置,确定ed51作为源端的dci51隧道的源地址(即1.0.0.1,即ed51上dci51隧道口地址)、dci51隧道的目的地址(即1.0.0.2,即ed52上dci51隧道口地址)。ed51可构造lldp报文1,并将lldp报文1的dci/e字段的取值设置为0,将vmaddr字段的取值设置为vm51,将dstip字段的取值设置为dci51隧道的目的地址(即1.0.0.2)。然后,ed51可将lldp报文1发送给dut。2、对于ed52来说1)ed52上的转发表ed52上的转发表如表504所示,表504只是示出的ed52上的转发表的一部分,这里只是对ed52上的转发表进行示例性地说明,不进行具体地限定。表5042)ed52上的arp表ed52的arp表如表505所示,表505只是示出了ed52上的arp表的一部分,这里只是对ed52上的arp表进行示例性地说明,不进行具体地限定。表505当ed52接收到dut发送的报文1时,可在表504查找目的地址是vm51的转发表项,查找到的转发表项为表504的第二行转发表项。然后,ed52可基于本地记录的vsi实例和vsi虚接口之间的绑定关系,确定表504的第二行转发表项的出接口(即vsiinterface10)绑定的vsi实例标识(即vsi10)。然后,ed51可以以表504第二行转发表项的下一跳(即vm51)和vsi10为关键字,在表505所示的arp表中查找与该关键字对应的arp表项,查找到的arp表项即为表505第一行arp表项。由于表505第一行arp表项的出接口为vxlan隧道口,所以,ed52可确定vm51在ed52所属的数据中心中。ed52可构造lldp报文2,并将lldp报文2中的dci/e字段的取值设置为1,将vmaddr字段的取值设置为vm51的ip地址,然后ed52可将lldp报文2发送给dut。3、对于ed53来说1)ed53上的转发表ed53上的转发表如表506所示,表506只是示出的ed53上的转发表的一部分,这里只是对ed53上的转发表进行示例性地说明,不进行具体地限定。表5062)ed53上的arp表ed53的arp表如表507所示,表507只是示出了ed53上的arp表的一部分,这里只是对ed53上的arp表进行示例性地说明,不进行具体地限定。表507当ed53接收到dut发送的报文1时,可在表506查找目的地址是vm51的转发表项,查找到的转发表项为表506的第三行转发表项。然后,ed53可基于本地记录的vsi实例和vsi虚接口之间的绑定关系,确定表506的第三行转发表项的出接口(即vsiinterface10)绑定的vsi实例标识(即vsi10)。然后,ed53可以以表506第三行转发表项的下一跳(即10.0.0.1)和vsi10为关键字,在表507所示的arp表中查找与该关键字对应的arp表项,查找到的arp表项即为表507第二行arp表项。由于表507第二行arp表项的出接口为dci53隧道口,所以,ed53可确定vm51不在ed53所属的数据中心中。接着,ed53可查找dci53隧道的隧道配置,确定dci53隧道的源地址(即3.0.0.1,即dci53隧道在ed53上的隧道口地址)、dci51隧道的目的地址(即3.0.0.2,即dci53隧道在ed52上的隧道口地址)。ed53可构造lldp报文3,并将lldp报文3的dci/e字段的取值设置为0,将vmaddr字段的取值设置为vm51,将dstip字段的取值设置为dci53隧道的目的地址(即3.0.0.2)。然后,ed53可将lldp报文3发送给dut。dut可接收到ed51发送的lldp报文1、ed52发送的lldp报文2和ed53发送的lldp报文3。假设dut先接收到lldp报文1、再接收到lldp报文2、再接收到lldp报文3。1)针对dut接收到lldp报文1当dut通过接口a501接收到lldp报文1时,可获取lldp报文1中的vmaddr字段记载的vm51的地址。然后dut可检测目的地址为vm51、出接口为a501的转发表项(即表501第二行转发表项)是否有效。在本例中,由于表501第二行转发表项被设置了有效,dut可进一步检查lldp报文1的dci/e字段的取值。由于lldp报文1中的dci/e字段的取值为0,dut可确定vm51不在ed51所属的数据中心1中。dut可获取lldp报文1中的dstip字段记载的ip地址(即1.0.0.2)。然后,dut可向ed51、ed52和ed53分别发送目的地址为1.0.0.2的arp请求报文。ed51和ed53在接收到arp请求报文后,由于1.0.0.2所指示的端口不在ed51和ed53上,所以ed51和ed53均不回应针对该arp请求报文的arp响应报文。ed52在接收到该arp请求报文后,由于1.0.0.2所指示的端口在ed52上,所以ed52向dut回应针对该arp请求报文的arp应答报文。当dut接收到ed52发送的arp应答报文后,可确定dut与1.0.0.2所指示的端口所在ed(即ed52)直连,此时,dut在针对vm51的多个等价转发表项(即表501中的第二行至第四行转发表项)中,将出接口为本设备接收该lldp报文1的接口(即接口a501)的转发表项进行无效设置,即将表501中的第二行转发表项进行无效设置。2)针对dut接收到lldp报文2当dut通过接口a511接收到lldp报文2时,可获取lldp报文2中的vmaddr字段记载的vm51的地址。然后dut可检测目的地址为vm51、出接口为a511的转发表项(即表501第三行转发表项)是否有效。在本例中,由于表501第三行转发表项被设置了有效,dut可进一步检查lldp报文2的dci/e字段的取值。由于lldp报文2中的dci/e字段的取值为1,dut可确定vm51在ed52所属的数据中心2中。dut可在针对vm51的3个等价转发表项中,保持出接口为接收lldp报文2接口(即接口a511)的转发表项的有效设置。即保持表501中第三行转发表项有效设置,并将出接口为a521的转发表项进行无效设置(即表501中第四行转发表项进行无效设置)。3)针对dut接收到lldp报文3当dut通过接口a521接收到lldp报文3时,可获取lldp报文3中的vmaddr字段记载的vm51的地址。然后dut可检测目的地址为vm51、出接口为a521的转发表项(即表501第四行转发表项)是否有效。在本例中,由于表501第四行转发表项已经在上述接收到lldp报文2时被设置了无效,所以dut可不处理lldp报文3。实施例2:dut接收到上游设备发送的报文2,报文2的目的地址为vm52。当dut接收到上游设备发送的报文2时,dut可在表501中查找目的地址是vm52的转发表项,在本例中,dut可查找到针对vm52的3个等价转发表项。这三个转发表项分别是表501第五行转发表项、第六行转发表项和第七行转发表项。dut可按照查找到的这3个等价转发表项,分别将报文2发送给ed51、ed52和ed53。以ed51为例:当ed51接收到dut发送的报文2时,可在表502查找目的地址是vm52的转发表项,查找到的转发表项为表502的第三行转发表项。表502第三行转发表项的出接口为vsiinterface20。然后,ed51可基于本地记录的vsi实例和vsi虚接口之间的绑定关系,确定表502的第三行转发表项的出接口(即vsiinterface20)绑定的vsi实例标识(即vsi20)。然后,ed51可以以表502第三行转发表项的下一跳(即20.0.0.1)和vsi20为关键字,在表503所示的arp表中查找与该关键字对应的arp表项,查找到的arp表项即为表503第二行arp表项。表503中第二行arp表项的出接口为dci52隧道口。由于第二行arp表项的出接口为dci隧道口,所以ed51可确定vm52不在ed51所属的数据中心1中。接着,ed51可查找与dci52的隧道配置,确定dci52隧道的源地址(即2.0.0.1,即dci52隧道在ed51上的隧道口地址)、dci52隧道的目的地址(即2.0.0.2,即dci52隧道在ed53上的隧道口地址)。ed51可构造lldp报文4,并将lldp报文4的dci/e字段的取值设置为0,将vmaddr字段的取值设置为vm52,将dstip字段的取值设置为dci52隧道的目的地址(即2.0.0.2)。然后,ed51可将lldp报文4发送给dut。同理,ed52可构造lldp报文5,并将lldp报文5的dci/e字段的取值设置为0,将vmaddr字段的取值设置为vm52,将dstip字段的取值设置为dci52隧道的目的地址(即3.0.0.1)。然后,ed51可将lldp报文5发送给dut。ed53可构造lldp报文6,并将lldp报文6的dci/e字段的取值设置为0,将vmaddr字段的取值设置为vm52,将dstip字段的取值设置为dci54隧道的目的地址(即4.0.0.2)。然后,ed51可将lldp报文6发送给dut。dut可接收到lldp报文4、lldp报文5和lldp报文6。假设,dut先接收到lldp报文4、再接收到lldp报文6、再接收到lldp报文5。1)dut接收到lldp报文4为例:当dut通过接口a501接收到lldp报文4时,可获取lldp报文4中的vmaddr字段记载的vm52的地址。然后dut可检测目的地址为vm52、出接口为a501的转发表项(即表501第五行转发表项)是否有效。在本例中,由于表501第五行转发表项被设置了有效,dut可进一步检查lldp报文4的dci/e字段的取值。由于lldp报文4中的dci/e字段的取值为0,dut可确定vm52不在ed51所属的数据中心2中。dut可获取lldp报文4中的dstip字段记载的ip地址(即2.0.0.2)。然后,dut可向ed51、ed52和ed53分别发送目的地址为2.0.0.2的arp请求报文2。ed51和ed52在接收到arp请求报文后,由于2.0.0.2所指示的端口不在ed51和ed52上,所以ed51和ed52均不回应针对该arp请求报文2的arp响应报文2。ed53在接收到该arp请求报文后,由于2.0.0.2所指示的端口在ed53上,所以ed53向dut回应针对该arp请求报文2的arp应答报文2。当dut在发送arp请求报文2的预设时长内接收到ed53发送的arp应答报文2后,可确定dut与2.0.0.2所指示的端口所在ed(即ed53)直连,此时,dut在针对vm52的多个等价转发表项(即表501中的第五行至第七行转发表项)中,将出接口为本设备接收该lldp报文4的接口(即接口a501)的转发表项进行无效设置,即将表501中的第五行转发表项进行无效设置。2)dut接收到lldp报文6当dut通过接口a521接收到lldp报文6时,可获取lldp报文6中的vmaddr字段记载的vm52的地址。然后dut可检测目的地址为vm52、出接口为a521的转发表项(即表501第七行转发表项)是否有效。在本例中,由于表501第七行转发表项被设置了有效,dut可进一步并检查lldp报文4的dci/e字段的取值。由于lldp报文6中的dci/e字段的取值为0,dut可确定vm52不在ed53所属的数据中心3中。dut可获取lldp报文4中的dstip字段记载的ip地址(即4.0.0.2)。然后,dut可向ed51、ed52和ed53分别发送目的地址为4.0.0.2的arp请求报文3。ed51、ed52和ed53在接收到arp请求报文后,由于4.0.0.2所指示的端口均不在ed51、ed52和ed53上,所以ed51、ed52和ed53均不回应针对该arp请求报文3的arp响应报文3。当dut在发送arp请求报文3的预设时长内没有接收到任何一个ed发送的arp应答报文3后,可确定dut与4.0.0.2所指示的端口所在ed(即ed54)不直连。此时,dut在针对vm52的多个等价转发表项(即表501中的第五行至第七行转发表项)中,保持出接口为本设备接收该lldp报文6的接口(即接口a521)的转发表项的有效设置,即将表501中的第七行转发表项的有效设置,并将出接口为a511的转发表项进行无效设置(即将表501中的第六行转发表项进行无效设置)3)针对dut接收到lldp报文5当dut通过接口a511接收到lldp报文5时,可获取lldp报文5中的vmaddr字段记载的vm52的地址。然后dut可检测目的地址为vm52、出接口为a521的转发表项(即表501第六行转发表项)是否有效。在本例中,由于表501第六行转发表项已经在上述接收到lldp报文6时被设置了无效,所以dut可不处理lldp报文5。实施例3:当vm51从ed52所属的数据中心2迁移到ed53所属的数据中心3时,vm51可向ed52和/或ed53发送rarp报文,当ed52和/或ed53接收到vm51发送的rarp报文后,可确定vm51发生跨数据中心迁移。ed52和/或ed53可向dut发送迁移通告报文,该迁移通告报文中携带有vm51的地址。当dut接收到该迁移通告报文后,可查找目的地址是vm51地址的多个等价转发表项,并对多个等价转发表项进行有效设置。本申请还提供了与上述路径选择方法对应的路径选择装置。参见图6,图6是本公开一示例性实施例示出的一种路径选择装置的框图。图6所示的装置可应用在网络设备上,所述网络设备与多个邻居ed相连,所述多个邻居ed中的任意两个邻居ed之间通过dci隧道相连,所述装置包括:发送单元601,用于向邻居ed发送针对目标vm的报文;所述针对目标vm的报文为目的地址是目标vm地址的报文;第一检测单元602,用于接收邻居ed发送的携带有所述目标vm地址的通告报文,并依据所述通告报文检测所述目标vm是否在所述邻居ed所属数据中心中;所述通告报文还携带有目标dci隧道的目的地址;其中,所述邻居ed通过该目标dci隧道转发针对所述目标vm的报文;第二检测单元603,用于若所述目标vm不在所述邻居ed所属数据中心中,则检测所述目标dci隧道的目的地址所指示的ed是否与本网络设备直连;设置单元604,用于若所述目标dci隧道的目的地址所指示的ed与本网络设备直连,则在针对所述目标vm的多个等价转发表中,将出接口为目标接口的转发表项进行无效设置;其中,所述目标接口为接收该通告报文的接口。可选的,所述设置单元604,还用于若所述目标dci隧道的目的地址所指示的ed不与本网络设备直连,则在针对所述目标vm的多个等价转发表中,保留出接口为目标接口的转发表项的有效设置;若所述目标vm在所述邻居ed所属数据中心中,则在针对所述目标vm的多个等价转发表中,保留出接口为目标接口的转发表项的有效设置。可选的,所述第二检测单元603,向与本网络设备直连的所有ed发送目标arp请求报文;所述目标arp请求报文的目的地址为所述目标dci隧道的目的地址;若在发送目标arp请求报文后的预设时长内接收到针对该目标arp请求报文的arp响应报文,则确定目标dci隧道的目的地址所指示的ed与本网络设备直连;若在发送目标arp请求报文后的预设时长内未接收到针对该目标arp请求报文的arp响应报文,则确定目标dci隧道的目的地址所指示的ed不与本网络设备直连。可选的,第一检测单元602,用于当确定目的地址为所述目标vm、出接口为目标接口的转发表项有效时,依据所述通告报文检测所述目标vm是否在所述邻居ed所属数据中心中;在所述保留出接口为接收该通告报文的接口的转发表项的有效设置之后,所述方法还包括:将出接口不是该目标接口的转发表项进行无效设置。可选的,所述设置单元604,还用于接收所述邻居ed发送的针对所述vm的迁移通告报文;所述迁移通告报文携带有该vm地址,所述迁移通告报文用于指示所述vm跨数据中心迁移;在已记录的转发表中,查找目的地址为该vm地址的所有等价转发表项,并将所有等价转发表项进行有效设置。参见图7,图7是本公开一示例性实施例示出的一种网络设备的硬件结构图。该网络设备包括:通信接口701、处理器702、机器可读存储介质703和总线704;其中,通信接口701、处理器702和机器可读存储介质703通过总线704完成相互间的通信。处理器702通过读取并执行机器可读存储介质703中与路径选择控制逻辑对应的机器可执行指令,可执行上文描述的路径选择方法。本文中提到的机器可读存储介质703可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:易失存储器、非易失性存储器或者类似的存储介质。具体地,机器可读存储介质703可以是ram(radomaccessmemory,随机存取存储器)、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。参见图8,图8是本公开一示例性实施例示出的另一种路径选择装置的框图。该装置可应用在ed设备上,所述ed与网络设备相连,所述ed还与其他ed通过dci隧道相连,所述网络设备与所述其他ed相连,所述装置包括:接收单元801,用于接收到网络设备发送的针对目标vm的报文;所述针对目标vm的报文为目的地址是目标vm地址的报文;检测单元802,用于检测该目标vm是否在本ed所属数据中心中;构造单元803,用于若否,则确定本ed用于转发所述报文的目标dci隧道的目的地址,并基于该目标vm地址、所述目标dci隧道的目的地址,构造用于指示该目标vm不在本ed所属数据中心的第一通告报文,并将第一通告报文发送给所述网络设备。可选的,所述构造单元803,还用于若是,则基于所述目标vm地址,构造用于指示该vm在本ed所属数据中心的第二通告报文,并将第二通告报文发送给所述网络设备。可选的,所述检测单元802,具体用于基于本地记录的与所述报文匹配的转发表项和arp表项,确定用于转发所述报文的隧道口;若确定出的隧道口为vxlan隧道口,则确定目标vm在本ed所属数据中心;若确定出的隧道口为dci隧道口,则确定目标vm不在本ed所属数据中心。可选的,所述接收单元801,还用于接收到所述vm发送的用于指示该虚拟机跨数据中心的迁移报文;所述装置还包括:发送单元804,用于向所述网络设备发送携带有该vm地址的迁移通告报文。参见图9,图9是本公开一示例性实施例示出的一种ed设备的硬件结构图。该ed设备包括:通信接口901、处理器902、机器可读存储介质903和总线904;其中,通信接口901、处理器902和机器可读存储介质903通过总线904完成相互间的通信。处理器902通过读取并执行机器可读存储介质903中与路径选择控制逻辑对应的机器可执行指令,可执行上文描述的路径选择方法。本文中提到的机器可读存储介质903可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:易失存储器、非易失性存储器或者类似的存储介质。具体地,机器可读存储介质903可以是ram(radomaccessmemory,随机存取存储器)、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。以上所述仅为本公开的较佳实施例而已,并不用以限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开保护的范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1