Looking for some help with netmap/bhyve

Steven Crangle Steven at stream-technologies.com
Tue Nov 29 11:27:00 UTC 2016


 Hi Vincenzo!


Thank you so much for your help! With your instructions I've managed to get a set of bhyves up and running with netmap working properly within them! I chose to go with the recent version of head instead of 10.3.  I will also try and build a version on 11.0 if I get chance!


I will make sure and ask any further questions on the github page for netmap, but while I'm emailing, I've attached a text file containing a few kernel page fault errors I've ran into. They don't happen repeatedly. They seem to just happen randomly if I try to shut the process down and possibly catch netmap in an incorrect state! Figured they might be useful to you. If I figure out what the error is myself I will try and help out!


And thanks again for your help!


Kind Regards









________________________________



[Stream Logo]








Steven Crangle


Systems Developer | Stream Technologies | Glasgow, UK


[http://www.stream-technologies.com/img/phone.png]


+44 (0)844 800 8520


|


[http://www.stream-technologies.com/img/mouse.png]


www.stream-technologies.com<http://www.stream-technologies.com/>






________________________________
From: Vincenzo Maffione <v.maffione at gmail.com>
Sent: 23 November 2016 08:33:11
To: Steven Crangle
Cc: FreeBSD Net
Subject: Re: Looking for some help with netmap/bhyve



2016-11-22 11:31 GMT+01:00 Steven Crangle <Steven at stream-technologies.com<mailto:Steven at stream-technologies.com>>:

Hi,


I've recently been trying to boot up several bhyves so that I can test netmap communication between instances. The problem is, no matter what configuration I try, the guest vm running in bhyve completely hangs and becomes unusable as soon as a packet hits the netmap interface. When testing with pkt-gen, the TX side successfully starts sending packets, but the RX side will reliable freeze with the only option being killing the bhyve process.


The bhyve command used for the above test was:


    bhyve -c 1 -s 0,hostbridge -s 1,lpc -s 2,virtio-blk,/dev/zvol/zroot/viper1vol    -s 3,virtio-net,tap0,mac=00:01:23:45:67:83 -s 4,virtio-net,tap4 -l com1,/dev/nmdm0A -A -H -P -m 6g viper1 &
    bhyve -c 1 -s 0,hostbridge -s 1,lpc -s 2,virtio-blk,/dev/zvol/zroot/viper2vol    -s 3,virtio-net,tap1,mac=00:01:23:45:67:84 -s 4,virtio-net,tap5 -l com1,/dev/nmdm1A -A -H -P -m 6g viper2

For this test the host OS was FreeBSD-11.0-p3 and the guest OS was FreeBSD-11.0-p3.

After failing to get this solution working, I pulled down the source from the following url and installed it on the host box:

https://svnweb.freebsd.org/socsvn/soc2016/vincenzo/head/

I then ran the following commands to try and bring up the machines using the ptnetmap interface (the guest still running 11.0p3) :

    bhyve -c 1 -s 0,hostbridge -s 1,lpc -s 1:1,virtio-blk,/dev/zvol/zroot/viper1vol    -s 2:0,virtio-net,tap0,mac=00:01:23:45:67:83 -s 2:1,ptnetmap-memdev -s 2:2,ptnet,vale0:0 -l com1,/dev/nmdm0A -A -H -P -m 6g viper1 &
    bhyve -c 1 -s 0,hostbridge -s 1,lpc -s 1:1,virtio-blk,/dev/zvol/zroot/viper2vol    -s 2:0,virtio-net,tap1,mac=00:01:23:45:67:84 -s 2:1,ptnetmap-memdev -s 2:2,ptnet,vale0:1 -l com1,/dev/nmdm1A -A -H -P -m 6g viper2

With the above commands the vm's fail to boot with the following message:

ptnet_init: failed to get ptnetmap

Output in /var/log/messages seems to just show the ptnetmap driver allocating one RX/TX ring for each vm, while bringing the device up, the device then goes down and the above error is seen in the console.

Is there something I'm doing wrong with regards to running netmap or ptnetmap within a bhyve? Any pointers in the right direction will be much appreciated!

Kind Regards

Steven


Hi Steven,

  The code you are looking at is the final code released by my gsoc 2016 project at the end of August 2016. However, I've been working on that for a while after the gsoc, so that code is not updated anymore. My modification basically involves two subsystems: netmap and bhyve.

The updates to netmap are already available in HEAD. The updates to bhyve are not yet upstream, as we are in the process to review that with the bhyve maintainers.

Anyway, you need two sources to get the latest code:
1) https://github.com/luigirizzo/netmap for the latest netmap code, that you could also compile as an external kernel module.
2) https://github.com/vmaffione/freebsd to get the updates to bhyve (and vmm.ko). You can use this as the host system. There are two branches here: ptnet-10.3, and ptnet-head. My original code was developed under FreeBSD 10.3, so a first possibility is to try this as the host system (using the ptnet-10.3 branch). The other branch (ptnet-head) contains a porting of the work to a recent version of HEAD. I would be very glad if you could test the code also on FreeBSD 11.

We support two combinations of bhyve networking with netmap:

  (A) virtio-net + netmap: that is something like "-s 2:0,virtio-net,vale0:0" in the bhyve command line.
  (B) ptnet + ptnetmap: that is something like "-s 2:1,ptnetmap-memdev -s 2:2,ptnet,vale0:0" in the bhyve command line.

so you may want to try A first (netmap backend in user-space, slower) and then B (netmap backend in kernel-space, faster).

Sorry about the confusion on the code repositories, I'll try also to update the wiki page (and/or the gsoc svn repo) to reflect these updates. It's perfectly ok for me to discuss these issues here in the ML, however for more detailed/low-level discussion and support about problems you are running into, feel free to open Github issues here https://github.com/luigirizzo/netmap.

Cheers,
  Vincenzo









________________________________



[Stream Logo]








Steven Crangle


Systems Developer | Stream Technologies | Glasgow, UK


[http://www.stream-technologies.com/img/phone.png]


+44 (0)844 800 8520<tel:%2B44%20%280%29844%20800%208520>


|


[http://www.stream-technologies.com/img/mouse.png]


www.stream-technologies.com<http://www.stream-technologies.com><http://www.stream-technologies.com/>






_______________________________________________
freebsd-net at freebsd.org<mailto:freebsd-net at freebsd.org> mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscribe at freebsd.org<mailto:freebsd-net-unsubscribe at freebsd.org>"



--
Vincenzo Maffione
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: kernel_stacktraces.txt
URL: <http://lists.freebsd.org/pipermail/freebsd-net/attachments/20161129/e596b217/attachment.txt>


More information about the freebsd-net mailing list