One last update to this. Updating the interfaces in libvirt so that the interfaces are mode=bridge allows the standard network configuration, libvirt, and virtuozzo to all happily coexist. This xml is better:
[root@cluster-02 ~]# virsh # net-edit vmbr5 <network> <name>vmbr5</name> <uuid>e73593b5-0ae2-402f-b707-81c33469b149</uuid> <forward mode='bridge'/> <bridge name='vmbr5'/> </network> The prlsrvctl net list looks better since the interfaces show type=bridged instead of host-only: [root@cluster-02 ~]# prlsrvctl net list Network ID Type Bound To Bridge vmbr70 bridged vmbr70 vmbr40 bridged vmbr40 vmbr20 bridged vmbr20 Host-Only host-only virbr1 vmbr10 bridged vmbr10 vmbr91 bridged vmbr91 vmbr80 bridged vmbr80 vmbr90 bridged vmbr90 vmbr5 bridged vmbr5 vmbr92 bridged vmbr92 vmbr30 bridged vmbr30 This also cleaned up some errors in the systemd journal from libvirt. Default bridges looks good: [root@cluster-02 ~]# brctl show bridge name bridge id STP enabled interfaces host-routed 8000.000000000000 no virbr0 8000.5254001f1ad1 yes virbr0-nic virbr1 8000.525400885137 no virbr1-nic vmbr10 8000.0cc47a6b9554 no team0.10 vmbr20 8000.0cc47a6b9554 no team0.20 vmbr30 8000.0cc47a6b9554 no team0.30 vmbr40 8000.0cc47a6b9554 no team0.40 vmbr5 8000.0cc47a6b9554 no team0.5 vmbr70 8000.0cc47a6b9554 no team0.70 vmbr80 8000.0cc47a6b9554 no team0.80 vmbr90 8000.0cc47a6b9554 no team0.90 vmbr91 8000.0cc47a6b9554 no team0.91 vmbr92 8000.0cc47a6b9554 no team0.92 And when a container is started, connected to vlans 90, 91, and 92, the bridge looks good: [root@cluster-02 ~]# brctl show bridge name bridge id STP enabled interfaces host-routed 8000.000000000000 no virbr0 8000.5254001f1ad1 yes virbr0-nic virbr1 8000.525400885137 no virbr1-nic vmbr10 8000.0cc47a6b9554 no team0.10 vmbr20 8000.0cc47a6b9554 no team0.20 vmbr30 8000.0cc47a6b9554 no team0.30 vmbr40 8000.0cc47a6b9554 no team0.40 vmbr5 8000.0cc47a6b9554 no team0.5 vmbr70 8000.0cc47a6b9554 no team0.70 vmbr80 8000.0cc47a6b9554 no team0.80 vmbr90 8000.0cc47a6b9554 no team0.90 veth428bd8a6 vmbr91 8000.0cc47a6b9554 no team0.91 veth423b42f9 vmbr92 8000.0cc47a6b9554 no team0.92 veth42421a76 Axton Grams On Sat, Feb 13, 2016 at 7:02 PM, Axton <axton.gr...@gmail.com> wrote: > This works, but it seems like prlsrvctl net set is not working as > expected. I was able to bypass the issue by updating the bridge > information using virsh. > > In this example, I want to create a bridged virtual network, vlan20, to > use in the containers. > > *** This is the bridge that is configured on the system that I would like > to use for the virtual network: > > [root@cluster-02 ~]# ip -d l show vmbr20 > 11: vmbr20: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state > UP mode DEFAULT > link/ether 0c:c4:7a:6b:95:54 brd ff:ff:ff:ff:ff:ff promiscuity 0 > bridge addrgenmode eui64 > > [root@cluster-02 ~]# ip -d a show vmbr20 > 11: vmbr20: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state > UP > link/ether 0c:c4:7a:6b:95:54 brd ff:ff:ff:ff:ff:ff promiscuity 0 > bridge > > *** Create a new virtual network, vlan20 > > [root@cluster-02 ~]# prlsrvctl net add vlan20 > > *** A list of the virtual networks to make sure vlan20 was created; the > default Bridge interface is virbr5 for the new virtual network, vlan20 > > [root@cluster-02 ~]# prlsrvctl net list > Network ID Type Bound To Bridge > Host-Only host-only virbr1 > vlan30 host-only vmbr30 > vlan20 host-only virbr5 > vlan40 host-only vmbr40 > > *** Attempt to change the bridge interface from virbr5 to vmbr20 for > virtual network network vlan20, but receive an error > > [root@cluster-02 ~]# prlsrvctl net set vlan20 -i vmbr20 > Failed to find network adapter vmbr20 on the server. > > *** I start virsh to change the bridge interface from virbr5 to vmbr20 for > virtual network network vlan20 > > [root@cluster-02 ~]# virsh > Welcome to virsh, the virtualization interactive terminal. > > Type: 'help' for help with commands > 'quit' to quit > > *** I edit the xml for vlan20 > > virsh # net-edit vlan20 > Network vlan20 XML configuration edited. > > *** xml before modification > <network> > <name>vlan20</name> > <uuid>9199dcd6-f694-457c-9656-474b871fc42c</uuid> > <bridge name='virbr5' stp='off' delay='0'/> > <mac address='52:54:00:e6:cc:79'/> > </network> > > *** xml after modification > <network> > <name>vlan20</name> > <uuid>9199dcd6-f694-457c-9656-474b871fc42c</uuid> > <bridge name='vmbr20' stp='off' delay='0'/> > <mac address='52:54:00:e6:cc:79'/> > </network> > > *** Exit virsh > virsh # ^C > > *** Now the interfaces show configured as desired per prlsrvctl > > [root@cluster-02 ~]# prlsrvctl net list > Network ID Type Bound To Bridge > Host-Only host-only virbr1 > vlan30 host-only vmbr30 > vlan20 host-only vmbr20 > vlan40 host-only vmbr40 > > > From here, everything seems to work the way I would like: > - I can add networks to a container using the following commands: > # prlctl set <ctname> --netif_add eth<id> > # prlctl set <ctname> --ifname eth<id> --network vlan<id> > - The interfaces are properly managed when containers are > stopped/started/restarted > - The interfaces are properly managed when the host is rebooted > > Let me know if this seems like a bug and I will submit a defect. > > Thanks, > Axton Grams > > On Sat, Feb 13, 2016 at 3:23 PM, Axton <axton.gr...@gmail.com> wrote: > >> vznetcfg seems to do what I need, but it seems vznetcfg is missing from >> beta4 (all packages) when installed on an existing OS. Here is the doc >> page referencing this utility: >> >> >> https://docs.openvz.org/virtuozzo_7_command_line_reference.webhelp/_vznetcfg.html >> >> I have this script on the machine, but it is not the script referenced >> from the documentation: >> >> [root@cluster-02 tmp]# find / -name vznetcfg >> /usr/libexec/libvzctl/scripts/vznetcfg >> >> Axton Grams >> >> >> On Sat, Feb 13, 2016 at 2:53 PM, Axton <axton.gr...@gmail.com> wrote: >> >>> I found the container action scripts capability, but this is not >>> sufficient for my needs: >>> >>> https://docs.openvz.org/virtuozzo_7_command_line_reference.webhelp/_container_action_scripts.html >>> >>> The start script runs in the context of the container; I need the >>> equivalent trigger to run a script on the host. The mount script is >>> executed on the host, but the veth interface has not been created on the >>> host when this script runs. >>> >>> On Sat, Feb 13, 2016 at 10:49 AM, Axton <axton.gr...@gmail.com> wrote: >>> >>>> Digging through my notes, I accomplished this using a script >>>> /usr/sbin/vznetaddr which parses the ctid.conf file and adds the CT veth >>>> interfaces to a bridge. >>>> >>>> >>>> and a config file: >>>> >>>> $ cat /etc/vz/vznet.conf >>>> EXTERNAL_SCRIPT="/usr/sbin/vznetaddbr" >>>> >>>> If no native capabilities exist to make the bridge configuration >>>> changes in Virtuozzo 7, what I need is a way to call a script when the >>>> container is started, after the interface has been created on the host. Is >>>> there a way to hook into the container startup in this way? >>>> >>>> At the end of the day, what I am looking to do is automatlly attach at >>>> container to one or more vlans using veth interfaces. I accomplished this >>>> in the past using bridge utils. It is important that I can specify which >>>> bridge each veth interface is added to. Let me know if there is a better >>>> way to do this. >>>> >>>> Thanks, >>>> Axton Grams >>>> >>>> On Fri, Feb 12, 2016 at 9:22 PM, Axton <axton.gr...@gmail.com> wrote: >>>> >>>>> My host's network uses teaming, bridge, and vlan interfaces. >>>>> >>>>> There are 4 physical interfaces: enp0s20f0-enp0s20f3 >>>>> The 4 physical interfaces are grouped using lacp via teaming. >>>>> >>>>> [root@cluster-02 ~]# teamdctl team0 config dump actual >>>>> { >>>>> "device": "team0", >>>>> "link_watch": { >>>>> "name": "ethtool" >>>>> }, >>>>> "ports": { >>>>> "enp0s20f0": {}, >>>>> "enp0s20f1": {}, >>>>> "enp0s20f2": {}, >>>>> "enp0s20f3": {} >>>>> }, >>>>> "runner": { >>>>> "active": true, >>>>> "fast_rate": true, >>>>> "name": "lacp", >>>>> "tx_balancer": { >>>>> "name": "basic" >>>>> }, >>>>> "tx_hash": [ >>>>> "eth", >>>>> "ipv4", >>>>> "ipv6" >>>>> ] >>>>> } >>>>> } >>>>> >>>>> The switch is configured to send 802.1q (vlan) encapsulated packets >>>>> for a series of vlans. For each vlan, a vlan interface is configured on >>>>> the linux host and a bridge is configured on top of the vlan iface. Take >>>>> vlan 80 as an example: >>>>> >>>>> [root@cluster-02 ~]# cat /etc/sysconfig/network-scripts/ifcfg-team0.80 >>>>> DEVICE=team0.80 >>>>> VLAN=yes >>>>> BOOTPROTO=none >>>>> NM_CONTROLLED=no >>>>> BRIDGE=vmbr80 >>>>> IPV6INIT=no >>>>> MTU=9000 >>>>> >>>>> [root@cluster-02 ~]# cat /etc/sysconfig/network-scripts/ifcfg-vmbr80 >>>>> VLAN=yes >>>>> TYPE=Bridge >>>>> DEVICE=vmbr80 >>>>> PHYSDEV=team0 >>>>> VLAN_ID=80 >>>>> REORDER_HDR=0 >>>>> IPV4_FAILURE_FATAL=no >>>>> IPV6INIT=no >>>>> IPV6_AUTOCONF=no >>>>> IPV6_DEFROUTE=no >>>>> IPV6_FAILURE_FATAL=no >>>>> NAME=vlan-vlan80 >>>>> ONBOOT=yes >>>>> MTU=9000 >>>>> BOOTPROTO=none >>>>> STP=off >>>>> DELAY=0 >>>>> IPV4_DEFROUTE=no >>>>> >>>>> >>>>> In a nutshell: physical ifaces (4) -> team0 -> team0.<vlanid> (10) -> >>>>> vmbr<vlanid> (bridge). The bridges are all in place and everything works >>>>> as expected with the interface/network configuration on the host: >>>>> >>>>> [root@cluster-02 ~]# brctl show >>>>> bridge name bridge id STP enabled interfaces >>>>> host-routed 8000.000000000000 no >>>>> virbr1 8000.525400885137 no virbr1-nic >>>>> vmbr10 8000.0cc47a6b9554 no team0.10 >>>>> vmbr20 8000.0cc47a6b9554 no team0.20 >>>>> vmbr30 8000.0cc47a6b9554 no team0.30 >>>>> vmbr40 8000.0cc47a6b9554 no team0.40 >>>>> vmbr5 8000.0cc47a6b9554 no team0.5 >>>>> vmbr70 8000.0cc47a6b9554 no team0.70 >>>>> vmbr80 8000.0cc47a6b9554 no team0.80 >>>>> vmbr90 8000.0cc47a6b9554 no team0.90 >>>>> vmbr91 8000.0cc47a6b9554 no team0.91 >>>>> vmbr92 8000.0cc47a6b9554 no team0.92 >>>>> >>>>> In openvz on RHEL 6, I added an interface to a container using vzctl >>>>> like this: >>>>> vzctl set 30000 --netif_add eth4,,veth30000.40,,vmbr40 --save >>>>> >>>>> I am trying to add a veth interface to a container and specify the >>>>> bridge interface on Virtuozzo 7. >>>>> - vzctl behaves differently, it expects macs. >>>>> - prlctl does not have sufficient options; I can add an interface but >>>>> not specify the bridge device >>>>> - prlsrvctl looks like it only supports physical interfaces (see >>>>> following commands) >>>>> [root@cluster-02 ~]# ip link show vmbr80 >>>>> 21: vmbr80: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc noqueue >>>>> state UP mode DEFAULT >>>>> link/ether 0c:c4:7a:6b:95:54 brd ff:ff:ff:ff:ff:ff >>>>> [root@cluster-02 ~]# ip a show vmbr80 >>>>> 21: vmbr80: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc noqueue >>>>> state UP >>>>> link/ether 0c:c4:7a:6b:95:54 brd ff:ff:ff:ff:ff:ff >>>>> [root@cluster-02 ~]# prlsrvctl net add vlan80 -i vmbr90 -t bridged >>>>> --ip 10.1.0.0/22 >>>>> Failed to find network adapter vmbr90 on the server. >>>>> >>>>> - vznetcfg does not seem to exist in a state that matches the >>>>> virtuozzo 7 documentation (only see /usr/libexec/libvzctl/scripts/vznetcfg >>>>> on my machine) >>>>> >>>>> I thought maybe I should add a virtual network and bridge it, but I >>>>> can't seem to find a way to do this. >>>>> I thought maybe I would use vzctl like I did on rhel 6, but that >>>>> requires me to provide mac addresses (rhel 6 would autogen macs) >>>>> >>>>> At a bit of a loss. Any help is appreciated. >>>>> >>>>> Thanks, >>>>> Axton Grams >>>>> >>>>> >>>>> >>>> >>> >> >
_______________________________________________ Users mailing list Users@openvz.org https://lists.openvz.org/mailman/listinfo/users