Vnx-extnet

From VNX
Jump to: navigation, search

Connecting a Virtual Machine to a external network

There are several ways to connect a virtual machine included in a VNX scenario to an external network. Here we present two options, both based on seting up a bridge and connecting the external interface to that bridge:

  • Option 1 consist on changing the host networking configuration to manually connect the external interface to a permanent bridge. Virtual machines that need external connectivity will be simply connected by VNX to that bridge.
  • Option 2 consists on dynamically creating a bridge and connecting the external interface to that bridge during scenario creation.

Option 1 is recommended one because:

  • Facilitates the coexistence of multiple VNX scenarios sharing the external connectivity, as well as other virtual machines not started with VNX.
  • Does not need to change the IP configuration of the external interface during scenario creation. When using bridge based configurations, the IP address of the external interface has to be assigned to the bridge, not to the interface as it is done normally. In case of using option 2, VNX has to reconfigure the external interface during scenario creation/release, which could led in some cases to lose the IP conectivity to the host.

Option 1: Static bridge associated with external interfce (recomended)

  • Create a virtual bridge associated with the external interface (eth0 in this example). For example, for an Ubuntu host you have to edit /etc/network/interfaces file and change it in the following way (adapt the addresses and masks values to your case):
  • auto lo
    iface lo inet loopback
    
    auto br0
    iface br0 inet static
            address 10.1.1.7
            netmask 255.255.255.0
            gateway 10.1.1.1
            bridge_ports eth0
            bridge_stp off
            bridge_maxwait 0
            bridge_fd 0
    

    This will create a new bridge, br0, connected to the host interface eth0 and assign the IP address 10.1.1.7 previously assigned to eth0 to the new bridge:

    $ ip addr show
    ...
    3: eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP qlen 1000
        link/ether 00:1e:4f:93:48:93 brd ff:ff:ff:ff:ff:ff
        inet 10.1.1.100/24 brd 10.1.1.255 scope global eth0
    4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
        link/ether 00:1e:4f:93:48:93 brd ff:ff:ff:ff:ff:ff
        inet 10.1.1.7/24 scope global br0
    ...
    


    IMPORTANT: be aware that you are modifying the network configuration of your host interfaces and, in case of problems, you will loose the connectivity to the host. This modifications should be done from the host console to avoid problems.

  • Restart the host and check networking is working normally before continuing.
  • In the VNX scenario define a <net> with the name of the bridge:
  •    <net name="br0" mode="virtual_bridge" managed="no"/>
    
  • Configure the interface of the VM you want to externally connect on that net:
  • <vm name="vm1" type="libvirt" subtype="kvm" os="linux">
        ... 
        <if id="1" net="br0">
            <ipv4>10.1.1.40/24</ipv4>
        </if>
        ...
    </vm>
    
  • Start the scenario and check that the VM has connectivity with the external networks.

Option 2: Use of external attribute of <if> tag

  • Define a VNX <net> with an external attribute:
  •  <net name="Net0" mode="virtual_bridge" external="eth0"/>
    
  • Configure VM interface on that net:
  • <vm name="vm1" type="libvirt" subtype="kvm" os="linux">
        ... 
        <if id="1" net="Net0">
            <ipv4>10.1.1.40/24</ipv4>
        </if>
        ...
    </vm>
    
  • Define host configuration in <host> section:
  • <host>
        <hostif net="Net0">
            <ipv4 mask="255.255.255.0">10.1.1.7</ipv4>
        </hostif>
        <route type="ipv4" gw="10.1.1.7">default</route>
        <physicalif name="eth0" type="ipv4" ip="10.1.1.7" mask="255.255.255.0" gw="10.1.17"/>
    </host>
    
  • Start the scenario and check that the VM has connectivity with the external networks.