网络服务
在 ZCF 架构中,云平台可通过原生网络或 ZNS 网络服务实现网络虚拟化。原生网络面向基础云网络场景,为云主机、裸金属和弹性裸金属等业务负载提供网络连接、隔离、访问控制和常用网络服务;ZNS 网络服务面向软件定义网络场景,通过独立的网络基础设施和网络服务管理能力,支撑云网络的连接、隔离和扩展。
云平台原生网络
云平台原生网络将数据中心物理网络抽象为二层网络、三层网络和网络服务。二层网络提供广播域和二层隔离,三层网络负责 IP 地址、网关和网络服务组织;安全组、VPC 防火墙、弹性 IP、端口转发、负载均衡、IPsec、端口镜像、NetFlow、OSPF、组播和 QoS 等能力共同为业务负载提供网络连接、隔离、访问控制、南北向访问和带宽管理。其中,端口镜像用于复制报文,NetFlow 用于向外部系统导出流量记录,云平台原生网络自身不提供流量分析、可视化或告警等流量观测功能。
云平台原生网络虚拟化方案将交换、路由和网络服务从专用硬件中抽象出来,由云平台统一编排,并通过物理交换机、物理机虚拟交换机和网络服务实例共同完成数据转发。物理网络负责提供基础连通性,云平台负责维护业务网络模型及其配置生命周期。
云平台将网络模型划分为二层网络和三层网络。二层网络对应一个二层广播域,为三层网络提供连接和隔离能力,支持 NoVLAN、VLAN、VXLAN 和硬件 VXLAN 等类型。三层网络建立在二层网络之上,用于管理 IP 地址、网关、DNS 及相关网络服务,主要包括扁平网络、公有网络和 VPC 网络。

二层网络
二层网络是云平台原生网络的基础抽象,用于将云主机、裸金属等业务负载的虚拟网络接入数据中心物理网络。云平台通过二层网络管理业务网络和管理网络,在集群内为物理机创建虚拟交换机,并将虚拟网卡、物理上行接口或隧道接口接入同一转发路径。

从控制面看,二层网络以集群为粒度加载和卸载。二层网络加载到集群后,云平台会在集群内物理机上创建 Linux Bridge,并根据网络类型创建对应的上行接口。云主机接入二层网络时,其虚拟网卡会加入对应 Linux Bridge,由 Linux Bridge 完成同物理机转发或将流量送往物理网络。
从数据面看,二层网络需要保证同一广播域内的二层转发能力,并对不同二层网络之间的广播流量进行隔离。云平台原生网络支持 NoVLAN、VLAN、VXLAN 和硬件 VXLAN 等二层网络形态,以适配不同规模、隔离要求和物理网络条件。
NoVLAN 与 VLAN 网络
VLAN 网络基于 IEEE 802.1Q 在以太网帧中携带 VLAN ID,通过不同 VLAN ID 实现二层隔离。云平台创建 VLAN 类型二层网络后,会在物理机上创建对应的 VLAN 子接口,并将其接入 Linux Bridge。跨物理机通信时,物理交换机根据 VLAN ID 和 MAC 地址完成转发。

NoVLAN 网络不为业务流量添加 VLAN 标签。创建 NoVLAN 类型二层网络时,云平台基于指定的物理网卡创建 Linux Bridge;与该网卡连接的交换机端口通常配置为 Access 模式。加载该二层网络的物理机需要存在名称一致的物理网卡。
使用 VLAN 网络时,数据中心交换机端口需要配置为 Trunk 模式并放行对应 VLAN。由于二层网络按集群加载,同一集群内用于承载该二层网络的物理网卡名称需要保持一致。

二层端口隔离(PVLAN)
PVLAN 用于在共享同一个二层网络的同时,限制不同业务实例之间的直接访问。该能力不是与 NoVLAN、VLAN 或 VXLAN 并列的二层网络类型,而是由物理机侧和物理交换机侧协同实现的端口隔离机制。
对于位于同一台物理机上的云主机,云平台通过 Linux Bridge 端口隔离限制虚拟网卡之间的二层转发;对于位于不同物理机上的云主机,需要结合物理交换机的端口隔离或 PVLAN 配置,阻止流量通过物理网络绕过物理机侧隔离。因此,要实现跨物理机的完整二层隔离,物理机侧与交换机侧需要按照同一隔离目标进行配置。

