第281篇:华为 CloudFabric 数据中心方案简介

关键词:CloudFabric、CloudEngine、iMaster NCE-Fabric、数据中心网络、SDN、Fabric、自动化部署


一、引言

华为 CloudFabric 是基于 SDN(Software Defined Networking)理念的全新一代数据中心网络解决方案,旨在解决传统数据中心网络运维复杂、扩展困难、自动化程度低等痛点。CloudFabric 以华为 CloudEngine 系列交换机为硬件基础,以 iMaster NCE-Fabric 为智能控制器,实现了数据中心网络的自动化部署、智能运维和灵活调度。

在第280篇中,我们讨论了Kubernetes NetworkPolicy如何实现Pod级别的网络策略控制,而 CloudFabric 则从更大的视角,提供数据中心底层网络到上层云平台的端到端自动化管理能力,二者在云原生数据中心中形成互补:NetworkPolicy 负责东西向 Pod 间流量策略,CloudFabric 负责南北向和 Pod 到外部服务的网络自动化编排。

二、CloudFabric 架构组成

2.1 整体架构

CloudFabric 采用典型的 SDN 三层架构:

层级 组件 职责
管控面 iMaster NCE-Fabric 网络自动化编排、策略下发、全局可视化
转发面 CloudEngine 交换机 VXLAN/EVPN 数据转发、硬件加速
管理层 Fabric Insight 流量分析、故障定位、性能监控

整体架构 - 图示

2.2 硬件平台 — CloudEngine 系列

型号系列 定位 典型规格 应用场景
CE16800 核心Spine 192×400G/800G 超大规模数据中心
CE16800-800G 核心Spine 全800G端口 智算中心/AI集群
CE8800 核心/汇聚 24×100G + 8×400G 大型数据中心核心
CE6860 Leaf接入 64×25G/100G 服务器接入层
CE6870 Leaf接入 48×25G + 8×400G 高密度服务器接入
CE5880 分支接入 48×10G 边缘/分支数据中心

2.3 控制器 — iMaster NCE-Fabric

功能模块 说明
Fabric 自动化 ZTP零接触部署、自动拓扑发现、批量配置下发
BGP-EVPN 编排 集中式VXLAN控制面管理、Route-Target自动分配
业务自动化 与云平台API对接、VDC(虚拟数据中心)一键创建
智能运维 数字孪生、Telemetry实时采集、根因分析
安全域管理 与安全组联动、Fabric Security Zone隔离

三、核心技术特性

3.1 VDC(虚拟数据中心)

VDC是CloudFabric的核心隔离抽象,一个物理Fabric可以划分多个VDC,每个VDC拥有独立的管理域:

隔离维度 实现方式
管理隔离 独立的VRF和管理域
路由隔离 独立的BGP-EVPN实例和Route-Target
转发隔离 独立的VXLAN VNI空间
策略隔离 独立的ACL和流量策略

VDC 创建流程:

VDC(虚拟数据中心) - 图示

3.2 Fabric 自动化部署

CloudFabric 支持从交换机上电到 Fabric 就绪的全自动部署:

  1. 物理连接检测:交换机上电后自动检测光模块、线缆连接状态
  2. 角色自动发现:根据端口连接关系自动识别 Spine/Leaf 角色
  3. 配置自动下发:Controller 自动生成分布式配置并批量下发
  4. 健康检查:自动验证 BGP-EVPN 邻居、VXLAN 隧道、路由表
  5. 服务上线通知:部署完成后通知云平台服务就绪

3.3 Fabric Insight 智能运维

Fabric Insight 是 CloudFabric 的智能运维子系统:

能力 说明
流量镜像分析 端口镜像+硬件流量复制,分析东西向流量
数字孪生 构建网络数字孪生模型,实时映射物理网络状态
故障根因分析 基于拓扑和Telemetry数据自动定位故障根因
性能基线 自动建立性能基线,检测异常偏离
智能工单 自动生成故障工单和处理建议

3.4 BFD for BGP-EVPN

为确保VXLAN隧道的高可靠性,CloudFabric支持BFD for BGP-EVPN:

特性 说明
检测粒度 每BGP EVPN会话独立BFD检测
检测时延 毫秒级(最小3ms×3次)
链路切换 BFD检测到故障后立即切换,不等待BGP HoldTimer
带宽保护 支持per-NIH(per-Nexthop)BFD

四、实战配置/案例分析

4.1 CloudFabric 基础部署配置

Leaf 交换机关键配置片段:

# ===== CE6860 Leaf 交换机配置 =====

