Vnx-labo-vpls

From VNX
Jump to: navigation, search

VPLS laboratory

Introduction

This scenario is the VNX implementation of the basic VPLS test setup for OpenBSD created by Renato Westphal and described here.

All nodes shown in the OpenBSD VPLS test setup are implemented here as VNX virtualized OpenBSD machines.

As indicated in the OpenBSD VPLS test setup, reassembly should be disabled in the Px nodes. You may do this configuring the OpenBSD packet filter with the "set reassemble no" instruction. Alternatively, and this is what is configured in the VNX implementation of the scenario, you may fully disable the packet filter.

Figure 1: VPLS test scenario topology

Requirements

  • To use the scenario you need a Linux computer (Ubuntu 14.04 or later recommended) with VNX software installed. See how to install VNX here.
  • If already installed, update VNX to the latest version with:
  • vnx_update
    
  • Download OpenBSD VNX root filesystem:
  • cd /usr/share/vnx/filesystems
    vnx_download_rootfs -r vnx_rootfs_kvm_openbsd64-5.9-v025.qcow2.bz2 -l
    

    If interested, see the OpenBSD root filesystem creation procedure here.

Installation

Download the scenario and unpack it:

wget http://idefix.dit.upm.es/download/vnx/examples/vpls/vpls-openbsd-vnx-v01.tgz
vnx --unpack vpls-openbsd-vnx-v01.tgz

Starting the scenario

Start the scenario with:

vnx -f vpls-openbsd.xml -t

Logon to the consoles of the CE machines and verify connectivity with pings.

XML specification of VPLS test scenario

<?xml version="1.0" encoding="UTF-8"?>

<!--

~~~~~~~~~~~~~~~~~~~~
VNX Sample scenarios
~~~~~~~~~~~~~~~~~~~~

Name:        vpls-openbsd

Description: This scenario is the VNX implementation of the basic VPLS test setup for OpenBSD created by 
             Renato Westphal and described here: 
               https://github.com/rwestphal/openbsd-ldpd/wiki/VPLS-basic-test-setup

Author:      Francisco Javier Ruiz Piñar (fruiz@dit.upm.es)