物理上行链路:Bonding 与端口聚合
端口聚合将多块物理网卡组合成一个逻辑端口,用于降低单块网卡故障对业务网络的影响,并提升上行链路带宽。云平台支持 active-backup 和 802.3ad 两类 Bond 模式,可通过命令行或界面方式创建 Bond。
管理网络使用 Bond 时,通常需要在计算节点部署阶段提前完成配置;业务网络和存储网络可在物理机纳管后根据实际网络规划配置。创建二层网络时,可将 Bond 作为物理上行接口使用,从而在网络虚拟化层复用端口聚合带来的高可用和带宽能力。
VXLAN 网络
VXLAN 网络通过隧道封装将二层网络扩展到三层可达的物理网络之上,适用于需要跨三层网络构建二层业务网络的场景。与 VLAN 相比,VXLAN 不要求所有物理机处于同一物理二层网络中,也可降低虚拟网络配置异常对整体物理网络的影响范围。
云平台创建 VXLAN 类型二层网络时,会在物理机上创建 VXLAN 子接口并接入 Linux Bridge。跨物理机通信时,源物理机将虚拟机流量封装为 VXLAN 报文发送到目标物理机,目标物理机解封装后再将原始流量转发给目标虚拟机。
使用 VXLAN 网络前,需要创建 VXLAN Pool。VXLAN Pool 定义可用 VNI 范围和物理机 VTEP 地址范围,云平台根据 VTEP CIDR 识别物理机上用于建立 VXLAN 隧道的地址。
硬件 VXLAN 网络
硬件 VXLAN 网络将 VXLAN 封装和转发能力下沉到数据中心交换机。服务器侧仍以 VLAN 形式接入网络,交换机根据 VLAN 与 VXLAN 的映射关系,将业务流量转换为 VXLAN 报文并在交换机网络中转发。

这种方式可以减少服务器 CPU 用于 VXLAN 封装和解封装的开销,并降低软件 VXLAN 对网络时延和转发性能的影响。硬件 VXLAN 网络需要结合 SDN 控制器完成交换机侧逻辑网络、端口和路由资源配置。
SDN 控制器
在硬件 VXLAN 场景中,ZCF 与数据中心 SDN 控制器协同,将云平台中的二层网络、三层网络和路由资源映射到交换机侧的逻辑网络资源。用户在 ZCF 中创建业务网络,SDN 控制器负责向交换机下发相应配置。
ZCF 当前支持对接经过兼容性验证的华为 iMaster NCE-Fabric V100R023C00SPC201 和华三 H3C VCFC R6506。控制器对接具有严格的版本依赖,部署前应确认控制器型号和软件版本与 ZCF 兼容性要求一致。
华为 SDN 控制器对接
对接华为 iMaster NCE-Fabric 前,需要在控制器侧准备三方系统接入账号、VLAN 与 VNI 范围、Fabric、租户、VPC 和外部网络等资源,并在交换机和物理机侧启用 LLDP。ZCF 添加控制器后,同步 Fabric、租户、VPC、交换机和端口等基础信息。
创建硬件 VXLAN Pool 并加载到集群后,用户可在 ZCF 中创建硬件 VXLAN 二层网络,并将网络资源下发至指定 SDN 租户。基于该二层网络创建扁平网络或 VPC 网络时,ZCF 继续在控制器侧创建相应子网、逻辑路由器及其连接关系。

华三 SDN 控制器对接
对接华三 H3C VCFC R6506 时,ZCF 在添加控制器后完成认证,并同步租户、VDS 以及 VLAN 与 VXLAN 映射等基础信息。创建硬件 VXLAN 网络时,用户选择目标租户和 VNI,ZCF 根据控制器侧资源范围进行校验。
基于华三 SDN 控制器创建的硬件 VXLAN 二层网络可以继续创建扁平网络和 VPC 网络,相关子网与网关配置同步至控制器指定租户。该对接范围不包含全部基础网络服务和高级网络服务,基于 H3C VCFC R6506 网络创建的三层网络不支持共享型负载均衡。

协同边界
SDN 控制器负责交换机侧的逻辑网络、端口和转发配置,ZCF 负责将业务网络模型与控制器资源建立对应关系。交换机接入、Fabric 规划、VLAN/VXLAN 资源池、租户和外部网络边界需要提前在 SDN 控制器及物理网络中准备。白皮书所述能力仅适用于明确列出的控制器版本和已验证功能范围。
三层网络
三层网络包括扁平网络、公有网络和 VPC 网络。三层网络建立在二层网络之上,用于管理 IP 地址范围、网关、DNS 及其关联的网络服务。
扁平网络直接将云主机接入数据中心网络,可为云主机分配业务地址,并支持 DHCP、User Data、安全组、弹性 IP 和端口镜像等服务。公有网络用于连接 ZCF 外部网络,可作为 VPC 路由器上行网络,并为弹性 IP、端口转发和负载均衡等服务提供外部地址;这里的“公有网络”是一种网络角色,不限定必须直接连接互联网。
VPC 网络是租户可独立规划和管理的隔离网络空间。VPC 网络通过 VPC 路由器连接其他 VPC 网络或外部网络,并使用 VPC 路由器提供 DHCP、DNS、SNAT、路由表、VPC 防火墙、弹性 IP、端口转发、负载均衡、IPsec、NetFlow 记录导出、OSPF 和组播路由等服务。安全组主要在物理机侧作用于云主机网卡,不依赖 VPC 路由器完成流量过滤。

