searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

SONIC中MCLAG的实现

2023-08-24 09:41:32
153
0

MCLAG 是什么?

MCLAG 的定义(Multichassis link aggregation,跨设备链路聚合)是一种用于网络设备的功能,也被称为多机箱链路聚合。它是一种用于构建高可靠性和高可用性网络的技术。 MCLAG 允许将多个网络设备(通常是交换机)以冗余的方式连接到网络中,形成一个逻辑上的单一设备。这些设备之间通过专用链路进行通信,同时提供链路聚合和负载均衡的功能。 MCLAG 提供了以下主要功能:

1. 冗余和高可用性:通过将多个设备连接到网络中(通常为两个),MCLAG 提供了冗余路径和设备冗余,以确保网络的高可靠性和可用性。如果一个设备发生故障,其他设备可以接管其功能,无需中断网络连接。

2. 链路聚合:MCLAG 允许将多个物理链路聚合为一个逻辑链路,从而提供更高的带宽和负载均衡。这样可以增加网络的吞吐量和性能。

3. 无状态故障转移:MCLAG 使用无状态故障转移机制,这意味着当一个设备发生故障时,其他设备可以无缝地接管其功能,而无需重新分配 IP 地址或重新建立连接。

4. 网络可扩展性:MCLAG 可以扩展到支持大型网络环境,允许添加更多的设备和链路,以满足不断增长的网络需求。

总之,MCLAG 通过跨设备聚合的方式,提供了冗余、高可用性、链路聚合和负载均衡等功能,以提高网络的性能、可靠性和可用性。

SONIC中MCLAG 的实现

基本概念

在形成MCLAG 的两台物理设备,

MCLAG peer: MCLAG交换机,两台互为邻居关系。

MCLAG member port: 加入Mclag 的 Portchannel端口,两台交换机需要使用相同的portchannel。

MCLAG peerlink: 两个MCLAG peer之间的数据备份链路,当一台设备的member port 故障后,流量通过peerlink link横跨到另外一个设备。

MCLAG peer keepalive link: 建立peer邻居关系的链路,使用ipv4地址确定邻居;该链路用于同步MCLAG状态、周期发送心跳报文。Keepalive link可以和peerlink可使用相同的物理链路,也可以完全分开。

Orphan port: 非MCLAG member port 的端口, 设备单挂在一台MCLAG 设备。

ICCPd

ICCP(Inter-Chassis Communication Protocol,机箱间通信协议)在RFC7275中定义,SONIC中的MLAG控制平面实现了ICCP的轻量级版本。RFC7275具有非常复杂的状态机,需要同步的信息非常繁重,相应地需要进行很多合理性检查。所谓的Lite版本是指MLAG ICCPd仅实现了RFC7275中定义的状态机的一个子集,而不会影响其有用性和完整性。

选举角色

协议使用TCP 连接,端口号为8888,ICCP peer必须处于active或standby 模式。使用IPv4地址来确定角色。本地IP和远程IP是手动配置的,系统会比较这两个IP地址来确定其角色,IP地址较大的是standby ,另一个是active。active的是client,standby 的是server。client主动连接server

状态机,具有六个状态。

  • NONEXISTENT(不存在):该状态是状态机的起始点,表示PE之间不存在ICCP连接。
  • INITIALIZED(已初始化):该状态表示PE之间存在ICCP连接,但尚未交换ICCP能力信息。
  • CAPSENT(能力已发送):该状态表示PE之间存在ICCP连接,并且本地PE已向对等体广告ICCP能力。
  • CAPREC(能力已接收):该状态表示PE之间存在ICCP连接,并且本地PE已从对等体接收和广告ICCP能力。
  • CONNECTING(连接中):该状态表示本地PE已启动ICCP连接并等待对等体的响应。
  • OPERATIONAL(运行中):该状态表示ICCP连接正常运行。

