# 3.IRF堆叠

## 1.1 IRF简介

IRF（Intelligent Resilient Framework，智能弹性架构）是H3C自主研发的软件虚拟化技术。它的核心思想是将多台设备连接在一起，进行必要的配置后，虚拟化成一台设备。使用这种虚拟化技术可以集合多台设备的硬件资源和软件处理能力，实现多台设备的协同工作、统一管理和不间断维护。

为了便于描述，这个“虚拟设备”也称为IRF。所以，本文中的IRF有两层意思，一个是指IRF技术，一个是指IRF设备。

### 1.1.1 IRF的优点

IRF主要具有以下优点：

· 简化管理。IRF形成之后，用户通过任意成员设备的任意端口都可以登录IRF系统，对IRF内所有成员设备进行统一管理。

· 1:N备份。IRF由多台成员设备组成，其中，主设备负责IRF的运行、管理和维护，从设备在作为备份的同时也可以处理业务。一旦主设备故障，系统会迅速自动选举新的主设备，以保证业务不中断，从而实现了设备的1:N备份。

· 跨成员设备的链路聚合。IRF和上、下层设备之间的物理链路支持聚合功能，并且不同成员设备上的物理链路可以聚合成一个逻辑链路，多条物理链路之间可以互为备份也可以进行负载分担，当某个成员设备离开IRF，其它成员设备上的链路仍能收发报文，从而提高了聚合链路的可靠性。

· 强大的网络扩展能力。通过增加成员设备，可以轻松自如的扩展IRF的端口数、带宽。因为各成员设备都有CPU，能够独立处理协议报文、进行报文转发，所以IRF还能轻松自如的扩展处理能力。

### 1.1.2 IRF的应用

