(Configuration)
(Configuration)
Line 47: Line 47:
 
''transmitter = "DPDK:<reference interface> <EAL parameters>";''
 
''transmitter = "DPDK:<reference interface> <EAL parameters>";''
  
''transmitter = "DPDK:eth0 -w 0000:af:00.0 --file-prefix bm --huge-unlink -l 0";''
+
''transmitter = "DPDK:eth0 -w 0000:af:00.0 --file-prefix bm --huge-unlink";''
  
 
* Reference interface is a kernel attached interface used for normal communications (please read about raw mode). DPDK will reuse its IPs and default gateway
 
* Reference interface is a kernel attached interface used for normal communications (please read about raw mode). DPDK will reuse its IPs and default gateway
 
* For EAL parameters please [https://doc.dpdk.org/guides/linux_gsg/linux_eal_parameters.html read this documentation]
 
* For EAL parameters please [https://doc.dpdk.org/guides/linux_gsg/linux_eal_parameters.html read this documentation]
 
* Also in [http://doc.dpdk.org/guides/linux_gsg/enable_func.html#running-dpdk-applications-without-root-privileges most cases it requires to run BrandMeister with root privileges], you can do this by overriding systemd configuration ([https://askubuntu.com/questions/659267/how-do-i-override-or-configure-systemd-services beandmeister@.service.d])
 
* Also in [http://doc.dpdk.org/guides/linux_gsg/enable_func.html#running-dpdk-applications-without-root-privileges most cases it requires to run BrandMeister with root privileges], you can do this by overriding systemd configuration ([https://askubuntu.com/questions/659267/how-do-i-override-or-configure-systemd-services beandmeister@.service.d])

Revision as of 16:55, 2 January 2020

UDPTX is BrandMeister-own UDP transmission library, used to transmit outgoing UDP traffic fast.

At this moment BrandMeister provides several backends (options) to send outgoing UDP:

  • socket
  • raw
  • DPDK

socket

This is standard default backend that uses Berkley sockets for sending a traffic. It tries to send the data in non-blocking mode and has special transmission thread to re-send failed packets.

You have to use it if you have

  • non-ethernet interfaces
  • more then one interface for outgoing traffic (such as public + AMPR, or one for IPv4 and another one for IPv6)
  • huge routing tables

Configuration

transmitter = "socket";

raw

This is fast forwarding backend that uses RAW (PACKET_MMAP) socket of Ethernet interface for sending a traffic. It allows to save up to 40% CPU time.

Limitations

  • Requires to use a single ethernet interface for BrandMeister's traffic (IPv4 and IPv6, local site connectivity will not work)
  • All traffic will be routed via default gateway (except loopback, see next bullet)
  • Loopback addresses (127.0.0.1 and ::1) are handled by using Berkley sockets

Configuration

transmitter = "raw:<interface name>";

transmitter = "raw:eth0";

DPDK

This is fastest forwarding backend that uses kernel-bypass NIC driver for sending a traffic. It allows to save much more CPU time due to direct poll communications to the NIC and CRC offload features of some NIC models. List of supported models can be found here.

Limitations

  • The same set of limitations as raw
  • You have to have separate NIC or virtual detachable NIC port allowed to use for the DPDK transmission
  • Only DPDK port #0 will be in use

Configuration

transmitter = "DPDK:<reference interface> <EAL parameters>";

transmitter = "DPDK:eth0 -w 0000:af:00.0 --file-prefix bm --huge-unlink";

UDPTX is BrandMeister-own UDP transmission library, used to transmit outgoing UDP traffic fast.

At this moment BrandMeister provides several backends (options) to send outgoing UDP:

socket[edit]

This is standard default backend that uses Berkley sockets for sending a traffic. It tries to send the data in non-blocking mode and has special transmission thread to re-send failed packets.

You have to use it if you have[edit]

Configuration[edit]

transmitter = "socket";

raw[edit]

This is fast forwarding backend that uses RAW (PACKET_MMAP) socket of Ethernet interface for sending a traffic. It allows to save up to 40% CPU time.

Limitations[edit]

Configuration[edit]

transmitter = "raw:<interface name>";

transmitter = "raw:eth0";

DPDK[edit]

This is fastest forwarding backend that uses kernel-bypass NIC driver for sending a traffic. It allows to save much more CPU time due to direct poll communications to the NIC and CRC offload features of some NIC models. List of supported models can be found here.

Limitations[edit]

Configuration[edit]

transmitter = "DPDK:<reference interface> <EAL parameters>";

transmitter = "DPDK:eth0 -w 0000:af:00.0 --file-prefix bm --huge-unlink";