vxlan及evpn,evpn路由类型

ps:摘自华为文档

BGP网络设计

当在规划部署BGP路由协议时,摆在我们面前的首要问题便是选择使用IBGP还是EBGP方式,虽然两者之间的差异可能看起来很小,但就是这些细微的差异可能导致数据中心在部署时的重大变化。IBGP与EBGP两者之间的最大区别在于它们使用自治系统的方式,现在我们将通过比较IBGP与EBGP的差异来看每台交换机是如何分配路由前缀以及通告路由的。

IBGP

在IBGP(Internal/Interior BGP)中,Spine和Leaf的所有交换机位于单个AS之下,如图6-6所示。 在BGP中,我们需要在IBGP对等体之间建立全连接(Full-mesh)关系来保证IBGP对等体之间的连通性。为什么IBGP要强调全连接概念呢,那是由于IBGP的防环机制导致的。IBGP强制规定ibgp speaker不允许将从一个IBGP邻居学习到的前缀传递给其它IBGP邻居,因此IBGP要求逻辑全连接。但假设在一个AS内部有n台路由器,那么应该建立的IBGP连接数就为n(n-1)/2。当IBGP对等体数目很多时,对网络资源和CPU资源的消耗都很大,在IBGP对等体间使用BGP联盟或者路由反射器都可以解决以上问题。

图6-6 IBGP图示

联盟将一个AS划分为若干个子AS。每个子AS内部建立IBGP全连接关系,子AS之间建立联盟EBGP连接关系,但联盟外部AS仍认为联盟是一个AS。配置联盟后,原AS号将作为每个路由器的联盟ID。这样有两个好处:一是可以保留原有的IBGP属性,包括Local Preference属性、MED属性和NEXT_HOP属性等;二是联盟相关的属性在传出联盟时会自动被删除,即管理员无需在联盟的出口处配置过滤子AS号等信息的操作。

路由反射器是IBGP路由器,它将重新向其他IBGP路由器通告路由。如图6-7所示,在一个AS内部关于路由反射器有以下几种角色:

图6-7 路由反射器示意图
  • 路由反射器RR(Route Reflector):允许把从IBGP对等体学到的路由反射到其他IBGP对等体的BGP设备,类似OSPF网络中的DR。
  • 客户机(Client):与RR形成反射邻居关系的IBGP设备。在AS内部客户机只需要与RR直连。
  • 非客户机(Non-Client):既不是RR也不是客户机的IBGP设备。在AS内部非客户机与RR之间,以及所有的非客户机之间仍然必须建立全连接关系。
  • 始发者(Originator):在AS内部始发路由的设备。Originator_ID属性用于防止集群内产生路由环路。
  • 集群(Cluster):路由反射器及其客户机的集合。Cluster_List属性用于防止集群间产生路由环路。

这可以通过创建IBGP路由器集群,并将其与反射器连接起来。同一集群内的客户机只需要与该集群的RR直接交换路由信息,因此客户机只需要与RR之间建立IBGP连接,不需要与其他客户机建立IBGP连接,从而减少了IBGP连接数量。但问题随之而来,反射器并不会发送每一条路线,它只会选择发送最优的路径给它的对等体。当你有在Spine层面有多台交换机,且在Spine与Leaf之间存在多条链路时,链路冗余、利用率低的问题就出现了。为了解决这个问题,我们可以在BGP路由反射器上启用BGP负载分担功能,这样就可以向Leaf交换机通告存在四条等长的路由,可以通过等价多路径来分发流量。

我们从配置、设备连接和应用方面对BGP联盟和路由反射器进行了比较,如表6-1所示:

表6-1 路由反射器和BGP联盟比较

路由反射器

BGP联盟

不需要更改现有的网络拓扑,兼容性好。

需要改变逻辑拓扑。

配置方便,只需要对作为反射器的设备进行配置,客户机并不需要知道自己是客户机。

所有设备需要重新进行配置。

集群与集群之间仍然需要全连接。

联盟的子AS之间是特殊的EBGP连接,不需要全连接。

EBGP

在EBGP(External/Exterior BGP)中,Spine和Leaf中的每个交换机都有自己的AS,如图6-8所示。与IBGP的路由环路的避免措施不一样,EBGP没有水平分割的概念,EBGP对路由环路的避免是通过AS_PATH属性来实现的。AS_Path属性按矢量顺序记录了某条路由从本地到目的地址所要经过的所有AS编号。在接收路由时,设备如果发现AS_Path列表中有本AS号,则不接收该路由,从而避免了AS间的路由环路。

由前面章节的讨论可知,IBGP不需要IBGP邻居之间有物理连接,只需要逻辑连接即可,而EBGP在一般情况下都要求EBGP邻居之间存在物理连接。