This file is part of the Virtual Networks over LinuX (VNX) Project distribution. 
(www: http://www.dit.upm.es/vnx - e-mail: vnx@dit.upm.es) 

Departamento de Ingenieria de Sistemas Telematicos (DIT)
Universidad Politecnica de Madrid
SPAIN

-->

<vnx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation="/usr/share/xml/vnx/vnx-2.00.xsd">
  <global>
    <version>2.0</version>
    <scenario_name>vpls-openbsd</scenario_name>
    <automac offset="6"/>
    <!--vm_mgmt type="none" /-->
    <vm_mgmt type="private" network="10.250.0.0" mask="24" offset="20">
       <host_mapping />
    </vm_mgmt>     
    <vm_defaults> 
        <console id="0" display="no"/> 
        <console id="1" display="yes"/> 
    </vm_defaults>
  </global>
    
  <net name="NetCE1PE1" mode="virtual_bridge" />
  <net name="NetCE2PE2" mode="virtual_bridge" />
  <net name="NetCE3PE3" mode="virtual_bridge" />
  <net name="NetPPE1" mode="openvswitch" mtu="1540" />
  <net name="NetPPE2" mode="virtual_bridge" mtu="1540" />
  <net name="NetPPE3" mode="virtual_bridge" mtu="1540" />
      
  <!-- NODES -->

  <vm name="PE1" type="libvirt" subtype="kvm" os="openbsd" arch="x86_64">
    <filesystem type="cow">/usr/share/vnx/filesystems/rootfs_openbsd64</filesystem>
    <mem>64M</mem>
    <if id="1" net="NetCE1PE1"> </if>
    <if id="2" net="NetPPE1"> 
        <ipv4>10.0.1.2/24</ipv4> 
    </if>
    <forwarding type="ip" />
    <filetree seq="on_boot" root="/root/">conf/PE1</filetree>
    <exec seq="on_boot" type="verbatim" ostype="system">
        chmod +x /root/PE1/start.interfaces
        cp /root/PE1/ldpd.conf /etc
        cp /root/PE1/ospfd.conf /etc
        chmod 0640 /etc/ldpd.conf 
        chmod 0640 /etc/ospfd.conf 
        /root/PE1/start.interfaces
    </exec>
  </vm>

  <vm name="PE2" type="libvirt" subtype="kvm" os="openbsd" arch="x86_64">
    <filesystem type="cow">/usr/share/vnx/filesystems/rootfs_openbsd64</filesystem>
    <mem>64M</mem>
    <if id="1" net="NetCE2PE2"> </if>
    <if id="2" net="NetPPE2"> 
	<ipv4>10.0.2.2/24</ipv4> 
    </if>
    <forwarding type="ip" />
    <filetree seq="on_boot" root="/root/">conf/PE2</filetree>
    <exec seq="on_boot" type="verbatim" ostype="system">
        chmod +x /root/PE2/start.interfaces
        cp /root/PE2/ldpd.conf /etc
        cp /root/PE2/ospfd.conf /etc
        chmod 0640 /etc/ldpd.conf 
        chmod 0640 /etc/ospfd.conf 
        /root/PE2/start.interfaces
    </exec>
  </vm>

  <vm name="PE3" type="libvirt" subtype="kvm" os="openbsd" arch="x86_64">
    <filesystem type="cow">/usr/share/vnx/filesystems/rootfs_openbsd64</filesystem>
    <mem>64M</mem>
    <if id="1" net="NetCE3PE3"> </if>
    <if id="2" net="NetPPE3"> <ipv4>10.0.3.2/24</ipv4> </if>
    <forwarding type="ip" />
    <filetree seq="on_boot" root="/root/">conf/PE3</filetree>
    <exec seq="on_boot" type="verbatim" ostype="system">
        chmod +x /root/PE3/start.interfaces
        cp /root/PE3/ldpd.conf /etc
        cp /root/PE3/ospfd.conf /etc
        chmod 0640 /etc/ldpd.conf 
        chmod 0640 /etc/ospfd.conf 
        /root/PE3/start.interfaces
    </exec>
  </vm>

  <vm name="P" type="libvirt" subtype="kvm" os="openbsd" arch="x86_64">
    <filesystem type="cow">/usr/share/vnx/filesystems/rootfs_openbsd64</filesystem>
    <mem>64M</mem>
    <if id="1" net="NetPPE1"> 
        <ipv4>10.0.1.1/24</ipv4> 
    </if>
    <if id="2" net="NetPPE2"> 
        <ipv4>10.0.2.1/24</ipv4> 
    </if>
    <if id="3" net="NetPPE3"> 
        <ipv4>10.0.3.1/24</ipv4> 
    </if>
    <forwarding type="ip" />
    <filetree seq="on_boot" root="/root/">conf/P</filetree>
    <exec seq="on_boot" type="verbatim" ostype="system">
        chmod +x /root/P/start.interfaces
        cp /root/P/ldpd.conf /etc
        cp /root/P/ospfd.conf /etc
        chmod 0640 /etc/ldpd.conf 
        chmod 0640 /etc/ospfd.conf 
        /root/P/start.interfaces
    </exec>
  </vm>

  <vm name="CE1" type="libvirt" subtype="kvm" os="openbsd" arch="x86_64">
    <filesystem type="cow">/usr/share/vnx/filesystems/rootfs_openbsd64</filesystem>
    <mem>64M</mem>
    <if id="1" net="NetCE1PE1"> 
        <ipv4>172.16.1.1/24</ipv4> 
    </if>
  </vm>

  <vm name="CE2" type="libvirt" subtype="kvm" os="openbsd" arch="x86_64">
    <filesystem type="cow">/usr/share/vnx/filesystems/rootfs_openbsd64</filesystem>
    <mem>64M</mem>
    <if id="1" net="NetCE2PE2"> 
        <ipv4>172.16.1.2/24</ipv4>
    </if>
  </vm>

  <vm name="CE3" type="libvirt" subtype="kvm" os="openbsd" arch="x86_64">
    <filesystem type="cow">/usr/share/vnx/filesystems/rootfs_openbsd64</filesystem>
    <mem>64M</mem>
    <if id="1" net="NetCE3PE3"> 
        <ipv4>172.16.1.3/24</ipv4> 
    </if>
  </vm>

</vnx>