L2BSA Operational State API
The API is split into the L2BSA and A10-NSP L2X service API. Details about those API endpoints, schema and attributes can be found in the official RBFS Operational State OpenAPI documentation.
L2BSA Services API
Each L2BSA service is uniquely identified by physical interface name (IFP) and ANP VLAN identifier. All other attributes of L2BSA services can be changed dynamically by replacing the existing service object by doing a full update meaning that updates must include all attributes and RBFS will automatically recognize the changes to the last version to apply those incrementally.
Endpoint | Description |
---|---|
GET /l2bsa |
This endpoint returns a list of all L2BSA services. |
PUT /l2bsa |
This endpoint replaces all L2BSA services on the system by adding new ones, updating existing and deleting those not included in the request but present on the system. Therefore this endpoint can be used to delete all services if an an empty list is provided in the request body. |
GET /l2bsa/{ifp_name} |
This endpoint returns a list of all L2BSA services on the given physical interface (IFP). |
PUT /l2bsa/{ifp_name} |
This endpoint works similarly to |
GET /l2bsa/{ifp_name}/{anp} |
This endpoint returns a single L2BSA service or |
PUT /l2bsa/{ifp_name}/{anp} |
This endpoint adds or updates a single L2BSA service. |
DELETE /l2bsa/{ifp_name}/{anp} |
This endpoint deletes a single L2BSA service. |
The following example shows an L2BSA service request body with only the mandatory attributes set.
{ "ifp_name": "ifp-0/0/1", "anp_vlan": 128, "aaa_profile_name": "aaa-l2bsa-default", "l2x": { "ingress_nexthop": "2001:db8:0:30::", "ingress_service_label": 1001, "egress_service_label": 1002 } }
The L2X ingress next-hop is typically the fabric loopback IPv4 or IPv6 address of the corresponding switch where the corresponding A10-NSP L2X service is placed. The ingress label is the upstream service label added for traffic sent to the corresponding next-hop (sent label). The egress label is the downstream service label where traffic sent from the next-hop is expected to be received (receive label). This label must be unique per switch.
Only labels greater than 100.000 should be used for the L2X service labels because labels between 16 - 100.000 are reserved by other applications. L2X service labels must not conflict with other L2X service labels and the same label can be used for downstream and upstream. |
L2BSA supports also dynamic QoS which can be controlled by RADIUS if enabled or directly via API as shown in the following example.
{ "ifp_name": "ifp-0/0/1", "anp_vlan": 128, "aaa_profile_name": "aaa-l2bsa-default", "l2x": { "ingress_nexthop": "2001:db8:0:30::", "ingress_service_label": 1001, "egress_service_label": 1002 }, "qos": { "qos_profile_name": "l2bsa-qos-default", "parent_scheduler": "pon1", "shaper": "name=shaper_session,high=14000,low=2000;name=shaper_voice,high=2000", "policer": "level=4,cir=1m,cbs=256;level=3,cir=2m,cbs=512", "queue": "name=BestEffort,size=65000;name=Voice,size=20000" } }
The QoS configuration profile is used to instantiate the QoS resources for the subscriber including
schedulers, queues and shapers. This profile can be set using the qos_profile_name
attribute.
All dynamic QoS settings like MFC, queue sizes, shaper and policer rates will be
reset if this attribute is present also if not changed. Additional shaper or
policer settings included will be applied to the new QoS configuration
after reset.
The assigned shaper instances can be updated using the shaper
attribute which will apply to the
QoS instance of the corresponding subscriber-only, but not to the other subscribers using the same
QoS profile. It is only possible to update existing shapers dynamically but it is not possible to
create a new shaper.
"shaper": "<shaper-name>,<high-kbps>,<low-kbps>;<shaper-name>,…"
This attribute can be also used as a key-value list which is automatically recognized by RBFS.
"shaper": "name=<shaper-name>,high=<high-kbps>,low=<low-kbps>;…"
The policer
attribute is also a string that contains a list of multiple policer-level settings
separated by a semicolon. Each set contains a level, cir, cbs, pir, pbs, max-cir and max-pir
separated by a comma.
"policer": "<level>,<cir>,<cbs>,<pir>,<pbs>,<max-cir>,<max-pir>;<level>…" Example: "policer": "1,2000,200;2,8000,800;3,0,800;4,0,800" level: 1 (highest priority) to 4 (lowest priority) cir: ingress policer committed information rate (kbps) cbs: ingress policer committed burst size (kbps) pir: ingress policer peak information rate (kbps) pbs: ingress policer peak burst size (kbps) max-cir: max ingress policer committed information rate (kbps) max-pir: max ingress policer peak information rate (kbps)
If PIR and PBS are not defined, the values from CIR and CBS are used as PIR and PBS as well. The max CIR and max PIR attributes are optional default set to unlimited.
This attribute can be also used as a key-value list which is automatically recognized by RBFS.
"policer": "level=<level>,cir=<cir>,cbs=<cbs>,pir=<pir>,pbs=<pbs>,max-cir=<max-cir>,max-pir=<max-pir>;…" Example: "policer": "level=4,cir=1m,cbs=256;cir=2m,cbs=512,level=3"
The queue
attribute is a string that contains a list of multiple queue settings separated by a semicolon.
Each queue setting contains a queue name and queue size in bytes separated by a comma.
"queue": "<queue-name>,<size-bytes>;<queue-name>,<size-bytes>;…"
This attribute can be also used as a key-value list which is automatically recognized by RBFS.
"queue": "name=<queue-name>,size=<size-bytes>;name=…"
The subscriber management infrastructure does not check if a referenced QoS profile, shaper, queue or policer exists or not. This is handled by forwarding infrastructure which continues processing the subscriber QoS settings as soon as the missing resource was added. |
The parent scheduler element of the scheduler map assigned to the subscriber can be
selected with the parent_scheduler
attribute. If not present, the scheduler map will
be directly bound to the local IFP where the session is established. The parent
scheduler can be only set at the beginning and must not be changed.
Providing a QoS parent scheduler that is not present on the corresponding IFP will lead to the black howling of all egress data traffic. |
The optional access_line_info
attribute contains the access line identification and
characteristics attributes used by the intermediate agent function. A detailed list
of all supported line attributes and values can be found in the official RBFS
Operational State OpenAPI documentation.
For access line attributes there is a difference between attributes not present or set to zero. Those not present will be also not added by the intermediate agent function whereas those set to zero will be added by the intermediate agent function with value also set to zero. |
Example:
/usr/bin/curl --location --request PUT 'http://198.51.100.35:19091/api/v1/rbfs/elements/leaf1/services/opsd/proxy/l2bsa/ifp-0%2f0%2f1/128' --header 'Content-Type: application/json' --data-raw '{ "ifp_name": "ifp-0/0/1", "anp_vlan": 128, "aaa_profile_name": "aaa-l2bsa-default", "l2x": { "ingress_nexthop": "2001:db8:0:30::", "ingress_service_label": 1001, "egress_service_label": 1002 }, "qos": { "qos_profile_name": "l2bsa-qos-default", "parent_scheduler": "pon1", "shaper": "name=shaper_session,high=14000,low=2000;name=shaper_voice,high=2000", "policer": "level=4,cir=1m,cbs=128;level=2,cir=1m,cbs=128", "queue": "name=BestEffort,size=65000;name=Voice,size=20000" }, "access_line_info": { "agent_circuit_id": "0.0.0.0/0.0.0.0 eth 0/0", "agent_remote_id": "DEU.RTBRICK.L2BSA01", "upstream": { "actual_rate": 2048 }, "downstream": { "actual_rate": 16235 }, "pon_type": "GPON" } }'
L2BSA Subscribers API
The existing subscriber API was extended to do some common actions using the L2BSA physical interface name (IFP) and ANP VLAN identifier instead of the subscriber-id.
Endpoint | Description |
---|---|
GET /subscribers/l2bsa/{ifp_name}/{anp} |
This endpoint is an alias for |
DELETE /subscribers/l2bsa/{ifp_name}/{anp} |
This endpoint is an alias for |
GET /subscribers/l2bsa/{ifp_name}/{anp}/adjusted-accounting |
This endpoint is an alias for |
A10-NSP L2X Services API
Endpoint | Description |
---|---|
GET /a10nsp/l2x |
This endpoint returns a list of all A10-NSP L2X services. |
PUT /a10nsp/l2x |
This endpoint replaces all A10-NSP L2X services on the system by adding new ones, updating existing and deleting those not included in the request but present on the system. Therefore this endpoint can be used to delete all services if an an empty list is provided in the request body. |
GET /a10nsp/l2x/{lag_interface_name} |
This endpoint returns a list of all A10-NSP L2X services on the given the LAG interface. |
PUT /a10nsp/l2x/{lag_interface_name} |
This endpoint works similarly to |
GET /a10nsp/l2x/{lag_interface_name}/{s_anp} |
This endpoint returns a single A10-NSP L2X service or |
PUT /a10nsp/l2x/{lag_interface_name}/{s_anp} |
This endpoint adds or updates a single A10-NSP L2X service. |
DELETE /a10nsp/l2x/{lag_interface_name}/{s_anp} |
This endpoint deletes a single A10-NSP L2X service. |
The following example shows an A10-NSP L2X service request body with only the mandatory attributes set.
{ "lag_interface_name": "lag-1", "s_vlan": 100, "anp_vlan": 128, "l2x": { "ingress_nexthop": "2001:db8:0:40::", "ingress_service_label": 1002, "egress_service_label": 1001 } }
The L2X ingress next-hop is typically the fabric loopback IPv4 or IPv6 address of the corresponding switch where the corresponding L2BSA service is placed. The ingress label is the upstream service label added for traffic sent to the corresponding next-hop (send label). The egress label is the downstream service label where traffic sent from the next-hop is expected to be received (receive label). This label must be unique per switch.
Only labels greater than 100000 should be used for the L2BSA service labels because labels between 16 - 100000 are reserved by other services. L2BSA service labels must not conflict with other L2X service labels and the same label can be used for downstream and upstream. |
Example:
/usr/bin/curl --location --request PUT 'http://198.51.100.35:19091/api/v1/rbfs/elements/a10nsp-sw1/services/opsd/proxy/a10nsp/l2x/lag-1/100' \ --header 'Content-Type: application/json' \ --data-raw '{ "lag_interface_name": "lag-1", "s_vlan": 100, "anp_vlan": 128, "l2x": { "ingress_nexthop": "2001:db8:0:40::", "ingress_service_label": 1002, "egress_service_label": 1001 } }'
|