唯一的问题是使用IP Fabric网络的AS数量,每台交换机都有自己的BGP自治系统号,BGP的私有范围为64512~65535,其中有1023个BGP自治系统号。 如果您的IP Fabric网络大于1023台交换机,则需要考虑进入公共的BGP自治系统号码范围(不建议在数据中心内部使用),或移动到私有的四字节AS号规划。CE系列交换机支持4字节私有AS号,4字节私有AS号范围是4200000000~4294967295(或者64086.59904~65535.65535)。

图6-8 EBGP图示

BGP在数据中心网络架构中的应用

下面就让我们将BGP路由协议与具体的网络架构场景联系起来。在场景DC1中有五排机架,都采用Spine+Leaf网络架构。 我们推荐使用EBGP建立VXLAN的Underlay网络,每行都使用EBGP的情况下设计将如图6-9所示,在Spine和Leaf层的每台交换机都有自己的AS号码。

图6-9 DC1场景中运行EBGP图示

对于场景DC2,我们采用的是EOR交换机部署,EBGP的设计如图6-10所示。

图6-10 DC2场景中运行EBGP图示

同样,如DC1场景图示所展现的一样,您可以将AS65000和65001用于第一行,然后为每个设备AS号递增加1。 如果您选择IBGP实施方法(通常在DC内用于VXLAN overlay路由的交换),设计将会变得非常简单,因为您只需将所有设备分配给同一AS号,覆盖整个DC1,你可以对DC2采用相同的方法,如图6-11图6-12所示。

图6-11 DC1场景中运行IBGP图示
图6-12 DC2场景中运行IBGP图示

Overlay介绍

图7-1所示,Overlay网络是将已有的物理网络(Underlay网络)作为基础,在其上建立叠加的逻辑网络,实现网络资源的虚拟化。

图7-1 Overlay网络概念图

Overlay网络是建立在已有物理网络上的虚拟网络,具有独立的控制和转发平面,对于连接到Overlay的终端设备(例如服务器)来说,物理网络是透明的,从而可以实现承载网络和业务网络的分离。

为什么需要Overlay网络?

作为云计算核心技术之一的“服务器虚拟化”已经被数据中心普遍应用。随着企业业务的发展,虚拟机数量的快速增长和虚拟机迁移已成为一个常态性业务。由此也给传统网络带来了以下一些问题:

  • 虚拟机规模受网络规格限制

    在传统二层网络环境下,数据报文是通过查询MAC地址表进行二层转发,而网络设备MAC地址表的容量限制了虚拟机的数量。

  • 网络隔离能力限制

    当前主流的网络隔离技术是VLAN,由于IEEE 802.1Q中定义的VLAN ID只有12比特,仅能表示4096个VLAN,无法满足大二层网络中标识大量租户或租户群的需求。

  • 虚拟机迁移范围受网络架构限制

    为了保证虚拟机迁移过程中业务不中断,则需要保证虚拟机的IP地址、MAC地址等参数保持不变,这就要求业务网络是一个二层网络,且要求网络本身具备多路径的冗余备份和可靠性。传统的STP、设备虚拟化等技术只适用于中小规模的网络。

针对上述问题,为了满足云计算虚拟化的网络能力需求,逐步演化出了Overlay网络技术。

  • 针对虚拟机规模受网络规格限制

    虚拟机发出的数据包封装在IP数据包中,对网络只表现为封装后的网络参数。因此,极大降低了大二层网络对MAC地址规格的需求。

  • 针对网络隔离能力限制

    Overlay技术扩展了隔离标识的位数(24比特),极大扩展了隔离数量。

  • 针对虚拟机迁移范围受网络架构限制

    Overlay将以太报文封装在IP报文之上,通过路由在网络中传输。通过路由网络,虚拟机迁移不受网络架构限制。而且路由网络具备良好的扩展能力、故障自愈能力、负载均衡能力。

Overlay技术有多种,例如VXLAN、NVGRE、STT等,其中VXLAN是目前获得最广泛支持的Overlay技术。

VXLAN

VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网),是由IETF定义的NVO3(Network Virtualization over Layer 3)标准技术之一,采用MAC-in-UDP的报文封装模式,如图7-2所示,原始报文在VXLAN接入点(被称为VTEP)加上VXLAN帧头后再被封装在UDP报头中,并使用承载网络的IP/MAC地址作为外层头进行封装,承载网络只需要按照普通的二三层转发流程进行转发即可。

图7-2 VXLAN报文格式

以VXLAN技术为基础的Overlay网络架构模型如所示。