# 1. 系统基本配置
sysname DC1-LEAF-01
snmp-agent community read cipher Huawei@123
snmp-agent target-host trap address udp-domain 10.255.0.100 params securityname public

# 2. VTEP源接口
interface LoopBack 1
 description VTEP_Source_IP
 ip address 10.255.1.1 255.255.255.255

# 3. NCE-Fabric Controller对接(NETCONF over SSH)
netconf configure max-connections 10
netconf ssh server enable

# 4. iBGP与BGP EVPN
bgp 65001
 router-id 10.255.1.1
 # 与Spine建立iBGP EVPN邻居
 peer 10.255.0.1 as-number 65001
 peer 10.255.0.2 as-number 65001
 peer 10.255.0.1 evpn enable
 peer 10.255.0.2 evpn enable
 peer 10.255.0.1 connect-interface LoopBack 1
 peer 10.255.0.2 connect-interface LoopBack 1
 peer 10.255.0.1 bfd enable
 peer 10.255.0.2 bfd enable

# 5. VXLAN VTEP配置
interface Nve 1
 source-interface LoopBack 1
 vxlan vni 10017 mac-vtep routing
 vxlan vni 10017 destination-ipep dynamic
 vxlan vni 10017 binding evpn

# 6. IRB接口(VXLAN终结+三层转发)
interface Bridge-Aggregation 1
 description To_Server_PortChannel
 bridge-ui-element enable
 port-link-aggregation Group 1
 mode bridge

interface MEth 1.10017
 description VDC1_Business_Network
 vlan-type dot1q vlan-id 10017
 ip address 10.100.17.254 255.255.255.0
 arp static 10.100.17.100 00e0-fc01-0001

Spine 交换机关键配置片段:

# ===== CE8800 Spine 交换机配置 =====

sysname DC1-SPINE-01

# VTEP源接口
interface LoopBack 1
 description VTEP_Source_IP
 ip address 10.255.0.1 255.255.255.255

# BGP EVPN
bgp 65001
 router-id 10.255.0.1
 # 与Leaf建立iBGP EVPN邻居
 peer 10.255.1.1 as-number 65001
 peer 10.255.1.2 as-number 65001
 peer 10.255.1.1 evpn enable
 peer 10.255.1.2 evpn enable

# VXLAN VTEP(Spine做Type3路由转发)
interface Nve 1
 source-interface LoopBack 1
 vxlan vni 10017 mac-vtep routing
 vxlan vni 10017 destination-ipep dynamic

4.2 VDC 创建自动化脚本(NCE-Fabric REST API)

import requests
import json

class CloudFabricVDC:
    """CloudFabric VDC自动化管理"""

    def __init__(self, controller_ip, username, password):
        self.base_url = f"https://{controller_ip}:8443"
        self.session = requests.session()
        self.session.auth = (username, password)
        self.session.verify = False

    def create_vdc(self, vdc_name, vlan_id, vni, subnet, gateway):
        """创建VDC"""
        payload = {
            "name": vdc_name,
            "vlan": {
                "vlanId": vlan_id,
                "subnetList": [
                    {
                        "gatewayIp": gateway,
                        "subnetMask": "255.255.255.0",
                        "networkId": subnet
                    }
                ]
            },
            "vni": vni,
            "networkType": "overlay"
        }

        url = f"{self.base_url}/fabric/api/vdc"
        response = self.session.post(url, json=payload)
        return response.json()

    def bind_devices(self, vdc_id, spine_list, leaf_list):
        """绑定Spine/Leaf设备到VDC"""
        payload = {
            "spineDeviceList": spine_list,
            "leafDeviceList": leaf_list
        }

        url = f"{self.base_url}/fabric/api/vdc/{vdc_id}/devices"
        response = self.session.put(url, json=payload)
        return response.json()

    def deploy_vdc(self, vdc_id):
        """一键部署VDC"""
        url = f"{self.base_url}/fabric/api/vdc/{vdc_id}/deploy"
        response = self.session.post(url)
        return response.json()


# 使用示例
if __name__ == "__main__":
    fabric = CloudFabricVDC("10.255.0.100", "admin", "Admin@123")

    # 创建VDC
    vdc_result = fabric.create_vdc(
        vdc_name="VDC_TenantA",
        vlan_id=10017,
        vni=10017,
        subnet="10.100.17.0",
        gateway="10.100.17.254"
    )
    vdc_id = vdc_result["id"]

    # 绑定设备
    fabric.bind_devices(
        vdc_id,
        spine_list=["DC1-SPINE-01", "DC1-SPINE-02"],
        leaf_list=["DC1-LEAF-01", "DC1-LEAF-02", "DC1-LEAF-03"]
    )

    # 一键部署
    deploy_result = fabric.deploy_vdc(vdc_id)
    print(f"VDC部署状态: {deploy_result['status']}")

