Here a sample of command with pvesh to manage the sdn. #create a vlan transportzone pvesh create /cluster/sdn/zones/ --zone vlanzone --type vlan --bridge vmbr0 #create a layer2 vxlan unicast transportzone pvesh create /cluster/sdn/zones/ --zone vxlanunicastzone --type vxlan --peers 192.168.0.1,192.168.0.2,192.168.0.3 #create an controller pvesh create /cluster/sdn/controllers/ --controller frrrouter1 --type evpn --peers 192.168.0.1,192.168.0.2,192.168.0.3 --asn 1234 --gateway-nodes pxnode1,pxnode2 --gateway-external-peers 192.168.0.253,192.168.0.254 #create a layer2 vxlan bgpevpn transportzone pvesh create /cluster/sdn/zones/ --zone layer2evpnzone --type evpn --controller frrrouter1 #create a layer3 routable vxlan bgpevpn transportzone pvesh create /cluster/sdn/zones/ --zone layer3evpnzone --type evpn --controller frrrouter1 --vrf-vxlan 4000 #create a vnet in the transportzone pvesh create /cluster/sdn/vnets/ --vnet vnet10 --type vnet --zone vlanzone --tag 10 #create a vnet in the transportzone with ip for evpn routing pvesh create /cluster/sdn/vnets/ --vnet vnet11 --type vnet --zone layer3evpnzone --tag 11 --ipv4 10.0.0.1/24 --mac c8:1f:66:f8:62:8d pvesh create /cluster/sdn/vnets/ --vnet vnet12 --type vnet --zone layer3evpnzone --tag 12 --ipv4 10.0.1.1/24 --mac c8:1f:66:f8:62:8e #apply changes from /etc/pve/sdn.cfg.new to /etc/pve/sdn.cfg pvesh set /cluster/sdn #generate local /etc/network/interfaces.d/sdn and reload (need to be called on each node) pvesh set /nodes//network display transporzone status on all cluster nodes #pvesh get /cluster/resources ┌────────────────────────────────────┬─────────┬───────┬───────────┬─────────┬───────┬────────┬─────────────┬────────────┬────────────┬───────────────┬──────┬───────────┬──────────────┬────────────────┐ │ id │ type │ cpu │ disk │ hastate │ level │ maxcpu │ maxdisk │ maxmem │ mem │ node │ pool │ status │ storage │ uptime │ │ sdn/node1/transportzone10 │ sdn │ │ │ │ │ │ │ │ │ kvmformation1 │ │ error │ │ │ ├────────────────────────────────────┼─────────┼───────┼───────────┼─────────┼───────┼────────┼─────────────┼────────────┼────────────┼───────────────┼──────┼───────────┼──────────────┼────────────────┤ │ sdn/node1/zone1 │ sdn │ │ │ │ │ │ │ │ │ node1 │ │ available │ │ │ ├────────────────────────────────────┼─────────┼───────┼───────────┼─────────┼───────┼────────┼─────────────┼────────────┼────────────┼───────────────┼──────┼───────────┼──────────────┼────────────────┤ │ sdn/node1/zone4 │ sdn │ │ │ │ │ │ │ │ │ node1 │ │ available │ │ │ ├────────────────────────────────────┼─────────┼───────┼───────────┼─────────┼───────┼────────┼─────────────┼────────────┼────────────┼───────────────┼──────┼───────────┼──────────────┼────────────────┤ #list all transport zones of a node pvesh get /nodes//sdn/zones/ ┌─────────────────┬───────────┐ │ sdn │ status │ ├─────────────────┼───────────┤ │ transportzone10 │ error │ ├─────────────────┼───────────┤ │ zone1 │ available │ ├─────────────────┼───────────┤ │ zone4 │ available │ └─────────────────┴───────────┘ #list all vnet status from a node transportzone pveset get /nodes//sdn/zones//content ┌─────────┬────────┐ │ vnet │ status │ ├─────────┼────────┤ │ vnet100 │ error │ ├─────────┼────────┤ │ vnet101 │ error │ └─────────┴────────┘