Difference between revisions of "ONE/Simple test setup"

From fd.io
< ONE
Jump to: navigation, search
(vpp1 config)
Line 105: Line 105:
  
 
=== vpp1 config ===
 
=== vpp1 config ===
First create and configure the LAN and WAN facing <code>af_packet</code> interfaces  
+
Create and configure the LAN and WAN facing <code>af_packet</code> interfaces  
 
* Create LAN facing <code>host-vpp1</code> and WAN facing <code>host-intervpp1</code> interfaces
 
* Create LAN facing <code>host-vpp1</code> and WAN facing <code>host-intervpp1</code> interfaces
 
* Set <code>6.0.2.1/24</code> and <code>6.0.3.1</code> as their respective IP4 addresses
 
* Set <code>6.0.2.1/24</code> and <code>6.0.3.1</code> as their respective IP4 addresses
  
 
Enable and configure LISP-GPE:
 
Enable and configure LISP-GPE:
* The WAN facing interface <code>host-vpp1</code> is used as locator (underlay attachment point)
+
* Set WAN facing interface <code>host-vpp1</code> as locator (underlay attachment point)
* The LAN facing prefix <code>6.0.2.0/24</code> is configured as a local EID (End-host ID - overlay address)  
+
* Set LAN facing prefix <code>6.0.2.0/24</code> as a local EID (End-host ID - overlay address)  
 
* Configure map-server address <code>6.0.3.100</code>
 
* Configure map-server address <code>6.0.3.100</code>
  
Line 130: Line 130:
 
</pre>
 
</pre>
  
=== vpp 2 config ===
+
=== vpp2 config ===
interface
+
Create and configure the LAN and WAN facing <code>af_packet</code> interfaces
 +
* Create LAN facing <code>host-vpp2</code> and WAN facing <code>host-intervpp2</code> interfaces
 +
* Set <code>6.0.4.1/24</code> and <code>6.0.3.2</code> as their respective IP4 addresses
 +
 
 +
Enable and configure LISP-GPE:
 +
* Set WAN facing interface <code>host-vpp2</code> as locator (underlay attachment point)
 +
* Set LAN facing prefix <code>6.0.4.0/24</code> as a local EID (End-host ID - overlay address)
 +
* Configure map-server address <code>6.0.3.100</code>
  
 
<pre>
 
<pre>
Line 137: Line 144:
 
set int state host-vpp2 up
 
set int state host-vpp2 up
 
set int ip address host-vpp2 6.0.4.1/24
 
set int ip address host-vpp2 6.0.4.1/24
</pre>
 
 
lisp config
 
 
<pre>
 
set int ip address GigabitEthernet2/4/0 6.0.4.1/24
 
set int state GigabitEthernet2/4/0 up
 
  
set int ip address GigabitEthernet2/5/0 6.0.3.1/24
+
create host-interface name intervpp2
set int state GigabitEthernet2/5/0 up
+
set int state host-intervpp2 up
 +
set int ip address host-intervpp1 6.0.3.2/24
  
 
lisp gpe enable
 
lisp gpe enable
  
lisp locator-set add ls1 iface GigabitEthernet2/5/0 p 1 w 1
+
lisp locator-set add ls1 iface host-intervpp2 p 1 w 1
 
lisp eid-table add eid 6.0.4.0/24 locator-set ls1
 
lisp eid-table add eid 6.0.4.0/24 locator-set ls1
 
lisp map-resolver add 6.0.3.100
 
lisp map-resolver add 6.0.3.100

Revision as of 11:51, 6 May 2016

Overview

This tutorial shows how to use VPP lite to build a simple/toy LISP overlay on an Ubuntu host using namespaces and af_packet.

Requirements

Topology

add pretty pic

Setup

Host and vpp configs

Host

Create namespace and set up interface in linux

# path to vpp executable and configurations folder
VPP_LITE_BIN=/home/vagrant/vpp/build-root/install-vpp_lite_debug-native/vpp/bin/vpp
VPP_LITE_CONF=/etc/vpp/lite/

# make sure there are no vpp instances running
pkill vpp
 
# delete previous incarnations if they exist
ip netns exec intervppns ifconfig vppbr down
ip netns exec intervppns brctl delbr vppbr
ip link del dev veth_vpp1 &> /dev/null
ip link del dev veth_vpp2 &> /dev/null
ip link del dev veth_intervpp1 &> /dev/null
ip link del dev veth_intervpp2 &> /dev/null
ip link del dev veth_odl &> /dev/null
ip netns del vppns1 &> /dev/null
ip netns del vppns2 &> /dev/null
ip netns del intervppns &> /dev/null
 
if [ "$1" == "clean" ] ; then
  exit 0;
fi

# create vpp to clients and inter-vpp namespaces
ip netns add vppns1
ip netns add vppns2
ip netns add intervppns

# create vpp and odl interfaces and set them in intervppns 
ip link add veth_intervpp1 type veth peer name intervpp1
ip link add veth_intervpp2 type veth peer name intervpp2
ip link add veth_odl type veth peer name odl
ip link set dev intervpp1 up
ip link set dev intervpp2 up
ip link set dev odl up
ip link set dev veth_intervpp1 up netns intervppns
ip link set dev veth_intervpp2 up netns intervppns
ip link set dev veth_odl up netns intervppns

# create bridge in intervppns and add vpp and odl interfaces 
ip netns exec intervppns brctl addbr vppbr
ip netns exec intervppns brctl addif vppbr veth_intervpp1
ip netns exec intervppns brctl addif vppbr veth_intervpp2
ip netns exec intervppns brctl addif vppbr veth_odl
ip netns exec intervppns ifconfig vppbr up
 
# create and configure 1st veth client to vpp pair
ip link add veth_vpp1 type veth peer name vpp1
ip link set dev vpp1 up
ip link set dev veth_vpp1 up netns vppns1
 
ip netns exec vppns1 \
  bash -c "
    ip link set dev lo up
    ip addr add 6.0.2.2/24 dev veth_vpp1
    ip route add 6.0.4.0/24 via 6.0.2.1
"
 
# create and configure 2nd veth client to vpp pair
ip link add veth_vpp2 type veth peer name vpp2
ip link set dev vpp2 up
ip link set dev veth_vpp2 up netns vppns2
 
ip netns exec vppns2 \
  bash -c "
    ip link set dev lo up
    ip addr add 6.0.4.4/24 dev veth_vpp2
    ip route add 6.0.2.0/24 via 6.0.4.1
"

# set odl iface ip and disable checksum offloading
ifconfig odl 6.0.3.100/24
ethtool --offload  odl rx off tx off

# start vpp1 and vpp2 in separate chroot
sudo $VPP_LITE_BIN \
  unix { log /tmp/vpp1.log cli-listen \
         localhost:5002 full-coredump \
         exec $VPP_LITE_CONF/vpp1.config } \
  api-trace { on } chroot {prefix xtr1}
 
sudo $VPP_LITE_BIN \
  unix { log /tmp/vpp2.log cli-listen \
         localhost:5003 full-coredump exec $VPP_LITE_CONF/vpp2.config } \
  api-trace { on } chroot {prefix xtr2}

vpp1 config

Create and configure the LAN and WAN facing af_packet interfaces

  • Create LAN facing host-vpp1 and WAN facing host-intervpp1 interfaces
  • Set 6.0.2.1/24 and 6.0.3.1 as their respective IP4 addresses

Enable and configure LISP-GPE:

  • Set WAN facing interface host-vpp1 as locator (underlay attachment point)
  • Set LAN facing prefix 6.0.2.0/24 as a local EID (End-host ID - overlay address)
  • Configure map-server address 6.0.3.100
create host-interface name vpp1
set int state host-vpp1 up
set int ip address host-vpp1 6.0.2.1/24

create host-interface name intervpp1
set int state host-intervpp1 up
set int ip address host-intervpp1 6.0.3.1/24

lisp gpe enable

lisp locator-set add ls1 iface host-intervpp1 p 1 w 1
lisp eid-table add eid 6.0.2.0/24 locator-set ls1
lisp map-resolver add 6.0.3.100

vpp2 config

Create and configure the LAN and WAN facing af_packet interfaces

  • Create LAN facing host-vpp2 and WAN facing host-intervpp2 interfaces
  • Set 6.0.4.1/24 and 6.0.3.2 as their respective IP4 addresses

Enable and configure LISP-GPE:

  • Set WAN facing interface host-vpp2 as locator (underlay attachment point)
  • Set LAN facing prefix 6.0.4.0/24 as a local EID (End-host ID - overlay address)
  • Configure map-server address 6.0.3.100
create host-interface name vpp2
set int state host-vpp2 up
set int ip address host-vpp2 6.0.4.1/24

create host-interface name intervpp2
set int state host-intervpp2 up
set int ip address host-intervpp1 6.0.3.2/24

lisp gpe enable

lisp locator-set add ls1 iface host-intervpp2 p 1 w 1
lisp eid-table add eid 6.0.4.0/24 locator-set ls1
lisp map-resolver add 6.0.3.100

Test

ip netns exec vppns1 ping 6.0.4.4