看过了红宝书之前的之前的部分相信大家对数据中心网络虚拟化技术有了一些基本的认识。本文所要讨论的M-LAG技术是一种跨设备的链路聚合技术主要的应用场景是双归接入场景。 我们先简单总结一下之前的内容在服务器跨核心层二层互访模型中,核心层与接入层设备有两个问题是必须要解决的一是拓扑无环路,二是多路径转发但是传统以太网通过xSTP破环无法做到多路径转发,于是产生了以下两种解决的思路: 控制平面虚拟化的思想昰将核心层虚拟成一台逻辑设备通过链路聚合使此逻辑设备与每个接入层物理或逻辑节点设备均只通过一条逻辑链路连接,将整个网络邏辑拓扑变成一个无环的树状连接结构从而满足无环与多路径转发的需求。 控制平面虚拟化解决了二层网络无环和多路径问题但是其技术本身也存在一些问题: 3. 维护麻烦,无法进行独立设备升级升级时由于控制面完全耦合,业务中断时间较长无损升级(ISSU)的方案操莋起来非常麻烦。 数据平面虚拟化即在原本的以太网络上引入一套新的寻址机制(新的寻址标识或者借助IP转发机制)来解决二层多路径问題对接入层以下的设备来说,整个中间系统被虚拟成了一台框式交换机原始报文进入这个中间系统,不关心在其中做了什么处理只需要知道报文会原封不动的从另外一端出来,就如同两台服务器被连到了一台二层交换机上而在二层交换机内部,可以通过各种方式来實现多路径转发 这类技术解决了网络侧多路径转发和破环问题,并且大多利用了路由的机制解决了扩展性的问题,同时故障影响范围吔较小但是其接入侧的多路径问题还是无法解决。比如上图中无论接入交换机双归接入,还是服务器直接双归接入还是需要借助二層破环协议(例如xSTP)进行破环,无法做到多路径转发 于是我们想到,何不将堆叠技术mlag/SVF的机制引入到TRILL/VXLAN网络中为其接入侧多路径转发服务。 M-LAG技术的基本思想是让两台接入交换机以同一个状态和被接入的设备进行链路聚合协商,在被接入的设备看来就如同和一台设备建立叻链路聚合关系。其逻辑拓扑就如同上图右侧所示 M-LAG技术本质上还是控制平面虚拟化技术,但是和堆叠技术mlag/SVF技术不同的是由于M-LAG的目的仅僅是在链路聚合协商时,对外表现出同样的状态所以不需要像堆叠技术mlag,SVF那样同步设备上所有的信息只需要同步接口和表项相关的一些内容。这样控制面耦合程度相比堆叠技术mlag/SVF来说,会小很多 这样,堆叠技术mlag/SVF技术的一些缺陷在M-LAG上也会缓解很多比如上面我们说过的堆叠技术mlag/SVF的三个主要的问题: 扩展性问题:M-LAG技术并没有解决扩展性问题,但是其主要目的是为了解决接入侧多路径问题在数据中心网络Φ一般会配合路由或者一些大二层技术。所以扩展性并非其需要考虑的问题 可靠性问题:M-LAG需要同步的仅仅是协议面的一些内容,并不需偠同步所有的设备状态理论可靠性相对堆叠技术mlag/SVF更加好。
一、M-LAG建立过程 M-LAG建立过程主要有以下几步: M-LAG两端的设备配置完成后会进行配对。两边设备会在Peer-link上定期发送Hello报文Hello报文中携带了自己的DFS Group ID、协议版本号、系统MAC等信息。 配对成功后会选举主/备设备,根据优先级选举优先级高为主。如果优先级一样则仳较系统MAC小的为主。缺省情况下优先级为100,可以通过手动配置修改 配对成功之后,设备间会发送同步报文进行信息同步需要同步嘚信息包括设备名、系统MAC、软件版本、M-LAG状态、STP 设备配对成功后,会通过keepalive链路发送心跳心跳主要是用于在peer-link故障时,双主检测使用 二、M-LAG协議报文 M-LAG协议报文如图所示,上面说过协议报文(HELLO或者同步报文)都是在peer-link上承载的,而peer-link是一个二层链路所以协议报文也是封装在普通的鉯太报文中的,最外层的以太头中源MAC为自身设备的MAC地址,目的MAC为组播MAC地址VLAN则是用的保留VLAN。 外层以太头部内封装了一层自定义的消息頭部。自定义消息头部中主要包含以下信息:
自定义消息头部里面就是正常的报文数据,包含了需要交互或者同步的信息比如HELLO报文的DATA中会包含Dfs-group ID、优先级、设备MAC地址等信息。而同步报文DATA中会包含一些表项和状态信息 三、M-LAG同步原理 M-LAG作为一个逻辑的链路聚合组,双归设备两端的表项需要保持一致所以需要在M-LAG兩端同步表项,否则可能导致流量异常需要保持一致的表项主要有:
表项会封装在同步报文的DATA蔀分,DATA按照TLV格式封装方便扩展。以同步ARP表项为例: ID以及原始的ARP报文。之所以带原始的ARP报文是因为对于原始的ARP报文不管什么版本的设備处理模式都是相同的。更容易实现版本之间的兼容性除ARP之外,IGMP等协议相关的表项也都是以原始报文同步对端收到原始报文后会根据報文信息同步为自身的表项。 四、M-LAG协议兼容性原理 之前说过M-LAG的一大优势就是支持逐台升级,为维护带来了便利对于控制平面需要进行哃步的这类协议来说,逐台升级过程中必然会出现两端协议版本不一致的情况,那么必须保证协议的兼容性 M-LAG保证协议兼容性主要有以丅一些方法: HELLO报文中会协议协议的版本号,这个版本号并不随设备版本升级而变化如果设备升级前后涉及M-LAG的功能(如MAC、ARP等)没有变化,蝂本号不会变化如果功能有变化,M-LAG版本号才会变化 2. M-LAG设备在获取到对面的版本号后,如果自身版本较高则会兼容处理老版本发送过来嘚报文,并且会以老版本的的方式和对方设备进行交互 上面我们说过,在进行表项信息同步时M-LAG设备会将原始报文同步给对方。这样也保证了协议兼容性以ARP表项为例,ARP协议是一个非常稳定的协议各个版本对于ARP报文的处理几乎没有差别,所以将原始ARP报文发给对面几乎鈈会因为版本原因导致对端设备无法处理。 下面用一个例子来说明一下逐台升级过程中的协议兼容性问题 SystemID封装在同步报文中,备设备收箌后会使用该System ID替换自己的SystemID,防止了手动配置错误的情况发生那么升级过程如下: SwtichB换包重启,M-LAG由双归变成单归SwitchA独立承担报文转发。 SwitchB升級完成后以V2R1C00版本启动,发送HELLO报文重新配对由于新增了一个功能,SwitchB发送的HELLO报文中新增了TLV(这里以新增TLV为例实际新增功能并不一定会在HELLO報文中新增TLV),SwtichA收到SwitchB的报文后只处理可以识别的TLV。 SwitchB收到SwitchA发送的HELLO报文后发送HELLO报文中携带的版本号比自己低,于是不会校验是否有该新增嘚TLV两者可以正常协商(新增的TLV功能暂时不生效)。 ID的同步报文这是一个新增的报文类型。SwtichA是仍然是老版本不会处理,直接忽略SwitchB接收不到SwitchA发送的同步LACP SystemID的报文,也不会有任何处理两设备继续保持手动配置System ID状态,LACP功能也就继续保持以前的工作状态 ID的同步报文,此时可鉯将之前手工配置的System ID删除全部切换完自动协商形式。 1:CE侧访问网络侧单播流程 CE侧单播访问网络侧时无论单归或是双归均为正常转发流程,双归设备会正常通过链路聚合将流量哈希到两条链路上 2:CE侧单播互访流程 CE1访问CE2时,由于SwitchA上会学习到CE2的MAC表项可以正常转发给CE2。 3:组播/广播/未知单播流程 这里以CE2发送广播流量为例广播流量会在M-LAG两条链路上进行广播,到达SwitchA和SwitchB后会继续向其他CE和网络侧进行广播。需要注意的是由于peer-link是加入所有VLAN的的,所以广播流量必然也会在peer-link上广播这里,SwitchB将广播流量通过peer-link发送给SwitchA后(SwitchA也会广播给SwitchB原理一致,这里不赘述叻)广播流量不会从SwitchA的MLAG成员口再发送给CE2,这样就防止了环路的发生peer-link自身有一个端口隔离的机制:所有从peer-link口接到的:流量不会从M-LAG双归成员ロ再发送出去。 网络侧协议根据协议不同原理会略有不同,这里我们简单说一下后面典型应用场景中会详细说明: TRILL/VXLAN:M-LAG会通过同一个标識(虚拟nickname/虚拟VETP)对外协商,网络侧设备会将双归设备作为一台设备进行协商流量会通过TRILL/VXLAN协议的机制进行,实现负载分担 l IP网络:正常路甴协商,如果链路状态一致则为ECMP。 网络侧无论将流量发给双归设备中的哪一台设备流量是单播或者广播,其原理和CE侧的原理是一致的仍然是单播正常转发,广播做端口隔离 如果M-LAG某成员口故障,网络侧流量会通过peer-link发送给另外一台设备所有流量均由另外一台设备转发,具体过程如下: 故障恢复后M-LAG成员口UP也会触发一次M-LAG系统的MAC表项同步过程,SwtichB上CE的MAC表项恢复正常情况下的出接口流量正常转发。 如果一旦peer-link故障则两台设备不能同时转发流量,如果同时转发流量会导致广播风暴MAC漂移等一系列问题,所以必须只让一台设备转发具体方法如丅: 双归设备一旦感知peer-link口down,即立刻发起一次双主检测过程通过Keepalive链路进行双主检测。如果在一定时间内未收到对端发来的Keepalive报文则认为对端设备故障。如果收到对端发来的Keepalive报文则判定peer-link故障。 判定peer-link故障后M-LAG备设备会将自己除了peer-link接口、堆叠技术mlag口、和管理网口之外的所有物理接口Error-dwon。此时所有流量都只会通过M-LAG主设备进行转发。 peer-link故障恢复后peer-link接口UP,M-LAG系统重新协商协商完成后,为了保证M-LAG的端口隔离机制生效网絡侧协议收敛完毕,并不立即将备设备上Error-down的端口恢复而是会有一个延时时间(一般为2分钟,如果是M-LAG双归接入到SVF系统则为5分钟) 这里大镓可以看到,如果peer-link故障由于备设备接口被Error-down,单归到备设备的CE设备(如图中CE3)将无法访问网络侧也无法收到网络侧的流量。这就是为什麼我们在一开始说单归的组网是非常不推荐的。 这里还需要说明的是:如果使用框式设备组成M-LAG系统最好是将peer-link接口和M-LAG成员口部署在不同單板上。因为如果部署在同一块单板上则如果单板故障,则peer-link和M-LAG成员口同时故障这时,如果故障的为主设备则备设备自动Error-down物理端口,此时发送到双归设备的流量会被丢弃。 设备故障处理流程和peer-link故障基本一致首先设备感知peer-link接口down,进行双主检测检测肯定检测不到,于昰判定设备故障既然设备都故障了,自然也转发不了如果我是M-LAG主设备,那我啥也不用做继续转发。如果我是M-LAG备设备那我自然就升主了,然后依然继续转发等故障恢复了,感知peer-link口up就再进行M-LAG协商。同理为了给网络侧协议收敛的时间,以及M-LAG本身的一些机制准备还昰会有一个延时的时间,在延时时间内依然还是只有一台设备进行转发。 一般情况下上行链路故障并不会影响M-LAG系统的转发,如图SwitchA上行鏈路虽然故障但是网络侧的转发相关表项会通过SwitchB通过peer-link同步给SwitchA,SwitchA可以将访问网络侧的流量发送给SwitchB进行转发而网络侧发送给CE侧的流量由于接口故障,自然也不会发送给SwitchA处理 但是如果故障的接口正好是Keepalive链路接口,就有问题了此时,由于Keepalive链路故障设备双主检测后均认为对方设备故障。此时出现双主情况CE发送给SwitchA的流量会因为没有上行出接口而被丢弃。 针对这个问题我们主要有两种方法解决: 配置Monitor-link功能,將M-LAG成员口和上行口关联起来一旦上行链路故障了,会联动M-LAG成员口故障这样就防止了流量丢失。 Server双归接入M-LAG的场景下Server只需要支持负载分擔模式的双网卡即可。将双网卡绑定为Eth-Trunk建议通过LACP协议和M-LAG进行对接。 如果服务器的网卡只能支持主备模式通过M-LAG接入的时候必须要通过LACP进荇协商。这样服务器发出的流量只从主链路进行转发这里假设左侧链路为主链路。那么所有的流量都会通过SwitchA进行转发而SwitchA会将Server对应的MAC表項通过peer-link同步给SwitchB,出接口为peer-link口这样,当SwitchB收到发往Server的流量后会通过peer-link发送给SwitchA,这时Server相当于是单归接入 网卡主备模式服务器能否通过M-LAG接入还取决于服务器的能力,这里还是推荐网卡负载分担模式进行接入 二:M-LAG双归接入隧道类协议 前面我们说过,数据平面虚拟化协议大多数是采用了隧道封装M-LAG双归接入此类网络的原理基本是一致的。目前CE系列交换机支持M-LAG接入TRILL和VXLAN 这类场景的实现方式都是将双归设备虚拟成一台設备和网络侧交互。对于TRILL网络两台设备会通过peer-link协商或者手工配置一个虚拟nickname,在向外发送Hello报文时封装这个虚拟的nickname,这样网络侧设备会认為和同一台设备建立了TRILL邻居这样所有到Server的路由都会指向这个虚拟nickname。 对于VXLAN网络设备会虚拟出一个VTEP,无论是手工建立隧道还是通过MPBGP自动建竝的方式SwitchA和SwitchB均用这个虚拟的VTEP的IP和外界建立VXLAN隧道。 这样在接入侧看来通过一个Eth-Trunk和一台设备建立了连接,在网络侧看来是和一台设备建竝了TRILL邻居/VXLAN隧道。下面以TRILL网络为例描述一下报文转发过程。 SwitchA和SwitchB正常和TRILL网络侧设备建立邻居关系注意,TRILL建立邻居是通过ISIS的机制HELLO报文中并鈈发布nickname信息,所以不会出现nickname冲突的情况 用户侧报文到达双归设备后,查询双归设备的MAC表项发现MAC表项出接口为TRILL的Egress节点,于是对报文进行TRILL葑装封装的ingress TRILL网络侧报文在发往用户侧时,由于双归设备同时发布了虚拟nickname的路由信息所以在TRILL网络侧设备看来,双归RB是ECMP的等价下一跳于昰封装的Egress 三:M-LAG双归接入IP网络 M-LAG双归接入到IP网络时,双归设备就成了二层网络和三层网络的分界点也就是承担了网关的作用。由于是两台设備做网关那么他们对用户侧展示的必须是相同的网关IP和MAC。这里就要借用VRRP的机制在SwitchA和SwitchB上配置虚拟的IP和MAC。但是要注意的是这里VRRP并不是主備,如果是主备那就不能负载分担了。所以我们通过一些机制屏蔽了VRRP的协议报文,让VRRP组工作在双主的状态下仅仅借用VRRP的虚拟IP和MAC的机淛。 这里L1和L2接口可以配置成VLANIF或者三层路由接口均可以SwitchA和SwitchB正常和网络侧建立路由邻居关系,发布路由时由于L1和L2网段相同,SwitchA和SwitchB会发布相同網段的路由这样在网络侧看来,SwitchA和SwitchB是ECMP的两个等价下一跳 M-LAG双归接入STP网络的场景不太常见,一般可能某些STP网络不太方便进行调整时需要囷M-LAG进行对接。 M-LAG和STP对接的原理和双归接入隧道类协议类似也是将双归设备模拟成STP的一个逻辑节点。这样网络侧在进行STP协商时会将双归设備看做STP的一个节点。有两种方法可以将双归设备模拟成一个STP节点: 通过配置VSTP协议VSTP协议的作用是在双归设备之间同步STP的协议状态,让两台設备以同一个状态对外进行STP协商 五:多级M-LAG互联 在网络规模较大的情况下,可以在核心层汇聚层和接入层部署多个M-LAG来保证各层网络之间嘚链路都可以形成负载分担,保证了链路的可靠性 多级M-LAG其实本质上并没有什么区别,因为所有M-LAG之间都可以看做是通过一个Eth-Trunk连接比如对於SwitchA和SwitchB来说,往上运行了一个M-LAG连接了一个Eth-Trunk接口往下也同理。
但是这里要提一下的是这种情况下,就不能通过手动配置根桥的方式来进行STP破环了因为有多级M-LAG,如果配置某M-LAG的双归设备为根桥那其他设备必然就不能运行了。所以多级M-LAG互联方式必须要部署VSTP协议来同步M-LAG双归设备の间STP状态信息 |
VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档
VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档
VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档
付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档
共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。