]> git.proxmox.com Git - pve-network.git/commitdiff
vlan/qinq: use bridge option instead uplink-id
authorAlexandre Derumier <aderumier@odiso.com>
Mon, 10 Feb 2020 16:26:04 +0000 (17:26 +0100)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Tue, 11 Feb 2020 18:03:38 +0000 (19:03 +0100)
PVE/Network/SDN/Zones/FaucetPlugin.pm
PVE/Network/SDN/Zones/QinQPlugin.pm
PVE/Network/SDN/Zones/VlanPlugin.pm
test/documentation.txt

index 609372371460cbb3676a9d9e05edb1ba1a9a01dc..ef422cac268efd9b5fee37af6c02e08b1981ce6a 100644 (file)
@@ -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 },
     };
 }
index d3f4b7d923049293e94c8ccb63b13ec1e76e8fc7..08448dc3c46ba745bedc68b06ecc7171d04dbeaa 100644 (file)
@@ -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;
index af76b43f5b25d46266ef3493b80281ba6da42561..0fb4aa71849b6fc262ff8dc9a693744c1f5905c7 100644 (file)
@@ -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;
index a091dc4b03781c7c5753af4ec301217094b0b286..316e5af4012bff8992facda137ed91f5868eeb9b 100644 (file)
@@ -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