华三IRF--堆叠技术

一、简介

背景

盒式设备成本低廉,缺乏不中断的业务保护,无法应用于重要的场合。
框式分布式设备具有高可用性、高性能、高端口密度的优点,经常被应用于一些重要场合。

介绍

华三(H3C)的 IRF(Intelligent Resilient Framework,智能弹性架构) 是一种将多台物理设备虚拟化为一台逻辑设备的“堆叠”技术。它不仅简化了网络拓扑,还显著提升了系统的可靠性和处理能力。

优点

(1)简化管理

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

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

(3)弹性拓展
通过增加成员设备,可以轻松自如的扩展IRF的端口数、带宽。各成员设备都有CPU,能够独立处理协议报文、进行报文转发,轻松扩展处理能力。

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

二、核心概念与术语

角色(Role)

  • Master(主设备): 负责管理整个堆叠系统(IRF Fabric)。处理控制平面协议(如路由协议、生成树计算等),并同步配置给从设备。一个 IRF 系统中只有一台 Master。

  • Standby/Slave(从设备): 作为 Master 的备份。它同步 Master 的配置和转发项。当 Master 故障时,从设备会通过选举产生新的 Master。在数据平面上,从设备依然可以独立转发数据流量。

选举规则(按顺序匹配):

(1)当前 Master 优先: 已经运行的 Master 不会被新加入的高优先级设备抢占。

(2)成员优先级(Priority): 优先级数值越大(0-255)越优先。

(3)系统运行时间: 启动早的设备优先。

(4)CPU MAC 地址: MAC 地址小的设备优先。

IRF 端口(IRF Port)

  • 这是逻辑接口,用于连接成员设备。每台设备上通常有两个逻辑 IRF 端口(irf-port 1 和 irf-port 2)。

  • 连接规则: 必须交叉连接,即设备 A 的 port 1 连接设备 B 的 port 2。

物理端口(Physical Port)

实际用于堆叠连接的物理接口(如 10G/40G/100G 光口)。这些端口需要被绑定到逻辑 IRF 端口上。

成员编号(Member ID)