图7-3 VXLAN网络模型
  • VTEP(VXLAN Tunnel Endpoints,VXLAN隧道端点)

    VXLAN网络的边缘设备,是VXLAN隧道的起点和终点,进行VXLAN报文的封装、解封装等处理。VTEP既可以部署在网络设备上(网络接入交换机),也可以部署在vSwitch上(服务器上的虚拟交换机)。

  • VNI(VXLAN Network Identifier,VXLAN 网络标识符)

    VNI是一种类似于VLAN ID的网络标识,用来标识VXLAN二层网络。一个VNI代表一个VXLAN段,不同VXLAN段的虚拟机不能直接二层相互通信。

  • VXLAN隧道

    两个VTEP之间建立的逻辑隧道,用于传输VXLAN报文。业务报文在进入VXLAN隧道式进行VXLAN、UDP、IP头封装,然后通过三层转发透明地将报文转发给远端VTEP,远端VTEP对报文进行解封装处理。

VXLAN报文转发过程

下面以同网段的VM间相通简单介绍VXLAN网络中的报文转发过程。

图7-4 VXLAN报文转发过程示意图
  1. VM1发送目的地址为VM2的报文。
  2. VTEP1收到该报文后进行VXLAN封装,封装的外层目的IP为VTEP2。封装后的报文,根据外层MAC和IP信息,在IP网络中进行传输,直至到达对端VTEP2。
  3. VTEP2收到报文后,对报文进行解封装,得到VM1发送的原始报文,然后将其转发至VM2。

二层MAC学习及BUM报文转发

在VXLAN网络中,同子网虚拟机的互通是通过查找MAC表进行转发。如下图所示,VM1给VM2发送报文时,经过VTEP1转发,VTEP1上需要学习到VM2的MAC地址。

最初的VXLAN标准并没有定义控制平面,VTEP之间无法传递学习到的主机MAC地址。但是VXLAN有着与传统以太网非常相似的MAC学习机制,当VTEP接收到VXLAN报文后,会记录源VTEP的IP、虚拟机MAC和VNI到本地MAC表中,这样当VTEP接收到目的MAC为此虚拟机的MAC时,就可以进行VXLAN封装并转发。

图7-5 MAC学习示意图

以VTEP2学习到VM1的MAC过程为例:

  1. VM1发送目的地址为VM2的报文。
  2. VTEP1接收到报文后,进行VXLAN封装,并将其转发至VTEP2。同时,VTEP1可以学习到VM1的MAC地址、VNI、入接口。
  3. VTEP2接收到报文后,对报文进行解封装。同时,VTEP2可以学习到VM1的MAC地址、VNI、入接口(为VTEP1)。

经过上述流程,VTEP1和VTEP2可以学习到VM1的MAC地址。VTEP1和VTEP2学习到VM2的MAC地址过程与之类似。

BUM报文转发

前面描述的报文转发过程都是已知单播报文转发,如果VTEP收到一个未知地址的BUM报文(广播、组播、未知单播)如何处理呢。与传统以太网BUM报文转发类似,VTEP会通过泛洪的方式转发流量。

图7-6 BUM报文转发示意图

以上图中VM1想向VM2发送报文为例,因为VM1不知道VM2的MAC地址,所以会发送ARP广播报文请求VM2的MAC地址。

  1. VM1发送ARP广播请求,请求VM2的MAC地址。
  2. VTEP1收到ARP请求后,因为是广播报文,VTEP1会在该VNI内查找所有的隧道列表,依据获取的隧道列表进行报文封装后,向所有隧道发送报文,从而将报文转发至同子网的VTEP2和VTEP3。
  3. VTEP2和VTEP3接收到报文后,进行解封装,得到VM1发送的原始ARP报文,然后转发至VM2和VM3。
  4. VM2和VM3接收到ARP请求后,比较报文中的目的IP地址是否为本机的IP地址。VM3发现目的IP不是本机IP,故将报文丢弃;VM2发现目的IP是本机IP,则对ARP请求做出应答。

    由于此时VM2上已经学习到了VM1的MAC地址,所以ARP应答报文为已知单播报文,转发流程与前文描述的一致,此处不在赘述。

  5. VM1收到VM2的ARP应答后,就可以学习到VM2的MAC地址。后续的转发流程同已知单播转发流程一致。
 

EVPN介绍

最初的VXLAN方案(RFC7348)中没有定义控制平面,是手工配置VXLAN隧道,然后通过流量泛洪的方式进行主机地址的学习。这种方式实现上较为简单,但是会导致网络中存在很多泛洪流量、网络扩展起来困难。

为了解决上述问题,VXLAN引入了EVPN(Ethernet VPN)作为VXLAN的控制平面。EVPN参考了BGP/MPLS IP VPN的机制,通过扩展BGP协议新定义了几种BGP EVPN路由,通过在网络中发布路由来实现VTEP的自动发现、主机地址学习。

