有没有办法用 netplan 创建 Open vSwitch 内部端口?

有没有办法用 netplan 创建 Open vSwitch 内部端口?

正如标题所说。我不知道是否有办法做到这一点。文档是作为端口对的“补丁端口”。例子显示了这些补丁端口的使用,但仍然不清楚您是否可以以可以在其上接收配置的方式“定义”这些端口。

基本上尝试创建等效配置Proxmox Open vSwitch,示例 3

# Loopback interface
auto lo
iface lo inet loopback

# Bond eth0 and eth1 together
allow-vmbr0 bond0
iface bond0 inet manual
    ovs_bridge vmbr0
    ovs_type OVSBond
    ovs_bonds eth0 eth1
    ovs_options bond_mode=balance-slb vlan_mode=native-untagged

# Bridge for our bond and vlan virtual interfaces (our VMs will
# also attach to this bridge)
allow-ovs vmbr0
iface vmbr0 inet manual
    ovs_type OVSBridge
    ovs_ports bond0 vlan1

# Virtual interface to take advantage of originally untagged traffic
allow-vmbr0 vlan1
iface vlan1 inet static
    ovs_type OVSIntPort
    ovs_bridge vmbr0
    ovs_options vlan_mode=access
    address 192.168.3.5
    netmask 255.255.255.0
    gateway 192.168.3.254

我可以使用以下 netplan 配置实现vmbr0和接口,但不知道如何创建内部端口(名为)。bond0vlan1

---
network:
  version: 2
 
  ethernets:
    eth0: {}
    eth1: {}
 
  bonds:
    bond0:
      interfaces:
        - eth0
        - eth1
      openvswitch: {}
 
  bridges:
    vmbr0:
      interfaces:
        - bond0
      openvswitch: {}

我知道我可以直接将第 3 层配置添加到vmbr0,但我认为我需要一个内部端口,因为我希望此接口能够像其他容器/VM 端口一样处理 VLAN。如果您能回答我的问题,解释这个假设是错误的,也非常感谢!

我还被限制使用 Open vSwitch 作为 libvirt不支持“标准 Linux 桥”

答案1

Netplan 目前不支持明确定义任意 OVS 内部端口(截至 v0.102)。

但是,您可以做的是在给定的 OVS 桥上定义 VLAN,如下所示:

  vlans:
    #implicitly handled by OVS because of its link
    vlan1:
      id: 100
      link: vmbr0

这将在“link”设置定义的 OVS 桥上为您创建一个“type=internal”端口/接口,如本测试场景所示:https://github.com/canonical/netplan/blob/master/tests/integration/ovs.py#L184 然后该端口可以接收任意配置(通过 netplan 或 ovs-vsctl)。

答案2

根据@Lukas Maerdian 的建议和错误报告,我遇到了同样的问题这里,这是我设法让它工作的方法

---
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0: {}
    eth1: {}
  bonds:
    bond0:
      interfaces:
        - eth0
        - eth1
      parameters:
        mode: balance-slb
      # by default the vlan is already untagged, no extra option needed here.
      openvswitch: {}
  bridges:
    vmbr0:
      interfaces:
        - bond0
      openvswitch: {}
  vlans:
    #implicitly handled by OVS because of its link
    # For Untag VLAN
    vlan1:
      id: 0
      link: vmbr0
      addresses: [192.168.3.5/24]
      gateway4: 192.168.3.254
      openvswitch: {}
    # For VLAN 10
    vm10:
      id: 10
      link: vmbr0
      openvswitch: {}

还要注意 VLAN 的顺序,根据该错误报告,它需要位于最后一步。

相关内容