diff --git a/README.md b/README.md
index 881e9d953d63ccdba63b65f8e7577b95dcf1e211..47973e9d79d96ef5aedf4074862e4d11021309e8 100644
--- a/README.md
+++ b/README.md
@@ -141,7 +141,7 @@ Note: Upstart/SysV init based OS types are not supported.
   - [canal](https://github.com/projectcalico/canal) (given calico/flannel versions)
   - [cilium](https://github.com/cilium/cilium) v1.8.9
   - [flanneld](https://github.com/coreos/flannel) v0.13.0
-  - [kube-ovn](https://github.com/alauda/kube-ovn) v1.7.0
+  - [kube-ovn](https://github.com/alauda/kube-ovn) v1.7.1
   - [kube-router](https://github.com/cloudnativelabs/kube-router) v1.2.2
   - [multus](https://github.com/intel/multus-cni) v3.7.0
   - [ovn4nfv](https://github.com/opnfv/ovn4nfv-k8s-plugin) v1.1.0
diff --git a/roles/network_plugin/kube-ovn/templates/cni-kube-ovn-crd.yml.j2 b/roles/network_plugin/kube-ovn/templates/cni-kube-ovn-crd.yml.j2
index 70427af625ba5736da7408f97ee92ad0503d6e75..e724fd8ffbfbef96105ab3d5a3388a50bef4154a 100644
--- a/roles/network_plugin/kube-ovn/templates/cni-kube-ovn-crd.yml.j2
+++ b/roles/network_plugin/kube-ovn/templates/cni-kube-ovn-crd.yml.j2
@@ -243,24 +243,34 @@ spec:
             spec:
               type: object
               properties:
+                id:
+                  type: integer
+                  minimum: 0
+                  maximum: 4095
+                provider:
+                  type: string
                 vlanId:
                   type: integer
+                  description: Deprecated in favor of id
                 providerInterfaceName:
                   type: string
-                logicalInterfaceName:
-                  type: string
-                subnet:
-                  type: string
+                  description: Deprecated in favor of provider
+              required:
+                - provider
+            status:
+              type: object
+              properties:
+                subnets:
+                  type: array
+                  items:
+                    type: string
       additionalPrinterColumns:
-      - name: VlanID
+      - name: ID
         type: string
-        jsonPath: .spec.vlanId
-      - name: ProviderInterfaceName
-        type: string
-        jsonPath: .spec.providerInterfaceName
-      - name: Subnet
+        jsonPath: .spec.id
+      - name: Provider
         type: string
-        jsonPath: .spec.subnet
+        jsonPath: .spec.provider
   scope: Cluster
   names:
     plural: vlans
@@ -271,6 +281,83 @@ spec:
 ---
 apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
+metadata:
+  name: provider-networks.kubeovn.io
+spec:
+  group: kubeovn.io
+  versions:
+    - name: v1
+      served: true
+      storage: true
+      schema:
+        openAPIV3Schema:
+          type: object
+          properties:
+            spec:
+              type: object
+              properties:
+                defaultInterface:
+                  type: string
+                customInterfaces:
+                  type: array
+                  items:
+                    type: object
+                    properties:
+                      interface:
+                        type: string
+                      nodes:
+                        type: array
+                        items:
+                          type: string
+                excludeNodes:
+                  type: array
+                  items:
+                    type: string
+              required:
+                - defaultInterface
+            status:
+              type: object
+              properties:
+                readyNodes:
+                  type: array
+                  items:
+                    type: string
+                vlans:
+                  type: array
+                  items:
+                    type: string
+                conditions:
+                  type: array
+                  items:
+                    type: object
+                    properties:
+                      node:
+                        type: string
+                      type:
+                        type: string
+                      status:
+                        type: string
+                      reason:
+                        type: string
+                      message:
+                        type: string
+                      lastUpdateTime:
+                        type: string
+                      lastTransitionTime:
+                        type: string
+      additionalPrinterColumns:
+      - name: DefaultInterface
+        type: string
+        jsonPath: .spec.defaultInterface
+  scope: Cluster
+  names:
+    plural: provider-networks
+    singular: provider-network
+    kind: ProviderNetwork
+    listKind: ProviderNetworkList
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
 metadata:
   name: vpcs.kubeovn.io
 spec:
diff --git a/roles/network_plugin/kube-ovn/templates/cni-ovn.yml.j2 b/roles/network_plugin/kube-ovn/templates/cni-ovn.yml.j2
index 6bf400390ad380a091c278432fd63caaa1923e32..b9017598635e6bd520470361ef0bc39b5321e122 100644
--- a/roles/network_plugin/kube-ovn/templates/cni-ovn.yml.j2
+++ b/roles/network_plugin/kube-ovn/templates/cni-ovn.yml.j2
@@ -33,6 +33,8 @@ kind: ConfigMap
 metadata:
   name: ovn-config
   namespace: kube-system
+data:
+  defaultNetworkType: geneve
 ---
 apiVersion: v1
 kind: ServiceAccount
@@ -65,6 +67,8 @@ rules:
       - vpc-nat-gateways
       - ips
       - vlans
+      - provider-networks
+      - provider-networks/status
       - networks
     verbs:
       - "*"
@@ -381,6 +385,8 @@ spec:
             - mountPath: /sys
               name: host-sys
               readOnly: true
+            - mountPath: /etc/cni/net.d
+              name: cni-conf
             - mountPath: /etc/openvswitch
               name: host-config-openvswitch
             - mountPath: /etc/ovn
@@ -431,6 +437,9 @@ spec:
         - name: host-sys
           hostPath:
             path: /sys
+        - name: cni-conf
+          hostPath:
+            path: /etc/cni/net.d
         - name: host-config-openvswitch
           hostPath:
             path: /etc/origin/openvswitch