aboutsummaryrefslogtreecommitdiffstats
path: root/docs/gettingstarted/progressivevpp/twovppinstances.rst
blob: 7a8bbe0fd1c7769bd4bef481d0811bb8738cdf0e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
.. _twovppinstances:

.. toctree::

Connecting Two FD.io VPP Instances
==================================

.. _background-1:

memif is a very high performance, direct memory interface type which can
be used between FD.io VPP instances. It uses a file socket for a control channel
to set up shared memory.

.. _skills-to-be-learned-1:

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

You will learn the following new skill in this exercise:

#. Create a memif interface between two FD.io VPP instances

You should be able to perform this exercise with the following skills
learned in previous exercises:

#. Run a second FD.io VPP instance
#. Add an ip address to a FD.io VPP interface
#. Ping from FD.io VPP

.. _topology-1:

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-1:

Initial state
--------------

The initial state here is presumed to be the final state from the
exercise `Create an
Interface <VPP/Progressive_VPP_Tutorial#Exercise:_Create_an_Interface>`__

.. _action-running-a-second-vpp-instances-1:

Running a second FD.io VPP instances
-------------------------------------

You should already have a FD.io VPP instance running named: vpp1.

Run a second FD.io VPP instance named: vpp2.

.. code-block:: console

    $ sudo /usr/bin/vpp -c startup2.conf
    ....
    $ sudo vppctl -s /run/vpp/cli-vpp2.sock
        _______    _        _   _____  ___
     __/ __/ _ \  (_)__    | | / / _ \/ _ \
     _/ _// // / / / _ \   | |/ / ___/ ___/
     /_/ /____(_)_/\___/   |___/_/  /_/
    
    vpp# show version
    vpp v18.07-release built by root on c469eba2a593 at Mon Jul 30 23:27:03 UTC 2018
    vpp# quit

.. _action-create-memif-interface-on-vpp1-1:

Create memif interface on vpp1
-------------------------------

Create a memif interface on vpp1. To connect to the instance vpp1 use the
socket **/run/vpp/cli-vpp1.sock**

.. code-block:: console

   $ sudo vppctl -s /run/vpp/cli-vpp1.sock
   vpp# create interface memif id 0 master

This will create an interface on vpp1 memif0/0 using /run/vpp/memif as
its socket file. The role of vpp1 for this memif inteface is 'master'.

With what you have learned:

#. Set the memif0/0 state to up.
#. Assign IP address 10.10.2.1/24 to memif0/0
#. Examine memif0/0 via show commands

.. _action-create-memif-interface-on-vpp2-1:

Create memif interface on vpp2
--------------------------------

We want vpp2 to pick up the 'slave' role using the same
run/vpp/memif-vpp1vpp2 socket file

.. code-block:: console

   vpp# create interface memif id 0 slave

This will create an interface on vpp2 memif0/0 using /run/vpp/memif as
its socket file. The role of vpp1 for this memif inteface is 'slave'.

Use your previously used skills to:

#. Set the memif0/0 state to up.
#. Assign IP address 10.10.2.2/24 to memif0/0
#. Examine memif0/0 via show commands

.. _action-ping-from-vpp1-to-vpp2-1:

Ping from vpp1 to vpp2
------------------------

Ping 10.10.2.2 from vpp1

.. code-block:: console

    $ ping 10.10.2.2 

Ping 10.10.2.1 from vpp2

.. code-block:: console

    $ ping 10.10.2.1