1
0
mirror of https://github.com/rtbrick/bngblaster.git synced 2024-05-06 15:54:57 +00:00
Christian Giese de3fc252c7 add support for session-group-id
+ new session grouping
+ new commands to start/stop restart sessions
+ ...
2023-02-06 21:17:05 +00:00

215 lines
4.5 KiB
ReStructuredText

.. _api:
API/CLI
=======
The control socket is an unix domain stream socket that
allows interacting with the BNG Blaster using JSON RPC.
We developed this interface for the BNG Blaster Controller
but it can be also used by other tools. One example is the
included CLI tool ``bngblaster-cli``. You can use this for
interactive communication with the BNG Blaster.
You need to enable the control socket by providing the path to
the socket file with the argument ``-S`` (``bngblaster -S run.sock``).
Each request must contain at least the ``command`` element which carries
the actual command with optional arguments.
.. code-block:: json
{
"command": "<command>"
"arguments": {
"<argument-key>": "<argument-value>"
}
}
Following an example RPC request with corresponding response.
``$ cat command.json | jq .``
.. code-block:: json
{
"command": "session-counters"
}
``$ cat command.json | sudo nc -U run.sock | jq .``
.. code-block:: json
{
"status": "ok",
"code": 200,
"session-counters": {
"sessions": 3,
"sessions-established": 3,
"sessions-flapped": 3,
"dhcpv6-sessions-established": 3
}
}
The response contains at least the status element with the
value ``ok`` and status code ``2xx`` if request was successfully.
The status can be also set to ``warning`` or ``error`` with
corresponding error code and an optional error message.
``$ cat command.json | sudo nc -U test.socket | jq .``
.. code-block:: json
{
"status": "warning",
"code": 404,
"message": "session not found"
}
The ``session-id`` is the same as used for ``{session-global}`` in the
configuration. This number starts with 1 and is increased
per session added. In example if username is configured as
``user{session-global}@rtbrick.com`` and logged in user is
``user10@rtbrick.com`` the ``session-id`` of this user is ``10``.
.. tip::
The argument ``session-id`` can be alternatively replaced
with interface index and VLAN of the session. The interface
index (``ifindex``) can be requested using the ``interfaces``
command or skipped. The first access interface is automatically
used if the argument ``ifindex`` is not present in the command.
This is not supported for N:1 sessions because multiple
sessions can be assigned to a single VLAN.
.. code-block:: json
{
"command": "session-info",
"arguments": {
"ifindex": 10,
"outer-vlan": 1,
"inner-vlan": 1
}
}
BNG Blaster CLI
---------------
The python script ``bngblaster-cli`` provides a simple CLI tool
for interactive communication with the BNG Blaster.
.. code-block:: none
$ sudo bngblaster-cli
BNG Blaster Control Socket Client
bngblaster-cli <socket> <command> [arguments]
Examples:
bngblaster-cli run.sock session-info session-id 1
bngblaster-cli run.sock igmp-join session-id 1 group 239.0.0.1 source1 1.1.1.1 source2 2.2.2.2 source3 3.3.3.3
bngblaster-cli run.sock igmp-info session-id 1
bngblaster-cli run.sock l2tp-csurq tunnel-id 1 sessions [1,2]
``$ sudo bngblaster-cli run.sock session-counters | jq .``
.. code-block:: json
{
"status": "ok",
"code": 200,
"session-counters": {
"sessions": 1,
"sessions-established": 1,
"sessions-flapped": 0,
"dhcpv6-sessions-established": 1
}
}
Test
----
.. list-table::
:header-rows: 1
* - Attribute
- Description
- Mandatory Arguments
- Optional Arguments
* - `test-info`
- Display information about the running test instance
-
-
* - `test-stop`
- Stop/teardown the test
-
-
* - `terminate`
- Stop/teardown the test
-
-
* - `monkey-start`
- Start monkey test
-
-
* - `monkey-stop`
- Stop monkey test
-
-
Interfaces
----------
.. include:: interfaces.rst
Sessions
--------
.. include:: sessions.rst
PPP
---
.. include:: ppp.rst
L2TP
----
.. include:: l2tp.rst
IGMP
----
.. include:: igmp.rst
Traffic
-------
.. include:: traffic.rst
Streams
-------
.. include:: streams.rst
ISIS
----
.. include:: isis.rst
BGP
---
.. include:: bgp.rst
LDP
---
.. include:: ldp.rst
CFM
---
.. include:: cfm.rst
Legal Interception (LI)
-----------------------
This is explained detailed in the
:ref:`Legal Interception (LI) <li>` section.
.. include:: li.rst