# DataPlane V2网络加速说明
创建VPC网络模型和云原生网络2.0模型的集群支持开启DataPlane V2网络加速模式，开启后，会启用eBPF流量转发路径，实现Service、NetworkPolicy、Bandwidth等能力。
| DataPlane V2    | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|:---|:---|
| 技术实现           | DataPlane V2通过集成开源社区的[cilium插件](https://docs.cilium.io/en/stable/)提供Service、NetworkPolicy、Bandwidth等能力。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| 支持的集群版本       | CCE Standard集群（VPC网络模型）（商用）：v1.27.16-r30、v1.28.15-r20、v1.29.13-r0、v1.30.10-r0、v1.31.6-r0及以上集群版本。 CCE Turbo集群（商用）：v1.34.3-r10及以上集群版本                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| 使用方法          | - 在创建CCE Standard 集群时，在容器网络配置中选择VPC网络模型，开启**DataPlane V2**选项。  - 在创建CCE Turbo集群时，在容器网络配置中选择云原生网络2.0模型，开启**DataPlane V2**选项。   须知： - CCE Turbo集群开启了DataPlane V2后，暂不支持安全容器。  - 开启了DataPlane V2后，不支持关闭。  - 开启DataPlane V2后，CCE Standard集群的VPC网络模型支持[L7网络策略](https://docs.cilium.io/en/stable/security/policy/index.html#layer-7-examples)，CCE Turbo集群暂不支持[L7网络策略](https://docs.cilium.io/en/stable/security/policy/index.html#layer-7-examples)。  - 开启DataPlane V2后，CCE Standard集群的VPC网络模型默认开启eBPF Bandwidth能力，CCE Turbo集群默认关闭eBPF Bandwidth能力，通过TBF Qdisc实现Bandwidth。  - 开启DataPlane V2后，默认开启[Host-Routing](https://docs.cilium.io/en/stable/operations/performance/tuning/#ebpf-host-routing)。  - 开启DataPlane V2后，CCE Turbo集群节点访问本节点上的工作负载，不再通过VPC进行转发，而是节点内部直接转发；此场景工作负载关联的安全组将失效，如有诉求，请通过[CiliumNetworkPolicy](https://docs.cilium.io/en/stable/security/policy/layer3/#access-to-from-local-host)进行限制。  - CCE Standard集群中配置了[L7网络策略](https://docs.cilium.io/en/stable/security/policy/index.html#layer-7-examples)的工作负载，不支持从[非伪装网段](https://support.huaweicloud.com/bestpractice-cce/cce_bestpractice_10041.html#section2)以外的源地址访问此工作负载对应的NodePort地址。  - 仅支持新建集群开启DataPlane V2，存量集群不支持开启。  - 新建集群初始版本为v1.34及以上的集群且开启DataPlane V2时，节点上将不再运行kube-proxy。  - 如果您的集群中有业务启用了L7网络策略或DNS策略，cilium升级期间，匹配上L7网络策略或DNS策略的流量将会中断，详见[社区约束](https://docs.cilium.io/en/stable/operations/upgrade/#version-specific-notes)。   |
| 支持的操作系统        | 支持Huawei Cloud EulerOS 2.0操作系统。 v1.28.15-r70、v1.29.15-r30、v1.30.14-r30、v1.31.10-r30、v1.32.6-r30、v1.33.5-r20、v1.34.1-r0及以上版本的集群额外支持使用Ubuntu 22.04操作系统。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| 性能优化           | - Service网络采用eBPF替换原有的kube-proxy模式，相比于kube-proxy，时延更小，支持Service大规模集群场景。  - Bandwidth采用eBPF对带宽进行限制。带宽限制更精准，资源消耗更低。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| Bandwidth     | 开启DataPlane V2网络加速后，CCE Standard集群的VPC网络模型将使用eBPF对带宽进行限制，CCE Turbo集群将使用TBF Qdisc对带宽进行限制，详见[为Pod配置QoS](https://support.huaweicloud.com/usermanual-cce/cce_10_0382.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| NetworkPolicy | - 网络策略（NetworkPolicy）的实现和容器隧道网络有差异，详见[配置网络策略（NetworkPolicy）限制Pod访问的对象](https://support.huaweicloud.com/usermanual-cce/cce_10_0059.html)： - ipBlock选择器只支持选择集群外的IP地址段，不支持选择集群内的Pod或Node的IP地址。  - 对ipBlock选择器中的except关键字支持不佳，不建议使用except关键字。  - 使用Egress类型的NetworkPolicy会导致Pod访问集群中HostNetwork的Pod和集群中节点的IP失败。      - 当前[CiliumNetworkPolicy](https://docs.cilium.io/en/stable/network/kubernetes/policy/#ciliumnetworkpolicy)及[CiliumClusterwideNetworkPolicy](https://docs.cilium.io/en/stable/network/kubernetes/policy/#ciliumclusterwidenetworkpolicy) API在不同集群上支持的功能存在差异： - CCE Standard集群不支持[Host Policies](https://docs.cilium.io/en/stable/security/policy/language/#hostpolicies)。  - CCE Turbo集群不支持[Host Policies](https://docs.cilium.io/en/stable/security/policy/language/#hostpolicies)，[DNS策略](https://docs.cilium.io/en/stable/security/dns/)以及[L7网络策略](https://docs.cilium.io/en/stable/security/policy/language/#layer-7-examples)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| 资源消耗          | 每个节点上有常驻进程cilium-agent负责处理eBPF网络加速，每个cilium-agent预计占用内存80MiB，每增加一个Pod，cilium-agent内存消耗预计额外增加10KiB。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   
#### 组件说明
开启DataPlane V2功能后，会安装以下组件：
| 容器组件           | 说明                                                                                                                                                                                                                                                   | 资源类型         |
|:---|:---|:---|
| cilium-operator | - 负责CRD资源的同步。  - 负责移除节点的污点node.cilium.io/agent-not-ready。  - 内部资源调谐和回收。   | Deployment |
| yangtse-cilium   | - 负责安装CCE适配cilium的辅助CNI：cilium-cni。  - 负责部署cilium-agent。                                                                       | DaemonSet    |
   
#### 配置管理
您可以通过ConfigMap自定义配置DataPlane V2的网络组件，具体说明如下：
| ConfigMap配置             | 说明                                                                                        | 可配置的组件                                                                                                                                                                               | 优先级 |
|:---|:---|:---|:---|
| yangtse-cilium-config | DataPlane V2默认配置，如果修改此配置，集群升级修改的配置会被复原，**请勿修改**。                                          | cilium-agent                                                                                                                                                                           | 1    |
| cilium-config         | cilium社区原生配置，优先级比yangtse-cilium-config低。**如有自定义配置DataPlane V2组件的需求，请** **优先修改** **此配置。** | [cilium-agent](https://docs.cilium.io/en/stable/cmdref/cilium-agent/) [cilium-operator](https://docs.cilium.io/en/stable/cmdref/cilium-operator-generic/) | 2   |
   
![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
目前只有2.1.1及以上插件版本支持自定义配置。
以下为几个自定义配置网络组件的场景示例：
- 示例一：如果您想修改集群默认的NodePort端口范围，除了在[配置中心 \> 网络配置 \> 服务配置](https://support.huaweicloud.com/usermanual-cce/cce_10_0784.html#cce_10_0784__section18418310155812)中修改"服务端口范围配置"以外，还需要对cilium的配置进行修改，您可以创建以下cilium社区原生的ConfigMap进行配置。
  ```
  apiVersion: v1
  kind: ConfigMap
  metadata:
    name: cilium-config
    namespace: kube-system
  data:
    node-port-range: "30000,32767"
  ```
  当您配置好cilium-config，您可以通过执行以下命令滚动重建yangtse-cilium即可生效：
  ```
  uuid=$(uuidgen)
  kubectl patch daemonset -nkube-system yangtse-cilium --type='json' -p="[{\"op\": \"add\", \"path\": \"/spec/template/metadata/annotations/change-id\", \"value\": \"$uuid\"}]"
  ```
  
- 示例二：当cilium-agent异常时，可以给对应的节点自动添加污点，避免Pod调度到此节点，则需要给cilium-operator配置**--set-cilium-node-taints=true** 参数。
  您可以创建以下cilium社区原生的ConfigMap配置：
  ```
  apiVersion: v1
  kind: ConfigMap
  metadata:
    name: cilium-config
    namespace: kube-system
  data:
    set-cilium-node-taints: "true"
  ```
  当您配置好cilium-config，您可以通过执行以下命令滚动重建cilium-operator即可生效：
  ```
  uuid=$(uuidgen)
  kubectl patch deployment -n kube-system cilium-operator --type='json' -p="[{\"op\": \"add\", \"path\": \"/spec/template/metadata/annotations/change-id\", \"value\": \"$uuid\"}]"
  ```
  
- 示例三：当您需要启用cilium-agent的hubble能力，您可以创建以下cilium社区原生的ConfigMap配置，参数配置详情请参见[部署Hubble实现DataPlane V2网络可观测性](https://support.huaweicloud.com/usermanual-cce/cce_10_1063.html)。
  ```
  apiVersion: v1
  kind: ConfigMap
  metadata:
    name: cilium-config
    namespace: kube-system
  data:
    enable-hubble: "true"
    hubble-disable-tls: "true"
    hubble-listen-address: :4244
    hubble-metrics: dns drop tcp flow port-distribution icmp http
    hubble-metrics-server: :9965
  ```
  当您配置好cilium-config，您可以通过执行以下命令滚动重建yangtse-cilium即可生效：
  ```
  uuid=$(uuidgen)
  kubectl patch daemonset -nkube-system yangtse-cilium --type='json' -p="[{\"op\": \"add\", \"path\": \"/spec/template/metadata/annotations/change-id\", \"value\": \"$uuid\"}]"
  ```
  
 
#### 版本记录
您可以通过以下命令查看cilium-operator组件的镜像标签来确认DataPlane V2插件的版本。
```
kubectl get deploy -nkube-system cilium-operator -oyaml | grep "image:" | cut -d ':' -f 3
```
回显示例如下：
```
3.1.5
```
| 插件版本    | 商用状态 | 支持的集群版本                                                                                                                                                                                                                                                             | 更新特性                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | 社区版本                                        |
|:---|:---|:---|:---|:---|
| 3.1.11  | 商用    | v1.29 v1.30 v1.31 v1.32 v1.33 v1.34 v1.35 v1.36   | - cilium升级至v1.19.4                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | [v1.19](https://docs.cilium.io/en/v1.19/)  |
| 3.1.9   | 商用    | v1.29 v1.30 v1.31 v1.32 v1.33 v1.34 v1.35 v1.36 | - 支持CCE Standard集群及CCE Turbo集群v1.36版本  - 开启bpf-lb-sock-hostns-only（bpf-lb-sock-hostns-only=true）                                                                                                                                                                                                                                                                                                                                                                             | [v1.19](https://docs.cilium.io/en/v1.19/)    |
| 3.1.5    | 商用   | v1.29 v1.30 v1.31 v1.32 v1.33 v1.34 v1.35                                      | - 支持CCE Standard集群VPC路由网络模式  - 支持CCE Turbo集群v1.34及以上集群版本，CCE Turbo集群暂不支持L7网络策略  - cilium升级至v1.19.1                                                                                                                                                                                                                                                                                                              | [v1.19](https://docs.cilium.io/en/v1.19/)  |
| 3.0.1  | 商用    | v1.28 v1.29 v1.30 v1.31 v1.32 v1.33 v1.34                                     | - 支持CCE Standard集群VPC路由网络模式  - 新建集群初始版本为v1.34及以上的集群且开启DataPlane V2时，节点上将不再运行kube-proxy  - cilium升级至v1.18.3版本  - 支持Ubuntu 22.04操作系统                                                                                                                                                                                                          | [v1.18](https://docs.cilium.io/en/v1.18/)  |
| 2.1.1    | 商用   | v1.27 v1.28 v1.29 v1.30 v1.31 v1.32 v1.33                                        | - 此版本只支持CCE Standard集群VPC路由网络模式  - cilium升级至v1.17.6版本  - 支持CCE Standard集群v1.33版本  - 支持自定义cilium参数配置  - 支持用户配置Hubble可观测                                                                                                                                                                         | [v1.17](https://docs.cilium.io/en/v1.17/)  |
| 2.0.2  | 公测      | v1.27 v1.28 v1.29 v1.30 v1.31 v1.32                                                                              | - 此版本只支持CCE Standard集群VPC路由网络模式  - cilium升级至v1.17.3版本  - 关闭bpf-lb-sock（bpf-lb-sock=false）  - 关闭hostFirewall（enable-host-firewall=false）  - 开启L7网络策略（enable-l7-proxy=true）  - 开启host-routing（enable-host-legacy-routing=false）   | [v1.17](https://docs.cilium.io/en/v1.17/) |
| 1.0.17 | 受限公测  | v1.27 v1.28 v1.29 v1.30 v1.31 v1.32 v1.33                                | - 此版本只支持CCE Turbo集群  - 支持Ubuntu 22.04操作系统                                                                                                                                                                                                                                                                                                                                                                                                                                   | [v1.14](https://docs.cilium.io/en/v1.14/)    |
| 1.0.16   | 受限公测 | v1.27 v1.28 v1.29 v1.30 v1.31 v1.32 v1.33                                               | - 此版本只支持CCE Turbo集群  - 支持CCE Turbo集群v1.33版本                                                                                                                                                                                                                                                                                                                                                                                                                                         | [v1.14](https://docs.cilium.io/en/v1.14/)   |
| 1.0.15    | 受限公测   | v1.27 v1.28 v1.29 v1.30 v1.31 v1.32                                                                                | - 此版本只支持CCE Turbo集群  - 关闭bpf-lb-sock（bpf-lb-sock=false）                                                                                                                                                                                                                                                                                                                                                                                                                             | [v1.14](https://docs.cilium.io/en/v1.14/)  |
| 1.0.8  | 受限公测  | v1.27 v1.28 v1.29 v1.30 v1.31                                                                                                           | - 此版本只支持CCE Turbo集群  - 关闭hostFirewall（enable-host-firewall=false）  - 关闭L7网络策略（enable-l7-proxy=false）                                                                                                                                                                                                                                                                                                                | [v1.14](https://docs.cilium.io/en/v1.14/)   |
   
#### 插件版本差异说明
| 插件版本    | 商用状态   | cilium社区版本                                 | 差异说明                                                                                                                                                                                                                                                                                                                                                                                                                                             | 集群升级                                                            |
|:---|:---|:---|:---|:---|
| 3.1.x  | 商用  | [v1.19](https://docs.cilium.io/en/v1.19/)   | - 支持CCE Standard集群VPC网络模型  - 支持v1.34及以上CCE Turbo集群  - 采用veth组网完整兼容cilium  - 支持L7网络策略（CCE Turbo集群暂不支持）  - 支持hubble网络可观测   | 集群升级，cilium插件自动升级到最新版本                                         |
| 3.0.x | 商用 | [v1.18](https://docs.cilium.io/en/v1.18/) | - 支持CCE Standard集群VPC网络模型    - 采用veth组网完整兼容cilium  - 支持L7网络策略  - 支持hubble网络可观测                                                            | 集群升级，cilium插件自动升级到最新版本                                         |
| 2.x.x | 商用   | [v1.17](https://docs.cilium.io/en/v1.17/)   | - 只支持CCE Standard集群VPC网络模型    - 采用veth组网完整兼容cilium  - 支持L7网络策略  - 支持hubble网络可观测                                                                                | 集群升级，cilium插件自动升级到最新版本                                           |
| 1.x.x  | 受限公测  | [v1.14](https://docs.cilium.io/en/v1.14/)    | - 只支持CCE Turbo集群    - 采用网卡直通组网  - 不支持L7网络策略                                                                                                                                                                        | 集群升级，cilium插件不会自动升级。由于此版本不支持原地平滑升级到商用版本，如需使用最新的商用版本，请创建最新版本的集群。 |
   
