逻辑路由器的制造方法_5

文档序号:9916910阅读:来源:国知局
02内被正确地转发一次。该分组然后到达MPRE 2312并且被MPRE 2312的LIF B 2332处理。
[0191] 在操作"3"中,MPRE 2312利用在其地址解析表中的信息将IP地址10.1.3.2解析为 用于VM 2322的"MAC4",并且将数据分组发送到VM 2322JPRE 2312还利用通用VMAC替代物 理主机2309的源MAC地址"MAC7"。
[0192] 图26b示出了在标记为"4"、"5"和"6"的三个操作中数据分组从物理主机2309到VM 2321的路由。在操作"4"中,物理主机2309通过物理网络将分组发送到操作指定MPRE 2312 的主机2302。这个分组去往在段A中的、具有IP地址10.1.1.1的虚拟机2321。该分组基于在 解析表2349中的条目被寻址到L2MAC地址"PMAC2",它是指定MPRE 2312的唯一物理MAC地 址。值得注意的是,目的地VM 2321是在具有其自己的MPRE 2311的主机机器2301上。但是, 物理主机2309仍然首先将分组发送到MPRE 2312,因为它是用于物理主机的指定的实例,而 不是MPRE 2311。分组通过物理网络到达主机2302的上行链路模块2352。
[0193] 在操作"5"中,上行链路模块2352将唯一 "PMAC2"改变为通用VMAC,以便分组一旦 在主机2302内就能够被正确地转发一次。该分组然后到达MPRE 2312并且被MPRE 2312的 LIF B 2332处理。
[0194] 在操作"6"中,MPRE 2312将IP地址10.1.1.1解析为用于VM2321的"MAC1"并且通过 利用其LIF A 2335将数据分组发送到VM 2321。路由的分组指示源MAC地址是指定的MPRE 2312的"PMAC2"。由于MPRE 2312和目的地VM 2321在不同的主机机器上,因此在分组到达VM 2321之前,分组实际上被发送通过主机2302上的MPSE、然后物理网络、并且然后主机2301上 的MPSE。
[0195] 如以上参考图25和26所讨论的,对从虚拟机到物理主机的数据流量的路由由各个 MPRE执行,而从物理主机到虚拟机的数据流量必须经过指定的MPRE。换句话说,到物理主机 的网络流量是点对点的,而来自物理主机的网络流量是分布的。虽然在图23-20的逻辑网络 2300中没有示出,但是在一些实施例中逻辑网络的实现可以具有多个非-VDR物理主机。在 一些实施例中,这些非-VDR物理主机每个在其中一个主机机器中具有对应的指定的MPRE。 在一些实施例中,特定的MPRE将用作用于非-VDR物理主机中的一些或全部的指定的实例。 例如,一些实施例指定特定的MPRE用于特定段上的所有物理主机。
[0196] 对于一些实施例,图27概念性地示出了用于处理来自非-VDR物理主机的L3层流量 的过程2700。在一些实施例中,过程2700由在主机机器上运行的虚拟化软件内的MPRE模块 执行。在一些实施例中,这一过程在图26a-b所示的操作期间由MPRE 2311和2312执行。
[0197] 过程2700在当主机接收到需要L3路由的数据分组(即,来自网络的一个段但是要 去往网络的另一个段的分组)时开始。过程2700确定(在2710处)分组是否来自非-MPRE物理 主机。在一些实施例中,MPRE通过针对物理主机及其IP地址的列表检查在数据分组中的IP 地址做出该确定。在一些实施例中,这种列表是来自网络的控制器的一组配置数据的一部 分。如果分组不是来自已知的物理主机,则该过程前进到2740。
[0198] 在2720处,该过程确定MPRE是否是为发送数据分组的物理主机指定的实例。在一 些实施例中,每个MPRE通过网络控制器进行配置,并且MPRE中的一些被配置为用于物理主 机的指定实例。在这些实施例中的一些实施例中的MPRE将检查其自己的配置数据,以查看 它是否是用于如在数据分组中指示的物理主机的指定实例。在一些其它实施例中,每个 MPRE通过例如散列物理主机和其自己的唯一标识符(例如,IP地址)在本地确定它是否是用 于所指示物理主机的指定的实例。如果MPRE不是用于特定物理主机的指定的实例,则该过 程忽略(在2725处)来自物理主机的数据分组并且结束。否则,该过程前进到2730。
[0199] 在2730处,该过程确定到来数据分组是否是ARP查询。如果是,则该过程利用MPRE 的唯一物理MAC应答(在2735处)ARP查询并且结束(例如,如通过图24中的MPRE 2312执行 的)。否则,该过程前进到2740。
[0200] 在2740处,该过程通过例如将目的地的L3IP地址解析为其L2MAC地址(或者通过发 出ARP查询或者通过利用来自其解析表中存储的ARP结果)对数据分组执行L3路由。该过程 然后基于解析的目的地MAC地址将路由的数据分组转发(在2750处)到目的地虚拟机。如果 目的地VM与MPRE在同一主机机器上,则数据分组将通过主机上的MPSE被转发到VM。如果目 的地VM在不同的主机上,则数据分组将通过物理网络转发到另一个主机。在转发分组之后, 过程2700结束。
[0201] 对于一些实施例,图28概念性地示出了用于处理到非-VDR物理主机的L3流量(即, 从与执行该过程的MPRE相同的主机上的VM接收到的)的过程2800。在一些实施例中,这一过 程是在图25示出的操作期间由MPRE 2311和2312执行的。
[0202] 过程2800在当主机接收到需要L3路由的数据分组时开始。过程2800确定(在2810 处)分组是否去往非-VDR物理主机。如果分组不是去往这种物理主机,则该过程前进到 2840。如果分组是去往这种物理主机,则该过程前进到2820。
[0203]在2820处,该过程确定MPRE是否是用于数据分组被发送到其的物理主机的指定的 实例(例如,基于物理主机是其一部分的段)。如果是,则该过程前进到2825。如果MPRE不是 指定的实例,则该过程前进到2830。
[0204]在2830处,该过程请求指定的实例并且从它获得地址解析信息。在一些实施例中, 这是通过利用UDP信道发送请求消息到指定的实例并且在应答消息中接收地址解析信息来 实现的。在一些实施例中,不是指定的实例的MPRE不存储用于物理主机的地址解析信息,并 且对于发送到物理主机的每个分组通过UDP信道发送请求。在其它实施例中,在接收到地址 解析信息之后,MPRE存储这一信息用于在路由将来的分组时使用。
[0205]在2825处,该过程确定,作为指定的实例,它是否能够解析用于该物理主机的地 址。在一些实施例中,该过程检查其自己的ARP表以查看是否存在用于该物理主机的匹配的 条目。如果该过程能够解析该地址,则该过程前进到2840。否则,该过程执行(在2835处)对 物理主机的地址的ARP请求,并且在ARP应答时更新其ARP表。在一些实施例中,只有指定的 实例保留用于物理主机的路由信息。该过程然后前进到2840。
[0206] 在2840处,该过程通过例如将物理主机的IP地址解析为其MAC地址对数据分组执 行L3路由。无论MPRE是否是用于在数据分组中指示的物理主机的指定的实例,该过程都还 将源MAC地址设置为MPRE的唯一PMAC。该过程然后基于解析的目的地MAC地址将路由的数据 分组转发(在2850处)到物理主机。在转发分组之后,过程2800结束。
[0207] D.利用VDR作为不同覆盖网络之间的桥
[0208] 在一些实施例中,在主机机器中操作的LRE不仅执行L3路由(例如,从一个IP子网 到另一个IP子网),而且还在同一子网内的不同覆盖网络之间(诸如在VXLAN网络和VLAN网 络之间)进行桥接。在一些实施例中,两个不同的覆盖网络有可能具有在同一IP子网中的 VM。在这些情况下,不使用L3路由将数据分组从一个覆盖网络发送到另一个覆盖网络。相 反,转发依赖于基于网络段标识符(例如,VNI,或其相关联的逻辑接口)和链路层地址(例 如,MAC地址)之间的绑定或配对的桥接。
[0209]在一些实施例中,在主机机器中的至少一个本地LRE具体实例被配置为桥接MPRE 而不是配置为路由MPRE。桥接MPRE是包括配置用于桥接而不是用于路由的逻辑接口的 MPRE。配置用于路由的逻辑接口(路由LIF)通过将IP解析为MAC地址执行逻辑网络的不同段 之间的L3路由。配置用于桥接的逻辑接口(桥接LIF)通过将MAC地址与网络段标识符(例如, VNI)或逻辑接口绑定并且当把分组从一个网络段发送到另一个网络段时修改分组的网络 段标识符来执行桥接。
[0210]图29示出了包括用于用作不同覆盖网络之间的桥的桥LIF的LRE 2900ARE 2900 的逻辑接口2901-2904被配置为桥LIF。具体而言,桥LIF 2901用于获知和桥接在覆盖网络 "VLAN10"中的MAC地址,桥LIF 2902用于获知和桥接在覆盖网络"VLAN20"中的MAC地址,桥 LIF 2901用于获知和桥接在覆盖网络"VXLAN100"中的MAC地址,并且桥LIF 2901用于获知 和桥接在覆盖网络"VXLAN200"中的MAC地址。如所示出的,在不同覆盖网络中的至少一些VM 是在相同的IP子网"192.168.1. X"中。
[0211] 图30示出了包括桥LIF和路由LIF两者的逻辑网络3000的实现。如所示出的,逻辑 网络3000包括多个主机机器3001-3009,每个主机机器操作LRE的分布式实例。LRE具有用于 与VLAN10、VLAN20、VXLAN100和VXLAN200接口的逻辑接口。因为在主机3001和3003中的本地 LRE实例只具有路由LIF,因此LRE在那些主机机器中操作为路由MPRE 3011和3013。作为对 照,因为主机3002的所有逻辑接口都被配置为桥LIF,因此LRE在主机3002中操作为桥接 MPRE 3012。虽然没有被示出,但是在一些实施例中,在主机机器中操作的本地LRE实例(即, MPRE)可以具有B-LIF和R-LIF两者并且因此既充当桥接MPRE又充当路由MPRE。因此,在这种 主机机器上的VM仍然可以通过其本地MPRE将分组发送到在其它IP子网中的目的地。
[0212] 在一些实施例中,本地LRE实例被配置为只在一个主机机器中充当桥接MPRE(即, 只具有桥LIF)。在一些实施例中,多个主机机器具有其配置为桥接MPRE的本地LRE实例。在 一些实施例中,具有一组桥LIF的桥接MPRE还具有至少一个路由LIF,用于路由去向和来自 桥LIF的数据分组。在一些实施例中,具有桥LIF的LRE实例还具有用于路由的沉淀的LIF (sedimented LIF,S-LIF),它与其它LIF不同,不是分布的,而是只在逻辑网络中的一个主 机中活动。要被S-LIF路由的任何分组将被发送到具有活动S-LIF的主机机器。
[0213] 在一些实施例中,桥接MPRE获知它们首先在其上看到特定MAC地址的逻辑接口(或 相关联的网络段标识符),并且在桥接表(或获知表)中将那个逻辑接口与MAC地址相关联。 当桥随后接收具有与其桥接表中的条目匹配的目的地MAC地址的数据帧或分组时,它在由 桥接表中匹配的条目所指示的逻辑接口上将帧发送出。在一些实施例中,如果桥还没有看 见用于分组的目的地MAC地址,则它将分组泛洪到除了在其上接收到数据分组的逻辑接口 之外的所有活动逻辑接口上。当把分组发送出到特定的桥接接口上时,一些实施例的桥接 MPRE修改分组,以具有用于相关联的网络段的适当的网络段标识符(例如,8-位VLAN标记、 24位VXLAN ID、MPLS标签,等等)。在一些实施例中,桥接表的内容可以从一个主机传送到另 一个主机,使得在具有桥接MPRE的主机发生故障的情况下,网络的控制器可以迅速地指定 在另一个主机机器中运行的MPRE用作桥接MPRE。
[0214] 图31示出了通过桥接MPRE获知MAC地址。如所示出的,主机3100具有MPSE 3120和 桥接MPRE 3130,其中MPSE 3120具有与VM 3111-3114接口的端口。MPSE 3120具有连接到物 理NIC3190和物理网络的上行链路(未示出)。桥接MPRE 3130具有分别用于覆盖网络 "VLAN10"、"VLAN20"、"VXLAN100" 和"VXLAN200" 的桥LIF 3141-3144。
[0215]与只接受寻址到通用VMAC的分组的路由LIF不同,桥LIF将获知它在与MPSE的端口 上看见的任何MAC地址。在一些实施例中,MPSE将把交换机不知道如何转发的任何数据分组 发送到软件桥,诸如具有在源MAC地址的网络段或覆盖网络中不能找到的目的地MAC地址的 分组。这种数据分组被发送到用于桥接的桥接MPRE,并且桥接MPRE将获知与源MAC地址相关 联的网络段标识符或逻辑接口。
[0216]图31以三个操作"1"、"2"和"3"示出了这种获知过程。在操作"Γ期间,具有源地址 "1^0200"和1乂1^^200"的源¥祖(这里使用¥祖来表示任何网络段标识符)的分组3170正在 从物理NIC 3190被发送到VM 3112。这个分组也具有在与VXLAN200不同的网络段上的目的 地地址,并且因此交换机3120将分组转发到用于桥接的桥接MPRE 3130。 [0217]在操作"2"中,桥接|〇^3130看到分组并且获知其源1^地址("1^200")及其网 络标识符("VXLAN200")。在一些实施例中,使用用于与网络"VXLAN200"接口的逻辑接口 3144来获知分组的MAC地址和VNI。在操作"3"中,获知的MAC地址和VNI的配对被存储在桥接 表3150的条目中。桥接表3150已获知"MAC20"与VNI"VLAN20"的配对。虽然没有被示出,但是 桥接MPRE 3130也将这个分组连同用于MAC地址的适当网络段标识符发送出到正确的桥接 LIF。如在随后的三个图中所描述的,如果桥接MPRE 3130的桥接表知道这个目的地MAC与其 中一个桥LIF之间的绑定,则该桥LIF将修改分组以包括正确的VNI,然后将分组发送出到识 别出的LIF上。否则,如下面参考图34所描述的,桥将泛洪LIF来执行L2获知。
[0218] 图32示出了利用由主机3100和桥接MPRE 3120先前获知的MAC-VNI配对在两个不 同的覆盖网络上的两个VM之间桥接。该图以三个操作"1"、"2"和"3"示出了这种桥接过程。 在操作"Γ期间,VM 3113从覆盖网络"VLAN10"发送具有目的地地址"MAC20"的分组,但是 "MAC20"不是可以在覆盖网络"VLAN 10"中找到的地址,并且因此该分组被发送到桥BDR 3130。在操作"2"期间,用于VLAN10的桥LIF 3141接收分组并且在桥接表3150中查找用于 MAC地址"MAC20"的条目,其中先前已获知"MAC20"与VNI"VLAN20"相关联。因此,在操作"3" 期间,桥LIF 3142(与VNI"VLAN20"相关联)将分组发送出到在VLAN20中并且具有MAC地址 "MAC20"的VM 3111中。为了执行这两个LIF之间的桥接,一些实施例的桥接MPRE 3130首先 剥离用于VLAN10的VNI(即,用于这个VLAN的VLAN标记),并且然后添加用于VLAN20的VNI (即,用于这个VLAN的VLAN标记)。在一些实施例中,桥接MPRE 3130接收作为来自控制器集 群的配置数据的一部分的、关于如何剥离和为不同覆盖网络添加 VNI的指令。
[0219] 图33示出了在两个VM之间的桥接,这两个VM不在操作桥接MPRE 3130的主机3100 中操作。如所提到的,在一些实施例中,不是每个主机机器都使其LRE实例配置为桥。在这些 实施例中的一些实施例中,桥接MPRE提供在其它主机机器中的两个远程VM之间,或者本地 VM(即,VM 3111-3114之一)和在另一个主机机器中的远程VM之间的桥接功能。
[0220] 该图以三个操作"Γ、"2"和"3"示出了这种桥接过程。在操作"Γ中,主机3100通过 物理NIC 3190从远程VM接收分组。该分组来自覆盖网络"V)(LAN 10 0"具有目的地地址 "MAC200",但是"MAC200"不是可以在覆盖网络"VXLAN100"中找到的地址。在操作"2"期间, 用于VXLAN100的桥LIF 3143接收分组并且在桥接表3150中查找用于MAC地址"MAC200"的条 目,其中先前已获知"MAC200"与VNI"VXLAN200"相关联。在操作"3"期间,桥LIF 3144(与VNI "VXLAN200"相关联)将数据分组发送到物理网络前往在覆盖网络"VXLAN200"中具有MAC地 址"MAC200"的远程VM。为了执行这两个LIF之间的桥接,一些实施例的桥接MPRE 3130首先 剥离用于VXLAN100的VNI(即,24-位VXLAN ID),并且然后添加用于VXLAN200的VNI(即,24_ 位VXLAN ID)。
[0221] 在这两种情况下(图32和33),虽然没有被示出,但是到来分组将具有源MAC地址。 如在图31中所示,一些实施例的桥接MPRE 3130将存储这些源地址与到来LIF的绑定。即,在 图32中的分组的源地址将在桥接表中存储为绑定到VLAN10LIF,并且在图33中的分组的源 地址将在桥接表中被存储为绑定到VXLAN100LIF。
[0222]图32和33示出了其中桥接对已被预先获知并且可以在桥接表中找到的例子。图 34a示出了其中目的地MAC地址在桥接表中没有匹配的条目并且桥接MPRE 3130将泛洪网络 以寻找配对的桥接操作。该图以五个操作"Γ、"2"、"3"、"4"和"5"示出了这种桥接过程。
[0223] 在操作"Γ中,主机3100通过物理NIC 3190接收来自远程VM的分组。该分组来自覆 盖网络"VLAN10"具有目的地地址"MAC300",但是"MAC300"不是可以在覆盖网络"VXLAN100" 中找到的地址,并且因此该分组需要桥接到正确的覆盖网络。该分组也有VLAN10上的VM的 "MAC400"的源地址。
[0224] 在操作"2"期间,用于VLAN10的桥LIF 3141接收分组并且在桥接表3150中查找用 于MAC地址"MAC300"的条目,但是不能找到匹配的对(即,桥接MPRE 3130还没有获知MAC300 被绑定到的VNI)。此外,虽然没有被示出,但是"MAC400"到VLAN10的绑定被存储。因此,在操 作"3"中,桥接|0^3130通过将数据分组(仍然具有目的地地址"麻0300")发送到除¥1^10 之外的所有VNI泛洪所有其它的桥LIF(3142-3144)。MPSE 3120然后负责在覆盖网络内的标 准L2操作,以便使分组到达其正确的目的地。
[0225] 在操作"4"中,利用不同VNI泛洪的数据分组到达在主机机器3100上操作的VM,并 且在操作"5"中,利用不同VNI泛洪的数据分组经由用于其它主机机器的物理NIC被发送出 去。在一些实施例中,MPSE 3120将分组泛洪到正确的覆盖网络上的所有VM。如果MPSE 3120 知道MAC300的目的地,则它可以将分组发送到这个已知的目的地。此外,虽然用于所有三个 覆盖网络的分组被示为被发送到物理网络上,但是在一些实施例中,MPSE将丢弃目的地地 址不位于其上的两个分组。
[0226] 图34b示出了从对泛洪的响应获知MAC地址配对。该图以三个操作"Γ、"2"和"3"示 出了这种响应和获知过程。在操作T中,来自具有用于"VXLAN100"的VNI的"MAC300"的响 应到达主机机器3100。在一些实施例中,当VM将分组发送回到在VLAN10上的原始分组的源 "MAC400"时,这种响应来自具有MAC地址"MAC300"的VM或其它机器。
[0227] 在操作"2"中,数据分组进入桥接MPRE 3130并且被用于"VXLAN100"的桥LIF 3143 接收到。在操作"4"中,桥接MPRE3130利用将"MAC300"与"VXLAN100"绑定的条目更新桥接表 3150,并且将分组桥接到VLAN10。从这时开始,桥接MPRE 3130可以桥接去往"MAC300"的数 据分组,而无需求助于泛洪。
[0228] 对于一些实施例,图35概念性地示出了用于在采用VDR的逻辑网络处执行桥接的 过程3500。在一些实施例中,该过程由具有桥LIF的MPRE(即,桥接MPRE)执行。过程3500在当 桥接MPRE通过它与MPSE的端口接收到分组时开始。这个分组将具有不与其当前VNI匹配的 目的地MAC地址,并且因此被发送到桥。该过程确定(在3505处)分组是否具有桥接MPRE以前 从未见过的源MAC地址(即,该源MAC地址是否在其桥接表中被存储为绑定到特定的接口)。 如果是,则该过程前进到3510。如果桥接MPRE以前已看见过该源MAC地址,则该过程前进到 3520〇
[0229] 在3510处,该过程利用将源MAC地址与桥接MPRE从中接收到数据分组的覆盖网络 (或网络段)的VNI(即,当分组被桥接MPRE接收到时该分组利用其进行标记的VNI)配对的新 条目更新其桥接表。由于源MAC确定是在由VNI识别的网络段中,因此该信息对于桥接具有 与它们的目的地地址相同的MAC地址的未来分组是有用的。该信息被存储在桥接表中,以提 供这个MAC地址与其VNI之间的配对。
[0230]该过程然后确定(在3520处)用于目的地MAC地址的条目是否可以在其桥接表中找 到。当桥接MPRE先前已桥接来自这个MAC地址的分组时,该地址应该在其表中被存储为MAC: VNI配对(除非桥接MPRE超时)。
[0231] 如果目的地地址不在桥接表中,则该过程泛洪(在3530处)除了从中接收到数据分 组的覆盖网络的桥LIF之外的所有桥LIF。在一些实施例中,该过程通过将相同的数据分组 发送到承载不同VNI,但具有相同目的地MAC地址的不同覆盖网络泛洪所有的桥LIF。假设分 组到达其目的地,则桥接MPRE将可能接收到来自目的地的应答分组,在那时,过程3500的另 一个具体实例将会使桥接MPRE获知该MAC:VNT配对(在3505处)。
[0232] 当目的地地址在桥接表中时,该过程通过利用用于目的地MAC的VNI将分组桥接 (在3550处)到其目的地。这个VNI-MAC配对在桥接表中被找到,并且在一些实施例中,LIF配 置包括关于如何执行桥接(即,如何将VNI附加到分组)的指令。在将分组桥接到其目的地接 口之后(或者在泛洪的情况下,桥接到所有的LIF之后),过程3500结束。
[0233] III.VDR的控制和配置
[0234] 在一些实施例中,如上所述在主机机器中本地操作为MPRE(或者用于路由和/或用
当前第5页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1