同步信息

  1. 系统配置:同步系统MAC地址。这是为了提供正确的系统ID以用于LACP。当备用对等体从活动对等体接收到系统MAC时,它会将本地系统ID更改为对等体的系统MAC。
  2. 聚合配置:同步启用了MC-LAG的端口通道的AGG_ID(端口通道ID、名称、MAC等)信息,这是记录每个对等体的端口通道信息。此信息用于检查一致性,并在MC-LAG成员链路出现故障时在对等链路上启用数据转发。
  3. 聚合状态:主要与AGG_ID交换启用了MC-LAG的端口通道状态(up/down)。一般来说,如果每个对等体中具有相同名称的portchannel都处于up状态,则禁用peerlink到portchannel的数据转发,以防止数据流直通。当一个对等体的portchannel变为down时,将启用peerlink到portchannel,以便数据流可以直通。
  4. ARP和ND信息:从内核学习到的ARP条目将与对等体同步。一旦通过ICCP同步了ARP,对等体将动态更新内核中学习到的ARP。ND与ARP类似。
  5. FDB信息:FDB条目将与对等体同步。

心跳检测

默认保活报文1s、超时15s

配置一致性检查

1. 检查local ip 和 peer ip。

2. 启用MC-LAG的portchannel接口检查:如果是L3接口,则分配的IP地址必须相同。如果它们加入一个VLAN,则VLAN必须相同等。

3. 两个设备中的peerlink必须是相同类型的。

 

场景举例

 

L2 mclag member port 均正常时。

  • 在上面的图中,PortChannel0001是启用了MC-LAG的端口通道,状态为up,PortChannel0002是对等链路。PortChannel0001和PortChannel0002位于同一个VLAN中。与PortChannel0001类似,PortChannel0002使用L2转发。假设PA到PEER1的连接是与PortChannel0001相同VLAN的一部分。
  • 数据流路径由红色或黄色线表示。
  • 从PA到CE1的数据流路径:当流量到达PEER1时,它将匹配CE1的MAC地址,并通过PortChannel0001进行转发。如果PEER1尚未学习到CE1的MAC地址,则流量将在VLAN中广播。PEER2也会接收到广播的数据包,但它不会将数据包转发到启用了MC-LAG的端口。
  • 从CE1到PA的数据流路径:CE1可以将流量发送到PEER1或PEER2。PEER2可能已经从PEER1同步了PA的MAC条目。如果PEER2没有PA的MAC条目,则来自CE1到PA的数据包将首先由PEER2广播到PEER1,然后PEER1将单播给PA。
  • 对等链路上禁用了MC-LAG启用接口的数据转发。在上面的图中,如果PEER2通过PortChannel0002从PEER1接收到流量,由于应用了端口隔离逻辑,流量将不会转发到PortChannel0001。
  • 对等链路中的MAC学习被禁用。在上面的图中,PEER1和PEER2都禁用了PortChannel0002中的MAC学习。

 

 

peer1 portchannel0001 故障时:

 

  • 在上面的图中,PortChannel0001是启用了MC-LAG的接口,状态为down,PortChannel0002是对等链路。假设PA到PEER1的连接是与PortChannel0001相同VLAN的一部分。
  • 数据流路径由黄色线表示。
  • 从PA到CE1的数据流路径:当PEER1中的PortChannel0001处于down状态时,ICCP会重新编程MAC条目的下一跳,指向对等链路PortChannel0002,并更新ASIC表中的MAC条目。当流量到达PEER1时,它将匹配更新后的MAC条目,并通过PortChannel0002进行转发。
  • 当PEER1中的PortChannel0001处于down状态时,端口通道状态会同步到PEER2。PEER2中的ICCP会为与portChannel0001对应的启用了MC-LAG的接口启用对等链路转发。在上面的图中,如果PEER2通过PortChannel0002从PEER1接收到流量,流量将通过PortChannel0001转发到CE1。
  • 对等链路的MAC学习被禁用。在上面的图中,PEER1和PEER2都禁用了PortChannel0002的MAC学习。
  • 从CE1到PA的数据流路径:CE1将检测到连接到PEER1的接口已经down,数据将通过PEER2发送到PA。PEER2将桥接数据包到PEER1,通过L2桥接到达PA。