VPC 路由器
VPC 路由器是一种运行定制 Linux 操作系统和网络服务代理的专用实例。管理节点通过代理向 VPC 路由器下发配置,由 VPC 路由器为其关联的 VPC 网络提供路由、地址转换、防火墙和其他集中式网络服务。一个 VPC 路由器可关联多个 VPC 网络,并负责这些网络之间以及 VPC 网络与外部网络之间的三层转发。

安全组
在传统数据中心,网络可分为:信任区域、DMZ 区域、非信任区域,通过边界防火墙进行流量控制,保障网络安全。在虚拟化数据中心,边界防火墙可能力不从心,例如:不同租户之间需要实现网络隔离,同一租户的不同业务之间需要访问控制,边界防火墙很难灵活处理这些场景。因此,云平台引入新组件:安全组。安全组是一种分布式防火墙,专注东西向流量管控,支持云主机网卡级别的出入流量控制。
- 安全组规则的集合,支持添加、删除、修改规则,实现规则动作的管控。
- 已绑定网卡的集合,支持绑定云主机网卡,将安全组规则应用到云主机网卡上。
- 安全组未添加任何规则时,除组内成员可互通外,入方向默认拒绝所有流量,出方向允许所有流量。
- 安全组规则支持按需修改,包括:源 IP、目标 IP、目标端口、协议类型、优先级等。
- 安全组规则支持动态调整优先级,添加规则时可将规则插入到指定优先级,删除规则时优先级会自动调整,规则优先级始终保持连续。
- 云主机网卡支持挂载多个安全组,且安全组之间可动态调整优先级,默认情况下先挂载的安全组规则先生效。
技术原理
- 安全组规则组成
- 源:支持源数据(入方向)和目标数据(出方向)。
- 源类型:支持 IPv4 和 IPv6 类型。
- 协议类型和端口:支持 ICMP、TCP、UDP 等。
- 策略:拒绝或允许。
- 安全组规则优先级
- 安全组规则优先级是连续且不重复的(默认规则优先级为 0,表示最高优先级),优先级数字越小,表示优先级越高。
- 默认情况下,添加的规则优先级最低。当从指定优先级插入时,后续规则优先级跟随自动调整,保证优先级不重复。
- 当有流量经过云主机网卡时,将从最高优先级的规则开始匹配,如果匹配成功则执行规则动作,否则再匹配后续规则。
- 安全组规则导入导出
- 对于已有的安全组内规则,支持一键导出。
- 支持将已导出的安全组规则再重新导入其它安全组,导入时提供规则校验。
- 网卡加载多个安全组
- 一个云主机网卡可挂载多个安全组,已挂载的安全组之间支持优先级排序,优先级数字越小,表示优先级越高。
- 当有流量经过云主机网卡时,将从最高优先级的安全组开始匹配,如果安全组内规则匹配成功则执行规则动作,否则再进入下一个安全组进行匹配。
- 网卡默认策略
- 默认情况下,网卡的入方向默认策略是允许,出方向默认策略是拒绝。默认策略支持修改。
- 当流量没有匹配到安全组规则时,会执行网卡的默认策略。
应用场景
- 不同业务访问控制以典型的 Web 应用为例。假定:
- Web 云主机的 TCP 80 和 443 端口允许任意 IP 地址访问。
- App 云主机的 TCP 8080 端口允许来自 Web 云主机的访问。
- DB 云主机的 TCP 3306 端口允许来自 App 云主机的访问。
分别为三类业务云主机创建安全组,并配置相应规则,可实现不同业务之间的访问控制。
图 11. 不同业务访问控制 
- 多业务共存上述业务云主机除提供业务能力外,还需允许运维控制(假定使用 SSH 协议),有两种实现方案:
- 方案 1:为上述三个安全组分别新增一条规则。
- 方案 2:创建一个新安全组,并挂载到上述所有业务云主机网卡上。
在本云平台中,云主机网卡支持挂载多个安全组,且方案 2 更灵活可控,首选方案 2。可为上述每台业务云主机网卡配置两个安全组,且支持按需调整安全组优先级以及默认规则。
- 多级权限配置安全在 IDC 场景下,假定管理员不允许租户云主机访问某些外部网络,有两种实现方案:
- 方案 1:管理员为项目配置默认安全组及规则,项目成员创建云主机将强制绑定该安全组。在项目成员视角下,该安全组可见但不可解绑。
- 方案 2:管理员为租户云主机配置安全组及规则。在租户视角下,该安全组不可见也不可解绑。
- 组内云主机禁止互访
默认情况下,安全组内的云主机之间可互相访问,无任何规则限制。在某些场景下,要求同一安全组内的云主机之间不可互相访问,此时可将允许组内互通的默认规则停用。该条默认规则不支持删除。
VPC 防火墙
VPC 防火墙用于 VPC 网络环境中的三层访问控制,规则部署在 VPC 路由器上。VPC 防火墙规则的入方向和出方向均以 VPC 路由器接口为参照:流量从接口连接的网络进入 VPC 路由器称为入方向,流量从 VPC 路由器经该接口发送到接口连接的网络称为出方向。
同一条业务流量经过 VPC 路由器时,会依次经过入口接口的入方向和出口接口的出方向。例如,外部网络访问 VPC 云主机时,流量经过公有网络接口的入方向和 VPC 网络接口的出方向;VPC 云主机访问外部网络时,流量经过 VPC 网络接口的入方向和公有网络接口的出方向。
VPC 防火墙包含系统规则、默认规则和用户自定义规则。系统规则用于保障必要的网络服务和基础连通性,其修改范围受平台限制;默认规则用于处理未匹配自定义规则的流量。修改默认规则或停用系统规则前,应确认自定义规则能够满足业务连通性要求。
配置自定义规则时,应先确定业务流量进入和离开 VPC 路由器所经过的接口,再根据相对于接口的流向选择入方向或出方向,避免使用“相对于云主机”的观察视角判断规则方向。
对于 VPC 网络访问外部网络的流量,可在 VPC 网络接口的入方向或公有网络接口的出方向实施控制;对于外部网络访问 VPC 网络的流量,可在公有网络接口的入方向或 VPC 网络接口的出方向实施控制。实际规则位置应结合安全边界和运维习惯统一规划。

