中心网络与SDN: 技术架构与实现—1.3 高级STP欺骗——跨设备链路聚合云数据
1.3 高级STP欺骗——跨设备链路聚合
STP会严重浪费链路资源,根源在于它会禁止冗余链路上的转发。如果通过一种办法来“欺骗”STP,让它认为物理拓扑中没有冗余链路,那么就可以解决上述问题。实际上,Port Channel技术就是这么做的,一个Port Channel对STP只表现为一个逻辑上的Port Channel Interface,Port Channel中的物理端口并不直接表现在STP中。只要STP允许了Port Channel Interface的转发,那么Port Channel中的物理端口就都可以用于转发流量,具体选择哪个物理端口由该Port Channel的负载均衡机制来决定。不过在传统的Port Channel中,物理端口都必须在同一台物理设备上,甚至是同一块线卡上,无法实现跨设备的链路聚合,那么一旦设备挂了就没有办法了。为了解决这个问题,就需要更加高级的STP“欺骗”机制。
虚拟机框技术中实际上就用到了跨设备链路聚合,不过在实现上过于复杂,因此在虚拟机框后又出现了一类技术,它们不再为控制平面做集群,只保留了跨设备链路聚合的能力。这类技术以Cisco的vPC、Juniper的MC-LAG和Arista的M-LAG为代表。
1.3.1 Cisco vPC
Cisco在Nexus系列交换机中推出了vPC(virtual Port-Channel)特性。VSS是整机级别的虚拟化,vPC则是接口级的虚拟化,其实就是把VSS中的跨设备链路聚合MEC加强实现了。因此,在vPC中只需要同步链路聚合的相关信息即可,不需要对整机进行状态同步。vPC中的一些关键概念如图1-4所示,vPC Domain中由两台设备形成vPC Peer,彼此之间通过Peer-Link互联,通过CFS消息来同步控制信息,Peer-Keepalive Link可跨越三层进行状态监测,以防Peer Link失效后的“Split Brain”问题。交换机或主机双上联到vPC Peer,直接运行LACP即可形成vPC,单上联的交换机或主机称为Orphan Device,用于接入Orphan Device的端口称为Orphan Port。
下面通过一个二层转发的实例来介绍vPC中的转发流程,图1-5a为ARP Request的处理,图1-5b为ARP Reply的处理。假设配置vPC后,SW1 port 11和SW2 port 21属于vPC 1,SW1 port12和SW2 port 22属于vPC 1。SW1通过port 11收到ARP Request,之后在Peer-Link和port 12上进行泛洪。SW2收到该Request后,判定port 21、port 22分别与SW1中的端口进行了vPC绑定,因此不会从这两个端口进行转发。之所以要通过Peer Link泛洪给SW2,是考虑到目的主机有可能是一台只连接到SW2,而未连接SW1的Orphan Device。这时必须先泛洪给
SW2,再由SW2通过相关的Orphan Port送到目的主机上。同时SW1会通过CFS消息告诉SW2,ARP Request的源地址MAC_A是通过vPC 1接入的。当SW2通过port 22收到ARP Reply后,查找MAC地址表,得知目的地址为MAC_A的帧应该向vPC 1的成员端口转发,于是通过port 21转发给SW3,同时通过CFS告知SW1,ARP Reply的源地址MAC_B接在vPC 2上。之后的通信得以按照学习到的信息进行转发。
图1-5 vPC对二层流量的处理
图1-5 (续)
对外来看,实现vPC的设备还是两台设备,在管理上还是要分开配置,两台设备的转发实例、转发表等都是独立的。另外,vPC是一种2层的技术,在对接3层的时候可能会需要一些额外的机制,如在Cisco FabricPath中使用了vPC+去对接HSRP。
- 点赞
- 收藏
- 关注作者
评论(0)