用来标识堆叠系统中的不同设备。默认都是 1,配置时必须修改(如改为 1, 2, 3, 4),以便系统区分槽位号(Interface GigabitEthernet 2/0/1

域 ID(Domain ID)

在同一个网络中如果存在多个 IRF 堆叠系统,通过 Domain ID 来区分,防止 MAD 检测报文串扰。

三、 工作原理与生命周期

物理连线 -> Hello 报文交互 -> Master 选举 -> Slave 重启同步版本 -> Master 推送配置 -> 进入转发状态

第一阶段:物理连接与拓扑建立 (Physical Connection & Topology)

这是 IRF 形成的物理基础。

1.物理连接:

  • 用户使用堆叠线缆(专用堆叠线或普通光纤/网线)将设备连接起来。

  • 连接规则: 必须遵循“交叉连接”原则,即设备 A 的 IRF-Port 1 连接设备 B 的 IRF-Port 2。

  • 拓扑形态:

    • 链形(Daisy Chain): 头尾不相连。缺点是如果中间断开,堆叠会分裂。

    • 环形(Ring): 头尾相连(推荐)。可靠性高,断一条线不影响业务。

2.邻居发现:

  • 设备上电或接口 Up 后,会通过 IRF 端口发送 Hello 报文

  • 报文中包含自身的拓扑信息(Member ID、优先级、MAC地址等)。

  • 通过交互 Hello 报文,每台设备都知道了自己的“邻居”是谁,从而构建出物理拓扑图。

第二阶段:角色选举 (Master Election)

这是堆叠形成“大脑”的关键时刻。多台设备必须选出一个“话事人”(Master),其余为从设备(Standby/Slave)。

竞选触发点: 堆叠建立、新设备加入、或两个堆叠系统合并时。

竞选规则(优先级从高到低,逐条比较,胜出者通过):

1.当前 Master 优先(Current Master):

  • 如果堆叠系统已经运行且稳定,为了维持业务稳定,不轻易更换 Master。即使新加入的设备优先级更高,原 Master 也会继续当选(除非重启)。

2.优先级高者优先(Priority):

  • 管理员可配置(范围 1-32,默认为 1)。优先级数值越大,胜算越高。

3.系统运行时间长者优先(System Uptime):

  • 运行时间越长,意味着该设备可能拥有更完整的配置和路由表项,为了减少数据同步量,选它为主。

  • 注:时间差通常需要超过一定阈值(如10分钟)才算“长”,微小差异忽略。

4.CPU MAC 地址小者优先(Base MAC):

  • 最后的决胜局。MAC 地址越小,优先级越高。这是一个确定性的硬件属性,保证必定能选出一个 Master。

第三阶段:版本与配置同步 (Synchronization)

选举结束后,系统进入“统一思想”阶段,确保所有成员的行为一致。

1.软件版本同步(Software Sync):

  • Master 检查: Master 会检查所有 Slave 的软件版本(Bootrom 和 System Image)。

  • 自动加载: 如果 Slave 版本与 Master 不一致,Slave 会自动从 Master 下载系统软件,并自动重启以加载新版本。

  • 意义:保证整个堆叠系统的功能特性完全一致,避免兼容性问题。

2.配置文件同步(Configuration Sync):

  • 覆盖原则: Master 的当前运行配置(Running Config)会强制覆盖所有 Slave 的配置。

  • 同步内容: 接口配置、VLAN、路由协议等所有逻辑配置。

  • 注意:此时 Slave 原有的配置文件不会被物理删除,但在内存运行中已被 Master 的配置取代。

第四阶段:稳态运行 (Steady State Operation)

IRF 建立完成,对外呈现为一台逻辑设备。此时的工作模式是 “统一控制,分布式转发”

1.统一控制平面(Control Plane):

  • Master 独揽大权: 只有 Master 的 CPU 在处理路由协议(OSPF/BGP)、生成树(STP)、LACP 协商、Telnet 管理等报文。

  • 代理处理: 如果管理报文(如 SSH 请求)从 Slave 的端口进入,Slave 会通过堆叠链路将其透传给 Master 处理,Master 处理完再发回给 Slave 转发出去。

2.分布式数据平面(Data Plane):

  • 各自转发: 这是 IRF 高性能的核心。

  • 流量本地优先:

    • 如果数据流从 Slave A 进入,目的出口也在 Slave A,则直接转发,不经过堆叠链路,也不经过 Master。

    • 只有当出口在 Slave B 时,流量才会穿过堆叠链路。

  • 全网表项同步: Master 计算出的转发表(MAC地址表、ARP表、路由表)会实时同步给所有 Slave 的 ASIC 芯片。因此,Slave 即使没有控制权,也拥有完整的转发能力。

第五阶段:故障与维护 (Failure & Recovery)

IRF 需要应对成员的离开、故障或分裂。

1.Slave 故障:

  • Master 感知到 Slave 离线,更新拓扑表,将该 Slave 的端口置为 Down。

  • 业务流量自动切换到其他成员设备的冗余链路(如 Eth-Trunk)。

2.Master 故障(最坏情况):

  • Slave 侦测到 Master 消失(心跳超时)。

  • 剩余的 Slave 迅速根据“选举规则”进行新一轮选举。

  • 新 Master 接管控制平面。由于数据平面的表项此前已同步,业务中断时间通常在毫秒级到秒级之间。

3.IRF 分裂(Split / Merge)

  • 分裂: 堆叠线全部断开,分裂成两个独立的 IRF 系统(双主)。此时需要 MAD(多主检测)机制 介入,强制关闭其中一方的业务端口,防止 IP 冲突。

  • 合并: 断线修复后,两个独立的 IRF 系统相遇。它们会进行竞选,竞选失败的一方会自动重启,以 Slave 身份重新加入堆叠,并同步胜者的配置。

  四、关键机制:MAD (Multi-Active Detection)

MAD(多主检测) 是 IRF 堆叠技术中用于检测和处理 “脑裂”(Split-Brain) 现象的专用协议。

1. 为什么必须有 MAD?(风险来源)

正常情况下,堆叠系统由 Master 统一管理。如果堆叠链路(IRF Link)全部断开,而两台设备本身都运行正常:

  • 现象: 堆叠分裂成两个独立的系统(System A 和 System B)。

  • 后果: 由于两台设备都保留了原堆叠的配置,它们会同时拥有完全相同的 IP 地址、MAC 地址、生成树配置和路由信息

  • 灾难: 这会导致全网 IP 冲突、ARP 振荡、路由黑洞,甚至可能因为生成树混乱而引发二层环路,导致整网瘫痪。

MAD 的作用就是: 一旦检测到堆叠分裂,立刻让其中一方“闭嘴”(进入 Recovery 状态),从而保护网络。

2.状态

1. IRF 状态 (IRF State)

这是指物理设备在堆叠逻辑中的角色状态。

  • 正常---> Active

    • 含义: 当堆叠发生分裂(脑裂)后,竞选获胜的一方(或者主交换机所在的这一边)会保持 Active 状态。

    • 行为: 它继续正常转发业务流量,所有的接口都处于 UP 状态,拥有堆叠的 IP 地址和 MAC 地址。

  • 异常---> Recovery

    • 含义: 这是竞选失败的一方。为了避免与 Active 一方冲突(IP/MAC 冲突),它必须“闭嘴”。

    • 核心动作(图示重点): 会将设备上除了保留端口外的其他接口全部关闭(Shutdown)。

    • 目的: 强制将网络流量全部引流到 Active 状态的设备上,防止流量黑洞或环路。

    • 恢复机制: 一旦 IRF 物理链路修复,处于 Recovery 的设备会自动重启,以从设备(Slave)身份重新加入堆叠。

2. 保留端口 (Reserved Ports)

处于 Recovery 状态的设备虽然大部分端口都关闭了,但我们需要一种方式去登录它、排查故障或者管理它。这就是“保留端口”的作用。

  • 用户配置 (User Configured)

    • 命令: mad exclude interface <interface-id>

    • 工程意义: 这是一条非常重要的命令!

      • 如果你不配置这条命令,当设备进入 Recovery 状态时,连管理口(如果是业务口复用)都可能会被 Shutdown,导致你无法远程 SSH 登录这台故障设备,只能抱电脑去机房插 Console 线。

      • 最佳实践: 通常会将 Management 口 或连接带外管理网的接口配置为 mad exclude interface,确保即使堆叠分裂,也能远程登录进 Recovery 设备查看日志。

  • 系统保留 (System Reserved)

    • 堆叠口 (IRF Port): 系统自动保留 IRF 物理链路端口不被关闭。

    • 原因: 必须保持监听。一旦物理链路恢复,设备需要通过这些端口感知到,从而自动重启并恢复堆叠。

3. MAD 状态 (MAD Status)

这是指 MAD 检测协议本身的运行健康状况。

  • 正常 (Normal)

    • MAD 检测机制正在运行,且未检测到分裂,或者检测链路通畅。

  • 异常 (Faulty)

    • 含义: MAD 检测机制失效了。

    • 常见原因:

      • BFD MAD 的专用心跳线断了。

      • LACP MAD 的中间代理设备配置错误或链路不通。

    • 风险: 如果处于 Faulty 状态,此时如果 IRF 堆叠链路断开,系统将无法检测到脑裂,会导致两边都变成 Master(双主),引发严重的网络故障。

3. MAD 的三种主流检测方式

H3C 设备通常支持 LACP、BFD、ARP、ND(针对 IPv6)四种方式。最常用的是前三种。

1. LACP MAD 检测原理(扩展 LACP 协议)

这是利用标准的链路聚合协议(LACP)进行的协议扩展检测,是最常用的方式,因为它不需要占用额外的物理端口,直接复用业务上行链路。

核心机制:Extended LACPDU

标准的 LACP 协议主要用于协商链路聚合,H3C 对其进行了扩展,在 LACPDU(LACP 数据单元)报文中增加了一个新的 TLV(Type-Length-Value)字段

  • Active ID: 这个扩展字段里填充的是当前 IRF 系统的 Active ID(正常情况下,整个堆叠系统只有一个 Active ID,通常是 Master 设备的 Member ID)。

  • 如果Domain ID相同,Active ID不同,表示IRF分裂,检测到多Active冲突。

工作流程:

  1. 报文发送: IRF 堆叠建立后,Master 和 Slave 成员设备都会通过聚合链路(Eth-Trunk)发送 LACPDU 报文。正常情况下,它们发送的报文中 Active ID 都是相同的。

  2. 中间代理(Proxy): LACP MAD 需要一台支持 LACP 协议的中间设备(上行或下行交换机)。这台中间设备不仅要能做链路聚合,还必须支持 LACP MAD Passthrough(透传) 功能,或者它本身也是一台支持 LACP MAD 的 H3C 设备。

    • 注意:中间设备的作用就像一面“反射镜”,它将收到的 LACPDU 报文在聚合组内部进行转发。

  3. 分裂检测:

    • 正常态: 所有成员发出的 Active ID 一致,中间设备透传回来,大家相安无事。

    • 分裂态(脑裂): 堆叠分裂成两个独立的 IRF 系统(假设为 IRF-1 和 IRF-2)。IRF-1 的 Master 会发送它的 Active ID,IRF-2 的 Master 也会发送它的 Active ID。

    • 冲突确认: 这两组不同的 Active ID 报文通过中间设备互相透传。当 IRF-1 收到 IRF-2发来的、携带不同 Active ID 的 LACPDU 时,立刻判定出现“双主”冲突。

故障恢复:

2. BFD MAD 检测原理(高速心跳)

BFD(Bidirectional Forwarding Detection)原本是用于路由协议的毫秒级链路故障检测机制,H3C 将其移植到堆叠分裂检测中,是目前检测速度最快的方式。

核心机制:专用的 BFD 会话

BFD MAD 不依赖中间设备,它要求在堆叠成员之间建立直连的链路(或者通过中间设备的专用 VLAN),专门用于“心跳”检测。

工作流程:

  1. 会话建立: 在配置 BFD MAD 时,我们需要为每台成员设备配置一个专用的 MAD IP 地址。正常情况下,由于堆叠系统对外表现为一个逻辑节点,这些端口在逻辑上属于同一台设备,通常 BFD 会话处于 Down 状态(或者处于一种特殊的受控状态,因为在同一台设备内部两端口不能建立路由层面的 BFD 连接)。

  2. 分裂瞬间: 一旦 IRF 链路断开,系统分裂为两个物理独立的设备。此时,原先被抑制的 BFD 端口变成了两台不同设备之间的直连端口。

  3. 协议握手: 分裂后的两台设备会立即尝试通过这根 BFD 链路发起 BFD 握手(利用之前配置的 MAD IP)。

  4. 冲突确认: 只要 BFD 会话成功建立(Session Up),就意味着这两台设备在物理上是通的,但在 IRF 逻辑上断了(否则它们不会建立 BFD)。系统据此判定发生了脑裂。

故障恢复:

3. ARP MAD 检测原理(广播机制)

ARP MAD 是利用 IPv4 的免费 ARP(Gratuitous ARP) 报文实现的。(IPv6 环境下对应的叫 ND MAD,原理完全一致)。

核心机制:扩展的 ARP 报文

与 LACP 类似,系统会对免费 ARP 报文的数据字段进行扩展,填入 Active ID。

工作流程:

  1. 配置: 通常在管理 VLAN 接口(Vlan-interface)上开启 ARP MAD。

  2. 广播发送: 堆叠系统会周期性地通过该 VLAN 发送免费 ARP 报文。

  3. 中间设备透传: 这些广播报文会通过中间交换机(作为二层交换机)广播给同一 VLAN 内的所有端口。

  4. 冲突确认:

    • 正常态: 成员收到的免费 ARP 里的 Active ID 与自己一致。

    • 分裂态: 两个分裂的 Master 都在发免费 ARP。当一方收到另一方发来的 ARP 报文,解析发现 Active ID 与自己不同,判定为冲突。

优缺点分析:

  • 优点: 只要中间设备能转发二层广播报文即可,对中间设备没有任何特殊功能要求(不需要支持 LACP 扩展)。

  • 缺点: 依赖广播,在大规模网络中效率较低;且检测速度比 BFD 慢(秒级 vs 毫秒级)。

三种原理的核心差异

维度LACP MAD (推荐)BFD MAD (极速)ARP MAD (兼容)
检测载体LACPDU (扩展 TLV)BFD 会话 (UDP)免费 ARP (广播)
触发逻辑收到不同 Active ID 的报文BFD 会话状态变为 UP收到不同 Active ID 的报文
中间设备要求 (需支持 LACP 透传/识别) (通常直连) (仅需二层互通)
端口占用复用现有聚合业务口需占用独立物理口 (建议)复用现有业务/管理口
检测速度极快 (毫秒级)较慢

4. 冲突处理流程(“决斗”机制)

当 MAD 检测到网络中存在两个 Master(多主冲突)时,会触发“竞选”机制,决定谁留谁去。

第一步:比拼(Master 竞选)
系统会按顺序比较以下参数,胜者保持 Active(正常工作),败者进入 Recovery(恢复状态)

  1. 健康状态(Current Health): 比较设备是否有故障。

  2. 成员数量(Member Count): (仅 LACP/BFD 支持) 成员多的赢。例如 3台 vs 1台,3台的一方胜出。这能最大程度保留业务能力。

  3. Master 成员编号(Master ID): ID 小的赢。例如 Member 1 vs Member 2,Member 1 胜出。

第二步:隔离(Isolation)

  • 败方(Recovery): 自动关闭所有业务端口(Shut down),仅保留 IRF 端口和管理员指定的“保留端口”(用于远程登录排查)。

  • 胜方(Active): 继续正常转发流量。

第三步:通知

  • 胜方会接管所有业务,网络中的 ARP 和路由表项会指向胜方,业务在短时间内自动恢复。

故障恢复(复活)

当断裂的堆叠线缆被修复后:

  1. 检测合并: 系统检测到链路恢复。

  2. 自动重启: 处于 Recovery 状态的设备(败方)会自动检测到主设备存在。

  3. 重新加入: 败方设备会自动重启,以 Slave 身份重新加入堆叠系统,同步 Master 配置,端口自动恢复 Up 状态。

5. 总结与选型建议

检测方式LACP MAD (推荐)BFD MAD (最快)ARP MAD (备选)
原理利用以太网链路聚合(Eth-Trunk)。IRF 发送扩展的 LACP 报文,对端设备透传这些报文给其他成员。利用 BFD(双向转发检测) 协议。通过一根专用网线或交换机互连,极速检测连通性。利用 免费 ARP 报文。在指定 VLAN 内发送携带 Domain ID 的 ARP 报文检测冲突。
组网要求需要对端设备(如核心交换机/服务器)支持 LACP 协议。强烈建议使用一根专用网线直连两台设备的非 IRF 端口。不需要专用物理线路,复用业务链路或管理链路。
检测速度快(秒级/亚秒级)。极快(毫秒级,<50ms)。较慢(秒级)。
优点配置最简单,无需额外布线,利用现有的业务聚合链路即可。检测速度最快,可靠性最高,完全独立于业务环境。成本低,不需要聚合链路也不需要专用线。
缺点依赖对端设备的支持。占用两个物理端口用于检测(如果直连)。效率较低,且在大规模广播域中可能受干扰。

五、 配置逻辑概览

1.规划 Member ID

设备 DSW1 为 1,设备 DSW2 为 2,设备 DSW3 为 3,设备 DSW4为 4。

#修改设备成员编号,需要重启激活
[DSW1]irf member 1 renumber 1
[DSW2]irf member 1 renumber 2

以DSW2为例查看IRF发现设备成员编号改变

2.配置物理口

shutdown 物理端口。

#DSW1
[DSW1]int range Ten-GigabitEthernet 1/0/49 to Ten-GigabitEthernet 1/0/52
[DSW1-if-range]shutdown

#DSW2
[DSW2]int range Ten-GigabitEthernet 2/0/49 to Ten-GigabitEthernet 2/0/52
[DSW2-if-range]shutdown

3.绑定逻辑口:

  • 设备 DSW1:irf-port 1/1绑定物理口。

  • 设备 DSW2:irf-port 2/2 绑定物理口(注意:1号逻辑口必须对接对端的2号逻辑口)。

#以DSW1为例,根据拓扑规划将物理堆叠口加入逻辑堆叠口
[DSW1]irf-port 1/1
[DSW1-irf-port1/1]port group interface Ten-GigabitEthernet 1/0/49
[DSW1-irf-port1/1]port group interface Ten-GigabitEthernet 1/0/50
[DSW1-irf-port1/1]irf-port 1/2
[DSW1-irf-port1/2]port group interface Ten-GigabitEthernet 1/0/51
[DSW1-irf-port1/2]port group interface Ten-GigabitEthernet 1/0/52

[DSW1]int range Ten-GigabitEthernet 1/0/49 to Ten-GigabitEthernet 1/0/52
[DSW1-if-range]undo shutdown    #物理堆叠口再打开

<DSW1>save                      #保存配置

4.激活配置:

执行 irf-port-configuration active,设备会自动重启并加入堆叠。

[DSW1]irf-port-configuration active

查看IRF发现成员设备加入IRF域

编号前带“*”,表示该设备是主设备

编号前带“+”,表示该设备是用户当前登录的、正在操作的设备

5. 配置 MAD

(1)LACP MAD

#DSW5    链路聚合    对端设备不需要配置 mad enable,只需要支持标准的 LACP 即可
[DSW5]int Bridge-Aggregation 1
[DSW5-Bridge-Aggregation1]link-aggregation mode dynamic
[DSW5-Bridge-Aggregation1]quit
[DSW5]int range g1/0/1 to g1/0/4
[DSW5-if-range]port link-aggregation group 1

#IRF域中
[DSW1]irf domain 1
[DSW1]interface Bridge-Aggregation 1                      #创建聚合口
[DSW1-Bridge-Aggregation1]link-aggregation mode dynamic   #模式必须为动态(Dynamic)
[DSW1-Bridge-Aggregation1]mad enable                      #开启 LACP MAD 
You need to assign a domain ID (range: 0-4294967295)
[Current domain is: 1]:
The assigned domain ID is: 1
[DSW1-Bridge-Aggregation1]quit
[DSW1]int range g1/0/1 g2/0/1 g3/0/1 g4/0/1
[DSW1-if-range]port link-aggregation group 1

查看:MAD信息display mad verbose

手动关闭(shutdown)Ten-GigabitEthernet 1/0/49 Ten-GigabitEthernet 1/0/50

IRF发生脑裂DSW1 DSW2均成为Master

DSW1中IRF状态正常 MAD状态正常             

DSW2中IRF状态Recovery MAD状态Faulty   会将设备上除了保留端口外的其他接口全部关闭

(2)BFD MAD

#DSW5
[DSW5]vlan 3                                    
[DSW5]interface GigabitEthernet1/0/1
[DSW5-GigabitEthernet1/0/1]port link-mode bridge
[DSW5-GigabitEthernet1/0/1]port access vlan 3

[DSW5]interface GigabitEthernet1/0/2
[DSW5-GigabitEthernet1/0/2]port link-mode bridge
[DSW5-GigabitEthernet1/0/2]port access vlan 3

#创建VLAN3,并将堆叠中所有成员设备的指定端口加入该VLAN。
这些端口是堆叠成员与DSW5相连的物理接口,用于发送和接收MAD报文   

[DSW5]int range g1/0/1 g1/0/2
[DSW5-if-range]undo stp enable       #因为MAD是通过这些端口进行通信的启用STP可能导致端口被阻塞,影响MAD检测               


#IRF
[DSW1]vlan 3
[DSW1-vlan3]int rang g1/0/1 g2/0/1
[DSW1-if-range]port link-mode bridge
[DSW1-if-range]port access vlan 3
[DSW1-Vlan-interface3]mad bfd enable                  #启用基于 BFD的MAD检测机制
[DSW1-Vlan-interface3]mad ip address 1.1.1.1 255.255.255.0 member 1
[DSW1-Vlan-interface3]mad ip address 1.1.1.2 255.255.255.0 member 2
                                                      #为每个堆叠成员分配唯一的MAD IP地址

手动关闭(shutdown)Ten-GigabitEthernet 1/0/49 Ten-GigabitEthernet 1/0/50 

发生脑裂进行BFD检测

DSW1

DSW2

BFD会话表:

(3)ARP MAD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值