《云数据中心网络与SDN:技术架构与实现》——1.14.3 控制信令的设计

举报
华章计算机 发表于 2019/06/06 13:45:55 2019/06/06
【摘要】 本书摘自《云数据中心网络与SDN: 技术架构与实现》——书中第1章,第1.14.3节,作者是张晨。

1.14.3 控制信令的设计

如图1-43所示,EVPN的控制信令共分为5类,从Type 1到Type 5,分别使用了5种扩展的MP-BGP NLRI。其中,Type 2用于在设备间同步客户的MAC和主机IP,是EVPN实现的基础。Type 5用于发布IP前缀。Type 3实现了设备的自动发现和隧道的自动建立,以及BUM流量的处理。Type 1和Type 4主要用于解决双上联场景中引入的一些问题。下面将结合一些图例,来对这些控制信令的工作原理进行介绍。这里要说明的是,VxLAN-based EVPN还没形成RFC,各家在控制面的实现上并不完全一致,下面的图例为Juniper的实现。

image.png

图1-43 EVPN的5类控制信令

1. Type 2

Type 2用于在设备间同步Host/VM的MAC和/32的IP地址。Host/VM在上线时通常会发送DHCP和免费ARP,接入的Leaf会据此学习其MAC和/32的IP地址,形成本地的转发表和ARP表,并通过Type 2告诉其他Leaf,将目的地是该Host/VM的流量封装VxLAN发送给自己。相比于标准VxLAN采用的自学习,Type 2的使用可以有效地避免ARP跨Underlay的泛洪,Leaf还可以对ARP进行本地的代答。不过,如果Host上线后一直静默,那么就还是需要泛洪ARP来触发Type 2的同步。对于VxLAN EVPN来说,NLRI中的Ethernet Tag ID和MPLS Label都用VNI来填充,由于图1-44是single-homed的场景,因此ESI填为0。

image.png

图1-44 EVPN Type 2的消息格式

只学习到MAC地址是不够的,还需要能够维护MAC地址的状态,防止出现路由黑洞。尤其是在云环境中,虚拟机的迁移是常有的事情,因此必须要解决好MAC地址移动的问题。标准VxLAN使用的是自学习,MAC地址的维护主要有两种方式:①Host移动后通过广播免费ARP对Leaf上的转发表进行更新;②如果Host移动后静默,那么就等待Leaf转发表超时后再来重新学习。上述的第一种方式需要跨Underlay泛洪免费ARP,第二种方式的收敛会很慢,某些Leaf还可能会成为收敛的死角。EVPN使用了MP-BGP去主动维护MAC地址,只要有一个交换机学习到了新的MAC地址,就能在全局范围对其进行同步,避免了ARP泛洪和局部交换机无法收敛的问题。

全局同步中时序的问题很重要,EVPN为Type 2引入了SEQ,解决了时序上的问题。来看图1-45的场景:最开始H1接在L1下面,L1发布H1的地址时指定SEQ=0,L2和L4都学习到了SEQ=0的消息。H1第一次的迁移是从L1到L2,此时L2发现H1,更新本地H1的信息,然后发布H1的地址并指定SEQ=1。L4很快学习到了这个SEQ=1消息,对H1的信息进行了更新,不过由于网络延迟的原因L1还没有学习到这个消息。还没等L1学习到这个消息,H1就立即从L2迁移到了L4上。L4发现H1,更新本地H1的信息,然后发布H1的地址并指定SEQ=2。L2很快就学习到了这个SEQ=2的消息,意识到H1已经不在本地了,于是发布一个Withdraw消息来删除L1和L4上SEQ=1的H1信息。L1陆续收到了L4发布的SEQ=2的消息以及L2发布的SEQ=1的Withdraw消息,得知H1已经不在本地了,于是根据最新版的SEQ=2更新本地H1的信息,并发布Withdraw消息来撤销L2和L4上SEQ=0的H1信息。此时,L2很早之前发布的SEQ=1的消息终于到达了L1,但是L1上现在H1 MAC的SEQ之前已经被更新到了2,因此L1判定该消息已经过期了,就不再做任何的处理。