0条评论
0 / 1000
fengbai
2文章数
0粉丝数
fengbai
2 文章 | 0 粉丝
fengbai
2文章数
0粉丝数
fengbai
2 文章 | 0 粉丝
原创

SONIC中MCLAG的实现

2023-08-24 09:41:32
153
0

MCLAG 是什么?

MCLAG 的定义(Multichassis link aggregation,跨设备链路聚合)是一种用于网络设备的功能,也被称为多机箱链路聚合。它是一种用于构建高可靠性和高可用性网络的技术。 MCLAG 允许将多个网络设备(通常是交换机)以冗余的方式连接到网络中,形成一个逻辑上的单一设备。这些设备之间通过专用链路进行通信,同时提供链路聚合和负载均衡的功能。 MCLAG 提供了以下主要功能:

1. 冗余和高可用性:通过将多个设备连接到网络中(通常为两个),MCLAG 提供了冗余路径和设备冗余,以确保网络的高可靠性和可用性。如果一个设备发生故障,其他设备可以接管其功能,无需中断网络连接。

2. 链路聚合:MCLAG 允许将多个物理链路聚合为一个逻辑链路,从而提供更高的带宽和负载均衡。这样可以增加网络的吞吐量和性能。

3. 无状态故障转移:MCLAG 使用无状态故障转移机制,这意味着当一个设备发生故障时,其他设备可以无缝地接管其功能,而无需重新分配 IP 地址或重新建立连接。

4. 网络可扩展性:MCLAG 可以扩展到支持大型网络环境,允许添加更多的设备和链路,以满足不断增长的网络需求。

总之,MCLAG 通过跨设备聚合的方式,提供了冗余、高可用性、链路聚合和负载均衡等功能,以提高网络的性能、可靠性和可用性。

SONIC中MCLAG 的实现

基本概念

在形成MCLAG 的两台物理设备,

MCLAG peer: MCLAG交换机,两台互为邻居关系。

MCLAG member port: 加入Mclag 的 Portchannel端口,两台交换机需要使用相同的portchannel。

MCLAG peerlink: 两个MCLAG peer之间的数据备份链路,当一台设备的member port 故障后,流量通过peerlink link横跨到另外一个设备。

MCLAG peer keepalive link: 建立peer邻居关系的链路,使用ipv4地址确定邻居;该链路用于同步MCLAG状态、周期发送心跳报文。Keepalive link可以和peerlink可使用相同的物理链路,也可以完全分开。

Orphan port: 非MCLAG member port 的端口, 设备单挂在一台MCLAG 设备。

ICCPd

ICCP(Inter-Chassis Communication Protocol,机箱间通信协议)在RFC7275中定义,SONIC中的MLAG控制平面实现了ICCP的轻量级版本。RFC7275具有非常复杂的状态机,需要同步的信息非常繁重,相应地需要进行很多合理性检查。所谓的Lite版本是指MLAG ICCPd仅实现了RFC7275中定义的状态机的一个子集,而不会影响其有用性和完整性。

选举角色

协议使用TCP 连接,端口号为8888,ICCP peer必须处于active或standby 模式。使用IPv4地址来确定角色。本地IP和远程IP是手动配置的,系统会比较这两个IP地址来确定其角色,IP地址较大的是standby ,另一个是active。active的是client,standby 的是server。client主动连接server

状态机,具有六个状态。

  • NONEXISTENT(不存在):该状态是状态机的起始点,表示PE之间不存在ICCP连接。
  • INITIALIZED(已初始化):该状态表示PE之间存在ICCP连接,但尚未交换ICCP能力信息。
  • CAPSENT(能力已发送):该状态表示PE之间存在ICCP连接,并且本地PE已向对等体广告ICCP能力。
  • CAPREC(能力已接收):该状态表示PE之间存在ICCP连接,并且本地PE已从对等体接收和广告ICCP能力。
  • CONNECTING(连接中):该状态表示本地PE已启动ICCP连接并等待对等体的响应。
  • OPERATIONAL(运行中):该状态表示ICCP连接正常运行。

