[P4-dev] Installing P4 sample switch

Antonin Bas antonin at barefootnetworks.com
Fri Sep 23 15:10:59 EDT 2016


Hi,

You should be able to install this module with pip: sudo pip install crc16

On Fri, Sep 23, 2016 at 11:32 AM, Jim Kao <junghongkao at gmail.com> wrote:

> Antonin.
>
> Thanks you for the tip. but crc16 module is missed while running PD tests.
>
> Jim
> jim at onie-server:~/sdb/switch$ sudo ./bmv2/run_tests.sh
> WARNING: No route found for IPv6 destination :: (no default route?)
> Traceback (most recent call last):
>   File "/usr/local/bin/ptf", line 4, in <module>
>     __import__('pkg_resources').run_script('ptf==0.9', 'ptf')
>   File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py",
> line 744, in run_script
>     self.require(requires)[0].run_script(script_name, ns)
>   File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py",
> line 1499, in run_script
>     exec(code, namespace, namespace)
>   File "/usr/local/lib/python2.7/dist-packages/ptf-0.9-py2.7.egg/EGG-INFO/scripts/ptf",
> line 511, in <module>
>     test_modules = load_test_modules(config)
>   File "/usr/local/lib/python2.7/dist-packages/ptf-0.9-py2.7.egg/EGG-INFO/scripts/ptf",
> line 399, in load_test_modules
>     mod = imp.load_module(modname, *imp.find_module(modname, [root]))
>   File "/home/jim/sdb/switch/tests/ptf-tests/pd-tests/switch.py", line
> 39, in <module>
>     from common.utils import *
>   File "/home/jim/sdb/switch/tests/ptf-tests/pd-tests/../common/utils.py",
> line 281, in <module>
>     import crc16
> ImportError: No module named crc16
>
> On Mon, Sep 12, 2016 at 11:11 AM, Antonin Bas <
> antonin at barefootnetworks.com> wrote:
>
>> Hi Jim,
>>
>> There was recently an update to the master branches of bmv2 (the software
>> switch, https://github.com/p4lang/behavioral-model) and p4c-bm (the
>> compiler, https://github.com/p4lang/p4c-bm). The format of the JSON,
>> which is produced by the compiler from the P4 program and fed to the bmv2
>> switch, changed slightly. The latest bmv2 can still consume JSON files in
>> the old format. However, the JSON files produced by the latest p4c-bm
>> compiler version cannot be consumed by older bmv2 versions. If you try to
>> give a recent JSON to an older bmv2 version, you will get the error you are
>> observing (I just confirmed it on my machine).
>> So in a nutshell, the solution should be to simply update bmv2 (i.e. pull
>> master, re-compile and re-install).
>>
>> Sorry for the inconvenience.
>>
>> Antonin
>>
>> On Sun, Sep 11, 2016 at 10:02 PM, Jim Kao <junghongkao at gmail.com> wrote:
>>
>>> Antonin
>>>
>>> After I build the switch but it failed to run it due to failing to
>>> locating header file .
>>>
>>> jim at onie-server:~/sdb/switch$ sudo ./bmv2/run_bm.sh
>>> simple_switch: ../../include/bm/bm_sim/bytecontainer.h:95:
>>> bm::ByteContainer::ByteContainer(const string&): Assertion `(size -
>>> idx) > 0' failed.
>>> ./bmv2/run_bm.sh: line 16:  8397 Aborted                 (core dumped)
>>> /usr/local/bin/simple_switch --log-console -i 0 at veth0 -i 1 at veth2 -i
>>> 2 at veth4 -i 3 at veth6 -i 4 at veth8 -i 5 at veth10 -i 6 at veth12 -i 7 at veth14 -i
>>> 8 at veth16 -i 64 at veth250 --thrift-port 10001 --pcap $JSON_FILE
>>>
>>> veth pair setup is done through the script tools/veth_setup.sh.
>>>
>>> bmv2 is compiled and installed successful.
>>>
>>> jim at onie-server:~/sdb/bmv2$ ./configure --with-pdfixed
>>> Features recap ......................
>>> Coverage enabled .............. : no
>>> Debugger enabled .............. : no
>>> Logging macros enabled ........ : yes
>>> Event logger enabled .......... : yes
>>> With pdfixed .................. : yes
>>>
>>> jim at onie-server:~/sdb/bmv2$ sudo make install
>>>
>>> What might I miss ?
>>>
>>> Jim
>>>
>>>
>>>
>>> On Thu, Sep 1, 2016 at 1:10 PM, Antonin Bas <
>>> antonin at barefootnetworks.com> wrote:
>>>
>>>> Hi Sarath,
>>>>
>>>> I would recommend installing bmv2 in a standard system location. Just
>>>> run "sudo make install" after having compiled bmv2. Then switch will have
>>>> no issue finding bmv2 and the pdfixed headers.
>>>> Once bmv2 is installed, please run "./configure --with-bmv2
>>>> --with-switchsai" again in your switch directory. You do not need to worry
>>>> about p4-build, as the switch configure script will take care of running
>>>> the p4-build configure script.
>>>> So in a nutshell I would say the only thing missing from your steps is
>>>> the installation of bmv2 with "sudo make install".
>>>> You may want to pay attention to the output of the switch configure
>>>> script. If everything goes smoothly, you should see a short recap message
>>>> at the end with the detail of the options you provided.
>>>>
>>>> Please let us know if you run into more issues.
>>>>
>>>> Best,
>>>>
>>>> Antonin
>>>>
>>>> On Wed, Aug 31, 2016 at 7:44 PM, Sarath Kamisetty <
>>>> sarath.kamisetty at gmail.com> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> I am trying to follow the instructions posted in
>>>>> https://github.com/p4lang/switch to compile and run the switch
>>>>> (switch.p4). Is there one single script that performs all the steps ? I
>>>>> couldn't find one. Any other documentation to get this up and running will
>>>>> be helpful.
>>>>>
>>>>> I did the following:
>>>>>
>>>>> #1) Installed PTF
>>>>> #2) Installed p4c-bmv2
>>>>> #3) Compiled bmv2 with --with-pdfixed option. Where do I install this
>>>>> ? Instructions at https://github.com/p4lang/behavioral-model only
>>>>> mention how to compile, not about installing it in any location. It is
>>>>> unclear how this switch.p4 will use this path I compiled bmv2 in.
>>>>>
>>>>> At this point, I did the following under the switch/ directory
>>>>>
>>>>> ./autogen.sh
>>>>>  ./configure --with-bmv2 --with-switchsai
>>>>>  make
>>>>>
>>>>> And "make" failed promptly with the following error:
>>>>>
>>>>> [saratk at ubuntu:~/Projects/ws1/Closet/p4/matrix/apps/switch]make
>>>>> make  all-recursive
>>>>> make[1]: Entering directory `/home/saratk/Projects/ws1/Clo
>>>>> set/p4/matrix/apps/switch'
>>>>> Making all in p4-build
>>>>> make[2]: Entering directory `/home/saratk/Projects/ws1/Clo
>>>>> set/p4/matrix/apps/switch/p4-build'
>>>>> make[2]: *** No rule to make target `all'.  Stop.
>>>>> make[2]: Leaving directory `/home/saratk/Projects/ws1/Clo
>>>>> set/p4/matrix/apps/switch/p4-build'
>>>>> make[1]: *** [all-recursive] Error 1
>>>>> make[1]: Leaving directory `/home/saratk/Projects/ws1/Clo
>>>>> set/p4/matrix/apps/switch'
>>>>> make: *** [all] Error 2
>>>>> [saratk at ubuntu:~/Projects/ws1/Closet/p4/matrix/apps/switch]
>>>>>
>>>>> Suspecting something wrong with p4-build/, I followed instructions at
>>>>> https://github.com/p4lang/p4-build/ under switch/p4-build/ and
>>>>> "configure" step failed:
>>>>>
>>>>> ./configure --with-bmv2 P4_NAME=switch P4_PATH=/home/<user>/p4-apps/s
>>>>> witch/p4src/switch.p4
>>>>>
>>>>> ...
>>>>> ...
>>>>> checking for vector... yes
>>>>> checking for p4c-bmv2... /usr/local/bin/p4c-bmv2
>>>>> *checking bm/pdfixed/pd_common.h usability... no*
>>>>> *checking bm/pdfixed/pd_common.h presence... no*
>>>>> *checking for bm/pdfixed/pd_common.h... no*
>>>>> *configure: error: bmv2 pdfixed headers not found*
>>>>> *configure: error: ./co**nfigure failed for p4-build*
>>>>>
>>>>> However, I do see these files from step 3 in different path. Is there
>>>>> some environment variable that I need to set so this step succeeds ? Pls.
>>>>> help.
>>>>>
>>>>> Thanks,
>>>>> Sarat
>>>>>
>>>>> _______________________________________________
>>>>> P4-dev mailing list
>>>>> P4-dev at lists.p4.org
>>>>> http://lists.p4.org/mailman/listinfo/p4-dev_lists.p4.org
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Antonin
>>>>
>>>> _______________________________________________
>>>> P4-dev mailing list
>>>> P4-dev at lists.p4.org
>>>> http://lists.p4.org/mailman/listinfo/p4-dev_lists.p4.org
>>>>
>>>
>>>
>>
>>
>> --
>> Antonin
>>
>
>


-- 
Antonin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.p4.org/pipermail/p4-dev_lists.p4.org/attachments/20160923/5bbdc7fb/attachment-0002.html>


More information about the P4-dev mailing list