2.分布式路由机制

二层说完了来说三层。从以太网的传统实现来讲,三层的转发都是集中式完成的,汇聚层的三层交换机上会配好所有VLAN的SVI,以实现Inter-VLAN的路由。EVPN设计Type 2时既携带了MAC又携带了/32的IP,这种设计的初衷是方便Leaf做ARP代答,以避免ARP的泛洪。既然带上了IP,那么Leaf就具备了直接为Overlay做三层转发的可能,以实现L3的分布式转发。对于Overlay的场景来说,用Leaf做分布式网关还需要解决下面三个问题。

1)如何识别出Overlay的三层流量。EVPN规定网关使用任播MAC地址,对于所有的L2,其默认网关都要求使用该任播MAC地址,Leaf上都会预先配好这个MAC地址和所有L2的SVI,Leaf在看到这个MAC地址后就会跳到L3转发的流程上去做路由了。

2)如何选择端到端的路由模型。用术语来说,EVPN是一种IRB(Integrated Routing and Bridging)的技术方案,IRB的路由模型分为对称和不对称两种。不对称IRB中,只有接入侧的Leaf上会做路由,路由的结果是直接跳进目的host/VM所在L2,目的侧的Leaf只做L2转发就好了。不对称IRB要求各个Leaf上有所有L2的信息,会造成硬件资源的浪费。在对称IRB中,接入侧的Leaf做路由的结果是先跳到一个中继的L2,目的侧的Leaf会再做一次路由,从中继的L2路由到目的host/VM所在L2。对称IRB虽然多做了一次路由,但是Leaf不需要了解目的host/VM所在L2的转发信息,可以大大地节约硬件资源。对于VxLAN EVPN而言,对称IRB的实现通常需要为一个路由域使用一个L3 VNI(或者也可以将这个L3 VNI看作那个中继L2的VNI),进行L3转发时就使用这个L3 VNI在Leaf间进行传输。

3)芯片要支持VxLAN Routing。VxLAN Routing需要为Overlay和Underlay做两次IP路由,这通常意味着Recirculation,如果Leaf的芯片不支持VxLAN Routing,那么就没有办法在Leaf上实现分布式L3转发。这时就仍然需要使用集中式路由的方式了,或者通过Spine或者通过额外的路由设备。

image.png

图1-45 EVPN使用SEQ来维护控制信令的时序

3. Type 5

由于EVPN对IRB的实现,因此无法简单地将EVPN归为L2VPN或者L3VPN。Type 2的局限在于只能携带/32的IP地址,而不会对IP地址进行聚合。因此,有提案提出通过Type 5来为EVPN增加宣告网段的能力,主要面向DCI中PE和CE跑IGP的场景。在数据中心内部,虚拟机IP较为分散,不宜进行聚合,因此,Type 5通常只用来注入Internet路由。

4. Type 3

EVPN通过Type 3来处理BUM流量。EVPN Type 3的消息格式如图1-46所示,NLRI后面跟着一个PMSI Attribute,PMSI Attribute中的tunnel类型指定了BUM流量的处理方式,EVPN既能够支持Ingress Replication,也可以支持Underlay Replication。如果采用Ingress Replication的方式来处理BUM流量,那么就需要在Leaf间进行水平分割——当一个Leaf收到另一个Leaf发来的BUM流量时,不允许它再将流量复制给任何其他的Leaf,以避免形成环路。

另外,Type 3的另一个作用是完成VNI成员的自动发现以及隧道的自动建立。对于VxLAN EVPN来说,Type 3的NLRI里Ethernet Tag ID和PMSI里的MPLS Label都填为VNI(VLAN based方式下填0)。如果PMSI中的tunnel type指定为Ingress Replication,那么就需要为每个VNI维护对应的头端复制表;如果tunnel type属于Underlay Replication,那么不同的VNI则可以选择对Underlay组播树进行复用。

