干网络这行,没有谁没被单台交换机的容量和可靠性逼过。几年前我在机房调试一台核心交换机,高峰期CPU快冲到80%,业务部门还在不停催着加带宽,那次硬是把我从“能用就行”逼成了“必须上IRF”。今天要聊的H3C 6805 Switch IRF Config,就是解决这类问题最常用的手段:把两台甚至多台物理交换机虚拟成一台逻辑设备,控制平面一台做主、另一台做备,转发平面共享,配置统一管理,链路可以跨设备做聚合。对刚入行的网络工程师来说,这是一套能直接抄作业的配置思路;对负责数据中心、园区核心的老手来说,IRF的规划和排障也值得反复复盘。
需要先说清楚,IRF不是简单的“交换机堆叠”,它更像把多台设备“焊接”成一个整体。S6805这款设备在数据中心场景里经常用来做TOR(Top of Rack)和汇聚,单台设备支撑几十台服务器的接入并不稀奇,但如果接入层出现单点故障,业务全断,那就不只是技术问题了。所以组网者往往会把两台6805通过IRF组成一对,做成一台“虚设备”,这样既保住了接入密度,又拿到了设备级的冗余。下面我从方案选择、配置规划、实操命令一直讲到排障心得,尽量把我踩过的坑也一并填上。
1. 为什么用IRF:方案价值与适用场景
1.1 从两台交换机到一台虚拟设备
IRF的全称是Intelligent Resilient Framework,智能弹性架构。它的核心思想是在多台交换机之间建立一条专门的高速IRF链路,通过协议协商机制让所有成员设备共享一套配置、一台主设备(Master)、一个全局资源池。对于外部设备来看,这两台物理交换机就是一台设备,IP地址、MAC地址、路由表、MAC表、接口配置完全统一。
传统的高可用做法是两台设备各自独立,再用VRRP或者VRRPE实现网关冗余,同时依赖STP或者路由协议实现链路冗余。这方案不是不行,但问题在于:两台设备的配置要分别维护,双归服务器的两条链路在交换机侧很难做成统一聚合口,管理面也要盯两个节点。IRF把这些问题简化了,我给你一个例子:服务器双网卡做LACP bond,分别接到两台6805上,如果两台设备不在一台IRF里,交换机侧需要两个独立的物理接口,但无法在逻辑上变成一个聚合组,否则STP会收到同一个服务器MAC从两个端口到达的BPDU,很容易导致环路。有了IRF,这两个物理接口可以加入同一个聚合组,服务器侧看到的是单一链路聚合设备,转发彻底不用纠结。
从控制平面看,主设备负责管理整台IRF,所有成员设备都同步配置和状态;从数据平面看,流量可以通过IRF链路在成员间转发,链路故障时自动重路由。S6805作为一款支持25GE/100GE等高密度端口的数据中心交换机,在IRF模式下可以做到40G甚至100G的IRF链路带宽,实际吞吐表现相当好。
1.2 组网选型:什么时候该上IRF
先说结论:不是所有场景都适合IRF,但最常见的“两台接入/汇聚交换机做设备级冗余”的场景,IRF基本是首选。
典型适合的场景包括:
- 数据中心TOR交换机,服务器双网卡双上联,要求链路故障秒级切换。
- 园区汇聚/核心交换机,希望网关在设备故障时不迁移,让终端无感知。
- 需要降低管理成本,不想维护两套独立配置,想让接口配置做一次就生效。
- 设备数量有限(通常是2台),希望通过虚拟化简化STP域和路由配置。
不适合的场景也比较明确:
- 跨楼层、跨园区的远距离部署,IRF链路需要物理上的高速连接,距离远了成本和可靠性都不可控。
- 两台设备硬件型号和软件版本差异很大,IRF要求同型号同版本,有些跨代型号还无法组IRF。
- 对故障爆炸半径非常敏感的场景,如果虚拟化成一台设备后,控制平面故障可能影响整台逻辑设备,这时候用独立设备+双活网关可能更合适。
- 升级维护时你希望“先升级一台、再升级另一台”而不用整体重启,IRF在版本升级上虽然支持灰度,但没有独立设备那么灵活。
我个人的经验是:如果只是两台设备做接入/汇聚冗余,IRF的收益远大于风险;如果超过两台,而且设备横跨不同的物理区域,那就得谨慎了。S6805作为固定接口设备,虽然也能组成更多成员的IRF,但实践中两台一组最稳,故障域小、链路规划也清晰。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 配置前的规划:端口、编号、优先级和软件版本
2.1 硬件连接方式与IRF链路规划
很多人上手IRF第一件事就是翻命令,结果二十分钟后卡在“为什么我的irf-port up不起来”。其实大部分问题出在物理链路和端口规划上。
IRF物理链路负责成员设备之间的控制报文和数据转发报文传输,必须选择带宽足够、稳定性高的端口。S6805系列设备通常有10GE、25GE、40GE、100GE口,我建议选择高带宽端口做IRF端口,至少用两条物理链路组成一个IRF端口,形成链路聚合,避免单链路故障导致IRF分裂。
物理连接方式有两种:链形和环形。
链形连接就是A设备IRF口1连接B设备IRF口2,B设备IRF口1连接C设备IRF口2,依次排下去,首尾不相连。环形连接就是链形基础上把首尾也连起来。IRF协议本身支持链形,但环形可靠性更高——链形中间断一条链路,IRF就可能分裂成两个独立的IRF;环形断一条链路还能保持整体连通。
对于两台6805组成的IRF,我强烈建议用两条物理链路分别接到两台设备的IRF端口上,组成一个环形逻辑连接。比如设备A的FortyGigE1/0/1和设备B的FortyGigE2/0/1之间放一条光缆,设备A的FortyGigE1/0/2和设备B的FortyGigE2/0/2之间放另一条光缆,两条都捆绑进各自的IRF端口。这样即使一条物理链路断了,IRF仍然保持完整。
还要提醒一点:IRF链路应当使用专用物理口,不要和业务口混用。如果你手头临时只有10GE口,宁可业务少接一点,也别把IRF链路和业务流量塞在同一个口上。IRF链路满载会影响成员间报文同步,进而影响整个虚设备的性能。
2.2 成员编号、优先级和IRF域
IRF配置中三个最坑的概念是成员编号、优先级和IRF域。这三样没想明白,后面你会在“设备编号混乱”和“分裂后合不回来”之间反复折腾。
成员编号决定了设备在IRF中的身份,每个成员必须唯一。比如两台设备,一个编号是1,另一个编号是2。这个编号会直接影响物理接口命名:成员1的40GE口叫FortyGigE1/0/1,成员2的40GE口叫FortyGigE2/0/1。配置业务和IRF端口时,你时刻要看清楚当前操作的是哪个成员。
优先级的作用是决定谁当主设备。Comware的规则是优先级数值越大,越可能成为Master。两台全新设备默认优先级都是1,如果不改,系统会比较MAC地址大小来决定,结果就不可控了。所以规划阶段就要指定A设备优先级为32(常用值,范围是1-32),B设备保持默认1或不配置。这样A设备稳定成为主设备,管理地址、配置主入口都集中在A上。
IRF域用于标识一个IRF系统。当网络中存在多组IRF时,域编号要不同,防止设备混淆。默认域编号通常是1,如果你只做一组IRF,保持默认即可;如果你在同一张网里组多组IRF,一定要区分域编号。这一点经常被忽略,等到两组IRF的线缆插错导致设备“乱认亲”时,就晚了。
另外,软件版本必须一致。不同版本的S6805组IRF通常会被拒绝,即使能合在一起,后续也可能出现协议行为不一致的隐患。升级前把两台设备刷到相同版本,再开始配置IRF。
3. 6805 IRF配置实操
3.1 基础配置:管理接口、主机名和版本检查
实操部分我按最常用的双设备场景来写,设备A和B都是S6805,物理上通过两条40GE链路互联,规划A为主设备,B为备设备。
第一步,先别急着配IRF,把管理基础打好。给A设备配置管理IP,这样即使IRF链路有震荡,你还能通过管理网登录设备。
bash复制system-view
sysname SW-A
interface M-GigabitEthernet0/0/0
ip address 10.10.10.11 255.255.255.0
quit
ip route-static 0.0.0.0 0 10.10.10.254
save force
B设备类似,管理IP设为10.10.10.12。然后检查两台设备的软件版本。
bash复制display version
这一步很多人会跳过,但如果你手头的两台设备版本一个老一个新,IRF配置再好也白搭。确认版本一致后,再继续。
3.2 设备A的IRF配置
在设备A上执行下面的配置:
bash复制system-view
irf member 1 priority 32
quit
system-view
irf-port 1/1
port group interface FortyGigEthernet1/0/1
port group interface FortyGigEthernet1/0/2
quit
save force
reboot
这里有几个动作必须理解:irf member 1 priority 32 是把当前设备设置为IRF成员1,优先级32。注意,当前设备默认就是成员1,所以这条命令主要是在设优先级。irf-port 1/1 是创建成员1的IRF端口1,再把两个物理40G口绑进来。保存配置后必须重启,IRF端口配置才会真正生效。
为什么必须先保存再重启?因为IRF端口和成员编号的变更在设备启动阶段才会生效,如果直接配置完后不重启,IRF端口不会自动UP。这也是很多新手第一次配置完发现display irf里没有邻居的原因。
3.3 设备B的IRF配置
设备B的配置稍微复杂一点,因为B当前默认成员编号也是1,必须先把它改成2,同时将连接的IRF物理口绑定到IRF端口2/2上。这里容易踩坑:在B设备尚未重启改变成员编号前,它的物理接口名仍然以1开头,所以绑定IRF端口时要用FortyGigEthernet1/0/x,而不是想象中变成2之后再敲FortyGigEthernet2/0/x。
bash复制system-view
irf member 1 renumber 2
quit
save force
reboot
重启完成后,B设备的成员编号就变成了2,此时再登录B设备,配置IRF端口:
bash复制system-view
irf member 2 priority 1
irf-port 2/2
port group interface FortyGigEthernet2/0/1
port group interface FortyGigEthernet2/0/2
quit
save force
reboot
这里irf-port 2/2表示成员2的IRF端口2,对应的物理口是FortyGigEthernet2/0/1和FortyGigEthernet2/0/2。设备B重启后会尝试与设备A通过IRF链路合并,此时两台设备组成一个IRF系统。
很多厂商文档会建议在设备B上先用irf member 2直接把成员编号写成2,而不是执行irf member 1 renumber 2。但根据Comware的流程,irf member 2这种方式更适用于设备初始编号已经是1但你希望它变成2的新建场景,在实际操作中可能因为版本差异导致无法绑定IRF端口。我在多次实践中验证,先renumber再重启,再配置IRF端口,是最稳妥的顺序。
3.4 激活后的验证与状态检查
两台设备都重启完成后,在任意一台设备上登录,先看IRF成员状态:
bash复制display irf
正常情况下能看到Members列表,第一列为主设备(Master),第二列为备设备(Standby),每个成员的状态都是Normal。再查看IRF拓扑:
bash复制display irf topology
这里会列出每个成员的IRF端口连接关系。比如成员1的IRF端口1通过物理口1/0/1和1/0/2连接到成员2的IRF端口2,说明IRF链路已经UP。如果拓扑信息为空,说明IRF链路没有建立,需要从物理层查起。
还可以查看IRF链路聚合信息:
bash复制display irf link
这条命令会显示IRF端口由哪些物理端口组成,以及每条链路的状态。如果某条物理链路Down,链路聚合会自动把流量切换到另一条,这也是为什么我建议至少绑两条物理链路进IRF端口。
整个IRF系统合并后,你在A设备上创建的全局配置会自动同步到B设备,包括VLAN、接口配置、路由等。当然,前提是这些配置在IRF合并之后统一在系统视图下配置,而不是在合并前分别配置。
4. 业务接口与上层链路配置要点
4.1 跨设备链路聚合让双上联真正生效
IRF最大的价值之一,就是可以让两台物理设备上的物理接口加入同一个Eth-Trunk。这个逻辑聚合口跨成员设备存在,外部设备看到的是一条逻辑链路,而物理链路分别落在不同的成员上。
例如两台服务器双网卡,分别接到成员1的Ten-GigabitEthernet1/0/20和成员2的Ten-GigabitEthernet2/0/20,想做成一个二层聚合口:
bash复制system-view
interface Bridge-Aggregation 10
port link-type trunk
port trunk permit vlan all
quit
interface Ten-GigabitEthernet1/0/20
port link-type trunk
port trunk permit vlan all
port link-aggregation group 10
quit
interface Ten-GigabitEthernet2/0/20
port link-type trunk
port trunk permit vlan all
port link-aggregation group 10
quit
save force
这里特殊之处在于,IRF中两台成员设备的接口可以同时加入同一个聚合组,交换机侧会自动完成跨设备聚合的负载均衡。服务器侧的网卡bond模式如果配置为LACP(模式4),在交换机侧动态聚合也能生效;如果服务器不会发送LACPDU,也可以用静态聚合,只要服务器侧不是active-backup模式就行。
跨设备聚合对接的常见误区是:成员接口的VLAN配置不一致。由于IRF是虚拟设备,聚合口的行为和普通交换机一致,两个成员端口必须保持完全相同的二层属性,否则聚合口只会有一个成员被选中,另一个处于异常状态。你可以在聚合口下统一配置VLAN属性,再让成员端口继承,不要分别在成员端口下各配一套。
4.2 上线链路和网关设计如何配合IRF
S6805在数据中心里通常不是单独接入服务器就完事了,它还要上联到汇聚或者核心设备。这里就要考虑网关了。
如果上联的汇聚设备也是IRF,那最好办,两台汇聚设备虚拟成一台,S6805的IRF上联可以做成跨设备聚合,所有链路都能参与负载均衡。
如果上联设备不支持IRF,那就要按传统方式处理:S6805的IRF虚拟成一个节点,去对接两台独立的上联设备。此时建议在两台上联设备上跑VRRP或者三层路由冗余,S6805侧通过两条不同链路分别连接两台独立设备,利用路由协议或策略路由实现冗余。
IRF对三层网关的简化在于:S6805上的VLAN接口(SVI)只需要配置一次,IP地址作为网关,由主设备承载,备设备同步。如果成员2发生故障,主设备继续转发;如果主设备故障,备设备接管网关,由于MAC地址和IP都相同,终端设备完全无感知。前提是你已经配置好MAD检测,防止两台成员同时认为自己是主设备,导致网关IP冲突。
5. 常见问题与排查技巧实录
5.1 两台设备无法完成IRF合并
这是配置IRF时最让人抓狂的场景,A设备和B设备都重启了,IRF链路物理上也是通的,但display irf始终看不到邻居。我总结了一个排查顺序,按这个查基本半小时内能定位。
先看物理层,物理接口是否Up。用display interface brief检查两个物理口的状态,如果Down,查光模块、光缆和两端接口模式。很多40G口需要先确认是否拆分成4个10G口,或者是否因为端口模式不匹配导致Down。
再看IRF端口配置。用display current-configuration configuration irf查看两台设备的IRF配置,重点检查IRF端口编号和物理口绑定关系。IRF端口必须两端匹配:成员1的IRF端口1连接成员2的IRF端口2,或者成员1的IRF端口1连接成员2的IRF端口1。如果绑定反了,链路功能上是正常的,但协议要求必须按规划配对。
接着查成员编号。display irf能看到本设备的成员编号,如果两台都是1,设备不会合并,必须改成唯一编号。
最后查版本。display version对比两台设备的软件版本,如果版本差异过大,IRF完全无法建立。这种情况只能升级一致后再合。
5.2 IRF分裂与MAD检测配置
IRF最怕的故障是“分裂”:两台设备之间的IRF链路断了,但两台设备都活着,此时它们会各自认为自己是主设备,都对网络下发网关地址和路由,造成双主冲突、MAC漂移、广播风暴。解决这个问题的标准做法是启用MAD(Multi-Active Detection)检测。
BFD MAD是最常用的一种,它的原理是:为IRF创建一个专用的VLAN,成员设备各自在这个VLAN里配置一个物理口,并开启BFD。正常情况下BFD会话正常,如果IRF链路断开,设备仍然能通过BFD链路上“保活”,双方都活;但协议会关闭备设备的业务口,避免冲突。
配置示例如下:
bash复制system-view
vlan 4094
quit
interface Vlan-interface 4094
ip address 10.20.30.1 24
mad bfd enable
mad ip address 10.20.30.2 24 member 1
mad ip address 10.20.30.3 24 member 2
quit
interface Ten-GigabitEthernet1/0/24
port link-type access
port access vlan 4094
quit
interface Ten-GigabitEthernet2/0/24
port link-type access
port access vlan 4094
quit
save force
这里的mad ip address是给每个成员指定的虚拟地址,用于BFD会话。注意,VLAN4094和上面的接口不能用于业务流量,否则MAD报文会被业务干扰。实际排障时,如果IRF分裂后恢复IRF链路,两边成员重新合并,MAD会解除对备设备业务口的关闭动作,整个系统会自动恢复。
5.3 平时配置IRF最值得记住的避坑清单
最后分享几个我踩过或被同事踩过的坑,每条都能省你几个小时。
设备改完成员编号后,接口命名会变。比如原来在设备B上配置业务口1/0/10,改成成员2后接口变成2/0/10,但旧配置里可能还带着1/0/10的指向,容易引起业务错乱。所以在改编号前先把旧的接口配置清干净。
IRF配置保存要养成习惯:在合并完成后,立刻在主设备上再执行一次save force。为什么要强调这一步?因为合并前两个设备上各自的局部配置在合并后可能会被主设备配置覆盖,如果你在主设备上调整了配置但没有保存,备设备重启后配置不同步,IRF又可能分裂。
IRF链路不要和业务链路混用。有人为了省光模块,把IRF链路和上行业务放同一物理口,结果在高峰期IRF报文被业务流量挤压,导致主备之间心跳超时。IRF报文虽然优先级可以调,但物理带宽是硬指标。
管理终端不要挂在IRF链路上。我见过同事直接在IRF链路对应的物理接口上配置了管理VLAN,结果某次IRF链路出现瞬时震荡,管理终端直接离线,连排查的设备都登不上。建议所有管理流量走带外管理口,或者至少不要和IRF链路共用一条物理路径。
升级维护要等IRF稳定后操作。IRF建立好后,不要急着做流量测试,先观察几分钟display irf,确认成员状态一直是Normal,再上业务。如果发现成员状态反复跳变,多半是IRF链路质量不行。
最后再补一个经验
我在做S6805 IRF项目时,最受益的习惯是在配置前把两台设备的规划信息做成表格:成员编号、优先级、IRF端口对应物理接口、上联端口、下联端口、管理IP,全部列清楚,然后拿着表格进机房。一个人操作时,贴好标签,配完一台重启一台,另一台不急着动。重启完成后先检查IRF是否合并,合了再配业务,不合并就回查链路。这套流程慢是慢点,但稳定,尤其适合夜里做割接,容不得返工。
另外,只要调过IRF,你就知道一个真理:配置命令基本上都能查文档,真正让人崩溃的都是物理链路和规划问题。所以无论设备多高端、版本多新,物理层检查永远值得你多花十分钟。那种“配置简单,链路全凭感觉”的做法,最终都会在故障时给你上课。
