Provided by: freebsd-manpages_12.2-1_all bug

NAME

       ptnet — Ethernet driver for passed-through netmap ports

SYNOPSIS

       This  network  driver  is  included  in  netmap(4),  and it can be compiled into the kernel by adding the
       following line in your kernel configuration file:

             device netmap

DESCRIPTION

       The ptnet device driver provides direct access to host netmap ports, from within a Virtual Machine  (VM).
       Applications  running  inside  the  VM  can  access the TX/RX rings and buffers of a netmap port that the
       hypervisor has passed-through to the VM.   Hypervisor  support  for  ptnet  is  currently  available  for
       QEMU/KVM.   Any  netmap(4)  port  can  be  passed-through, including physical NICs, vale(4) ports, netmap
       pipes, etc.

       The main use-case for netmap passthrough  is  Network  Function  Virtualization  (NFV),  where  middlebox
       applications  running  within VMs may want to process very high packet rates (e.g., 1-10 millions packets
       per second or more).  Note, however, that those applications must use the device in netmap mode in  order
       to  achieve  such  rates.   In  addition to the general advantages of netmap, the improved performance of
       ptnet when compared to hypervisor device emulation or paravirtualization (e.g., vtnet(4),  vmx(4))  comes
       from  the hypervisor being completely bypassed in the data-path.  For example, when using vtnet(4) the VM
       has to convert each mbuf(9) to a VirtIO-specific packet representation  and  publish  that  to  a  VirtIO
       queue;  on  the  hypervisor  side,  the  packet  is  extracted  from  the VirtIO queue and converted to a
       hypervisor-specific packet representation.  The overhead of format conversions  (and  packet  copies,  in
       same  cases)  is  not  incured by ptnet in netmap mode, because mbufs are not used at all, and the packet
       format is the one defined by netmap (e.g., struct netmap_slot) along  the  whole  data-path.   No  format
       conversions or copies happen.

       It  is  also  possible  to  use a ptnet device like a regular network interface, which interacts with the
       FreeBSD network stack (i.e., not in netmap mode).  However, in that case it is necessary to pay the  cost
       of  data  copies  between  mbufs and netmap buffers, which generally results in lower TCP/UDP performance
       than vtnet(4) or other paravirtualized network devices.  If the passed-through netmap port  supports  the
       VirtIO  network  header, ptnet is able to use it, and support TCP/UDP checksum offload (for both transmit
       and receive), TCP segmentation offload (TSO) and TCP large receive  offload  (LRO).   Currently,  vale(4)
       ports  support  the  header.  Note that the VirtIO network header is generally not used in NFV use-cases,
       because middleboxes are not endpoints of TCP/UDP connections.

TUNABLES

       Tunables can be set at the loader(8) prompt before booting the kernel or stored in loader.conf(5).

       dev.netmap.ptnet_vnet_hdr
               This tunable enables (1) or disables (0) the VirtIO network header.  If enabled, ptnet  uses  the
               same  header  used by vtnet(4) to exchange offload metadata with the hypervisor.  If disabled, no
               header is prepended to transmitted and received packets.  The metadata is  necessary  to  support
               TCP/UDP checksum offloads, TSO, and LRO.  The default value is 1.

SEE ALSO

       netintro(4), netmap(4), vale(4), virtio(4), vmx(4), ifconfig(8)

HISTORY

       The  ptnet  driver  was  written  by  Vincenzo  Maffione  <vmaffione@FreeBSD.org>.   It first appeared in
       FreeBSD 12.0.

Debian                                          December 11, 2018                                       PTNET(4)