如[图1-1](https://www.h3c.com/cn/d_202106/1413399_30005_0.htm#_Ref412812873)所示，主设备和从设备组成IRF，对上、下层设备来说，它们就是一台设备——IRF。

图1-1 IRF组网应用示意图

![img](https://typore-img.oss-cn-beijing.aliyuncs.com/Typecho/img/2022/20220519150322.png)

## 2 IRF典型配置举例（BFD MAD检测方式）

### 1. 组网需求

由于网络规模迅速扩大，当前中心交换机（Device A）转发能力已经不能满足需求，现需要在保护现有投资的基础上将网络转发能力提高三倍，并要求网络易管理、易维护。

### 2. 组网图

图1-15 IRF典型配置组网图（BFD MAD检测方式）

![img](https://typore-img.oss-cn-beijing.aliyuncs.com/Typecho/img/2022/20220519151529.png)

### 3. 配置思路

· Device A处于局域网的汇聚层，为了将汇聚层的转发能力提高三倍，需要另外增加三台设备Device B、Device C和Device D。

· 鉴于IRF技术具有管理简便、网络扩展能力强、可靠性高等优点，所以本例使用IRF技术构建网络汇聚层（即在四台设备上配置IRF功能），每台成员设备与上层设备Device E之间均有一条上行链路连接。

· 为了防止IRF链路故障导致IRF分裂，网络中存在两个配置冲突的IRF，需要启用MAD检测功能。本例中我们采用BFD MAD检测方式来监测IRF的状态，并使用成员设备与上层设备间的专用链路传递BFD MAD报文。

### 4. 配置步骤

注：一个设备有两个IRF端口，1和2。相邻的两个设备的端口不要相同，否则不能形成IRF。

如：1号设备的irf-port 1/1物理端口只能对应2号设备的 irf-port 2/2物理端口

![img](https://typore-img.oss-cn-beijing.aliyuncs.com/Typecho/img/2022/20220519151647.png)

#### (1) 配置Device A

\# 根据[图1-15](https://cdn.jsdelivr.net/gh/xyzz-by/imge@main/2021/20220427203415.png)选定IRF物理端口并关闭这些端口。

```
<Sysname> system-view
[Sysname] interface range ten-gigabitethernet 1/0/49 to ten-gigabitethernet 1/0/52
[Sysname-if-range] shutdown
[Sysname-if-range] quit
```

\# 配置IRF端口1/1，并将它与物理端口Ten-GigabitEthernet1/0/49和Ten-GigabitEthernet1/0/50绑定。

```
[Sysname] irf-port 1/1
[Sysname-irf-port1/1] port group interface ten-gigabitethernet 1/0/49
[Sysname-irf-port1/1] port group interface ten-gigabitethernet 1/0/50
[Sysname-irf-port1/1] quit
```

\# 配置IRF端口1/2，并将它与物理端口Ten-GigabitEthernet1/0/51和Ten-GigabitEthernet1/0/52绑定。

```
[Sysname] irf-port 1/2
[Sysname-irf-port1/2] port group interface ten-gigabitethernet 1/0/51
[Sysname-irf-port1/2] port group interface ten-gigabitethernet 1/0/52
[Sysname-irf-port1/2] quit
```

\# 开启Ten-GigabitEthernet1/0/49～Ten-GigabitEthernet1/0/52端口，并保存配置。

```
[Sysname] interface range ten-gigabitethernet 1/0/49 to ten-gigabitethernet 1/0/52
[Sysname-if-range] undo shutdown
[Sysname-if-range] quit
[Sysname] save
```

\# 激活IRF端口下的配置。

```
[Sysname] irf-port-configuration active
```

#### (2) 配置Device B

\# 将Device B的成员编号配置为2，并重启设备使新编号生效。

```
<Sysname> system-view
[Sysname] irf member 1 renumber 2
Renumbering the member ID may result in configuration change or loss. Continue? [Y/N]:y
[Sysname] quit
<Sysname> reboot
```

\# 根据[图1-15](https://cdn.jsdelivr.net/gh/xyzz-by/imge@main/2021/20220427203415.png)选定IRF物理端口并进行物理连线。

\# 重新登录到设备，关闭选定的所有IRF物理端口。

```
<Sysname> system-view
[Sysname] interface range ten-gigabitethernet 2/0/49 to ten-gigabitethernet 2/0/52
[Sysname-if-range] shutdown
[Sysname-if-range] quit
```

\# 配置IRF端口2/1，并将它与物理端口Ten-GigabitEthernet2/0/49和Ten-GigabitEthernet2/0/50绑定。

```
[Sysname] irf-port 2/1
[Sysname-irf-port2/1] port group interface ten-gigabitethernet 2/0/49
[Sysname-irf-port2/1] port group interface ten-gigabitethernet 2/0/50
[Sysname-irf-port2/1] quit
```

\# 配置IRF端口2/2，并将它与物理端口Ten-GigabitEthernet2/0/51和Ten-GigabitEthernet2/0/52绑定。

```
[Sysname] irf-port 2/2
[Sysname-irf-port2/2] port group interface ten-gigabitethernet 2/0/51
[Sysname-irf-port2/2] port group interface ten-gigabitethernet 2/0/52
```

\# 开启Ten-GigabitEthernet2/0/49～Ten-GigabitEthernet2/0/52端口，并保存配置。

```
[Sysname] interface range ten-gigabitethernet 2/0/49 to ten-gigabitethernet 2/0/52
[Sysname-if-range] undo shutdown
[Sysname-if-range] quit
[Sysname] save
```

\# 激活IRF端口下的配置。

```
[Sysname] irf-port-configuration active
```

(3) Device A和Device B间将会进行主设备竞选，竞选失败的一方将重启，重启完成后，IRF形成。

#### (4) 配置Device C

\# 将Device C的成员编号配置为3，并重启设备使新编号生效。

```
<Sysname> system-view
[Sysname] irf member 1 renumber 3
Renumbering the member ID may result in configuration change or loss. Continue? [Y/N]:y
[Sysname] quit
<Sysname> reboot
```

\# 根据[图1-15](https://cdn.jsdelivr.net/gh/xyzz-by/imge@main/2021/20220427203415.png)选定IRF物理端口并进行物理连线。

\# 重新登录到设备，关闭选定的所有IRF物理端口。

```
<Sysname> system-view
[Sysname] interface range ten-gigabitethernet 3/0/49 to ten-gigabitethernet 3/0/52
[Sysname-if-range] shutdown
[Sysname-if-range] quit
```

\# 配置IRF端口3/1，并将它与物理端口Ten-GigabitEthernet3/0/49和Ten-GigabitEthernet3/0/50绑定。

```
[Sysname] irf-port 3/1
[Sysname-irf-port3/1] port group interface ten-gigabitethernet 3/0/49
[Sysname-irf-port3/1] port group interface ten-gigabitethernet 3/0/50
[Sysname-irf-port3/1] quit
```

\# 配置IRF端口3/2，并将它与物理端口Ten-GigabitEthernet3/0/51和Ten-GigabitEthernet3/0/52绑定。

```
[Sysname] irf-port 3/2
[Sysname-irf-port3/2] port group interface ten-gigabitethernet 3/0/51
[Sysname-irf-port3/2] port group interface ten-gigabitethernet 3/0/52
[Sysname-irf-port3/2] quit
```

\# 开启Ten-GigabitEthernet3/0/49～Ten-GigabitEthernet3/0/52端口，并保存配置。

```
[Sysname] interface range ten-gigabitethernet 3/0/49 to ten-gigabitethernet 3/0/52
[Sysname-if-range] undo shutdown
[Sysname-if-range] quit
[Sysname] save
```

\# 激活IRF端口下的配置。

```
[Sysname] irf-port-configuration active
```

(5) Device C将自动重启，加入Device A和Device B已经形成的IRF。

#### (6) 配置Device D

\# 将Device D的成员编号配置为4，并重启设备使新编号生效。

```
<Sysname> system-view
[Sysname] irf member 1 renumber 4
Renumbering the member ID may result in configuration change or loss. Continue? [Y/N]:y
[Sysname] quit
<Sysname> reboot
```

\# 根据[图1-15](https://cdn.jsdelivr.net/gh/xyzz-by/imge@main/2021/20220427203415.png)选定IRF物理端口并进行物理连线。

\# 重新登录到设备，关闭选定的所有IRF物理端口。

```
<Sysname> system-view
[Sysname] interface range ten-gigabitethernet 4/0/49 to ten-gigabitethernet 4/0/52
[Sysname-if-range] shutdown
[Sysname-if-range] quit
```

\# 配置IRF端口4/1，并将它与物理端口Ten-GigabitEthernet4/0/49和Ten-GigabitEthernet4/0/50绑定。

```
[Sysname] irf-port 4/1
[Sysname-irf-port4/1] port group interface ten-gigabitethernet 4/0/49
[Sysname-irf-port4/1] port group interface ten-gigabitethernet 4/0/50
[Sysname-irf-port4/1] quit
```

\# 配置IRF端口4/2，并将它与物理端口Ten-GigabitEthernet4/0/51和Ten-GigabitEthernet4/0/52绑定。

```
[Sysname] irf-port 4/2
[Sysname-irf-port4/2] port group interface ten-gigabitethernet 4/0/51
[Sysname-irf-port4/2] port group interface ten-gigabitethernet 4/0/52
[Sysname-irf-port4/2] quit
```

\# 开启Ten-GigabitEthernet4/0/49～Ten-GigabitEthernet4/0/52端口，并保存配置。

```
[Sysname] interface range ten-gigabitethernet 4/0/49 to ten-gigabitethernet 4/0/52
[Sysname-if-range] undo shutdown
[Sysname-if-range] quit
[Sysname] save
```

\# 激活IRF端口下的配置。

```
[Sysname] irf-port-configuration active
```

(7) Device D将自动重启，加入Device A、Device B和Device C已经形成的IRF。

#### (8) 配置BFD MAD

**VLAN方式**

\# 创建VLAN 3，并将端口GigabitEthernet1/0/1、GigabitEthernet2/0/1、GigabitEthernet3/0/1和GigabitEthernet4/0/1加入VLAN 3中。 # 此VLAN只能作为BFD MAD检测用，不要用于其他业务。

**如设备配置多条检测链路，只需要将对应端口加入到检测VLAN里即可，并关闭端口的STP。并且不配置链路聚合**

```
[Sysname] vlan 3
[Sysname-vlan3] port gigabitethernet 1/0/1 gigabitethernet 2/0/1 gigabitethernet 3/0/1 gigabitethernet 4/0/1
[Sysname-vlan3] quit
```

\# 创建VLAN接口3，并配置MAD IP地址。

```
[Sysname] interface vlan-interface 3
[Sysname-Vlan-interface3] mad bfd enable
[Sysname-Vlan-interface3] mad ip address 192.168.2.1 24 member 1
[Sysname-Vlan-interface3] mad ip address 192.168.2.2 24 member 2
[Sysname-Vlan-interface3] mad ip address 192.168.2.3 24 member 3
[Sysname-Vlan-interface3] mad ip address 192.168.2.4 24 member 4
[Sysname-Vlan-interface3] quit
```

\# 因为BFD MAD和生成树功能互斥，所以在GigabitEthernet1/0/1、GigabitEthernet2/0/1、GigabitEthernet3/0/1和GigabitEthernet4/0/1端口上关闭生成树协议。

```
[Sysname] interface range gigabitethernet 1/0/1 gigabitethernet 2/0/1 gigabitethernet 3/0/1 gigabitethernet 4/0/1
[Sysname-if-range] undo stp enable
[Sysname-if-range] quit
```

(9) 配置中间设备Device E

Device E作为中间设备来透传BFD MAD报文，协助IRF中的四台成员设备进行多Active检测。

!\[注意]如果中间设备是一个IRF系统，则必须通过配置确保其IRF域编号与被检测的IRF系统不同。

\# 创建VLAN 3，并将端口GigabitEthernet1/0/1～GigabitEthernet1/0/4加入VLAN 3中，用于转发BFD MAD报文。

```
<DeviceE> system-view
[DeviceE] vlan 3
[DeviceE-vlan3] port gigabitethernet 1/0/1 to gigabitethernet 1/0/4
[DeviceE-vlan3] quit
```

**三层聚合方式**

举例：两个设备

\# 创建三层聚合口

```
 [Sysname]interface Route-Aggregation 1
```

\# 创建三层聚合接口1，并配置MAD IP地址。

```
[Sysname] interface Route-Aggregation 1
[Sysname] mad bfd enable
[Sysname] mad ip address 192.168.1.1 255.255.255.252 member 1
[Sysname] mad ip address 192.168.1.2 255.255.255.252 member 2
[Sysname] quit
```

\# 将端口GigabitEthernet1/0/1、GigabitEthernet2/0/1加入到三层聚合口内。

**如有配置多条检测链路，只需要将对应的端口加入到聚合组即可**

```
[Sysname] interface GigabitEthernet1/0/1
[Sysname] port link-mode route
[Sysname] port link-aggregation group 1
[Sysname] quit
[Sysname] interface GigabitEthernet1/0/2
[Sysname] port link-mode route
[Sysname] port link-aggregation group 1
[Sysname] quit
```

#### 检测验证

```
[Sysname]display mad verbose
Multi-active recovery state: No
Excluded ports (user-configured):
Excluded ports (system-configured):
  Ten-GigabitEthernet1/0/49
  Ten-GigabitEthernet1/0/50
  Ten-GigabitEthernet2/0/49
  Ten-GigabitEthernet2/0/50
MAD ARP disabled.
MAD ND disabled.
MAD LACP disabled.
MAD BFD enabled interface: Route-Aggregation1
  MAD status                 : Normal
  Member ID   MAD IP address       Neighbor   MAD status
  1           1.1.1.1/30           2          Normal
  2           1.1.1.2/30           1          Normal
```

测试拔掉堆叠线，Standby 设备上端口全部Down，说明正常

## 其他配置

### 1.IRF显示和维护

| 操作                    | 命令                               |
| --------------------- | -------------------------------- |
| 显示IRF中所有成员设备的相关信息     | **display irf**                  |
| 显示IRF的拓扑信息            | **display irf topology**         |
| 显示IRF链路信息             | **display irf link**             |
| 显示所有成员设备上重启以后生效的IRF配置 | **display irf configuration**    |
| 显示MAD配置信息             | **display mad** \[ **verbose** ] |

### 2.配置成员优先级

在主设备选举过程中，优先级数值大的成员设备将优先被选举成为主设备。

IRF形成后，也可以通过本配置修改成员优先级，但修改不会触发选举，修改的优先级在下一次选举时生效。

#### 2.1. 配置步骤

(1) 配置IRF中指定成员设备的优先级。

```
[Sysname] irf member 1 priority 32
```

缺省情况下，设备的成员优先级为1。数值越大优先级越高，最大32。

### 3.IRF链路状态变化延迟上报功能

该功能用于避免因端口链路层状态在短时间内频繁改变，导致IRF分裂/合并的频繁发生。

#### 3.1. 配置限制和指导

下列情况下，建议将IRF链路状态变化延迟上报时间配置为0：

· 对主备倒换速度和IRF链路切换速度要求较高时

· 在IRF环境中使用RRPP、BFD或GR功能时

· 在执行关闭IRF物理端口或重启IRF成员设备的操作之前，请首先将IRF链路状态变化延迟上报时间配置为0，待操作完成后再将其恢复为之前的值

#### 3.2. 配置步骤

配置IRF链路状态变化延迟上报时间。

```
 [Sysname] irf link-delay 0
```

一般实际环境两台设备直链，建议配置成0秒，默认IRF链路状态变化延迟上报时间为4秒。

### 4.配置保留接口

当IRF分裂时，会关闭Recovery状态IRF上除了系统保留接口外的所有业务接口。系统保留接口包括：

· IRF物理端口， BFD MAD检测接口， 用户配置的保留聚合接口的成员接口

如果接口有特殊用途需要保持up状态（比如Telnet登录接口等），则用户可以通过命令行将这些接口配置为保留接口。

#### 1. 配置限制和指导

使用VLAN接口进行远程登录时，需要将该VLAN接口及其对应的以太网端口都配置为保留接口。但如果在正常工作状态的IRF中该VLAN接口也处于UP状态，则在网络中会产生IP地址冲突。

#### 2. 配置步骤

(1) 配置保留接口，当设备进入Recovery状态时，该接口不会被关闭。

```
[Sysname] mad exclude interface GigabitEthernet 1/0/1
```

缺省情况下，设备进入Recovery状态时会自动关闭本设备上除了系统保留接口以外的所有业务接口。

### 扩展

#### 角色选举

确定成员设备角色为主设备或从设备的过程称为角色选举。角色选举会在以下情况下进行：IRF建立、主设备离开或者故障、IRF合并等。其中，IRF合并包括合并前独立运行的两个（或多个）IRF合并为一个IRF和IRF分裂后重新合并两种情况。

IRF建立、主设备离开或者故障、独立运行的两个（或多个）IRF合并为一个IRF时，角色选举规则如下：

(1)     当前主设备优先，IRF不会因为有新的成员设备/主控板加入而重新选举主设备。不过，当IRF形成时，因为没有主设备，所有加入的设备都认为自己是主设备，则继续下一条规则的比较。

(2)     成员优先级大的优先。如果优先级相同，则继续下一条规则的比较。

(3)     系统运行时间长的优先。在IRF中，成员设备启动时间间隔精度为10分钟，即10分钟之内启动的设备，则认为它们是同时启动的，则继续下一条规则的比较。

(4)     CPU MAC小的优先。

通过以上规则选出的最优成员设备即为主设备，其它成员设备则均为从设备。

IRF分裂后重新合并时，原Recovery状态IRF中所有成员设备自动重启以从设备身份加入原正常工作状态的IRF，原正常工作状态的IRF的主设备作为合并后IRF的主设备。

在角色选举完成后，IRF形成，进入IRF管理与维护阶段。

引用：

{% embed url="<https://www.h3c.com/cn/d_202203/1575362_30005_0.htm#_Toc98968919>" %}
IRF虚拟化技术配置指导
{% endembed %}

{% embed url="<https://www.h3c.com/cn/d_202010/1348507_30005_0.htm>" %}
IRF虚拟化技术配置举例
{% endembed %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.chjina.com/it-zhi-shi-ku/lu-you-jiao-huan/hua-san/3.irf-dui-die.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