5. Type 1

实际上,只要有了Type 2和Type 3就可以把流量跑通了。不过如果需要做multi-homed,那么事情就要复杂得多了。前面简单地提了一下ES和ESI,ES是指为Host做multi-homed时的一个Port Group,这个Port Group使用ESI去标识,ESI必须是全局唯一的。属于同一个ES的不同Leaf是对等的关系,它们中的任意一个都可以作为该Host路由的下一跳。为此,EVPN设计了Type 1以实现Leaf间的负载均衡。

image.png

图1-46 EVPN Type 3的消息格式

图1-47是EVPN Type 1的消息格式。在LS2和LS3上配置了ES后,它们会向LS1发送Type 1的消息,填充ESI字段以宣告自己所在的ES,Ethernet Tag ID填为保留的MAX-ET(全F)。LS1收到LS2和LS3的Type 1之后,就会知道LS2和LS3是同一个ES中的对等体,发往这个ES的流量可以通过LS2和LS3进行负载均衡。

LS2在向LS1发送H2的Type 2的时候,会对NLRI中的ESI字段进行填充,LS1会将H2的路由与对应的ES关联在一起。既然H2在这个ES下面,LS1进而得知一定也可以通过LS3路由到H2。因此,即使LS3没有向LS1发送Type 2宣告H2(比如H2的免费ARP被LAG分布到了LS2,而LS3并没有收到这个免费ARP),LS1在处理发往H2的流量时也可以在LS2和LS3间进行负载均衡。EVPN将这个机制称为Aliasing。

Type 1还有一个妙用是路由的快速收敛。在图1-48的场景中,LS2和LS3所在的ES下面挂着100个VM,如果LS3接入ES的链路断掉了,它就需要向LS1发送Type 2的Withdraw消息来撤销相关VM的路由。由于MP-BGP在发送Withdraw消息的时候一次只能撤销一条路由,因此LS3就需要发送100条Withdraw,这会严重影响收敛的速度。EVPN设计了一种叫作Mass Withdraw的机制,LS3在探测到接入ES的链路断掉后,会发送Withdraw消息直接撤销LS1上和该ES关联的所有路由,从而大大加快了收敛的速度。

image.png

图1-47 EVPN Type 1的消息格式

image.png

图1-48 EVPN的Aliasing机制

6. Type 4

Multi-homed的引入使得BUM流量的处理也变得复杂起来,尤其是在Type 3指定了ingress replication方式的情况下。图1-50中的H1~H4属于同一个广播域,其中H3双上联到PE2和PE3。此时H1发出了一个广播包,于是PE1将该广播包复制给PE2和PE3,PE2和PE3收到后在分别在本地进行泛洪,于是H3就收到了两个相同的包。

image.png

图1-49 EVPN的Mass Withdraw机制

image.png

图1-50 EVPN要解决的Duplicate Packets问题

EVPN通过Type 4解决了这个问题,如图1-51所示。属于同一个ES的Leaf会交互Type 4信息,目的是选举出一个DF(Designated Forwarder),只有DF才能够处理BUM流量,非DF见到BUM流量则直接丢弃,以防出现上述Duplicate Packets的问题。为了实现Leaf间的负载均衡,一个ES下面不同的VLAN会选举出不同的DF。

上述就是EVPN的主要技术特性。作为Inter-DC和Intra-DC的多面手,EVPN可以实现端到端的Overlay控制,DC Edge要通过背靠背在不同封装之间进行切换,如Intra-DC的VxLAN和Inter-DC的MPLS,实现EVPN Stitching,如图1-52所示。如果选择用VxLAN为Inter-DC做Internet OTT,那么就变成了端到端的VxLAN EVPN,可以经过Leaf将VxLAN转VLAN,然后再从Edge上转VxLAN,或者直接在Leaf/Edge上做VxLAN stitching。

image.png

图1-51 EVPN Type 4的消息格式

image.png

图1-52 EVPN Stitching


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。