不同 VPC 网络之间的流量同样按照入口接口和出口接口判断方向。例如,VPC 网络-1 访问 VPC 网络-2 时,流量经过 VPC 网络-1 接口的入方向和 VPC 网络-2 接口的出方向。

弹性 IP 与端口转发
弹性 IP 和端口转发都用于为私有地址云主机提供来自公有网络的访问入口。两者本质上都通过 iptables NAT 规则修改报文的目的地址,并将返回流量沿对应连接送回外部客户端;区别主要在于映射粒度和适用网络。
扁平网络仅支持弹性 IP;VPC 网络同时支持弹性 IP 和端口转发。SNAT 解决云主机主动访问外部网络的问题,弹性 IP 和端口转发则解决外部客户端主动访问云主机的问题,二者用途不可混淆。
共同实现原理
弹性 IP 和端口转发均基于 Linux Netfilter 实现。平台通过 iptables 在 NAT 表中配置地址或端口转换规则:外部请求到达公网地址后,DNAT 规则将目的地址转换为云主机私网地址;返回报文依据连接跟踪信息执行反向转换。

扁平网络:仅支持弹性 IP
扁平网络仅支持弹性 IP。平台在云主机所在宿主机上创建专用 Linux Namespace,在 Namespace 中配置公网侧、私网侧网络接口及 iptables NAT 规则,实现弹性 IP 与云主机私网 IP 之间的一对一映射。相关流量在云主机所在宿主机本地完成转换,不经过 VPC 路由器。

VPC 网络:支持弹性 IP 和端口转发
VPC 网络中的弹性 IP 和端口转发均由 VPC 路由器实现。VPC 路由器连接公有网络与 VPC 网络,并在自身配置 iptables NAT 规则,无需在云主机宿主机上为该功能创建 Linux Namespace。

弹性 IP 建立公网 IP 与云主机私网 IP 之间的一对一映射,适合需要通过该公网地址向外提供多个服务的场景。端口转发则以公网 IP、协议和端口为匹配条件,将访问请求转换至指定云主机 IP 和目标端口,适合只开放部分服务的场景。
例如,云主机在 TCP 80 端口提供 Web 服务,但不希望其他端口直接暴露,可配置端口转发,将指定公网 IP 的 TCP 端口映射至该云主机的 TCP 80 端口。外部端口与云主机端口可以相同,也可以不同。
VPC 网络端口转发支持单端口映射和端口区间映射。配置时需要明确公网 IP、协议、外部端口或端口区间,以及目标云主机 IP 和目标端口或端口区间。

负载均衡
负载均衡通过虚拟 IP 和监听器接收客户端请求,并按照配置的调度策略将流量分发至健康的后端服务器。负载均衡支持 TCP、UDP、HTTP 和 HTTPS 等常用协议,可根据业务场景提供四层或七层流量分发能力。

