summaryrefslogtreecommitdiffstats
path: root/docs/gettingstarted/progressivevpp/interface.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/gettingstarted/progressivevpp/interface.rst')
-rw-r--r--docs/gettingstarted/progressivevpp/interface.rst157
1 files changed, 157 insertions, 0 deletions
diff --git a/docs/gettingstarted/progressivevpp/interface.rst b/docs/gettingstarted/progressivevpp/interface.rst
new file mode 100644
index 00000000000..476fc5dda37
--- /dev/null
+++ b/docs/gettingstarted/progressivevpp/interface.rst
@@ -0,0 +1,157 @@
+.. _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):