4.3 故障案例:Fabric中VXLAN隧道不通

现象:新部署的Fabric中,两台Leaf交换机之间VXLAN跨网段通信失败,同Leaf内的虚拟机通信正常。

排查过程:

# 1. 检查VTEP隧道状态
display vxlan vtep session

# 发现Leaf-01上的VTEP session未建立
# Leaf-01 → Leaf-02: State = DOWN
# 原因:BGP EVPN Type5 Intra-AS IGP Sync Route未学习

# 2. 检查BGP EVPN路由
display bgp evpn routing-table

# 发现Type2 MAC/IP AD Route正常
# 但Type5 Intra-AS IGP Sync Route缺失

# 3. 检查BGP邻居
display bgp peer

# BGP邻居Up,EVPN地址族已启用

# 4. 深入排查
display bgp evpn routing-table type 5

# 发现Spine上没有发布Type5路由
# 原因:Spine上未配置igp sync route-policy

# 5. 在Spine上修复
bgp 65001
 ipv4-family evpn
  peer 10.255.1.1 route-policy IGP_SYNC export
  peer 10.255.1.2 route-policy IGP_SYNC export

# 6. 验证修复
display bgp evpn routing-table type 5
# Type5路由正常学习,VXLAN跨Leaf通信恢复

根因:Spine交换机上缺少Type5 Intra-AS IGP Sync Route的发布策略,导致Leaf之间无法学习到对端VTEP的可达性信息,VXLAN隧道建立失败。

解决: 1. 在Spine的BGP EVPN配置中添加Type5路由发布策略 2. 使用NCE-Fabric检查Fabric健康度,提前发现Type5路由缺失 3. 建议在Fabric部署模板中包含完整的Type5路由策略

4.4 故障案例:Leaf交换机BGP-EVPN频繁Flapping

现象:某Leaf交换机与Spine之间的BGP EVPN会话频繁Up/Down,导致VXLAN隧道中断,虚拟机迁移失败。

排查过程:

# 1. 检查BGP会话状态
display bgp peer 10.255.0.1
# 状态频繁变化,Last Reset原因:Hold Timer Expired

# 2. 检查链路质量
display interface 100GE1/0/25
# 接口存在CRC错误计数增长
# Input Errors: 1523, CRC: 891

# 3. 检查光模块
display transceiver interface 100GE1/0/25
# RX功率偏低:-12.5dBm(正常范围-3 ~ -8dBm)

# 4. 检查光模块兼容性
display elabel
# 发现使用的是第三方光模块,与华为CE交换机兼容性存在问题

# 5. 临时缓解:降低BGP HoldTime
bgp 65001
 timer keepalive 3 hold 9

# 6. 根本解决
# 更换为华为认证的100GE光模块
# CRC错误清零,BGP会话稳定

根因:第三方光模块兼容性差导致CRC错误,BGP Keepalive报文丢失触发Hold Timer超时,会话反复Flapping。

解决: 1. 更换为华为认证的100GE光模块 2. 在Fabric部署前使用光模块自检工具批量验证光功率 3. 启用BFD for BGP,毫秒级检测替代BGP HoldTimer

五、总结

组件 核心功能 关键技术
iMaster NCE-Fabric 集中式管控 NETCONF、RESTCONF、BGP EVPN编排
CloudEngine Spine 高速转发 VXLAN VTEP、BGP EVPN Type3路由
CloudEngine Leaf 接入+终结 VXLAN VTEP、VXLAN终结、IRB网关
Fabric Insight 智能运维 数字孪生、流量分析、根因分析
优势 说明
自动化部署 从上线到就绪分钟级完成,无需手动逐台配置
弹性扩展 支持在线扩容Spine/Leaf,业务零中断
智能运维 数字孪生+Telemetry,故障定位从小时级到分钟级
多租户隔离 VDC实现管理、路由、转发、策略四维隔离
云平台对接 原生对接OpenStack/Kubernetes,南北向一体化编排

思考

  1. CloudFabric中Spine和Leaf的角色划分是否固定?如果Leaf和Spine运行相同的BGP-EVPN配置,它们在Fabric中是否对等?
  2. VDC之间的流量如何互通?如果需要跨VDC通信,在CloudFabric中如何实现?
  3. NCE-Fabric作为集中式控制器,本身是否存在单点故障风险?华为如何保障控制器的可用性?

下篇预告:第282篇:数据中心网络自动化:Ansible 批量配置