协议与实现方式
TCP 和 UDP 监听器提供基于连接或数据报的四层流量分发,适用于数据库、中间件和通用网络服务等场景。HTTP 和 HTTPS 监听器能够识别应用层请求,适用于 Web 应用、API 服务以及需要按域名或 URI 转发的场景。
需要向后端服务器传递客户端地址信息时,可根据监听协议使用 Proxy Protocol 或 X-Forwarded-For。使用 Proxy Protocol 时,后端服务需要具备相应的协议解析能力;X-Forwarded-For 适用于 HTTP 和 HTTPS 流量。
流量调度
负载均衡可通过轮询、加权轮询、最小连接数和源地址哈希等算法分配访问请求。轮询适用于后端服务器处理能力接近的场景;加权轮询可按照服务器权重分配更多请求给处理能力更强的后端;最小连接数适用于请求处理时长差异较大的长连接业务;源地址哈希可将同一源地址的请求持续转发到同一后端服务器。
通过会话保持机制,负载均衡可以识别同一客户端与后端服务器之间的访问关系,将连续请求定向到指定后端,保证业务会话连续性。四层会话保持通常基于源 IP 地址实现,七层会话保持可结合 Cookie 机制实现应用层粘滞访问。
健康检查与访问控制
负载均衡可对后端服务器执行健康检查,并根据探测结果自动调整流量分发范围。当后端服务器连续探测失败时,负载均衡停止向该服务器转发流量;服务器恢复健康后,再重新加入转发列表,从而减少异常后端对业务访问的影响。
负载均衡还支持访问控制列表,可在监听器级别配置黑名单或白名单,限制允许访问或拒绝访问的源地址范围。
高级转发
HTTP 和 HTTPS 负载均衡支持基于域名、URI 等条件的高级转发,可将不同域名或路径的请求分发至不同后端服务器组,适用于单入口多站点、动静分离或微服务访问路由等场景。具体功能以当前版本提供的配置项为准。
在 VPC 网络中,负载均衡可作为业务入口,将公网或外部网络访问转发到私有网络中的后端云主机。

在扁平网络中,负载均衡可与后端服务器处于同一二层网络,通过虚拟 IP 接收访问流量并完成转发。

扁平网络负载均衡也可结合弹性 IP 对外提供访问入口,将公网访问映射到扁平网络中的负载均衡虚拟 IP。

IPsec
IPsec 用于在不同数据中心、私有云或公有云网络之间建立加密隧道,使两端受保护网段能够通过外部网络安全互通。该能力适用于分支互联、多地域组网和混合云连接等场景。

