--- PVE/Network/SDN/Zones/FaucetPlugin.pm | 2 +- PVE/Network/SDN/Zones/QinQPlugin.pm | 63 +++++++++------------------ PVE/Network/SDN/Zones/VlanPlugin.pm | 36 ++------------- test/documentation.txt | 8 ++-- 4 files changed, 29 insertions(+), 80 deletions(-)
diff --git a/PVE/Network/SDN/Zones/FaucetPlugin.pm b/PVE/Network/SDN/Zones/FaucetPlugin.pm index 6093723..ef422ca 100644 --- a/PVE/Network/SDN/Zones/FaucetPlugin.pm +++ b/PVE/Network/SDN/Zones/FaucetPlugin.pm @@ -24,7 +24,7 @@ sub options { return { nodes => { optional => 1}, 'dp-id' => { optional => 0 }, - 'uplink-id' => { optional => 0 }, +# 'uplink-id' => { optional => 0 }, 'controller' => { optional => 0 }, }; } diff --git a/PVE/Network/SDN/Zones/QinQPlugin.pm b/PVE/Network/SDN/Zones/QinQPlugin.pm index d3f4b7d..08448dc 100644 --- a/PVE/Network/SDN/Zones/QinQPlugin.pm +++ b/PVE/Network/SDN/Zones/QinQPlugin.pm @@ -16,13 +16,6 @@ sub properties { type => 'integer', description => "vlan tag", }, - 'vlan-protocol' => { - type => 'string', - enum => ['802.1q', '802.1ad'], - default => '802.1q', - optional => 1, - description => "vlan protocol", - } }; } @@ -30,9 +23,8 @@ sub options { return { nodes => { optional => 1}, - 'uplink-id' => { optional => 0 }, 'tag' => { optional => 0 }, - 'vlan-protocol' => { optional => 1 }, + 'bridge' => { optional => 0 }, }; } @@ -40,43 +32,28 @@ sub options { sub generate_sdn_config { my ($class, $plugin_config, $zoneid, $vnetid, $vnet, $controller, $interfaces_config, $config) = @_; - my $tag = $vnet->{tag}; - my $zone_tag = $plugin_config->{tag}; - my $mtu = $vnet->{mtu}; - my $alias = $vnet->{alias}; - my $vlanprotocol = $plugin_config->{'vlan-protocol'}; - my $uplink = $plugin_config->{'uplink-id'}; + my $tag = $plugin_config->{tag}; + my $mtu = $plugin_config->{mtu}; + my $bridge = $plugin_config->{'bridge'}; die "missing vlan tag" if !$tag; - die "missing zone vlan tag" if !$zone_tag; - my $iface = PVE::Network::SDN::Zones::Plugin::get_uplink_iface($interfaces_config, $uplink); - - #service vlan - my @iface_config = (); - push @iface_config, "vlan-raw-device $iface"; - push @iface_config, "vlan-id $zone_tag"; - push @iface_config, "vlan-protocol $vlanprotocol" if $vlanprotocol; - push @iface_config, "mtu $mtu" if $mtu; - push(@{$config->{"qinq$zoneid"}}, @iface_config) if !$config->{$iface}; - - #customer vlan - @iface_config = (); - push @iface_config, "vlan-raw-device qinq$zoneid"; - push @iface_config, "vlan-id $tag"; - push @iface_config, "mtu $mtu" if $mtu; - push(@{$config->{"vlan$vnetid"}}, @iface_config) if !$config->{$iface}; - - #vnet bridge - @iface_config = (); - push @iface_config, "bridge_ports vlan$vnetid"; - push @iface_config, "bridge_stp off"; - push @iface_config, "bridge_fd 0"; - push @iface_config, "mtu $mtu" if $mtu; - push @iface_config, "alias $alias" if $alias; - push(@{$config->{$vnetid}}, @iface_config) if !$config->{$vnetid}; - - return $config; + if (!$config->{$zoneid}) { + #zone vlan bridge + my @iface_config = (); + push @iface_config, "mtu $mtu" if $mtu; + push @iface_config, "bridge-stp off"; + push @iface_config, "bridge-fd 0"; + push @iface_config, "bridge-vlan-aware yes"; + push @iface_config, "bridge-vids 2-4094"; + push(@{$config->{$zoneid}}, @iface_config); + + #main bridge. ifupdown2 will merge it + @iface_config = (); + push @iface_config, "bridge-ports $zoneid.$tag"; + push(@{$config->{$bridge}}, @iface_config); + return $config; + } } 1; diff --git a/PVE/Network/SDN/Zones/VlanPlugin.pm b/PVE/Network/SDN/Zones/VlanPlugin.pm index af76b43..0fb4aa7 100644 --- a/PVE/Network/SDN/Zones/VlanPlugin.pm +++ b/PVE/Network/SDN/Zones/VlanPlugin.pm @@ -21,10 +21,8 @@ sub pve_verify_sdn_vlanrange { sub properties { return { - 'uplink-id' => { - type => 'integer', - minimum => 1, maximum => 4096, - description => 'Uplink interface', + 'bridge' => { + type => 'string', }, }; } @@ -33,40 +31,14 @@ sub options { return { nodes => { optional => 1}, - 'uplink-id' => { optional => 0 }, + 'bridge' => { optional => 0 }, }; } # Plugin implementation sub generate_sdn_config { my ($class, $plugin_config, $zoneid, $vnetid, $vnet, $controller, $interfaces_config, $config) = @_; - - my $tag = $vnet->{tag}; - my $mtu = $vnet->{mtu}; - my $alias = $vnet->{alias}; - my $uplink = $plugin_config->{'uplink-id'}; - - die "missing vlan tag" if !$tag; - - my $iface = PVE::Network::SDN::Zones::Plugin::get_uplink_iface($interfaces_config, $uplink); - - #tagged interface - my @iface_config = (); - push @iface_config, "mtu $mtu" if $mtu; - push @iface_config, "vlan-raw-device $iface"; - push @iface_config, "vlan-id $tag"; - push(@{$config->{"vlan$vnetid"}}, @iface_config) if !$config->{$iface}; - - #vnet bridge - @iface_config = (); - push @iface_config, "bridge_ports vlan$vnetid"; - push @iface_config, "bridge_stp off"; - push @iface_config, "bridge_fd 0"; - push @iface_config, "mtu $mtu" if $mtu; - push @iface_config, "alias $alias" if $alias; - push(@{$config->{$vnetid}}, @iface_config) if !$config->{$vnetid}; - - return $config; + return ""; } 1; diff --git a/test/documentation.txt b/test/documentation.txt index a091dc4..316e5af 100644 --- a/test/documentation.txt +++ b/test/documentation.txt @@ -2,7 +2,7 @@ Here a sample of command with pvesh to manage the sdn. #create a vlan transportzone -pvesh create /cluster/sdn/zones/ --zone vlanzone --type vlan --uplink-id 1 +pvesh create /cluster/sdn/zones/ --zone vlanzone --type vlan --bridge vmbr0 #create a layer2 vxlan unicast transportzone @@ -19,11 +19,11 @@ pvesh create /cluster/sdn/zones/ --zone layer3evpnzone --type evpn --controller #create a vnet in the transportzone -pvesh create /cluster/sdn/vnets/ --vnet vnet10 --type vnet --transportzone vlanzone --tag 10 +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 --transportzone 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 --transportzone layer3evpnzone --tag 12 --ipv4 10.0.1.1/24 --mac c8:1f:66:f8:62:8e +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 -- 2.20.1 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel