c4c72d2835
Change-Id: If5b0d07ea90d978c6b1f11210a661876b7929653 Signed-off-by: John DeNisco <jdenisco@cisco.com>
158 lines
4.5 KiB
ReStructuredText
158 lines
4.5 KiB
ReStructuredText
.. _interface:
|
|
|
|
.. toctree::
|
|
|
|
Creating an Interface
|
|
======================
|
|
|
|
Skills to be Learned
|
|
--------------------
|
|
|
|
#. Create a veth interface in Linux host
|
|
#. Assign an IP address to one end of the veth interface in the Linux host
|
|
#. Create a vpp host-interface that connected to one end of a veth interface via AF_PACKET
|
|
#. Add an ip address to a vpp interface
|
|
|
|
VPP commands learned in this exercise
|
|
--------------------------------------
|
|
|
|
#. `create host-interface <https://docs.fd.io/vpp/17.04/clicmd_src_vnet_devices_af_packet.html#clicmd_create_host-interface>`_
|
|
#. `set int state <https://docs.fd.io/vpp/17.04/clicmd_src_vnet.html#clicmd_set_interface_state>`_
|
|
#. `set int ip address <https://docs.fd.io/vpp/17.04/clicmd_src_vnet_ip.html#clicmd_set_interface_ip_address>`_
|
|
#. `show hardware <https://docs.fd.io/vpp/17.04/clicmd_src_vnet.html#clicmd_show_hardware-interfaces>`_
|
|
#. `show int <https://docs.fd.io/vpp/17.04/clicmd_src_vnet.html#clicmd_show_interfaces>`_
|
|
#. `show int addr <https://docs.fd.io/vpp/17.04/clicmd_src_vnet.html#clicmd_show_interfaces>`_
|
|
#. `trace add <https://docs.fd.io/vpp/17.04/clicmd_src_vlib.html#clicmd_trace_add>`_
|
|
#. `clear trace <https://docs.fd.io/vpp/17.04/clicmd_src_vlib.html#clicmd_clear_trace>`_
|
|
#. `ping <https://docs.fd.io/vpp/17.04/clicmd_src_vnet_ip.html#clicmd_ping>`_
|
|
#. `show ip arp <https://docs.fd.io/vpp/17.04/clicmd_src_vnet_ethernet.html#clicmd_show_ip_arp>`_
|
|
#. `show ip fib <https://docs.fd.io/vpp/17.04/clicmd_src_vnet_fib.html#clicmd_show_ip_fib>`_
|
|
|
|
Topology
|
|
---------
|
|
|
|
.. figure:: /_images/Create_Interface_Topology.jpg
|
|
:alt: Figure: Create Interface Topology
|
|
|
|
Figure: Create Interface Topology
|
|
|
|
Initial State
|
|
--------------
|
|
|
|
The initial state here is presumed to be the final state from the previous sections
|
|
of the tutorial.
|
|
|
|
Create veth interfaces on host
|
|
-------------------------------
|
|
|
|
In Linux, there is a type of interface call 'veth'. Think of a 'veth'
|
|
interface as being an interface that has two ends to it (rather than
|
|
one).
|
|
|
|
Create a veth interface with one end named **vpp1out** and the other
|
|
named **vpp1host**
|
|
|
|
.. code-block:: console
|
|
|
|
$ sudo ip link add name vpp1out type veth peer name vpp1host
|
|
|
|
Turn up both ends:
|
|
|
|
.. code-block:: console
|
|
|
|
$ sudo ip link set dev vpp1out up
|
|
$ sudo ip link set dev vpp1host up
|
|
|
|
Assign an IP address
|
|
---------------------
|
|
|
|
.. code-block:: console
|
|
|
|
$ sudo ip addr add 10.10.1.1/24 dev vpp1host
|
|
|
|
Display the result:
|
|
|
|
.. code-block:: console
|
|
|
|
$ ip addr show vpp1host
|
|
5: vpp1host@vpp1out: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
|
|
link/ether e2:0f:1e:59:ec:f7 brd ff:ff:ff:ff:ff:ff
|
|
inet 10.10.1.1/24 scope global vpp1host
|
|
valid_lft forever preferred_lft forever
|
|
inet6 fe80::e00f:1eff:fe59:ecf7/64 scope link
|
|
valid_lft forever preferred_lft forever
|
|
|
|
Create vpp host-interface
|
|
--------------------------
|
|
|
|
Make sure VPP is running, if not start it.
|
|
|
|
.. code-block:: console
|
|
|
|
$ ps -eaf | grep vpp
|
|
vagrant 2141 903 0 05:28 pts/0 00:00:00 grep --color=auto vpp
|
|
# vpp is not running, so start it
|
|
$ sudo /usr/bin/vpp -c startup1.conf
|
|
|
|
These commands are run from the vpp shell. Enter the VPP shell with the following
|
|
command:
|
|
|
|
.. code-block:: console
|
|
|
|
$ sudo vppctl -s /run/vpp/cli-vpp1.sock
|
|
_______ _ _ _____ ___
|
|
__/ __/ _ \ (_)__ | | / / _ \/ _ \
|
|
_/ _// // / / / _ \ | |/ / ___/ ___/
|
|
/_/ /____(_)_/\___/ |___/_/ /_/
|
|
|
|
vpp#
|
|
|
|
Create a host interface attached to **vpp1out**.
|
|
|
|
.. code-block:: console
|
|
|
|
vpp# create host-interface name vpp1out
|
|
host-vpp1out
|
|
|
|
Confirm the interface:
|
|
|
|
.. code-block:: console
|
|
|
|
vpp# show hardware
|
|
Name Idx Link Hardware
|
|
host-vpp1out 1 up host-vpp1out
|
|
Ethernet address 02:fe:d9:75:d5:b4
|
|
Linux PACKET socket interface
|
|
local0 0 down local0
|
|
local
|
|
|
|
Turn up the interface:
|
|
|
|
.. code-block:: console
|
|
|
|
vpp# set int state host-vpp1out up
|
|
|
|
Confirm the interface is up:
|
|
|
|
.. code-block:: console
|
|
|
|
vpp# show int
|
|
Name Idx State MTU (L3/IP4/IP6/MPLS) Counter Count
|
|
host-vpp1out 1 up 9000/0/0/0
|
|
local0 0 down 0/0/0/0
|
|
|
|
Assign ip address 10.10.1.2/24
|
|
|
|
.. code-block:: console
|
|
|
|
vpp# set int ip address host-vpp1out 10.10.1.2/24
|
|
|
|
Confirm the ip address is assigned:
|
|
|
|
.. code-block:: console
|
|
|
|
vpp# show int addr
|
|
host-vpp1out (up):
|
|
L3 10.10.1.2/24
|
|
local0 (dn):
|