采用EVPN作为控制平面具有以下一些优势:

  • 可实现VTEP自动发现、VXLAN隧道自动建立,从而降低网络部署、扩展的难度。
  • EVPN可以同时发布二层MAC和三层路由信息。
  • 可以减少网络中泛洪流量。

BGP EVPN路由类型

传统的BGP-4使用Update报文在对等体之间交换路由信息。一条Update报文可以通告一类具有相同路径属性的可达路由,这些路由放在NLRI(Network Layer Reachable Information,网络层可达信息)字段中。

因为BGP-4只能管理IPv4单播路由信息,为了提供对多种网络层协议的支持(例如IPv6、组播),发展出了MP-BGP(MultiProtocol BGP)。MP-BGP在BGP-4基础上对NLRI作了新扩展。玄机就在于新扩展的NLRI上,扩展之后的NLRI增加了地址族的描述,可以用来区分不同的网络层协议,例如IPv6单播地址族、VPN实例地址族等。

类似的,EVPN在L2VPN地址族下定义了新的子地址族——EVPN地址族,并新增了一种NLRI,即EVPN NLRI。EVPN NLRI定义了以下几种BGP EVPN路由类型,通过在EVPN对等体之间发布这些路由,就可以实现VXLAN隧道的自动建立、主机地址的学习。

  • Type2路由——MAC/IP路由:用来通告主机MAC地址、主机ARP和主机路由信息。
  • Type3路由——Inclusive Multicast路由:用于VTEP的自动发现和VXLAN隧道的动态建立。
  • Type5路由——IP前缀路由:用于通告引入的外部路由,也可以通告主机路由信息。

EVPN路由在发布时,会携带RD(Route Distinguisher,路由标识符)和VPN Target(也称为Route Target)。RD用来区分不同的VXLAN EVPN路由。VPN Target是一种BGP扩展团体属性,用于控制EVPN路由的发布与接收。也就是说,VPN Target定义了本端的EVPN路由可以被哪些对端所接收,以及本端是否接收对端发来的EVPN路由。

 

Type2类型路由

Type2类型路由中NLRI格式如下:

图8-1 Type2类型路由中NLRI格式

图8-1可以看出,Type2类型路由中携带有主机MAC、主机IP信息,因此Type2类型路由可以用于发布主机MAC,还可以发布主机IP地址。

图8-2 Type2类型路由发布MAC地址示意图

图8-2所示,Leaf1接收到Host1发送的报文后,会学习到Host1的MAC地址。Leaf1学习到Host1的MAC后,会生成Type2类型的路由发送给Leaf2,该路由会携带EVPN实例的ERT、Host1的MAC地址、Leaf1的VTEP IP等信息。

Leaf2收到Leaf1发送来的路由后,根据路由中的ERT是否与本端EVPN实例的IRT相同来决定是否接收该路由。如果相同,则接收该路由,Leaf2可以学习到Host1的MAC地址;如果不同,则丢弃路由。

 

Type3类型路由

Type3类型路由中NLRI格式如下:

图8-3 Type3类型路由中NLRI格式

Type3类型路由中主要携带有VTEP IP信息,主要用于VTEP的自动发现和VXLAN隧道的动态建立。

图8-4 Type3类型路由建立VXLAN隧道示意图

图8-4所示,在Leaf1和Leaf2之间建立BGP EVPN对等体后,Leaf1会生成Type3类型的路由发送给Leaf2。该路由中会携带本端VTEP IP地址、VNI,EVPN实例的ERT等信息。

Leaf2收到Leaf1发送来的路由后,根据路由中的ERT是否与本端EVPN实例的IRT相同来决定是否接收该路由。如果相同,则接收该路由,建立一条到对端的VXLAN隧道。同时,如果对端VNI与本端相同,则创建一个头端复制表,用于后续广播、组播、未知单播报文的转发。

 

Type5类型路由

Type5类型路由中NLRI格式如下:

图8-5 Type5类型路由中NLRI格式

Type5类型路由携带路由信息,主要用于发布路由。与Type2类型路由不同的是,Type5类型路由既可以发布32位主机路由,也可以发布网段路由。

图8-6 Type5类型路由发布路由示意图

Type5类型路由可以将本地其他协议的私网路由(例如静态路由、直连路由、其他路由协议路由)发布到其他EVPN网络中,在远端生成相应的主机/网段路由。所以Type5类型路由可以实现VXLAN网络主机访问外部非VXLAN网络。

 
posted @ 2020-12-10 00:59  abel2020  阅读(4182)  评论(0编辑  收藏  举报