逻辑路由器的制造方法_3

文档序号:9916910阅读:来源:国知局
地址(VMAC)来寻址。这在本文被称为虚拟MAC地址(VMAChVMAC允许特定 逻辑网络中的所有MPRE对于虚拟机和对于逻辑网络的用户(例如,网络管理员)看起来是一 个连续的逻辑路由器。
[0116] 但是,在一些实施例中,MPRE有必要彼此、与其它主机机器、或者与在其它主机机 器中的网络元件(例如,在其它主机机器中的MPRE和/或VM)通信。在这些实施例中的一些实 施例中,除了 VMAC之外,每个MPRE可通过来自在物理网络上的其它主机机器的物理MAC (PMAC)地址唯一地寻址。在一些实施例中,用于寻址MPRE的这种唯一PMAC地址是分配给操 作MPRE的主机机器的属性。由于MPRE可在其自己的逻辑网络内通过其主机机器的PMAC唯一 地寻址,因此一些实施例将主机机器的这种唯一 PMAC称为MPRE的唯一 PMAC。在一些实施例 中,由于用于不同租户的不同逻辑网络在主机机器内彼此安全地隔离,因此用于在同一主 机机器上操作的不同租户的不同MPRE都可以使用那个主机机器的同一 PMAC地址(以便可从 其它主机机器寻址)。在一些实施例中,不仅每个MPRE与它的主机机器的PMAC相关联,而且 每个逻辑接口与被称为LMAC的、其自己的唯一 MAC地址相关联。
[0117] 在一些实施例中,每个离开MPRE的分组具有MPRE的VMAC作为源地址,但是在分组 进入PNIC和离开主机到物理网络之前,主机机器将把源地址改变为主机机器的唯一 PMAC。 在一些实施例中,进入MPRE的每个分组必须具有MPRE的VMAC作为其目的地地址。对于从物 理网络到达主机的分组,如果目的地地址是主机机器的唯一PMAC地址,则主机将把目的地 MAC地址改变为通用的VMAC。在一些实施例中,主机机器的PMAC被实现为其上行链路模块的 属性(例如,370 ),并且是上行链路模块将外出分组的源MAC地址从通用VMAC改变为其唯一 PMAC和将到来分组的目的地地址从其唯一PMAC改变为通用VMAC。
[0118] 图12示出了用于一些实施例的、具有可通过共用VMAC和唯一 PMAC寻址的MPRE的逻 辑网络1200。如所示出的,逻辑网络1200包括两个不同的主机机器1201和1202。主机机器 1201包括MPRE 121UMPSE 1221和若干个虚拟机1231。主机机器1202包括MPRE 1212、MPSE 1222和若干个虚拟机1232。这两个主机机器通过物理网络1290互连。MPSE 1222通过PNIC 1282和上行链路模块1242从物理主机接收数据。
[0119] 在主机 1201 中的 MPRE 1211 可由 VM 1231 通过利用 VMAC 地址 12:34:56:78:90:ab 来 寻址。在主机1202中的MPRE 1212也可由VM 1232通过相同的VMAC地址12:34:56:78:90 :ab 来寻址,即使MPRE 1211和MPRE 1212是在不同主机机器中的不同MPRE(对于同一 LRE来说)。 虽然没有被示出,但是在一些实施例中,在不同逻辑网络中用于不同租户的MPRE也可以使 用相同的VMAC地址。
[0120] MPRE 1211和MPRE 1212中的每个也可被其它主机机器中的其它网络实体通过其 自己的唯一PMAC地址从物理网络中寻址。如所示出的,MPRE 1211与其自己的唯一PMAC地址 11:11:11:11:11:11(PMAC1)相关联,而MPRE 1212与其自己的唯一PMAC地址22:22:22: 22: 22:22(PMAC2)相关联。
[0121] 图12还示出了发送到另一个主机机器上的远程MPRE的数据流量的例子。与MPRE不 同,远程MPRE不能直接通过用于从物理网络到来的分组的通用VMAC来寻址。在远程主机中 的MPRE只能通过那个远程MPRE的唯一 PMAC地址来寻址。在远程主机上运行的虚拟化软件在 一些实施例中在执行L2交换之前将唯一 PMAC地址改变回到通用VMAC地址。
[0122] 图12示出了在四个标记为"1"、"2"、"3"和"4"的操作中从主机1201中的MPRE 1211 到主机1202中的MPRE 1212的流量。在操作"Γ中,VM 1231利用通用VMAC地址将分组发送到 其MPRE 1211。这个分组也将具有对应于该流量的期望目的地的目的地IP地址(未示出)。在 操作"2"中,主机1201的MPRE 1211通过利用MPRE 1212的唯一物理MAC"PMAC2"作为目的地 地址将分组发送到主机1202的MPRE 1212。为了执行这一转换,在一些实施例中,MPRE 1211 将在其ARP表中查找(或执行ARP)来识别对应于目的地IP地址的目的地MAC地址(PMAC2)。
[0123] 在操作"3"中,数据分组已通过其物理NIC到达主机1202并且到达上行链路模块 1242(在主机1202上运行的虚拟化软件的一部分)。上行链路模块1242又将MPRE 1212的唯 一PMAC( "PMAC2")转换为通用VMAC作为目的地地址。在操作"4"中,数据分组到达MPSE 1222,其基于通用VMAC将分组转发到MPRE 1212。
[0124] 图13示出了使用用于网络1200的共用VMAC和唯一 PMAC从一个VM到另一个VM路由 的L3网络流量的例子。该网络流量是源自主机机器1201中的VM 1331并且去往主机机器 1202中的VM1332的数据分组。该示例路由的L3流量在标记为T至"4"的四个操作中示出。 在操作"Γ期间,具有链路层L2地址"MAC1"的VM 1331通过利用MPRE的共用VMAC作为目的地 地址将数据分组发送到MPRE 1211。在操作"2"期间,MPRE 1211通过将目的地IP地址解析为 用于具有链路层L2地址"MAC2"的目的地VM的目的地MAC地址来执行L3层路由。MPRE 1211还 利用其自己的唯一物理链路层地址"PMAC1"(11:11:11:11:11:11)替代VM1331的MAC地址 "MAC1"作为源MAC地址。在操作"3"中,路由的分组到达MPSE 1222,其根据目的地MAC地址 "MAC 2"将数据分组转发到目的地VM 1232。在操作"4"中,数据分组到达目的地虚拟机 1232。在一些实施例中,当唯一PMAC是源地址时,没有必要将唯一PMAC(在这种情况下, "PMAC1")改变为通用VMAC,这是因为VM 1332忽略标准(非ARP)数据流量的源MAC地址。
[0125] 如所提到的,上行链路模块是对从PNIC到MPSE的到来数据执行预处理和对从MPSE 到PNIC的外出数据执行后处理的模块。图14概念性地示出了用于通过上行链路模块(诸如 1242)执行的预处理操作的过程1400。在一些实施例中,过程1400的操作被实现为从PNIC进 入主机机器的入口管道。
[0126] 当该过程从PNIC(即,从外部物理网络)接收(在1410处)分组时,该过程开始。如果 数据是用于诸如VXLAN或VLAN的覆盖网络,则该过程执行(在1420处)覆盖网络处理。当在远 程主机上的VM向在同一VXLAN网络中但是在这个主机上的VM发送数据分组时,该过程将在 让分组通过MPSE被转发到VM之前使分组去封装。通过执行这个操作,上行链路模块允许主 机用作用于VXLAN的隧道端点(例如,VTEP)。
[0127] 接下来,该过程确定(在1430处)在到来数据分组中的目的地MAC是否是唯一物理 MAC(PMAC)。在一些实施例中,唯一PMAC地址用于将数据分组定向到特定的主机,但是不能 用来将分组发送到主机的MPRE中(因为MPSE将用于MPRE的端口与VMAC而不是PMAC相关联)。 如果目的地MAC是唯一PMAC,则该过程前进到1445。否则,该过程进行到1435。
[0128] 在1435处,该过程确定在到来数据分组中的目的地MAC是否是广播MAC(例如,ff: ff: ff: ff: ff: ff)。在一些实施例中,主机将接受广播MAC,但是一些广播分组必须首先被 MPRE处理,而不是被发送到连接到MPSE的每个VM。如果目的地MAC是广播MAC,则该过程前进 到1440查看是否广播分组需要到MPRE。否则该过程前进到1450,以允许分组到MPSE而无需 改变目的地MAC。
[0129] 在1440处,该过程确定具有广播MAC的分组是否需要被转发到MPRE。在一些实施例 中,只有某些类型的广播消息是MPRE感兴趣的,并且只有这些类型的广播消息需要把其广 播MAC地址改变为通用VMAC。例如,广播ARP查询消息是MPRE是感兴趣的并且将通过把其目 的地MAC地址改变为VMAC而被转发到MPRE。如果广播分组是MPRE感兴趣的,则该过程前进到 1445。否则该过程前进到1450。
[0130] 在1445处,该过程用通用VMAC替换目的地MAC(或者PMAC或广播),这确保具有这些 目的地MAC的分组将被MPRE处理。该过程然后前进到1450,以允许分组带着被改变的目的地 MAC前进到MPSE。该过程1400然后结束。
[0131] 图15概念性地示出了用于通过上行链路模块执行的后处理操作的过程1500。在一 些实施例中,过程1500的操作被实现为用于通过PNIC离开主机机器的分组的出口管道。该 过程在它在上行链路模块处从MPSE接收到(在1510处)分组时启动。该过程然后确定(在 1520处)分组是否要去远程主机。如果分组的目的地地址指示在本地主机机器内的端口(例 如,MPRE或其中一个VM),则该过程忽略分组并且结束。否则,该过程前进到1530。
[0132] 在1530处,该过程确定源MAC地址是否是通用VMAC,即,分组是否来自MPRE。如果 是,则该过程前进到1540。否则,该过程前进到1550。在1540处,该过程用MPRE的唯一 PMAC替 换VMAC作为源MAC地址。这确保分组的接收者将能够通过利用其唯一 PMAC地址正确地识别 发送者MPRE。
[0133] 如果数据要去诸如VXLAN或VLAN的覆盖网络,则该过程然后执行(在1550处)覆盖 网络处理。当主机上的VM将数据分组发送到在同一 VXLAN网络但是在不同主机上的另一个 VM时,该过程将在把帧注入到物理网络之前利用VXLAN网络的VNI封装帧。通过执行这一操 作,上行链路模块允许主机用作VXLAN(VTEP)下的隧道端点。接下来,该过程将分组转发(在 1560处)到物理NIC。该过程1500然后结束。
[0134] B.利用VDR执行地址解析
[0135] 如所提到的,每个LRE具有一组用于与每个网络段中的虚拟机接口的逻辑接口。在 一些实施例中,从虚拟机的角度看,网络段的逻辑接口也用作网络段中的虚拟机的缺省网 关。由于LRE操作在每个主机机器中的MPRE,因此,在一些实施例中,为它其中一个逻辑接口 接收ARP查询(诸如用于缺省网关的ARP)的MPRE在本地响应查询而不将该查询转发到其它 主机机器。
[0136] 图16示出了用于在逻辑网络1600中的VDR/LRE MPRE的逻辑接口的ARP查询操作。 逻辑网络1600跨至少两个主机机器1601和1602分布。主机机器1601具有MPRE 1611并且主 机机器1602具有MPRE 1612。每个MPRE具有用于逻辑网络的段A的逻辑接口(LIF A)和用于 段B的逻辑接口(LIF BhWPRE 1611 具有LIF A 1621 和LIF B 1631;MPRE 1612具有LIF A 1622和LIF B1632)。主机机器1601具有使用MPRE 1611的LIF A的段A VM1629。主机机器 1602具有使用MPRE 1612的LIF B的段B VM1639。
[0137] 每个LIF与IP地址相关联。但是,如所示出的,MPRE 1611的LIF A 1621和MPRE 1612的LIF A 1622两者都具有相同的IP地址(10.1.1.253)。这是段A的缺省网关的IP地址 (子网10.1.1.X)。类似地,MPRE 1611 的LIF B 1631 和MPRE 1612的LIF B 1632两者都具有 相同的IP地址(10.1.2.253)。这是段B的缺省网关的IP地址(子网10.1.2. X)。
[0138] 该图示出了在标记为"Γ至"6"的操作中由VM 1629和1639做出的两个ARP查询。在 操作"Γ中,段A的虚拟机1629做出对其段的缺省网关的ARP查询。该ARP查询消息使用LIF A 的IP地址(10.1.1.253)作为目的地IP和使用广播MAC作为目的地MAC地址。在操作"2"期间, LIF A 1621通过将IP地址"10.1.1.253"解析为用于所有MPRE的VMAC地址来响应ARP查询。 此外,LIF A 1621不把ARP查询消息传递到物理网络上。这防止在网络中具有与LIF A相同 IP地址"10.1.1.253"的其它实体响应,该其它实体诸如在其它主机机器中的其它VDR/LRE MPRE上的LIF A(例如,在主机机器1602上的LIF A 1622)。在操作"3"中,VM 1629接收ARPS 答消息并且更新其将缺省网关的IP地址解析为MAC地址"VMAC"的解析表。这个应答消息的 目的地MAC地址是原始询问者的MAC地址(即,用于VM 1629的"MAC1"),并且源MAC地址是新 解析的MPRE的MAC地址"VMAC" JM 1629然后将这一条目存储在其解析表中,用于后续对 MPRE 1611的访问,以便为后续发送的需要被路由的分组寻址。操作"4"、"5"和"6"是类似于 操作和"3"的操作,其中MPRE 1612的LIF B1632响应于由段B VM 1639进行的ARP请 求,而无需将ARP查询消息传递到物理网络上。虽然由VM 1639进行的ARP请求被发送到不同 MPRE上的不同LIF,但是同一地址"VMAC"被用在ARP应答中。
[0139] 一旦虚拟机知道缺省网关的MAC地址,它就可以通过利用VMAC寻址MPRE的逻辑接 口将数据分组发送到其它网络段。但是,如果MPRE不知道目的地IP地址(例如,用于目的地 虚拟机)所解析到的链路层MAC地址,则MPRE将需要解析这个地址。在一些实施例中,MPRE可 以从其它主机机器中的同一 LRE的其它MPRE或者从控制器集群获得这种地址解析信息。在 一些实施例中,MPRE可以在目的地虚拟机的网络段中发起其自己的ARP查询来确定它的MAC 地址。当做出这种ARP请求时,MPRE使用它自己的唯一PMAC地址,而不是通用VMAC地址作为 用于发送到去往其它MPRE的物理网络上的分组的源地址。
[0140] 图17示出了 一些实施例的MPRE发起的ARP查询。具体而言,该图示出了逻辑网络 1700的实现,其中MPRE使用其自己的PMAC地址用于发起其自己的ARP查询。如所示出的,逻 辑网络1700的实现包括至少两个主机机器1701和1702。驻留在主机机器1701上的是在段A 中的VM 1731、具有用于段A的逻辑接口 1721的MPRE 1711、以及用于从物理网络接收数据的 上行链路模块1741。驻留在主机机器1702上的是在段B中的VM 1732、具有用于段B的逻辑接 口 1722的MPRE 1712、以及用于从物理网络接收数据的上行链路模块1742。除了通用VMAC之 外,MPRE 1711具有唯一物理MAC地址" PMAC1",并且MPRE 1712具有唯一物理MAC地址 "PMAC2"。
[0141] 在标记为"Γ至"8"的操作中,该图示出了由来自主机1701的MPRE 1711发起对于 段B中的VM 1732的ARP查询。在操作"Γ期间,具有IP地址10.1.1.1的VM 1731(在段A中)发 送分组到目的地网络层地址10.1.2.1(在段B中),这需要通过其MPRE1711进行的L3路由。VM 1731已知道其缺省网关的L2链路层地址是"VMAC"(例如,从先前的ARP查询得知)并且因此 它通过利用VMAC将数据分组直接发送到MPRE 1711,这是因为目的地IP是在另一个段中。
[0142] 在操作"2"期间,MPRE 1711确定它不具有用于目的地VM1732的L2链路层地址(例 如,通过检查它的地址解析表得知),并且因此发起对目的地ΙΡ"1〇. 1.2. Γ的ARP查询。这个 ARP查询使用MPRE 1711的唯一物理MAC地址("PMAC1")作为源MAC地址和使用广播MAC地址 作为目的地MAC JPRE 1711还对分组执行L3路由,以确定目的地IP"10.1.2. Γ是在段B中, 并且它因此将源IP改变为"10.1.2.253"( 即,LIF B的IP地址)。这个广播ARP消息穿过物理 网络到达主机1702。在一些实施例中,如果逻辑网络跨越附加的主机(即,具有附加的本地 LRE具体实例作为MPRE的附加主机),则ARP消息也将被发送到这些其它主机。
[0143] 在操作"3"期间,广播ARP查询到达运行在主机1702上的上行链路模块1742,其又 用对所有MPRE通用的"VMAC"替换广播MAC地址("ffffffffffff"),使得在主机1702中的 MPSE将把ARP查询分组转发到MPRE 1712。但是,对发送者MPRE 1711唯一的源地址"PMAC1" 保留在修改的ARP查询中。
[0144] 在操作"4"期间,因为主机1702的MPRE 1712看到VMAC是目的地地址,因此它接收 ARP查询。MPRE 1712不能解析目的地IP地址10.1.2.1,因此它又通过LIF B 1722将该ARP查 询作为广播(目的地"ffffffffffff")转发到段B上的主机1702的任何本地VM,包括VM 1732。该ARP查询通过用于VM 1732的出站LIF 1722(用于B段)从MPRE 1712出来。
[0145] 在操作"5"期间,具有"VMAC"作为源MAC地址的广播ARP查询到达VM 1732并且VM 1732通过LIF B 1722向MPRE1712发送对ARP查询的应答消息。在应答消息中,VM 1732指示 对应于L3网络层地址"10.1.2 . Γ的L2层链路地址是其地址"MAC2",并且应答要利用通用 獻(:地址1]\^0;'发送到请求的]\0 31^1712。]\031^1712还为"10.1.2.1"更新其自己的八1^解析 表1752,以便它将来可以充当ARP代理。
[0146] 在操作"6"期间,基于由MPRE 1712存储的、来自它对其做出响应的ARP查询的信息 (指示IP 10.1.1.253解析为MAC"PMAC1"),MPRE 1712通过利用"PMAC1"作为目的地MAC地址 将应答分组转发回给进行查询的MPRE 1711。在操作"7"期间,用于主机1702的上行链路模 块1741将唯一 "PMAC1"转换为通用"VMAC",使得在主机1701处的MPSE将把分组在本地转发 到MPRE 1711。最后,在操作"8"处,应答消息到达原始查询的MPRE 1711,其由在其自己的解 析表1751中存储用于IP地址10.1.2.1 ( 即,"MAC2")的地址解析,以便它将能够把分组从 VM1731转发到VM 1732。这时,最初由VM 1731发送的数据分组可以被路由用于交付到VM 1732并且可以朝着主机1702被发送到物理网络上。
[0147] 因为MPRE 1712自己不能为VM 1732解析地址,因此它必须继续传递ARP询问。但 是,一旦MPRE 1712接收到来自VM 1732的ARP应答,它就能够自己响应对地址10.1.2.1的后 续ARP查询,而无需必须继续传递ARP询问。图18示出了MPRE 1712在网络1700中充当用于响 应MPRE 1712能够解析的ARP询问的代理。
[0148] 图18示出了具有来自前面的图的主机1702以及另一个主机机器1703的网络1700。 在主机1702中的MPRE 1712的ARP解析表1752已经具有用于为VM 1732解析IP地址10.1.2.1 的条目。驻留在主机1703上的是在逻辑网络的段D上的VM 1733、具有用于段D的逻辑接口 1724的MPRE 1713、以及用于从物理网络接收数据的上行链路模块1743。除了通用VMAC之 外,MPRE 1713具有唯一物理MAC地址"PMAC3"。在标记为"Γ至"6"的操作中,该图示出了由 来自主机机器1703的MPRE 1713为段B中的VM 1732发起的ARP查询。
[0149] 在操作"Γ期间,具有IP地址10.1.5.1(在段D中)的VM1733发送分组到目的地网络 层地址10.1.2.1(在段B中),这需要通过其MPRE 1713进行的L3路由。VM 1733已知道其缺省 网关的L2链路层地址是"VMAC"(例如,从先前的ARP查询得知)并且因此它通过利用VMAC将 数据分组直接发送到MPRE 1713,这是因为目的地IP是在另一个段中。
[0150] 在操作"2"期间,MPRE 1713意识到它不具有用于目的地VM1732的L2链路层地址 (例如,通过检查它的地址解析表得知),并且因此发起对目的地IP"10.1.2. Γ的ARP查询。 这个ARP查询使用MPRE 1713的唯一物理MAC地址("PMAC3")作为源MAC地址和使用广播MAC 地址作为目的地MAC JPRE 1713还对分组执行L3路由,以确定目的地IP"10.1.2. Γ是在段B 中,并且它因此将源IP改变为"10.1.2.253"( 即,LIF B的IP地址)。这个广播ARP消息穿过物 理网络到达主机1702。此外,虽然没有示出,但是广播ARP消息也将到达主机1701,这是因为 这个主机具有MPRE1711。
[0151] 在操作"3"期间,广播ARP查询到达运行在主机1702上的上行链路模块1742,其又 用对所有MPRE通用的"VMAC"替换广播MAC地址("ffffffffffff"),使得在主机1702中的 MPSE将把ARP查询转发到MPRE 1712。但是,对发送者MPRE 1713唯一的源地址"PMAC3"保留 在修改的ARP查询中。
[0152] 在操作"4"期间,MPRE 1712检查其自己的解析表1752并且意识到它能够将IP地址 10.1.2.1解析到MAC2。因此,MPRE通过物理网络将ARP应答发送到目的地地址"PMAC3",而不 是将ARP查询转发到其所有段B VM。在这种情况下,在ARP应答操作中不涉及LIF B 1722和 VM 1732。
[0153] 在操作"5"期间,用于主机1703的上行链路模块1743将唯一 "PMAC3"转换为通用 "VMAC",使得在主机1703处的MPSE将把分组在本地转发到MPRE 1713。最后,在操作
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1