diff --git a/docsrc/sources/configuration/igmp.rst b/docsrc/sources/configuration/igmp.rst index 15732191..d60af45a 100644 --- a/docsrc/sources/configuration/igmp.rst +++ b/docsrc/sources/configuration/igmp.rst @@ -46,12 +46,18 @@ * - `send-multicast-traffic` - Generate multicast traffic - false + * - `multicast-traffic-autostart` + - Automatically start multicast traffic + - true * - `multicast-traffic-length` - Multicast traffic IP length - 76 * - `multicast-traffic-tos` - Multicast traffic TOS priority - 0 + * - `multicast-traffic-pps` + - Multicast traffic PPS per group + - 1000 * - `network-interface` - Multicast traffic source interface - @@ -67,7 +73,10 @@ This option is applicable to IGMP version 3 only! If ``send-multicast-traffic`` is true, the BNG Blaster generates multicast traffic on the network interface based on the specified group and source attributes mentioned before. This traffic includes some special signatures -for faster processing and more detailed analysis. +for faster processing and more detailed analysis. This traffic starts +automatically, which can be suppressed by setting ``multicast-traffic-autostart`` +to false. The length, TOS and packets per seconds (PPS) can be controlled +with the corresponding options. If group is set to 293.0.0.1 with group-iter of 0.0.0.2, source 1.1.1.1 and group-count 3 the result are the following three groups (S.G) diff --git a/docsrc/sources/configuration/index.rst b/docsrc/sources/configuration/index.rst index 9cdfecc3..ec6412a5 100644 --- a/docsrc/sources/configuration/index.rst +++ b/docsrc/sources/configuration/index.rst @@ -11,6 +11,14 @@ The BNG Blaster interfaces are explained detailed in the .. include:: interfaces.rst +Links +~~~~~ +.. include:: interfaces_links.rst + +Link Aggregation (LAG) +~~~~~~~~~~~~~~~~~~~~~~ +.. include:: interfaces_lag.rst + Network Interfaces ~~~~~~~~~~~~~~~~~~ .. include:: interfaces_network.rst diff --git a/docsrc/sources/configuration/interfaces.rst b/docsrc/sources/configuration/interfaces.rst index cfa5504e..711867dc 100644 --- a/docsrc/sources/configuration/interfaces.rst +++ b/docsrc/sources/configuration/interfaces.rst @@ -10,27 +10,30 @@ * - Attribute - Description - Default - * - `tx-interval` - - TX ring polling interval in milliseconds - - 1.0 - * - `rx-interval` - - RX ring polling interval in milliseconds - - 1.0 - * - `qdisc-bypass` - - Bypass the kernel's qdisc layer - - true * - `io-mode` - IO mode - packet_mmap_raw * - `io-slots` - IO slots (ring size) - 4096 - * - `io-stream-max-ppi` - - IO traffic stream max packets per interval - - 32 + * - `qdisc-bypass` + - Bypass the kernel's qdisc layer + - true + * - `tx-interval` + - TX polling interval in milliseconds + - 1.0 + * - `rx-interval` + - RX polling interval in milliseconds + - 1.0 + * - `tx-threads` + - Number of TX threads per interface link + - 0 (main thread) + * - `rx-threads` + - Number of RX threads per interface link + - 0 (main thread) * - `capture-include-streams` - Include traffic streams in capture - true * - `mac-modifier` - Third byte of access session MAC address (0-255) - - 0 \ No newline at end of file + - 0 diff --git a/docsrc/sources/configuration/interfaces_lag.rst b/docsrc/sources/configuration/interfaces_lag.rst new file mode 100644 index 00000000..c67a2908 --- /dev/null +++ b/docsrc/sources/configuration/interfaces_lag.rst @@ -0,0 +1,33 @@ +.. code-block:: json + + { "interfaces": { "lag": [] } } + + +.. list-table:: + :widths: 25 50 25 + :header-rows: 1 + + * - Attribute + - Description + - Default + * - `interface` + - Interface name (e.g. lag0, ...) + - + * - `lacp` + - De-/activate LACP + - false + * - `lacp-timeout-short` + - De-/activate LACP short timeout (3x1s) + - false (3x30s) + * - `lacp-system-priority` + - LACP system priority + - 32768 + * - `lacp-system-id` + - LACP system identifier + - 02:ff:ff:ff:ff:00 + * - `lacp-max-active-links` + - Limit the maximum number of active links + - 255 + * - `mac` + - LAG interface MAC address + - 02:ff:ff:ff:ff: diff --git a/docsrc/sources/configuration/interfaces_links.rst b/docsrc/sources/configuration/interfaces_links.rst new file mode 100644 index 00000000..516bff8d --- /dev/null +++ b/docsrc/sources/configuration/interfaces_links.rst @@ -0,0 +1,54 @@ +.. code-block:: json + + { "interfaces": { "links": [] } } + + +.. list-table:: + :widths: 25 50 25 + :header-rows: 1 + + * - Attribute + - Description + - Default + * - `interface` + - Interface name (e.g. eth0, ...) + - + * - `description` + - Interface description + - + * - `mac` + - Overwrite the MAC address + - Interface MAC address + * - `io-mode` + - Overwrite the IO mode + - + * - `io-slots` + - Overwrite the IO slots (ring size) + - + * - `io-slots-tx` + - Overwrite the TX IO slots (ring size) + - + * - `io-slots-rx` + - Overwrite the RX IO slots (ring size) + - + * - `qdisc-bypass` + - Overwrite the kernel's qdisc layer configuration + - + * - `tx-interval` + - Overwrite the TX polling interval in milliseconds + - + * - `rx-interval` + - Overwrite the RX polling interval in milliseconds + - + * - `tx-threads` + - Overwrite the number of TX threads per interface link + - + * - `rx-threads` + - Overwrite the number of RX threads per interface link + - + * - `lag-interface` + - Add interface link to LAG group + - + * - `lacp-priority` + - LACP interface priority + - 32768 \ No newline at end of file diff --git a/docsrc/sources/interfaces.rst b/docsrc/sources/interfaces.rst index efcf02c8..ac2c4264 100644 --- a/docsrc/sources/interfaces.rst +++ b/docsrc/sources/interfaces.rst @@ -3,15 +3,20 @@ Interfaces ========== -The BNG Blaster supports three types of interfaces. +The BNG Blaster distinguishes between interface links and interface functions. +An interface link can be considered as the actual interface with all the +corresponding IO settings. This is similar but not the same as physical interfaces +in typical router implementations. One or more interface functions can be attached +to those links, similar to logical interfaces. The BNG Blaster supports three types +of interface functions, ``network``, ``access``, and ``a10nsp``. -All interfaces are optional but obviously at least -one interface is required to start the BNG Blaster. +All interfaces are optional but at least one interface is required to start +the BNG Blaster. Interface Settings ------------------ -The following settings are applied to all interfaces. +The following configuration allows to overwrite the global default interface settings. .. code-block:: json @@ -26,16 +31,26 @@ The following settings are applied to all interfaces. .. include:: configuration/interfaces.rst -The ``tx-interval`` and ``rx-interval`` should be set to at to at least ``1.0`` (1ms) -if more precise timestamps or high throughput is needed. This is recommended for IGMP -join/leave or QoS delay measurements. For higher packet rates (>1g) it might be needed to -increase the ``io-slots`` from the default value of ``4096``. - The supported IO modes are listed with ``bngblaster -v`` but except ``packet_mmap_raw`` all other modes are currently considered as experimental. In the default mode (``packet_mmap_raw``) all packets are received in a Packet MMAP ring buffer and send directly trough RAW packet sockets. +The default ``tx-interval`` and ``rx-interval`` of ``1.0`` (1ms) allows precise timestamps +and high throughput. Those values can be further increased (e.g. ``0.1``) for higher throughput +or decreased (e.g. ``5.0``) for lower system load. + +It might be also needed to increase the ``io-slots`` from the default value of ``4096`` to +reach the desired throughput. The actual meaning of IO slots depends on the selected IO mode. +For Packet MMAP it defines the maximum number of packets in the ring buffer. + +Links +----- + +.. _links: + +.. include:: configuration/interfaces_links.rst + The BNG Blaster implements all protocols in userspace. Therefore the user interfaces must not have an IP address configured in the host operating system, to prevent the received packets are handled by Kernel. @@ -75,9 +90,6 @@ interface. link-local: [] mtu: 9000 - -.. note:: The number of interfaces is currently limited to 32! - It might be also needed to increase the hardware and software queue size of your network interfaces for higher throughput. @@ -111,13 +123,12 @@ You can even change the software queue size: sudo ip link set txqueuelen 4096 dev ens5f1 +Link Aggregation (LAG) +---------------------- -.. note:: - - Today all traffic is received in main thread, therefore - the single thread performance of your CPU is the most - significant performance factor. +.. _lag: +.. include:: configuration/interfaces_lag.rst Network Interfaces ------------------