.. _routing:

.. toctree::

Routing
=======

Skills to be Learned
---------------------

In this exercise you will learn these new skills:

#. Add route to Linux Host routing table
#. Add route to FD.io VPP routing table

And revisit the old ones:

#. Examine FD.io VPP routing table
#. Enable trace on vpp1 and vpp2
#. ping from host to FD.io VPP
#. Examine and clear trace on vpp1 and vpp2
#. ping from FD.io VPP to host
#. Examine and clear trace on vpp1 and vpp2

VPP command learned in this exercise
-------------------------------------

#. `ip route
   add <https://docs.fd.io/vpp/17.04/clicmd_src_vnet_ip.html#clicmd_ip_route>`__

Topology
---------

.. figure:: /_images/Connecting_two_vpp_instances_with_memif.png
   :alt: Connect two FD.io VPP topology

   Connect two FD.io VPP topology

Initial State
--------------

The initial state here is presumed to be the final state from the
exercise `Connecting two FD.io VPP
instances <VPP/Progressive_VPP_Tutorial#Connecting_two_vpp_instances>`__

Setup host route
-----------------

.. code-block:: console

   $ sudo ip route add 10.10.2.0/24 via 10.10.1.2
   $ ip route
   default via 10.0.2.2 dev enp0s3 
   10.0.2.0/24 dev enp0s3  proto kernel  scope link  src 10.0.2.15 
   10.10.1.0/24 dev vpp1host  proto kernel  scope link  src 10.10.1.1 
   10.10.2.0/24 via 10.10.1.2 dev vpp1host 

Setup return route on vpp2
---------------------------

.. code-block:: console

   $ sudo vppctl -s /run/vpp/cli-vpp2.sock
    vpp# ip route add 10.10.1.0/24  via 10.10.2.1

Ping from host through vpp1 to vpp2
------------------------------------

The connection from vpp1 to vpp2 uses the **memif** driver, the connection to the host
uses the **af-packet** driver. To trace packets from the host we use **af-packet-input** from
vpp1 to vpp2 we use **memif-input**.

#. Setup a trace on vpp1 and vpp2
#. Ping 10.10.2.2 from the host
#. Examine the trace on vpp1 and vpp2
#. Clear the trace on vpp1 and vpp2