ESP 协议
- 传输模式(Transport Mode)
在该模式下,通常仅 IP 数据包的有效载荷部分会被加密或认证。由于原始 IP 报头(Original IP Header)未被修改或加密,因此路由保持不变。然而,当使用身份验证头(ESP Auth)时,为避免使哈希值失效,IP 地址不能通过网络地址转换(NAT)进行修改。传输层和应用层总是通过哈希进行安全保护,因此它们不能以任何方式被修改,例如通过转换端口号。
图 23. 传输模式-IP 数据包 
- 隧道模式(Tunnel Mode)
在该模式下,整个 IP 数据包会被加密和认证。它会被封装到一个新的 IP 数据包中,并附加一个新的 IP 头(Outer IP Header)。隧道模式用于创建虚拟专用网络,用于网络到网络通信(例如:连接各个站点的路由器)、主机到网络通信(例如:远程用户访问)、以及主机到主机通信。隧道模式支持 NAT 穿越。
图 24. 隧道模式-IP 数据包 
云平台原生网络中的 IPsec 支持隧道模式,不支持传输模式。部署时需要保证两端网关地址可达、受保护网段不冲突,并在两端配置一致的认证信息、加密参数和网段范围。隧道建立后,业务流量仍需满足路由及安全策略要求。
IKE 协议
IKE 有两个版本:IKEv1、IKEv2。云平台原生网络中的 IPsec 推荐使用 IKEv2。IKEv2 可使用四条消息完成 IKEv2 SA 和 IPsec SA 的协商,简化了 IKEv1 的协商过程。
- 初始交换(Initial Exchanges)
- 创建子 SA 交换(Create_Child_SA Exchange)
- 通知交换(Informational Exchange)
- 第一次消息交换,以明文方式完成 IKE
SA 的参数协商。包括协商加密和验证算法、交换临时随机数和 DH 交换,据此可算出加密后续 IKE 消息的 Key。
图 25. 明文交换 
- 第二次消息交换,以加密方式完成身份认证和 IPsec
SA 的参数协商。IKEv2 支持三种认证方式:证书认证、预配值密码(PSK)、EAP 认证。云平台原生网络支持 PSK 认证方式。
图 26. 加密交换 (基于 PSK 认证) 
端口镜像
端口镜像用于复制指定云主机网卡的报文,并将报文副本发送至用户指定的分析或采集系统。镜像过程不改变原始业务报文的转发路径,适用于故障排查、安全分析和协议诊断等场景。
用户可选择云主机网卡作为镜像源,并按需复制入方向、出方向或双向报文。镜像报文发送至指定的镜像目标,原始业务流量仍按正常路径转发。当镜像源与镜像目标位于不同物理机时,平台通过独立流量网络上的 GRE 隧道传送报文副本,避免镜像流量与业务网络混用。
端口镜像仅提供报文复制和传送能力,不提供内置的报文解析、流量分析、可视化或告警功能。用户需要自行部署分析或采集系统,并根据镜像流量规模规划目标系统和流量网络容量。
原始报文通过的端口称为镜像端口,也称为被监控端口。上述第二个端口,即数据被复制转发到的端口,称为监控端口,也称为采集端口或观察端口。
- 入方向,仅对从镜像端口接收的报文进行复制转发。
- 出方向,仅对从镜像端口发送的报文进行复制转发。
- 对从镜像端口接收和发送的报文都进行复制转发。
- 当怀疑有攻击或有网络故障时,需获取某个端口的报文进行分析,从而排除威胁,找出故障原因。
- 需对某个端口的流量进行监控与观察,同时还需尽量确保不影响原始报文转发。
技术背景
- 端口:将指定端口接收或发送的报文复制到观察端口,此时的镜像被称为端口镜像。
- VLAN:将指定 VLAN 内所有活动接口接收的报文复制到观察端口,此时的镜像被称为 VLAN 镜像。
- MAC 地址:将指定 VLAN 内源 MAC 地址或目的 MAC 地址为指定 MAC 地址的报文复制到观察端口,此时的镜像被称为 MAC 镜像。
- 报文流:将符合指定规则的报文流复制到观察端口,此时的镜像被称为流量镜像。
云计算时代,随着网络虚拟化技术的发展,在物理机上演化出许多虚拟网络设备,虚拟网卡不再直接插在物理交换机上,再加上迁移等活动导致网卡位置频繁变动,原始在物理机上配置实现的端口镜像功能也需迁移至软件上实现。
云平台十分重视弱化用户资源的物理位置,因此类似于物理交换机的 ERSPAN 技术,云平台的端口镜像将用户某个端口的报文/流量复制转发至任意位置的设备(很多情况下使用虚拟资源,例如云主机),再在远端进行检测和分析。
技术原理
在云平台原生网络中,网络虚拟化基于开源 Linux 操作系统实现,对应的端口镜像功能基于 Linux 系统生态工具/库来实现。
- 在物理机 1 上创建另一个端口:Send 1.0。
- 创建一个独立于业务网络的特殊网络:流量网络。
- 将 vNIC 1.0 的流量镜像到 Send 1.0。
- 在 Send 1.0 和 Recv 1.0 之间建立 GRE 隧道。
- 镜像数据通过 GRE 隧道转发至云主机 2 上。
其中,流量镜像使用 Linux 流量控制工具 TC(Traffic Control)来实现。GRE 隧道运行在独立的流量网络上,从而可将报文/流量复制转发至云平台任意位置。

NetFlow
NetFlow 用于从 VPC 路由器的指定网络接口生成流量记录,并将记录导出至用户配置的外部采集系统,可为容量规划、安全审计和流量趋势分析提供数据来源。
ZCF 支持导出 NetFlow v5 和 NetFlow v9 格式,不提供 IPFIX 输出,也不提供内置采集、分析、可视化或告警能力。
NetFlow 是一种流量统计技术,在网络流量统计、网络规划、网络安全等领域有广泛应用。NetFlow 起源于思科公司的一项专有技术研发,其它网络设备厂商现已普遍支持。NetFlow 应用最广泛的是 V5 和 V9 版本,例如:IETF 的技术标准 IPFIX(IP Flow Information Export)正是基于 V9 版本开发。
- 探测器(Exporter):运行在网络设备上,收集当前设备接收、转发、发送的网络流量信息。
- 采集器(Collector):接收来自探测器的 NetFlow 信息,并存储这些信息。
- 分析器(Analyzer):根据采集器的信息,进行流量统计,分析是否存在网络拥塞,是否存在流量攻击等。
在云平台原生网络中,VPC 路由器可作为 NetFlow 探测器,向采集器发送 NetFlow 信息。用户选择需要记录流量的 VPC 路由器接口,并配置外部采集系统地址。平台生成流量记录并发送至该系统,后续存储、分析和展示由外部系统完成。

技术原理
- 内核模块:添加 iptables 规则,需要监控的流量 Target 是 Nflog。例如:
iptables -t raw -A VYATTA_CT_PREROUTING_HOOK -i eth1 -j NFLOG --nflog-group 2 # 每个 NetFlow 服务建立时自动生成的一行网络配置 # eth1: 相应网络在 VPC 路由器内部的接口名称 # nflog-group 2: 指定一个 Nflog ID,需在 iptables 和 Pmacctd 中配置一致 - 用户态程序:用户态的 Pmacctd 通过 Nflog 的 Netlink 接口从内核读取流量信息、分析流量信息、转化成 NetFlow 信息、发送至采集器。

