[pve-devel] rfc : /etc/pve/networks.cfg implementation

Alexandre DERUMIER aderumier at odiso.com
Fri Mar 22 12:42:37 CET 2019


Hi Dietmar,

some news:

I'm still working on it, but after some discussions with my co-workers using a lot vmware and students at last training,
I have some changes for proposal.

1)

in /etc/network/interfaces, don't use "transport-zone" as name for option,
but use "uplink", this is the name in vmware, so users won't be lost.
The other difference, is that this "uplink" can be used in differents transport-zone.

Transport zone are still defined at datacenter level,
for a simple vlan config, you can have 1transport zone allowing vlan 10-20 on uplink 1,
and another transport zone on same uplink allowing vlan 30-40.

The main idea, is that a transport-zone is basically a tenant, so we you add permissions on it,
maybe put it in a pool, and then user can create vnet bridge himself, inside the correct vlan range.


2)for frr, I would like to have a router object,(where we define bgp peer,as,..),to generate main part of frr config
  and this router can be used by differents vxlan transport zones in differents vrf. (they a subojects of the main router in frr.config too)
  Like this, each vxlan transport zone is in a different vrf, so no routing between them. (each customer have a transport zone, and can't access
  to other customer transport zone)


What do you think about it ?


Here a sample config:


/etc/network/interfaces 
-----------------------

eth0
  uplink 1


eth1
  uplink 2



/etc/pve/network/router.cfg (for vxlanfrr, generate main part of frr.config, maybe can we allow user to specify custom  complex config)
----------------------------
router: router1
        bgpas 1234
        peers 192.168.0.1,192.168.0.2,192.168.0.3

-> generate frr.conf

bgp router-id 192.168.0.1
 no bgp default ipv4-unicast
 coalesce-time 1000
 neighbor 192.168.0.2 remote-as 1234
 neighbor 192.168.0.3 remote-as 1234
 !
 address-family l2vpn evpn
  neighbor 192.168.0.2 activate
  neighbor 192.168.0.3 activate
  advertise-all-vni
 exit-address-family
!


/etc/pve/network/transportzone.cfg   
-----------------
vlan transportzonecustomer1
   uplink 1
   allowedvlan 2-100


vlan transportzonecustomer2
   uplink 1
   allowedvlan 100-1000


vxlanunicast transportzonecustomer3
        uplink 2
        allowedvxlan 10000-20000
        peers 192.168.0.1;192.168.0.2;192.168.0.3


vxlanmulticast transportzonecustomer3
        uplink 2
        allowedvxlan 20000-30000
        multicastaddress 224.0.0.x 

vxlanfrr transportzonecustomer3
         uplink 2
         allowedvxlan 40000-50000
         router router1

         #enable inter-vxlan routing
         vrf vrf1 (maybe reuse transportzone name?)
         l3vni 4000
         edgenodes node1,node2   (for external routing)


(generate frr.conf router1 sub part:

vrf vrf1
 vni 4000
!
router bgp 1234 vrf vrf1
! 
 bgp router-id 192.168.0.1
 ! 
 address-family ipv4 unicast
  redistribute connected
 exit-address-family
 !
 address-family l2vpn evpn
  advertise ipv4 unicast
 exit-address-family
!
line vty
!
)






/etc/pve/network/vnets.cfg
---------------------------
vnet0 : mynetwork1 
        transportzone zone1 
        networkid: (vlan/vxlan-id) 


vnet1: mynetwork2 
       transportzone zone4 
       networkid: (vlan/vxlan-id) 
       address: cidr 
       hwaddress: 44:39:39:FF:40:10 






----- Mail original -----
De: "aderumier" <aderumier at odiso.com>
À: "dietmar" <dietmar at proxmox.com>
Cc: "pve-devel" <pve-devel at pve.proxmox.com>
Envoyé: Vendredi 1 Mars 2019 10:10:01
Objet: Re: [pve-devel] rfc : /etc/pve/networks.cfg implementation

Ok, 
I'll begin to code, and we'll see what's the best way ! 


----- Mail original ----- 
De: "dietmar" <dietmar at proxmox.com> 
À: "aderumier" <aderumier at odiso.com> 
Cc: "pve-devel" <pve-devel at pve.proxmox.com> 
Envoyé: Vendredi 1 Mars 2019 09:39:33 
Objet: Re: [pve-devel] rfc : /etc/pve/networks.cfg implementation 

> Maybe could we reuse pvestatd ? 

maybe 

> maybe we could add a version parameter in /etc/pve/networks.cfg, (user need to increment it to apply config on different nodes, like push a button "commit" in gui), 
> 
> then pvestatd simply need to compare this version with local version (should be fast and non blocking), and fork a background task to do the change ? 

You can simply compute an sha digest to detect changes. 

_______________________________________________ 
pve-devel mailing list 
pve-devel at pve.proxmox.com 
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel 




More information about the pve-devel mailing list