Copyright © 2018 新华三技术有限公司 版权所有,保留一切权利。 非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部, 并不得以任何形式传播。本文档中的信息可能变动,恕不另行通知。 |
普通聚合的链路只能够在一台设备上,只能提供链路级的保护,当设备故障以后,普通聚合将无法工作,所以需要设备级保护的技术。
DRNI(Distributed Resilient Network Interconnect,分布式弹性网络互连)作为一种跨设备链路聚合的技术,除了具备增加带宽、提高链路可靠性、负载分担的优势外,还具备以下优势:
· 更高的可靠性
把链路可靠性从单板级提高到了设备级。
· 简化组网及配置
提供了一个没有环路的二层拓扑,同时实现冗余备份,不再需要繁琐的生成树协议配置,极大地简化了组网及配置。
· 独立升级
两台设备可以分别进行升级,保证有一台设备正常工作即可,对正在运行的业务几乎没有影响。
DRNI是一种跨设备链路聚合技术,将两台物理设备在聚合层面虚拟成一台设备来实现跨设备链路聚合,从而提供设备级冗余保护和流量负载分担。
如图1所示,Device A与Device B形成负载分担,共同进行流量转发,当其中一台设备发生故障时,流量可以快速切换到另一台设备,保证业务的正常运行。
图1 DRNI网络模型示意图
DR设备在DR系统中互为邻居,其中Device A为主设备,Device B为从设备。DRNI为每个DR设备定义了以下几个接口角色:
· DR接口(Distributed Relay interface,分布式聚合接口):与外部设备相连的二层聚合接口。与外部设备上相同聚合组相连的DR接口属于同一DR组(Distributed-Relay group,分布式聚合组)。如图1所示,Device A上的二层聚合接口1和Device B上的二层聚合接口2属于同一DR组。DR组中的DR接口由多条链路聚合组成,且具有相同的DR组编号。
· IPP(Intra-Portal Port,内部控制链路端口):连接对端DR设备用于内部控制的接口。每台DR设备只有一个IPP口。IPP间的链路为IPL(Intra-Portal Link,内部控制链路),DR设备通过IPL交互协议报文及传输数据流量。一个DR系统只有一条IPL。
DR设备间通过交互DRCP报文和Keepalive报文建立和维护DR系统。在DR系统正常工作时,DR系统的主从设备负载分担共同进行流量转发。如果DR系统中出现故障(无论是接口故障、链路故障还是设备故障),DR系统都可以保证正常的业务不受影响。
如图2所示,Device A和Device B之间DR系统建立及工作过程如下:
(1) 当DR设备完成DR系统参数配置后,两端设备通过IPL链路定期发送DRCP报文。当本端收到对端的DRCP协商报文后,会判断DRCP协商报文中的DR系统配置是否和本端相同。如果两端的DR系统配置相同,则这两台设备组成DR系统。
(2) 配对成功后,两端设备会确定出主从状态。先比较DR设备角色优先级,值越小优先级越高,优先级高的为主设备。如果优先级相同,则比较两台设备的桥MAC地址,桥MAC地址较小的为主设备。主从协商后,DR设备间会进行配置一致性检查。
(3) 两端设备通过Keepalive链路周期性地发送Keepalive报文检测邻居状态。
(4) DR系统开始工作后,两端设备之间会实时同步对端的信息,例如MAC地址表项、ARP表项,这样任意一台设备故障都不会影响流量的转发,保证正常的业务不会中断。
图2 DRNI建立及工作过程示意图
DRNI通过在IPL上运行DRCP来交互分布式聚合的相关信息,以确定两台设备是否可以组成DR系统。运行该协议的设备之间通过互发DRCPDU(Distributed Relay Control Protocol Data Unit,分布式聚合控制协议数据单元)来交互分布式聚合的相关信息。
两端DR设备通过IPL链路定期交互DRCP报文。当本端DR设备收到对端DR设备的DRCP协商报文后,会判断DRCP协商报文中的DR接口编号及DRNI系统配置是否和本端相同。如果两端的DRNI系统配置均相同,则这两台设备可以组成DR系统。
DRCP超时时间是指IPP口或者DR接口等待接收DRCPDU的超时时间。在DRCP超时时间之前,如果本端IPP或者DR接口未收到来自对端DR设备的DRCPDU,则认为对端DR设备IPP口或者DR接口已经失效。
DRCP超时时间同时也决定了对端DR设备发送DRCPDU的速率。DRCP超时有短超时(3秒)和长超时(90秒)两种:
· 若本端DRCP超时时间为短超时,则对端DR设备将快速发送DRCPDU(每1秒发送1个DRCPDU)。
· 若本端DRCP超时时间为长超时,则对端DR设备将慢速发送DRCPDU(每30秒发送1个DRCPDU)。
DR设备间通过Keepalive链路检测邻居状态,即通过交互Keepalive报文来进行IPL故障时的双主检测。
如果在指定时间内,本端DR设备收到对端DR设备发送的Keepalive报文:
· 如果IPL链路状态为down,则本端和对端DR设备根据收到的Keepalive报文选举主从设备,保证DR系统中仅一台DR设备转发流量,避免两台DR设备均升级为主设备。
· 如果IPL链路状态为up,则DR系统正常工作。
如果在指定时间内,本端DR设备未收到对端DR设备发送的Keepalive报文:
· 如果IPL链路状态为down,则认为对端DR设备状态为down,此时从设备升级为主设备。
· 如果IPL链路状态为up,则认为Keepalive链路状态为down。此时主从设备正常工作,同时设备打印日志信息,提醒用户检查Keepalive链路。
IPL故障后,为了防止从设备继续转发流量,DRNI提供MAD(Multi-Active Detection,多Active检测)机制,将从设备上除DRNI保留接口和IRF保留接口以外的接口置于DRNI MAD DOWN状态。当IPL故障恢复后,为了防止丢包,从设备尽可能在延迟恢复时间内完成表项(MAC地址表、ARP表等)同步,其后该设备上处于DRNI MAD DOWN状态的接口将恢复为up状态。
将Keepalive接口设置为DRNI保留接口,避免Keepalive接口的状态变为DRNI MAD DOWN导致Keepalive链路down,从而造成错误检测。同时,如果以Tunnel接口作为IPP口,则必须将隧道出接口配置为DRNI保留接口,避免该接口的状态变为DRNI MAD DOWN,导致Tunnel处于down状态,IPL无法收发DRCP协议报文。
DR系统建立过程中会进行配置一致性检查,以确保两端DR设备配置一致,不影响DR设备转发报文。DR设备通过交换各自的配置信息,检查配置是否一致。目前DRNI支持对两种类型的配置一致性检查:
· Type 1类型配置:影响DR系统转发的配置。如果Type 1类型配置不一致,则将从设备上DR接口置为down状态。
· Type 2类型配置:仅影响业务模块的配置。如果Type 2类型配置不一致,从设备上DR接口依然为up状态,不影响DR系统正常工作。由Type 2类型配置对应的业务模块决定是否关闭该业务功能,其他业务模块不受影响。
Type 1类型配置一致性检查分为全局配置和DR接口配置。
表1 全局Type 1类型配置
配置 | 一致性检查内容 |
IPP口链路类型 | Access、Hybrid和Trunk |
IPP口的PVID | IPP口的PVID |
生成树功能 | 全局生成树功能是否开启和VLAN内生成树功能是否开启 |
生成树模式 | STP、RSTP、PVST和MSTP |
MST域相关配置 | MST域的域名、MSTP的修订级别和MSTI与VLAN的映射关系 |
表2 DR接口Type 1类型配置
配置 | 一致性检查内容 |
聚合组的工作模式 | 静态聚合组和动态聚合组 |
接口生成树功能 | 接口上的生成树功能是否开启 |
接口的链路类型 | Access、Hybrid和Trunk |
接口的PVID | DR接口的PVID |
Type 2类型配置一致性检查分为全局配置和DR接口配置。Type 2类型配置仅影响对应的业务模块。
表3 全局Type 2类型配置
配置 | 一致性检查内容 |
VLAN接口 | VLAN接口处于up状态,且IPP口加入该VLAN |
IPP口实际可以通过的携带Tag的VLAN或实际可以通过PVID | IPP口实际可以通过的携带Tag的VLAN或实际可以通过PVID |
表4 DR接口Type 2类型配置
配置 | 一致性检查内容 |
DR口实际可以通过的携带Tag的VLAN | DR口实际可以通过的携带Tag的VLAN |
DR口实际可以通过的不携带Tag的VLAN | DR口实际可以通过的不携带Tag的VLAN |
如图3所示,Device D收到来自Device A的BUM(Broadcast/Unknown unicast/Unknown Multicast,广播/未知单播/未知组播)流量后,将向相连设备转发。当流量到达Device E时,由于IPP与DR组成员接口存在单向隔离机制,到达Device E的流量不会向Device B转发。单向隔离机制是指从IPL收到的报文不再从DR接口转发。
图3 来自非DR组成员端口的BUM流量转发示意图
如图4所示,Device B发送的BUM流量会在Device D、Device E之间采用负载分担方式进行转发,此处以Device D转发为例进行说明。Device D收到BUM流量后将向相连设备转发,当流量到达Device E时,由于IPP与DR成员接口存在单向隔离机制,到达Device E的流量不会向Device B转发。
图4 来自DR组成员端口的BUM流量转发示意图
如图5所示,Device A向Device D发送单播流量,Device D按照本地转发优先原则将其转发。本地转发优先是指当接收流量的DR设备上存在对应的转发表项,则只在该设备上转发流量,不向IPL链路上转发。
图5 来自非DR组成员端口的单播流量转发示意图
如图6所示,Device D与Device E形成负载分担,共同对来自DR组成员端口的单播流量进行转发。单播流量按本地转发优先原则,避免对IPL链路造成压力。
图6 来自DR组成员端口的单播流量转发示意图
如图7所示,对于外网侧发往Device D、Device E的BUM流量,不会在Device D、Device E之间采用负载分担方式转发。以Device D为例,Device D会将外网的BUM流量发送到每一个用户侧端口,且由于IPP与DR组成员端口存在单向隔离机制,到达Device E的流量不会向Device B转发。
图7 来自外网侧的BUM流量转发示意图
如图8所示,对于外网侧发往DR组成员端口的单播流量,流量会负载分担到Device D和Device E,然后发送至Device B。
图8 来自外网侧发往DR组成员端口的单播流量转发示意图
如图9所示,对于网络侧发往非DR组成员端口的单播流量,以发往Device A为例,流量直接发到Device D,由Device D发往Device A。单播流量都按本地转发优先原则,避免对IPL链路造成压力。
图9 来自外网侧发往非DR组成员端口的单播流量转发示意图
如图10所示,某DR接口故障,来自外网侧的流量会通过IPL发送给另外一台设备,所有流量均由另外一台DR设备转发,具体过程如下:
(1) Device B的某DR接口故障,外网侧不感知,流量依然会发送给所有DR设备。
(2) Device A的相同DR接口正常,则Device B收到外网侧访问Device C的流量后,通过IPL将流量交给Device A后转发给Device C。
(3) 故障恢复后,Device B的该DR接口up,流量正常转发。
图10 DR接口故障处理机制示意图
如图11所示,IPL故障但Keepalive链路正常会导致从设备上除DRNI保留接口和IRF保留接口以外的接口处于DRNI MAD DOWN状态。主设备上的DR接口所在聚合链路状态仍为up,从设备上的DR接口所在聚合链路状态变为down,从而保证所有流量都通过主设备转发。一旦IPL故障恢复,处于DRNI MAD DOWN状态的接口经过延迟恢复时间自动恢复为up状态。
图11 IPL故障处理机制示意图
如图12所示,Device A为主设备,Device B为从设备。当主设备故障后,主设备上的聚合链路状态变为down,不再转发流量。从设备将升级为主设备,该设备上的聚合链路状态为up,流量转发状态不变,继续转发流量。主设备故障恢复后,DR系统中由从状态升级为主状态的设备仍保持主状态,故障恢复后的设备成为DR系统的从设备。
如果是从设备发生故障,DR系统的主从状态不会发生变化,从设备上的聚合链路状态变为down。主设备上的聚合链路状态为up,流量转发状态不变,继续转发流量。
上行链路故障并不会影响DR系统的转发。如图13所示,Device A上行链路虽然故障,但是外网侧的转发相关表项由Device B通过IPL同步给Device A,Device A会将访问外网侧的流量发送给Device B进行转发。而外网侧发送给Device C的流量由于接口故障,自然也不会发送给Device A处理。
上行链路故障时,如果通过Device A将访问外网侧的流量发送给Device B进行转发,会降低转发效率。此时用户可以配置Monitor Link功能,将DR组成员端口和上行端口关联起来,一旦上行链路故障了,会联动DR组成员端口状态,将其状态变为donw,提高转发效率。
EVPN(Ethernet Virtual Private Network,以太网虚拟专用网络)采用DRNI技术将两台物理设备连接起来虚拟成一台设备,使用该虚拟设备作为VTEP(既可以是仅用于二层转发的VTEP,也可以是EVPN网关),可以避免VTEP单点故障对网络造成影响,从而提高EVPN网络的可靠性。目前,本功能仅支持IPv4站点网络,不支持IPv6站点网络。
图14 EVPN支持分布式聚合组网图
分布式聚合的两台VTEP具有相同的虚拟VTEP地址,对外表现为一台虚拟VTEP设备。其他VTEP使用该地址与这台虚拟设备自动建立VXLAN隧道。
两台VTEP使用不同的地址作为BGP对等体地址,分别与其它VTEP建立BGP EVPN邻居。
利用Underlay网络的等价路由机制,其他VTEP可以将发往虚拟VTEP地址的流量负载分担到两台VTEP,从而实现负载分担和冗余备份。
作为DR设备的两台VTEP通过IPL连接,在IPL上同步MAC地址和ARP信息,以确保两台VTEP上的MAC地址和ARP信息保持一致。IPL连接既可以是以太网聚合链路,也可以是VXLAN隧道。作为IPL的VXLAN隧道自动与设备上的所有VXLAN关联。
在EVPN中,VTEP之间通过BGP EVPN路由实现自动发现邻居、自动建立/关联VXLAN隧道、通告MAC/IP的可达性。以不同链路作为IPL时,通告的BGP EVPN路由有如下的区别:
· IPL为以太网聚合链路时,DR设备通告的IMET(Inclusive Multicast Ethernet Tag Route,包含性组播以太网标签路由)路由中的下一跳为虚拟VTEP地址,该路由在DR设备上表现为一条源IP为虚拟VTEP地址、目的IP为远端VTEP地址的VXLAN隧道。DR设备通告的MAC/IP发布路由、IP前缀路由的下一条均为虚拟VTEP地址。
· IPL为VXLAN隧道时,DR设备通告两个IMET路由,下一跳分别为虚拟VTEP地址和本设备的BGP对等体地址,该路由在DR设备上表现为两条VXLAN隧道:
¡ 一条源IP为虚拟VTEP地址、目的IP为远端VTEP IP地址;
¡ 一条源IP为BGP对等体地址、目的IP为远端VTEP IP地址。
· 从DR设备的不同接口学习到的MAC地址和ARP信息,在通告MAC/IP发布路由时有所不同:
¡ 从除DR口以外的其他接口学习到的MAC地址和ARP信息,在通告的MAC/IP发布路由时采用BGP对等体地址作为下一跳;
¡ 对于从DR口学习到的MAC地址和ARP信息,在通告MAC/IP发布路由时则采用虚拟VTEP地址作为下一跳。通告IP前缀路由时均以BGP对等体地址作为下一跳。
在用户侧,两台VTEP均通过以太网链路接入同一台虚拟机,跨设备在多条链路间建立二层聚合接口,将该聚合接口配置为AC(Attachment Circuit,接入电路),从而避免单个AC故障导致虚拟机无法访问网络。
· IPL为以太网聚合链路时,用户侧链路备份机制为:将二层聚合接口配置为AC后,VTEP会在IPL上自动创建具有相同报文匹配规则、关联相同VSI的AC。当一台VTEP上的AC故障后,从VXLAN隧道上接收到的、发送给该AC的报文将通过IPL转发到另一台VTEP,该VTEP根据IPL上配置的AC判断报文所属VSI,并转发该报文,从而保证转发不中断。
· IPL为VXLAN隧道时,用户侧链路备份机制为:如果一台VTEP上的AC故障,则该VTEP从VXLAN隧道上接收到发送给故障AC的报文后,为报文添加VXLAN封装(封装的VXLAN ID为故障AC所属VSI对应的VXLAN ID),并通过作为IPL的VXLAN隧道将其转发到另一台VTEP。该VTEP根据VXLAN ID判断报文所属的VSI,并转发该报文。
在EVPN支持DRNI组网中,VTEP对于已知单播流量的转发与DRNI组网中DR设备的处理一致。在转发从IPL接收的BUM流量时,VTEP的处理与DRNI组网中DR设备的处理略有不同。如图15所示,VTEP 1判断数据帧所属的VXLAN,通过该VXLAN内除接收接口外的所有本地接口、VXLAN隧道和IPL转发该数据帧,VTEP 2从IPL收到该数据帧后将只会转发给相同VXLAN内非DR成员接口的AC。
图15 转发BUM流量示意图
如图16所示,IPL为以太网聚合链路的EVPN组网中,某AC故障,来自网络侧的流量会通过IPL发送给另外一台设备,所有流量均由另外一台DR设备转发,具体过程如下:
(1) VTEP 2的用户侧链路故障,网络侧不感知,流量依然会发送给所有DR设备。
(2) VTEP 2收到网络侧访问Server 2的流量后,会通过IPL上自动创建的AC转发到VTEP 1,VTEP 1根据IPL上自动创建的AC判断报文所属VSI,并将该报文转发给Server 2。
(3) 故障恢复后,VTEP 2的AC up,流量正常转发。
图16 AC故障处理机制示意图一
如图17所示,IPL为VXLAN隧道的EVPN组网中,某AC故障,来自网络侧的流量会通过IPL发送给另外一台设备,所有流量均由另外一台DR设备转发,具体过程如下:
(1) VTEP 2的用户侧链路故障,网络侧不感知,流量依然会发送给所有DR设备。
(2) VTEP 2收到网络侧访问Server 2的流量后,为报文添加VXLAN封装(封装的VXLAN ID为故障AC所属VSI对应的VXLAN ID),然后通过作为IPL的VXLAN隧道将其转发到VTEP 1。VTEP 1根据接收到的报文中携带的VXLAN ID字段判断报文所属VSI,并将该报文转发给Server 2。
(3) 故障恢复后,VTEP 2的AC up,流量正常转发。
图17 AC故障处理机制示意图二
如图18所示,为了保证可靠性,Device C在接入网络时需要考虑链路的冗余备份,虽然可以采用部署MSTP等环路保护协议的方式,但是这种方式下链路的利用率很低,浪费大量的带宽资源。为了实现冗余备份同时提高链路的利用率,在Device A与Device B之间部署DRNI,实现设备的双归属接入。这样Device A与Device B形成负载分担,共同进行流量转发,当其中一台设备发生故障时,流量可以快速切换到另一台设备,保证业务的正常运行。
如图19所示,多级DRNI互联可以在保证可靠性、提供链路利用率的同时扩展双归属接入的网络规模,可以在大二层数据中心网络、服务器数量比较多时提供稳定网络环境。同时汇聚层设备作为双活网关,核心层设备和汇聚层设备之间采用DRNI组成聚合链路,保证设备级可靠性。
图19 多级DRNI互联组网图
如图20所示,在接入层设备上部署DRNI,提供接入设备的高可靠性和负载分担;在接入层与汇聚层设备间部署生成树,避免产生环路。
图20 DRNI与STP结合应用场景组网图
如图21所示,在接入层设备上部署DRNI,提供接入设备的高可靠性和负载分担;在汇聚层设备部署VRRP,为用户侧提供冗余备份的网关,保证了用户侧流量不中断。当用户侧的流量经过接入层时,通过部署的DRNI对流量进行负载分担,由DRNI决定转发路径,用户不用再在汇聚层的部署VRRP负载均衡模式以实现负载分担,简化了用户配置。
图21 DRNI与VRRP结合应用场景组网图
EVPN支持DRNI组网中,两台VTEP虚拟为一台VTEP,在VTEP之间通过IPL同步MAC地址和ARP信息,以确保两台VTEP上的MAC地址和ARP信息保持一致。IPL连接既可以是以太网聚合链路,如图22所示,也可以是VXLAN隧道,如图23所示。
在下行方向,跨VTEP设备形成链路聚合,实现用户侧链路的备份,从而避免单条以太网链路故障导致虚拟机无法访问网络。
图22 EVPN支持DRNI组网图(以太网聚合链路作为IPL)
图23 EVPN支持DRNI组网图(VXLAN隧道作为IPL)
· IEEE P802.1AX-REV™/D4.4c:Draft Standard for Local and Metropolitan Area Networks
· RFC 7432:BGP MPLS-Based Ethernet VPN