OSPF
OSPF 用于在 VPC 路由器与外部路由设备之间动态交换 IPv4 路由,减少静态路由维护工作,适用于路由数量较多或网络拓扑经常变化的环境。
| 序号 | 解决方案 | 详情 |
|---|---|---|
| 1 | 静态路由 |
|
| 2 | OSPF |
|
| 3 | 源进源出(特定场景) |
|
本节主要介绍 OSPF 动态路由协议。VPC 路由器可通过 OSPFv2 动态学习外部 IPv4 路由,并按照配置向外部网络发布可达的 VPC 网段。发布范围由用户控制。
VPC 路由器与对端物理路由器需要使用一致的区域、认证和接口参数。动态路由收敛期间可能出现短暂丢包,关键业务应结合冗余链路和合理的路由策略进行规划。
技术原理
OSPF(Open Shortest Path First)是 IETF 组织开发的一个基于链路状态的动态路由协议。OSPFv2 用于解决 IPv4 路由同步,OSPFv3 用于解决 IPv6 路由同步。云平台原生网络支持 OSPFv2。
- RouterID
- 路由器 ID,是一个 32 位整数,在 OSPF 系统中唯一标识一台 OSPF 路由器。
- 区域
- 在一个大型网络系统中,可能会出现诸如路由信息过多、路由计算时间过长、路由收速度敛慢等问题,任何一个网络变化,均会导致所有路由器重新计算路由,从而引发路由震荡。OSPF 通过将大型网络划分成多个区域来解决这一问题,每个区域有一个区域 ID。
- 根据 LSA 分发情况,区域可分为:普通区域、Stub 区域、NSSA 区域、Totally NSSA 区域。
图 30. 区域 
- 邻居关系和邻接关系
- 路由器启动 OSPF 协议后,会定时打开 OSPF 功能接口发送 OSPF Hello 报文。收到 Hello 报文的设备,比较 Hello 报文中的参数和接口参数(例如:区域 ID),若参数一致,则形成邻居关系。
- 形成邻居关系后,若两端设备成功交换 DD 报文和 LSA 报文,则建立邻接关系。
- 不是所有的邻居关系都会变成邻接关系。
- DR/BDR/DROther
- 在广播网或 NBMA 网络中,可能同时存在很多 OSPF 路由器,不需要两两之间形成邻接关系。因此,需要选举出 DR(指定路由器)和 BDR(备份指定路由器),其它的路由器则称为 DROther(非指定路由器)。
- 仅当 DR、BDR、以及全部路由器形成邻接关系时,才可减少 OSPF 报文交换,加速路由计算。
- DR 和 BDR 通过选举算法产生,选举参数包含:OSPF 接口优先级、RouterID 等。在实践中尽量让物理路由器选举为 DR 和 BDR,因为 VPC 路由器可能因为云平台操作导致关机,从而影响整个数据中心的网络抖动。
图 31. 选举前后对比 
- LSA
- OSPF 是基于网络拓扑信息计算路由信息的协议,LSA(链路状态)用于描述网络拓扑状态。
LSA 类型 描述 Type 1 每个 OSPF 路由器产生一条 Type 1 LSA,描述了设备的链路状态和开销,在所属的区域内传播。 Type 2 由 DR(指定路由器)生产,描述一个广播网连接的 OSPF 路由器,在所属的区域内传播。 Type 3 ABR(区域边界路由器)产生,把区域内网段的路由发布到其它区域。 Type 4 ABR(区域边界路由器)产生,描述到 ASBR 的路由信息。 Type 5 ASBR(自治域边界路由器)产生,把区域外路由发布到相关区域。
- OSPF 是基于网络拓扑信息计算路由信息的协议,LSA(链路状态)用于描述网络拓扑状态。
组播
组播适用于一份数据需要同时发送给多个接收者的场景。发送端只需发送一份数据,网络根据接收关系按需复制和转发,可降低重复单播带来的带宽占用。ZCF 通过 VPC 路由器为 VPC 网络提供 IPv4 组播路由能力,使组播源与不同网络中的接收者建立转发路径。
- 单播:信息源需对每个接收者复制并发送一份数据。缺陷:若接收者成千上万,将给信息源造成巨大负载压力,同时信息源的网络带宽承受巨大压力。
- 广播:信息源发送一份广播数据,让交换机来复制。缺陷:不能跨三层进行转发;不是接收者的设备也收到信息,信息安全无法保障,浪费大量带宽。
- 组播:组播源仅需发送一份数据,该数据在距离组播源尽可能远的网络节点才开始复制和分发。相较单播与广播,节约网络带宽,降低网络负载,提高信息传输安全性。



