FD.io VPP  v17.07-30-g839fa73
Vector Packet Processing
netmap

create netmap

Summary/usage

create netmap name <ifname>|valeXXX:YYY [hw-addr <mac-addr>] [pipe] [master|slave].

Description

'netmap' is a framework for very fast packet I/O from userspace. 'VALE' is an equally fast in-kernel software switch using the netmap API. 'netmap' includes 'netmap pipes', a shared memory packet transport channel. Together, they provide a high speed user-space interface that allows VPP to patch into a linux namespace, a linux container, or a physical NIC without the use of DPDK. Netmap/VALE generates the 'netmap.ko' kernel module that needs to be loaded before netmap interfaces can be created.

Create a netmap interface that will attach to a linux interface. The interface must already exist. Once created, a new netmap interface will exist in VPP with the name 'netmap-<ifname>', where '<ifname>' takes one of two forms:

  • ifname - Linux interface to bind too.
  • valeXXX:YYY -
    • Where 'valeXXX' is an arbitrary name for a VALE interface that must start with 'vale' and is less than 16 characters.
    • Where 'YYY' is an existing linux namespace.

This command has the following optional parameters:

  • hw-addr <mac-addr> - Optional ethernet address, can be in either X:X:X:X:X:X unix or X.X.X cisco format.
  • pipe - Optional flag to indicate that a 'netmap pipe' instance should be created.
  • master | slave - Optional flag to indicate whether VPP should be the master or slave of the 'netmap pipe'. Only considered if 'pipe' is entered. Defaults to 'slave' if not entered.
Example usage
Example of how to create a netmap interface tied to the linux namespace 'vpp1':
vpp# create netmap name vale00:vpp1 hw-addr 02:FE:3F:34:15:9B pipe master
netmap-vale00:vpp1
Once the netmap interface is created, enable the interface using:
vpp# set interface state netmap-vale00:vpp1 up

Declaration and implementation

Declaration: netmap_create_command (src/vnet/devices/netmap/cli.c line 152)

Implementation: netmap_create_command_fn.

delete netmap

Summary/usage

delete netmap name <ifname>|valeXXX:YYY.

Description

Delete a netmap interface. Use the '<ifname>' to identify the netmap interface to be deleted. In VPP, netmap interfaces are named as 'netmap-<ifname>', where '<ifname>' takes one of two forms:

  • ifname - Linux interface to bind too.
  • valeXXX:YYY -
    • Where 'valeXXX' is an arbitrary name for a VALE interface that must start with 'vale' and is less than 16 characters.
    • Where 'YYY' is an existing linux namespace.
Example usage
Example of how to delete a netmap interface named 'netmap-vale00:vpp1':
vpp# delete netmap name vale00:vpp1

Declaration and implementation

Declaration: netmap_delete_command (src/vnet/devices/netmap/cli.c line 215)

Implementation: netmap_delete_command_fn.