同步信息

  1. 系统配置:同步系统MAC地址。这是为了提供正确的系统ID以用于LACP。当备用对等体从活动对等体接收到系统MAC时,它会将本地系统ID更改为对等体的系统MAC。
  2. 聚合配置:同步启用了MC-LAG的端口通道的AGG_ID(端口通道ID、名称、MAC等)信息,这是记录每个对等体的端口通道信息。此信息用于检查一致性,并在MC-LAG成员链路出现故障时在对等链路上启用数据转发。
  3. 聚合状态:主要与AGG_ID交换启用了MC-LAG的端口通道状态(up/down)。一般来说,如果每个对等体中具有相同名称的portchannel都处于up状态,则禁用peerlink到portchannel的数据转发,以防止数据流直通。当一个对等体的portchannel变为down时,将启用peerlink到portchannel,以便数据流可以直通。
  4. ARP和ND信息:从内核学习到的ARP条目将与对等体同步。一旦通过ICCP同步了ARP,对等体将动态更新内核中学习到的ARP。ND与ARP类似。
  5. FDB信息:FDB条目将与对等体同步。

心跳检测

默认保活报文1s、超时15s

配置一致性检查

1. 检查local ip 和 peer ip。

2. 启用MC-LAG的portchannel接口检查:如果是L3接口,则分配的IP地址必须相同。如果它们加入一个VLAN,则VLAN必须相同等。

3. 两个设备中的peerlink必须是相同类型的。

 

场景举例

 

L2 mclag member port 均正常时。

  • 在上面的图中,PortChannel0001是启用了MC-LAG的端口通道,状态为up,PortChannel0002是对等链路。PortChannel0001和PortChannel0002位于同一个VLAN中。与PortChannel0001类似,PortChannel0002使用L2转发。假设PA到PEER1的连接是与PortChannel0001相同VLAN的一部分。
  • 数据流路径由红色或黄色线表示。
  • 从PA到CE1的数据流路径:当流量到达PEER1时,它将匹配CE1的MAC地址,并通过PortChannel0001进行转发。如果PEER1尚未学习到CE1的MAC地址,则流量将在VLAN中广播。PEER2也会接收到广播的数据包,但它不会将数据包转发到启用了MC-LAG的端口。
  • 从CE1到PA的数据流路径:CE1可以将流量发送到PEER1或PEER2。PEER2可能已经从PEER1同步了PA的MAC条目。如果PEER2没有PA的MAC条目,则来自CE1到PA的数据包将首先由PEER2广播到PEER1,然后PEER1将单播给PA。
  • 对等链路上禁用了MC-LAG启用接口的数据转发。在上面的图中,如果PEER2通过PortChannel0002从PEER1接收到流量,由于应用了端口隔离逻辑,流量将不会转发到PortChannel0001。
  • 对等链路中的MAC学习被禁用。在上面的图中,PEER1和PEER2都禁用了PortChannel0002中的MAC学习。

 

 

peer1 portchannel0001 故障时:

 

  • 在上面的图中,PortChannel0001是启用了MC-LAG的接口,状态为down,PortChannel0002是对等链路。假设PA到PEER1的连接是与PortChannel0001相同VLAN的一部分。
  • 数据流路径由黄色线表示。
  • 从PA到CE1的数据流路径:当PEER1中的PortChannel0001处于down状态时,ICCP会重新编程MAC条目的下一跳,指向对等链路PortChannel0002,并更新ASIC表中的MAC条目。当流量到达PEER1时,它将匹配更新后的MAC条目,并通过PortChannel0002进行转发。
  • 当PEER1中的PortChannel0001处于down状态时,端口通道状态会同步到PEER2。PEER2中的ICCP会为与portChannel0001对应的启用了MC-LAG的接口启用对等链路转发。在上面的图中,如果PEER2通过PortChannel0002从PEER1接收到流量,流量将通过PortChannel0001转发到CE1。
  • 对等链路的MAC学习被禁用。在上面的图中,PEER1和PEER2都禁用了PortChannel0002的MAC学习。
  • 从CE1到PA的数据流路径:CE1将检测到连接到PEER1的接口已经down,数据将通过PEER2发送到PA。PEER2将桥接数据包到PEER1,通过L2桥接到达PA。
文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0