由此可见,组播技术能够有效解决单点发送、多点接收的问题。该技术在网络电视、在线直播、远程教育、远程医疗、实时视频会议等领域(对带宽和实时数据交互要求较高)已有广泛应用。部署前需要确认物理网络、VPC 路由器和接收端均具备相应组播能力,并结合当前版本支持范围规划成员管理和组播路由配置。
组播地址
| 范围 | 用途 |
|---|---|
| 224.0.0.0 ~ 224.0.0.255 | 保留地址。例如:OSPF 使用224.0.0.5,VRRP 使用224.0.0.18 |
| 224.0.1.0 ~ 238.255.255.255 | 用户可用的组播地址 |
| 239.0.0.0 ~ 239.255.255.255 | 本地组播地址 |
组播成员管理
组播注册协议用来在交换机和路由器上维护组播组和组播接收者之间的关系。
- IGMPv1:定义了基本的组成员查询和报告过程。
- IGMPv2:增加了组成员快速离开的机制等。
- IGMPv3:增加对 SSM 模型的支持等。
组播转发树
- 源树(SPT):以组播源作为树根转发树。网络要为任何一个向该组发送报文的组播源建立一棵树,路由表的规模非常大。SPT 同时适用于 PIM-DM 网络和 PIM-SM 网络。
- 共享树(RPT):以某个路由器作为树根,该路由器称为汇集点(RP),以 RP 到所有接收者的最短路路径所共同构成的转发树。每个组播组,网络中只维护一棵树。组播源先向树根(RP)发送数据报文,再按照共享树转发到达所有的接收者。RPT 适用于 PIM-SM 网络。
组播路由协议
常用的组播路由协议:PIM 协议。PIM 协议有三种工作模式:PIM-DM、PIM-SM、PIM-SSM 模式。
QoS
QoS(Quality of Service)用于对网络流量实施带宽限制和流量整形,帮助用户控制单个网络对象或一组公网入口的带宽使用。QoS 策略由用户配置,平台不根据运行状态自动调整带宽。
- 网卡 QoS:支持为指定网卡单独设置 QoS,为该网卡单独提供带宽资源和限速服务。
- 虚拟 IP QoS:支持为指定虚拟 IP 单独设置 QoS,为使用虚拟 IP 的网卡提供带宽资源和限速服务。用户可以针对一个虚拟 IP 的不同端口配置多条 QoS 规则。
- 共享带宽:共享带宽是可供多个虚拟 IP 使用的 QoS 服务,加入同一条共享带宽的虚拟 IP 共享相同的带宽资源并被集中限速。目前,共享带宽仅供公网虚拟 IP 使用。公网虚拟 IP 是 VPC 网络上云主机访问公网的主要窗口,例如,基于公网虚拟 IP 创建弹性 IP 并绑定 VPC 云主机网卡,该云主机可以通过虚拟 IP 和公网通信。如果多台云主机使用的虚拟 IP 同属于一条共享带宽,则这些云主机在访问公网时,使用相同的带宽资源并被集中限速,是节省公网访问成本的有效路径。
图 35. 共享带宽原理图 
云平台原生网络主要通过 tc(Traffic Control) 工具精准控制数据流量,从而实现高级的带宽管理策略。
- qdisc (队列规则):定义如何处理经过接口的数据包,它们可以用来排队、丢弃、重新排列或重新标记数据包。
- class (分类):在支持分类的 qdisc 中,流量可以被分进不同的类别,每个类别可以设置单独的队列规则和带宽限制。
- filter (过滤器):分类数据流,判断数据包所属的 class,过滤器可以根据端口号、IP 地址等多种标准进行数据流分类。
- 根据指定的 QoS 策略定义 qdisc 和 class:
- 定义一个根 qdisc,通常是 HTB (分层令牌桶),创建层次化带宽管理架构。
- 在 qdisc 下创建 class,每种 class 代表一种不同的流量策略,并为 class 配置带宽限制。
- 配置 filter:根据指定的 QoS 策略,为 class 配置 filter,确保访问流量被正确分类到对应的 class 中。
- 监控和调整:使用 tc 命令监控流量和类别的性能,并根据监控结果调整带宽分配和策略,保持网络性能和响应。
ZNS 网络服务
ZStack ZNS 是 ZCF 中可按需接入的网络服务组件,通过ZNS 网络中心提供网络基础设施和网络服务管理能力。ZNS 面向云平台网络虚拟化场景,基于 OVN/OVS 提供 VLAN/Overlay 网络、分段、Tier-0/Tier-1 网关、VPC 路由、NAT 和 DHCP 等能力,支撑业务网络的连接、隔离和扩展。
ZNS 网络服务可与云平台网络创建流程协同。用户在云平台中创建由 ZNS 承载的业务网络后,ZNS 可生成对应分段,并通过网关和网络策略为业务网络提供连接与隔离能力。管理员可在ZNS 网络中心查看分段、网关和策略状态,确认业务网络对应的底层网络资源是否已准备完成。
