From 0b0a0b584340b44a5f960122d8a4790e75d6a6b1 Mon Sep 17 00:00:00 2001 From: Christian Date: Thu, 14 Nov 2024 13:23:06 +0100 Subject: [PATCH] update training --- .gitignore | 5 +- .../{05_http_redirect => 05_http}/config.json | 0 03_routing/04_bgp/config.json | 16 +++- docs/_sources/access.rst.txt | 53 ++++++++++++- docs/_sources/basic.rst.txt | 13 +++- docs/_sources/challenge.rst.txt | 3 +- docs/_sources/routing.rst.txt | 78 +++++++++++++++++-- docs/access.html | 36 ++++++++- docs/basic.html | 13 +++- docs/routing.html | 65 +++++++++++++++- docs/searchindex.js | 2 +- docsrc/sources/access.rst | 53 ++++++++++++- docsrc/sources/basic.rst | 13 +++- docsrc/sources/challenge.rst | 3 +- docsrc/sources/routing.rst | 36 ++++++++- 15 files changed, 352 insertions(+), 37 deletions(-) rename 02_access/{05_http_redirect => 05_http}/config.json (100%) diff --git a/.gitignore b/.gitignore index e274e32..c1977d8 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ -docsrc/build \ No newline at end of file +tmp +docsrc/build + +*.DS_Store \ No newline at end of file diff --git a/02_access/05_http_redirect/config.json b/02_access/05_http/config.json similarity index 100% rename from 02_access/05_http_redirect/config.json rename to 02_access/05_http/config.json diff --git a/03_routing/04_bgp/config.json b/03_routing/04_bgp/config.json index d7066b6..e685e45 100644 --- a/03_routing/04_bgp/config.json +++ b/03_routing/04_bgp/config.json @@ -1,6 +1,16 @@ { "__comment__": "E03_04_BGP", "interfaces": { + "links": [ + { + "interface": "veth2", + "rx-threads": 2 + }, + { + "interface": "veth4", + "tx-threads": 2 + } + ], "network": [ { "__comment__": "veth2:10 to RBFS hostif-0/0/2", @@ -29,7 +39,7 @@ { "local-ipv4-address": "172.16.2.2", "peer-ipv4-address": "172.16.2.1", - "network-interface": "veth2.10", + "network-interface": "veth2:10", "raw-update-file": "update.bgp", "local-as": 65001, "peer-as": 65001, @@ -38,7 +48,7 @@ { "local-ipv4-address": "172.16.3.2", "peer-ipv4-address": "172.16.3.1", - "network-interface": "veth3.10", + "network-interface": "veth3:10", "raw-update-file": "update.bgp", "local-as": 65001, "peer-as": 65001, @@ -47,7 +57,7 @@ { "local-ipv4-address": "172.16.4.2", "peer-ipv4-address": "172.16.4.1", - "network-interface": "veth4.10", + "network-interface": "veth4:10", "local-as": 65001, "peer-as": 65001, "family": [ "ipv4-unicast", "ipv6-unicast" ] diff --git a/docs/_sources/access.rst.txt b/docs/_sources/access.rst.txt index 6833cc8..737ef37 100644 --- a/docs/_sources/access.rst.txt +++ b/docs/_sources/access.rst.txt @@ -16,15 +16,24 @@ https://rtbrick.github.io/bngblaster/access/pppoe.html bngblaster -S run.sock -J report.json -j sessions -C config.json -I -c 1 -The parameter ``-c 1`` defines how many sessions you would like to start. -You can increase this number to setup more sessions. +.. note:: + + The parameter ``-c 1`` defines how many sessions you would like to start. + You can increase this number to setup more sessions. + .. code-block:: none # > RBFS (op) show subscriber detail + show subscriber detail + show subscriber count show pppoe session detail + show pppoe session detail + +In the other shell, use the following commands to interact +with the active BNG Blaster instance. .. code-block:: none @@ -51,6 +60,19 @@ Check RADIUS logs. Checking the Grafana dashboard, you should see an increase in the subscriber count. +After the test has stopped, use the following RBFS commands to investigate why subscribers were terminated. +Start with these commands if a subscriber fails to connect or disconnects unexpectedly. + +.. code-block:: none + + # > RBFS (op) + show subscriber history + + +A list of all termination reasons can be found here: +https://documents.rtbrick.com/techdocs/current/radiusservices/radius_control.html#radius-terminate-codes + + 02.02. L2TP ----------- @@ -68,6 +90,16 @@ https://rtbrick.github.io/bngblaster/access/l2tp.html # > RBFS (op) show l2tp tunnel sessions + show l2tp tunnel + + +After the test has stopped, you can use the following RBFS commands to investigate why the tunnel and session were closed. + +.. code-block:: none + + # > RBFS (op) + show l2tp tunnel history + show subscriber history filter type L2TP 02.03. IPoE (DHCP) @@ -86,6 +118,8 @@ https://rtbrick.github.io/bngblaster/access/ipoe.html 02.04. MIX ---------- +This test generates a mix of PPPoE, L2TP, and IPoE (DHCP) subscribers. + .. code-block:: none # > Linux @@ -97,6 +131,14 @@ https://rtbrick.github.io/bngblaster/access/ipoe.html 02.05. HTTP ----------- +This test is designed to evaluate the BNG HTTP redirect service, a common feature in modern BNG deployments. + +In this scenario, the BNG Blaster functions as both an HTTP client and server. Once a subscriber is established, +the BNG Blaster IPoE client initiates a TCP connection to the HTTP server. However, this connection is intercepted +and terminated by the BNG, which is controlled via RADIUS and responds with an HTTP 302 redirect. + +https://rtbrick.github.io/bngblaster/http.html + .. code-block:: none # > Linux @@ -105,6 +147,8 @@ https://rtbrick.github.io/bngblaster/access/ipoe.html bngblaster -S run.sock -C config.json -l http -c 1 +In the other shell, use the following commands to interact with the active BNG Blaster instance. + .. code-block:: none # > Linux @@ -115,6 +159,8 @@ https://rtbrick.github.io/bngblaster/access/ipoe.html 02.06. LAG ---------- +https://rtbrick.github.io/bngblaster/interfaces.html#link-aggregation-lag + .. code-block:: none # > Linux @@ -122,8 +168,9 @@ https://rtbrick.github.io/bngblaster/access/ipoe.html # Start BNG Blaster bngblaster -S run.sock -J report.json -j sessions -C config.json -I -l dhcp -l ip -c 3 +.. note:: -You may see a warning like this, which can be ignored for now. + You may see a warning like those below, which can be ignored. .. code-block:: none diff --git a/docs/_sources/basic.rst.txt b/docs/_sources/basic.rst.txt index 0b3ccef..0457ff5 100644 --- a/docs/_sources/basic.rst.txt +++ b/docs/_sources/basic.rst.txt @@ -19,7 +19,8 @@ Before starting the tests, use the RBFS BNG CLI to verify that all physical inte The `lag-1` interface is expected to be in an operational down state if the BNG Blaster LAG test is not running. -Now, enter the following command to start the BNG Blaster. It’s recommended to open the terminal in full-screen mode to ensure the complete ncurses UI fits on the screen. +Now, enter the following command to start the BNG Blaster. It’s recommended to open the terminal in full-screen mode +to ensure the complete ncurses UI fits on the screen. .. code-block:: none @@ -37,7 +38,8 @@ In the ncurses UI, press ``F2`` to toggle network interface statistics, or use ` In the next step, we’ll interact with the BNG Blaster CLI (https://rtbrick.github.io/bngblaster/api/index.html). -Open another shell session and enter the following commands. +In the other shell, use the following commands to interact +with the active BNG Blaster instance. .. code-block:: none @@ -138,7 +140,9 @@ Delete the BNG Blaster instance. https://rtbrick.github.io/bngblaster/troubleshooting.html#pcap -In this exercise, we will start the BNG Blaster with `-P test.pcap` to generate a PCAP file that includes all traffic sent and received by the BNG Blaster. Normally, stream traffic would be excluded, but we've set `capture-include-streams` to `true` in the configuration so that stream traffic is also captured. +In this exercise, we will start the BNG Blaster with `-P test.pcap` to generate a PCAP file that includes +all traffic sent and received by the BNG Blaster. Normally, stream traffic would be excluded, but we've +set `capture-include-streams` to `true` in the configuration so that stream traffic is also captured. .. code-block:: none @@ -148,7 +152,8 @@ In this exercise, we will start the BNG Blaster with `-P test.pcap` to generate bngblaster -I -S run.sock -C config.json -l debug -P test.pcap -Wait for all flows to be verified (indicated by the log message `ALL STREAM TRAFFIC FLOWS VERIFIED`), then stop the process with `Ctrl+C`. Once the BNG Blaster has stopped, examine the PCAP file with tshark. +Wait for all flows to be verified (indicated by the log message `ALL STREAM TRAFFIC FLOWS VERIFIED`), +then stop the process with `Ctrl+C`. Once the BNG Blaster has stopped, examine the PCAP file with tshark. .. code-block:: none diff --git a/docs/_sources/challenge.rst.txt b/docs/_sources/challenge.rst.txt index 511b268..5d2a3ca 100644 --- a/docs/_sources/challenge.rst.txt +++ b/docs/_sources/challenge.rst.txt @@ -1,2 +1,3 @@ Challenge -========= \ No newline at end of file +========= + diff --git a/docs/_sources/routing.rst.txt b/docs/_sources/routing.rst.txt index 766be8e..e76e7a2 100644 --- a/docs/_sources/routing.rst.txt +++ b/docs/_sources/routing.rst.txt @@ -24,6 +24,9 @@ https://rtbrick.github.io/bngblaster/routing/isis.html bngblaster -S run.sock -C config.json -l isis +In the other shell, use the following commands to interact +with the active BNG Blaster instance. + .. code-block:: none # > Linux @@ -76,6 +79,9 @@ https://rtbrick.github.io/bngblaster/routing/ospf.html bngblaster -S run.sock -C config.json -l ospf +In the other shell, use the following commands to interact +with the active BNG Blaster instance. + .. code-block:: none # > Linux @@ -117,6 +123,9 @@ https://rtbrick.github.io/bngblaster/routing/ldp.html bngblaster -S run.sock -C config.json -l ldp +In the other shell, use the following commands to interact +with the active BNG Blaster instance. + .. code-block:: none # > Linux @@ -135,8 +144,9 @@ https://rtbrick.github.io/bngblaster/routing/ldp.html bngblaster-cli run.sock stream-info flow-id 1 bngblaster-cli run.sock stream-info flow-id 2 - -Use ``jq`` to check received labels: +The BNG Blaster monitors each traffic flow, tracking up to two receive labels +along with the received EXP and TTL values. Use ``jq`` to check if the received +labels match with those advertised via LDP: .. code-block:: none @@ -151,7 +161,65 @@ Use ``jq`` to check received labels: https://rtbrick.github.io/bngblaster/routing/bgp.html -03.05. Convergence ------------------- +.. code-block:: none + + # > Linux + cd ~/bngblaster-training/03_routing/04_bgp + + # Generate BGP updates with corresponding streams + bgpupdate -f update.bgp -a 65001 -l 100 -n 172.16.2.2 -N 1 -p 10.1.0.0/24 -P 100000 --end-of-rib -s streams.json --stream-interface veth4:10 --stream-pps 0.1 + + # Start BNG Blaster + bngblaster -S run.sock -C config.json -T streams.json -l bgp -I + + +.. note:: + + The configuration shows asymmetric thread allocation, with two TX threads for the traffic source interface + and two RX threads for the traffic destination interface. All other interfaces and traffic directions are + handled by the main thread. + + +In the other shell, use the following commands to interact +with the active BNG Blaster instance. + +.. code-block:: none + + # > Linux + cd ~/bngblaster-training/03_routing/04_bgp + bngblaster-cli run.sock bgp-sessions + +.. code-block:: none + + # > RBFS (op) + show bgp peer + show route summary + + +03.05. BGP with ISIS +-------------------- + +.. code-block:: none + + # > Linux + cd ~/bngblaster-training/03_routing/05_bgp_isis -https://github.com/rtbrick/BGP-CP-DP-Testing \ No newline at end of file + # Generate ISIS Topology, BGP updates and streams + lspgen -y --level 2 --area 49.0001/24 --connector 1720.1625.5011 -e 10 -m isis.mrt + bgpupdate -f update.bgp -a 65001 -l 100 -n 192.168.0.0 -N 10 -p 10.1.0.0/24 -P 100000 -s streams.json + bgpupdate -f update.bgp -a 65001 -l 100 -n 192.168.0.0 -N 10 -m 20001 -M 1000 -p fc66:1::/48 -P 50000 --append -s streams.json --stream-append + bgpupdate -f update.bgp -a 65001 -l 100 -n 192.168.0.0 -N 10 -m 2 -p fc66:2::/48 -P 50000 --append --end-of-rib -s streams.json --stream-append + + # Start BNG Blaster + bngblaster -S run.sock -C config.json -T streams.json -l bgp + + +03.06. BGP Convergence +---------------------- + +https://github.com/rtbrick/BGP-CP-DP-Testing + +.. code-block:: none + + # > Linux + cd ~/bngblaster-training/03_routing/06_bgp_convergence diff --git a/docs/access.html b/docs/access.html index 4580bd9..593a05f 100644 --- a/docs/access.html +++ b/docs/access.html @@ -96,13 +96,21 @@

02.01. PPPoE +
+

Note

The parameter -c 1 defines how many sessions you would like to start. You can increase this number to setup more sessions.

+
# > RBFS (op)
 show subscriber detail
+show subscriber <subscriber-id> detail
+show subscriber count
 show pppoe session detail
+show pppoe session <subscriber-id> detail
 
+

In the other shell, use the following commands to interact +with the active BNG Blaster instance.

Checking the Grafana dashboard, you should see an increase in the subscriber count.

+

After the test has stopped, use the following RBFS commands to investigate why subscribers were terminated. +Start with these commands if a subscriber fails to connect or disconnects unexpectedly.

+
# > RBFS (op)
+show subscriber history
+
+
+

A list of all termination reasons can be found here: +https://documents.rtbrick.com/techdocs/current/radiusservices/radius_control.html#radius-terminate-codes

02.02. L2TP

@@ -131,6 +147,13 @@

02.02. L2TP
# > RBFS (op)
 show l2tp tunnel sessions
+show l2tp tunnel <Local TID>
+
+
+

After the test has stopped, you can use the following RBFS commands to investigate why the tunnel and session were closed.

+
# > RBFS (op)
+show l2tp tunnel history
+show subscriber history filter type L2TP
 

@@ -146,6 +169,7 @@

02.03. IPoE (DHCP)

02.04. MIX

+

This test generates a mix of PPPoE, L2TP, and IPoE (DHCP) subscribers.

# > Linux
 cd ~/bngblaster-training/02_access/04_mix
 # Start BNG Blaster
@@ -155,12 +179,18 @@ 

02.04. MIX

02.05. HTTP

+

This test is designed to evaluate the BNG HTTP redirect service, a common feature in modern BNG deployments.

+

In this scenario, the BNG Blaster functions as both an HTTP client and server. Once a subscriber is established, +the BNG Blaster IPoE client initiates a TCP connection to the HTTP server. However, this connection is intercepted +and terminated by the BNG, which is controlled via RADIUS and responds with an HTTP 302 redirect.

+

https://rtbrick.github.io/bngblaster/http.html

# > Linux
 cd ~/bngblaster-training/02_access/05_http
 # Start BNG Blaster
 bngblaster -S run.sock -C config.json -l http -c 1
 
+

In the other shell, use the following commands to interact with the active BNG Blaster instance.

# > Linux
 cd ~/bngblaster-training/02_access/05_http
 bngblaster-cli run.sock http-clients session-id 1
@@ -169,13 +199,17 @@ 

02.05. HTTP

02.06. LAG

+

https://rtbrick.github.io/bngblaster/interfaces.html#link-aggregation-lag

# > Linux
 cd ~/bngblaster-training/02_access/06_lag
 # Start BNG Blaster
 bngblaster -S run.sock -J report.json -j sessions -C config.json -I -l dhcp -l ip -c 3
 
-

You may see a warning like this, which can be ignored for now.

+
+

Note

+

You may see a warning like those below, which can be ignored.

+
Nov 13 09:03:43.997147 Warning: Interfaces must not have an IP address configured in the host OS!
 Nov 13 09:03:43.997402 Warning: IP address fe80::fcdc:acff:fe79:fcd3 on interface r1-h5 is conflicting!
 Nov 13 09:03:44.040380 LAG (lag1) Interface r1-h5 added
diff --git a/docs/basic.html b/docs/basic.html
index b16116a..c284c34 100644
--- a/docs/basic.html
+++ b/docs/basic.html
@@ -95,7 +95,8 @@ 

01.01. Network InterfacesNote

The lag-1 interface is expected to be in an operational down state if the BNG Blaster LAG test is not running.

-

Now, enter the following command to start the BNG Blaster. It’s recommended to open the terminal in full-screen mode to ensure the complete ncurses UI fits on the screen.

+

Now, enter the following command to start the BNG Blaster. It’s recommended to open the terminal in full-screen mode +to ensure the complete ncurses UI fits on the screen.

# > Linux
 cd ~/bngblaster-training/01_basic/01_network_interfaces
 
@@ -108,7 +109,8 @@ 

01.01. Network Interfaces

In the ncurses UI, press F2 to toggle network interface statistics, or use F7 and F8 to start and stop traffic, respectively.

In the next step, we’ll interact with the BNG Blaster CLI (https://rtbrick.github.io/bngblaster/api/index.html).

-

Open another shell session and enter the following commands.

+

In the other shell, use the following commands to interact +with the active BNG Blaster instance.

# > Linux
 cd ~/bngblaster-training/01_basic/01_network_interfaces
 bngblaster-cli run.sock interfaces
@@ -181,14 +183,17 @@ 

01.02. API

01.03. PCAP

https://rtbrick.github.io/bngblaster/troubleshooting.html#pcap

-

In this exercise, we will start the BNG Blaster with -P test.pcap to generate a PCAP file that includes all traffic sent and received by the BNG Blaster. Normally, stream traffic would be excluded, but we’ve set capture-include-streams to true in the configuration so that stream traffic is also captured.

+

In this exercise, we will start the BNG Blaster with -P test.pcap to generate a PCAP file that includes +all traffic sent and received by the BNG Blaster. Normally, stream traffic would be excluded, but we’ve +set capture-include-streams to true in the configuration so that stream traffic is also captured.

# > Linux
 cd ~/bngblaster-training/01_basic/03_pcap
 # Start BNG Blaster
 bngblaster -I -S run.sock -C config.json -l debug -P test.pcap
 
-

Wait for all flows to be verified (indicated by the log message ALL STREAM TRAFFIC FLOWS VERIFIED), then stop the process with Ctrl+C. Once the BNG Blaster has stopped, examine the PCAP file with tshark.

+

Wait for all flows to be verified (indicated by the log message ALL STREAM TRAFFIC FLOWS VERIFIED), +then stop the process with Ctrl+C. Once the BNG Blaster has stopped, examine the PCAP file with tshark.

# > Linux
 tshark -X lua_script:/opt/bbl_header.lua -2 -R bng-blaster -O bng-blaster -r test.pcap
 
diff --git a/docs/routing.html b/docs/routing.html index d16cf29..51a6179 100644 --- a/docs/routing.html +++ b/docs/routing.html @@ -53,7 +53,8 @@
  • 03.02. OSPF
  • 03.03. LDP
  • 03.04. BGP
  • -
  • 03.05. Convergence
  • +
  • 03.05. BGP with ISIS
  • +
  • 03.06. BGP Convergence
  • Challenge
  • @@ -101,6 +102,8 @@

    03.01. ISIS bngblaster -S run.sock -C config.json -l isis

    +

    In the other shell, use the following commands to interact +with the active BNG Blaster instance.

    +

    In the other shell, use the following commands to interact +with the active BNG Blaster instance.

    +

    In the other shell, use the following commands to interact +with the active BNG Blaster instance.

    -

    Use jq to check received labels:

    +

    The BNG Blaster monitors each traffic flow, tracking up to two receive labels +along with the received EXP and TTL values. Use jq to check if the received +labels match with those advertised via LDP:

    # > Linux
     cd ~/bngblaster-training/03_routing/03_ldp
     bngblaster-cli run.sock stream-info flow-id 1 | jq .'["stream-info"]["rx-mpls1"]'
    @@ -201,10 +210,58 @@ 

    03.03. LDP

    03.04. BGP

    https://rtbrick.github.io/bngblaster/routing/bgp.html

    +
    # > Linux
    +cd ~/bngblaster-training/03_routing/04_bgp
    +
    +# Generate BGP updates with corresponding streams
    +bgpupdate -f update.bgp -a 65001 -l 100 -n 172.16.2.2 -N 1 -p 10.1.0.0/24 -P 100000 --end-of-rib -s streams.json --stream-interface veth4:10 --stream-pps 0.1
    +
    +# Start BNG Blaster
    +bngblaster -S run.sock -C config.json -T streams.json -l bgp -I
    +
    +
    +
    +

    Note

    +

    The configuration shows asymmetric thread allocation, with two TX threads for the traffic source interface +and two RX threads for the traffic destination interface. All other interfaces and traffic directions are +handled by the main thread.

    +
    +

    In the other shell, use the following commands to interact +with the active BNG Blaster instance.

    +
    # > Linux
    +cd ~/bngblaster-training/03_routing/04_bgp
    +bngblaster-cli run.sock bgp-sessions
    +
    +
    +
    # > RBFS (op)
    +show bgp peer
    +show route summary
    +
    +
    +
    +
    +

    03.05. BGP with ISIS

    +
    # > Linux
    +cd ~/bngblaster-training/03_routing/05_bgp_isis
    +
    +# Generate ISIS Topology, BGP updates and streams
    +lspgen -y --level 2 --area 49.0001/24 --connector 1720.1625.5011 -e 10 -m isis.mrt
    +bgpupdate -f update.bgp -a 65001 -l 100 -n 192.168.0.0 -N 10 -p 10.1.0.0/24 -P 100000 -s streams.json
    +bgpupdate -f update.bgp -a 65001 -l 100 -n 192.168.0.0 -N 10 -m 20001 -M 1000 -p fc66:1::/48 -P 50000 --append -s streams.json --stream-append
    +bgpupdate -f update.bgp -a 65001 -l 100 -n 192.168.0.0 -N 10 -m 2 -p fc66:2::/48 -P 50000 --append --end-of-rib -s streams.json --stream-append
    +
    +# Start BNG Blaster
    +bngblaster -S run.sock -C config.json -T streams.json -l bgp
    +
    +
    -
    -

    03.05. Convergence

    +
    +

    03.06. BGP Convergence

    https://github.com/rtbrick/BGP-CP-DP-Testing

    +
    # > Linux
    +cd ~/bngblaster-training/03_routing/06_bgp_convergence
    +
    +
    diff --git a/docs/searchindex.js b/docs/searchindex.js index 86579ca..9960924 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"01. Basic": [[1, null]], "01.01. Network Interfaces": [[1, "network-interfaces"]], "01.02. API": [[1, "api"]], "01.03. PCAP": [[1, "pcap"]], "02. Access": [[0, null]], "02.01. PPPoE": [[0, "pppoe"]], "02.02. L2TP": [[0, "l2tp"]], "02.03. IPoE (DHCP)": [[0, "ipoe-dhcp"]], "02.04. MIX": [[0, "mix"]], "02.05. HTTP": [[0, "http"]], "02.06. LAG": [[0, "lag"]], "03. Routing": [[4, null]], "03.01. ISIS": [[4, "isis"]], "03.02. OSPF": [[4, "ospf"]], "03.03. LDP": [[4, "ldp"]], "03.04. BGP": [[4, "bgp"]], "03.05. Convergence": [[4, "convergence"]], "BNG Blaster Training": [[3, null]], "Challenge": [[2, null]], "Contact": [[3, "contact"]], "Contents": [[3, "contents"]], "Copyright": [[3, "copyright"]], "License": [[3, "license"]], "Setup": [[5, null]]}, "docnames": ["access", "basic", "challenge", "index", "routing", "setup"], "envversion": {"sphinx": 64, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["access.rst", "basic.rst", "challenge.rst", "index.rst", "routing.rst", "setup.rst"], "indexentries": {}, "objects": {}, "objnames": {}, "objtypes": {}, "terms": {"": [0, 1, 3, 4], "0": 4, "0001": 4, "0011": 4, "01": 3, "01_basic": 1, "01_isi": 4, "01_network_interfac": 1, "01_pppoe": 0, "02": 3, "02_access": 0, "02_api": 1, "02_l2tp": 0, "02_ospf": 4, "03": 3, "03_ipo": 0, "03_ldp": 4, "03_pcap": 1, "03_rout": 4, "040380": 0, "041093": 0, "04_mix": 0, "05_http": 0, "06_lag": 0, "09": 0, "1": [0, 1, 4], "10": 4, "1000": 4, "11": 4, "13": 0, "16": [1, 4], "1600": 4, "1625": 4, "168": 4, "17": 4, "172": [1, 4], "1720": 4, "192": 4, "2": [1, 4], "2024": 3, "24": 4, "255": 4, "3": [0, 1, 3, 4], "32": [1, 4], "4": [1, 4], "43": 0, "44": 0, "49": 4, "5011": 4, "57a": 0, "997147": 0, "997402": 0, "For": [1, 3], "In": 1, "It": 1, "On": 3, "The": [0, 1, 3], "There": 3, "To": 1, "access": 3, "acff": 0, "activ": 1, "ad": 0, "add": 1, "addit": 1, "address": [0, 1], "adjac": 4, "advertis": 1, "again": 4, "all": [1, 3, 4], "also": [1, 3], "amount": 4, "an": [0, 1, 3, 4], "anoth": 1, "appropri": 3, "ar": [1, 3, 4], "area": 4, "attende": 3, "automat": 4, "avail": 1, "basic": 3, "bbl_header": 1, "befor": 1, "begin": 3, "berlin": 3, "bgp": 3, "blaster": [0, 1, 4], "bng": [0, 1, 4], "bngblaster": [0, 1, 3, 4], "brief": 3, "bsd": 3, "c": [0, 1, 4], "can": [0, 1, 3, 4], "captur": 1, "cat": 0, "cd": [0, 1, 4], "cdff": 0, "cfg": [1, 3], "challeng": 3, "chat": 3, "check": [0, 1, 4], "claus": 3, "cli": [0, 1, 3, 4], "client": 0, "com": [3, 4], "command": [1, 3], "commerci": 3, "commit": 1, "complet": 1, "comprehens": 3, "concept": 3, "condit": 3, "config": [0, 1, 4], "configur": [0, 1, 3], "conflict": 0, "connect": 3, "connector": 4, "control": 1, "converg": 3, "count": [0, 4], "cover": 3, "cp": 4, "creat": 1, "ctrl": 1, "dashboard": [0, 4], "databas": 4, "debug": 1, "dedic": 3, "default": 1, "defin": 0, "delet": 1, "demonstr": 3, "denog16": 3, "destin": 1, "detail": [0, 3], "devic": 3, "displai": 1, "distribut": 4, "down": 1, "dp": 4, "dut": 3, "e": 4, "e01_02_api": 1, "each": 3, "edit": 1, "element": 3, "emualt": 4, "emul": [3, 4], "ensur": [1, 3], "enter": [1, 3], "environ": 3, "equal": 4, "establish": 3, "evalu": 3, "everyon": 3, "examin": 1, "exclud": 1, "exercis": [1, 3], "expect": 1, "experi": 1, "explor": 3, "extend": 1, "extern": 4, "f": 4, "f2": 1, "f7": 1, "f8": 1, "fcd3": 0, "fcdc": 0, "fced": 0, "fe5e": 0, "fe79": 0, "fe80": 0, "feel": 1, "file": [1, 3], "find": 3, "first": 3, "fit": 1, "flag": 3, "flow": [1, 4], "focus": 3, "follow": 1, "foundat": 3, "free": [1, 3], "fulfil": 3, "full": [1, 3], "function": [1, 3], "fundament": 3, "gener": [1, 3, 4], "get": 3, "github": [0, 1, 4], "grafana": [0, 4], "grown": 3, "h": [1, 4], "h5": 0, "h6": 0, "ha": [1, 3], "hand": 3, "have": [0, 3], "header": 1, "help": [1, 3], "here": 1, "hidden": 3, "hop": 1, "host": [0, 3], "how": [0, 3], "html": [0, 1, 4], "http": [1, 4], "i": [0, 1, 3], "icmp": 1, "id": [0, 1, 4], "ignor": 0, "inc": 3, "includ": [1, 3], "increas": [0, 4], "index": [0, 1, 4], "indic": [1, 3], "info": [0, 1, 4], "inform": 1, "initi": 3, "insight": 3, "instanc": [1, 4], "interact": [1, 3], "interfac": 0, "introduct": 3, "io": [0, 1, 4], "ip": [0, 1, 4], "ipo": 3, "ipv4": 1, "isi": [1, 3], "isn": 3, "its": 3, "j": 0, "jq": [0, 4], "json": [0, 1, 4], "just": 3, "kick": 3, "l": [0, 1, 4], "lab": 3, "label": 4, "lag": 1, "lag1": 0, "launch": 3, "ldp": 3, "ldpupdat": 4, "learn": 3, "let": [1, 3], "level": 4, "like": [0, 1], "line": 3, "linux": [0, 1, 3, 4], "ll": [1, 3], "locat": 1, "log": [0, 1], "long": [1, 3], "lspgen": 4, "lua": 1, "lua_script": 1, "m": 4, "mac": 1, "mai": 0, "mail": 3, "mani": 0, "map": 4, "mark": 3, "match": 1, "matrix": 3, "mean": [3, 4], "messag": [0, 1], "mode": [1, 3], "more": [0, 3], "most": 3, "mpls1": 4, "mrt": 4, "must": 0, "ncurs": 1, "necessari": 3, "need": 3, "neighbor": [1, 4], "network": [3, 4], "new": 1, "next": 1, "nexthop": 1, "node": 4, "non": 3, "normal": 1, "nov": 0, "now": [0, 1, 4], "number": 0, "o": [0, 1], "observ": 1, "off": 3, "onc": 1, "one": 4, "op": [0, 1, 3, 4], "open": [1, 3], "oper": 1, "opt": 1, "org": 3, "ospf2": 4, "ospf3": 4, "other": [1, 3], "our": 3, "output": 1, "over": 4, "p": [1, 4], "paramet": 0, "particip": 3, "pattern": 3, "per": 4, "perform": 3, "physic": 1, "ping": [1, 4], "plai": 4, "power": 3, "pppoe": 3, "press": 1, "process": 1, "profil": 1, "protocol": [1, 3, 4], "provid": 3, "purpos": 3, "r": 1, "r1": 0, "radiu": [0, 3], "rbf": [0, 1, 3, 4], "real": 3, "realist": 3, "receiv": [0, 1, 4], "recommend": 1, "repli": 0, "report": 0, "repres": 3, "request": 1, "respect": 1, "respond": 1, "result": [1, 4], "review": 1, "rout": [1, 3], "rtbrick": [0, 1, 3, 4], "run": [0, 1, 3, 4], "rx": [1, 4], "scale": 3, "scenario": 3, "screen": 1, "second": 3, "section": 3, "see": [0, 3, 4], "send": 1, "sent": 1, "separ": 3, "server": 3, "session": [0, 1, 3, 4], "set": [1, 3], "setup": [0, 3], "sh": 1, "shell": [1, 3], "should": [0, 3, 4], "show": [0, 1, 3, 4], "simul": 3, "size": 4, "small": 3, "so": 1, "sock": [0, 1, 4], "solid": 3, "sourc": [1, 4], "specifi": 3, "splite": 3, "ssh": 3, "stabil": 3, "start": [0, 1, 4], "state": 1, "static": 1, "statist": 1, "step": 1, "stop": 1, "stream": [1, 4], "subscrib": 0, "success": 3, "suit": 3, "summari": [1, 4], "switch": 1, "t": 3, "tailor": 3, "termin": 1, "test": [1, 3, 4], "thi": [0, 1, 3], "third": 3, "three": 3, "through": 3, "throughout": 3, "toggl": 1, "topologi": 4, "traffic": [1, 3], "train": [0, 1, 4], "troubleshoot": 1, "true": 1, "tshark": 1, "tunnel": 0, "ui": 1, "under": 3, "understand": 3, "unicast": 1, "up": 3, "updat": 4, "us": [0, 1, 3, 4], "v4": 1, "var": [0, 1], "variou": 3, "ve": 1, "verifi": [1, 4], "veth2": 1, "virtual": 3, "vm": 3, "wait": 1, "warn": 0, "we": [1, 3], "welcom": 3, "where": 4, "whether": 3, "which": [0, 3], "who": 3, "within": 3, "workshop": 3, "world": 3, "would": [0, 1], "x": 1, "y": 4, "you": [0, 1, 3, 4], "your": 3}, "titles": ["02. Access", "01. Basic", "Challenge", "BNG Blaster Training", "03. Routing", "Setup"], "titleterms": {"01": [0, 1, 4], "02": [0, 1, 4], "03": [0, 1, 4], "04": [0, 4], "05": [0, 4], "06": 0, "access": 0, "api": 1, "basic": 1, "bgp": 4, "blaster": 3, "bng": 3, "challeng": 2, "contact": 3, "content": 3, "converg": 4, "copyright": 3, "dhcp": 0, "http": 0, "interfac": 1, "ipo": 0, "isi": 4, "l2tp": 0, "lag": 0, "ldp": 4, "licens": 3, "mix": 0, "network": 1, "ospf": 4, "pcap": 1, "pppoe": 0, "rout": 4, "setup": 5, "train": 3}}) \ No newline at end of file +Search.setIndex({"alltitles": {"01. Basic": [[1, null]], "01.01. Network Interfaces": [[1, "network-interfaces"]], "01.02. API": [[1, "api"]], "01.03. PCAP": [[1, "pcap"]], "02. Access": [[0, null]], "02.01. PPPoE": [[0, "pppoe"]], "02.02. L2TP": [[0, "l2tp"]], "02.03. IPoE (DHCP)": [[0, "ipoe-dhcp"]], "02.04. MIX": [[0, "mix"]], "02.05. HTTP": [[0, "http"]], "02.06. LAG": [[0, "lag"]], "03. Routing": [[4, null]], "03.01. ISIS": [[4, "isis"]], "03.02. OSPF": [[4, "ospf"]], "03.03. LDP": [[4, "ldp"]], "03.04. BGP": [[4, "bgp"]], "03.05. BGP with ISIS": [[4, "bgp-with-isis"]], "03.06. BGP Convergence": [[4, "bgp-convergence"]], "BNG Blaster Training": [[3, null]], "Challenge": [[2, null]], "Contact": [[3, "contact"]], "Contents": [[3, "contents"]], "Copyright": [[3, "copyright"]], "License": [[3, "license"]], "Setup": [[5, null]]}, "docnames": ["access", "basic", "challenge", "index", "routing", "setup"], "envversion": {"sphinx": 64, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["access.rst", "basic.rst", "challenge.rst", "index.rst", "routing.rst", "setup.rst"], "indexentries": {}, "objects": {}, "objnames": {}, "objtypes": {}, "terms": {"": [0, 1, 3, 4], "0": 4, "0001": 4, "0011": 4, "01": 3, "01_basic": 1, "01_isi": 4, "01_network_interfac": 1, "01_pppoe": 0, "02": 3, "02_access": 0, "02_api": 1, "02_l2tp": 0, "02_ospf": 4, "03": 3, "03_ipo": 0, "03_ldp": 4, "03_pcap": 1, "03_rout": 4, "040380": 0, "041093": 0, "04_bgp": 4, "04_mix": 0, "05_bgp_isi": 4, "05_http": 0, "06_bgp_converg": 4, "06_lag": 0, "09": 0, "1": [0, 1, 4], "10": 4, "100": 4, "1000": 4, "100000": 4, "11": 4, "13": 0, "16": [1, 4], "1600": 4, "1625": 4, "168": 4, "17": 4, "172": [1, 4], "1720": 4, "192": 4, "2": [1, 4], "20001": 4, "2024": 3, "24": 4, "255": 4, "3": [0, 1, 3, 4], "302": 0, "32": [1, 4], "4": [1, 4], "43": 0, "44": 0, "48": 4, "49": 4, "50000": 4, "5011": 4, "57a": 0, "65001": 4, "997147": 0, "997402": 0, "A": 0, "For": [1, 3], "In": [0, 1, 4], "It": 1, "On": 3, "The": [0, 1, 3, 4], "There": 3, "To": 1, "access": 3, "acff": 0, "activ": [0, 1, 4], "ad": 0, "add": 1, "addit": 1, "address": [0, 1], "adjac": 4, "advertis": [1, 4], "after": 0, "again": 4, "aggreg": 0, "all": [0, 1, 3, 4], "alloc": 4, "along": 4, "also": [1, 3], "amount": 4, "an": [0, 1, 3, 4], "append": 4, "appropri": 3, "ar": [1, 3, 4], "area": 4, "asymmetr": 4, "attende": 3, "automat": 4, "avail": 1, "basic": 3, "bbl_header": 1, "befor": 1, "begin": 3, "below": 0, "berlin": 3, "bgp": 3, "bgpupdat": 4, "blaster": [0, 1, 4], "bng": [0, 1, 4], "bngblaster": [0, 1, 3, 4], "both": 0, "brief": 3, "bsd": 3, "c": [0, 1, 4], "can": [0, 1, 3, 4], "captur": 1, "cat": 0, "cd": [0, 1, 4], "cdff": 0, "cfg": [1, 3], "challeng": 3, "chat": 3, "check": [0, 1, 4], "claus": 3, "cli": [0, 1, 3, 4], "client": 0, "close": 0, "code": 0, "com": [0, 3, 4], "command": [0, 1, 3, 4], "commerci": 3, "commit": 1, "common": 0, "complet": 1, "comprehens": 3, "concept": 3, "condit": 3, "config": [0, 1, 4], "configur": [0, 1, 3, 4], "conflict": 0, "connect": [0, 3], "connector": 4, "control": [0, 1], "converg": 3, "correspond": 4, "count": [0, 4], "cover": 3, "cp": 4, "creat": 1, "ctrl": 1, "current": 0, "dashboard": [0, 4], "databas": 4, "debug": 1, "dedic": 3, "default": 1, "defin": 0, "delet": 1, "demonstr": 3, "denog16": 3, "deploy": 0, "design": 0, "destin": [1, 4], "detail": [0, 3], "devic": 3, "direct": 4, "disconnect": 0, "displai": 1, "distribut": 4, "document": 0, "down": 1, "dp": 4, "dut": 3, "e": 4, "e01_02_api": 1, "each": [3, 4], "edit": 1, "element": 3, "emualt": 4, "emul": [3, 4], "end": 4, "ensur": [1, 3], "enter": [1, 3], "environ": 3, "equal": 4, "establish": [0, 3], "evalu": [0, 3], "everyon": 3, "examin": 1, "exclud": 1, "exercis": [1, 3], "exp": 4, "expect": 1, "experi": 1, "explor": 3, "extend": 1, "extern": 4, "f": 4, "f2": 1, "f7": 1, "f8": 1, "fail": 0, "fc66": 4, "fcd3": 0, "fcdc": 0, "fced": 0, "fe5e": 0, "fe79": 0, "fe80": 0, "featur": 0, "feel": 1, "file": [1, 3], "filter": 0, "find": 3, "first": 3, "fit": 1, "flag": 3, "flow": [1, 4], "focus": 3, "follow": [0, 1, 4], "found": 0, "foundat": 3, "free": [1, 3], "fulfil": 3, "full": [1, 3], "function": [0, 1, 3], "fundament": 3, "gener": [0, 1, 3, 4], "get": 3, "github": [0, 1, 4], "grafana": [0, 4], "grown": 3, "h": [1, 4], "h5": 0, "h6": 0, "ha": [0, 1, 3], "hand": 3, "handl": 4, "have": [0, 3], "header": 1, "help": [1, 3], "here": [0, 1], "hidden": 3, "histori": 0, "hop": 1, "host": [0, 3], "how": [0, 3], "howev": 0, "html": [0, 1, 4], "http": [1, 4], "i": [0, 1, 3, 4], "icmp": 1, "id": [0, 1, 4], "ignor": 0, "inc": 3, "includ": [1, 3], "increas": [0, 4], "index": [0, 1, 4], "indic": [1, 3], "info": [0, 1, 4], "inform": 1, "initi": [0, 3], "insight": 3, "instanc": [0, 1, 4], "interact": [0, 1, 3, 4], "intercept": 0, "interfac": [0, 4], "introduct": 3, "investig": 0, "io": [0, 1, 4], "ip": [0, 1, 4], "ipo": 3, "ipv4": 1, "isi": [1, 3], "isn": 3, "its": 3, "j": 0, "jq": [0, 4], "json": [0, 1, 4], "just": 3, "kick": 3, "l": [0, 1, 4], "lab": 3, "label": 4, "lag": 1, "lag1": 0, "launch": 3, "ldp": 3, "ldpupdat": 4, "learn": 3, "let": [1, 3], "level": 4, "like": [0, 1], "line": 3, "link": 0, "linux": [0, 1, 3, 4], "list": 0, "ll": [1, 3], "local": 0, "locat": 1, "log": [0, 1], "long": [1, 3], "lspgen": 4, "lua": 1, "lua_script": 1, "m": 4, "mac": 1, "mai": 0, "mail": 3, "main": 4, "mani": 0, "map": 4, "mark": 3, "match": [1, 4], "matrix": 3, "mean": [3, 4], "messag": [0, 1], "mode": [1, 3], "modern": 0, "monitor": 4, "more": [0, 3], "most": 3, "mpls1": 4, "mrt": 4, "must": 0, "n": 4, "ncurs": 1, "necessari": 3, "need": 3, "neighbor": [1, 4], "network": [3, 4], "new": 1, "next": 1, "nexthop": 1, "node": 4, "non": 3, "normal": 1, "nov": 0, "now": [1, 4], "number": 0, "o": [0, 1], "observ": 1, "off": 3, "onc": [0, 1], "one": 4, "op": [0, 1, 3, 4], "open": [1, 3], "oper": 1, "opt": 1, "org": 3, "ospf2": 4, "ospf3": 4, "other": [0, 1, 3, 4], "our": 3, "output": 1, "over": 4, "p": [1, 4], "paramet": 0, "particip": 3, "pattern": 3, "peer": 4, "per": 4, "perform": 3, "physic": 1, "ping": [1, 4], "plai": 4, "power": 3, "pp": 4, "pppoe": 3, "press": 1, "process": 1, "profil": 1, "protocol": [1, 3, 4], "provid": 3, "purpos": 3, "r": 1, "r1": 0, "radiu": [0, 3], "radius_control": 0, "radiusservic": 0, "rbf": [0, 1, 3, 4], "real": 3, "realist": 3, "reason": 0, "receiv": [0, 1, 4], "recommend": 1, "redirect": 0, "repli": 0, "report": 0, "repres": 3, "request": 1, "respect": 1, "respond": [0, 1], "result": [1, 4], "review": 1, "rib": 4, "rout": [1, 3], "rtbrick": [0, 1, 3, 4], "run": [0, 1, 3, 4], "rx": [1, 4], "scale": 3, "scenario": [0, 3], "screen": 1, "second": 3, "section": 3, "see": [0, 3, 4], "send": 1, "sent": 1, "separ": 3, "server": [0, 3], "servic": 0, "session": [0, 3, 4], "set": [1, 3], "setup": [0, 3], "sh": 1, "shell": [0, 1, 3, 4], "should": [0, 3, 4], "show": [0, 1, 3, 4], "simul": 3, "size": 4, "small": 3, "so": 1, "sock": [0, 1, 4], "solid": 3, "sourc": [1, 4], "specifi": 3, "splite": 3, "ssh": 3, "stabil": 3, "start": [0, 1, 4], "state": 1, "static": 1, "statist": 1, "step": 1, "stop": [0, 1], "stream": [1, 4], "subscrib": 0, "success": 3, "suit": 3, "summari": [1, 4], "switch": 1, "t": [3, 4], "tailor": 3, "tcp": 0, "techdoc": 0, "termin": [0, 1], "test": [0, 1, 3, 4], "thi": [0, 1, 3], "third": 3, "those": [0, 4], "thread": 4, "three": 3, "through": 3, "throughout": 3, "tid": 0, "toggl": 1, "topologi": 4, "track": 4, "traffic": [1, 3, 4], "train": [0, 1, 4], "troubleshoot": 1, "true": 1, "tshark": 1, "ttl": 4, "tunnel": 0, "two": 4, "tx": 4, "type": 0, "ui": 1, "under": 3, "understand": 3, "unexpectedli": 0, "unicast": 1, "up": [3, 4], "updat": 4, "us": [0, 1, 3, 4], "v4": 1, "valu": 4, "var": [0, 1], "variou": 3, "ve": 1, "verifi": [1, 4], "veth2": 1, "veth4": 4, "via": [0, 4], "virtual": 3, "vm": 3, "wait": 1, "warn": 0, "we": [1, 3], "welcom": 3, "were": 0, "where": 4, "whether": 3, "which": [0, 3], "who": 3, "why": 0, "within": 3, "workshop": 3, "world": 3, "would": [0, 1], "x": 1, "y": 4, "you": [0, 1, 3, 4], "your": 3}, "titles": ["02. Access", "01. Basic", "Challenge", "BNG Blaster Training", "03. Routing", "Setup"], "titleterms": {"01": [0, 1, 4], "02": [0, 1, 4], "03": [0, 1, 4], "04": [0, 4], "05": [0, 4], "06": [0, 4], "access": 0, "api": 1, "basic": 1, "bgp": 4, "blaster": 3, "bng": 3, "challeng": 2, "contact": 3, "content": 3, "converg": 4, "copyright": 3, "dhcp": 0, "http": 0, "interfac": 1, "ipo": 0, "isi": 4, "l2tp": 0, "lag": 0, "ldp": 4, "licens": 3, "mix": 0, "network": 1, "ospf": 4, "pcap": 1, "pppoe": 0, "rout": 4, "setup": 5, "train": 3}}) \ No newline at end of file diff --git a/docsrc/sources/access.rst b/docsrc/sources/access.rst index 6833cc8..737ef37 100644 --- a/docsrc/sources/access.rst +++ b/docsrc/sources/access.rst @@ -16,15 +16,24 @@ https://rtbrick.github.io/bngblaster/access/pppoe.html bngblaster -S run.sock -J report.json -j sessions -C config.json -I -c 1 -The parameter ``-c 1`` defines how many sessions you would like to start. -You can increase this number to setup more sessions. +.. note:: + + The parameter ``-c 1`` defines how many sessions you would like to start. + You can increase this number to setup more sessions. + .. code-block:: none # > RBFS (op) show subscriber detail + show subscriber detail + show subscriber count show pppoe session detail + show pppoe session detail + +In the other shell, use the following commands to interact +with the active BNG Blaster instance. .. code-block:: none @@ -51,6 +60,19 @@ Check RADIUS logs. Checking the Grafana dashboard, you should see an increase in the subscriber count. +After the test has stopped, use the following RBFS commands to investigate why subscribers were terminated. +Start with these commands if a subscriber fails to connect or disconnects unexpectedly. + +.. code-block:: none + + # > RBFS (op) + show subscriber history + + +A list of all termination reasons can be found here: +https://documents.rtbrick.com/techdocs/current/radiusservices/radius_control.html#radius-terminate-codes + + 02.02. L2TP ----------- @@ -68,6 +90,16 @@ https://rtbrick.github.io/bngblaster/access/l2tp.html # > RBFS (op) show l2tp tunnel sessions + show l2tp tunnel + + +After the test has stopped, you can use the following RBFS commands to investigate why the tunnel and session were closed. + +.. code-block:: none + + # > RBFS (op) + show l2tp tunnel history + show subscriber history filter type L2TP 02.03. IPoE (DHCP) @@ -86,6 +118,8 @@ https://rtbrick.github.io/bngblaster/access/ipoe.html 02.04. MIX ---------- +This test generates a mix of PPPoE, L2TP, and IPoE (DHCP) subscribers. + .. code-block:: none # > Linux @@ -97,6 +131,14 @@ https://rtbrick.github.io/bngblaster/access/ipoe.html 02.05. HTTP ----------- +This test is designed to evaluate the BNG HTTP redirect service, a common feature in modern BNG deployments. + +In this scenario, the BNG Blaster functions as both an HTTP client and server. Once a subscriber is established, +the BNG Blaster IPoE client initiates a TCP connection to the HTTP server. However, this connection is intercepted +and terminated by the BNG, which is controlled via RADIUS and responds with an HTTP 302 redirect. + +https://rtbrick.github.io/bngblaster/http.html + .. code-block:: none # > Linux @@ -105,6 +147,8 @@ https://rtbrick.github.io/bngblaster/access/ipoe.html bngblaster -S run.sock -C config.json -l http -c 1 +In the other shell, use the following commands to interact with the active BNG Blaster instance. + .. code-block:: none # > Linux @@ -115,6 +159,8 @@ https://rtbrick.github.io/bngblaster/access/ipoe.html 02.06. LAG ---------- +https://rtbrick.github.io/bngblaster/interfaces.html#link-aggregation-lag + .. code-block:: none # > Linux @@ -122,8 +168,9 @@ https://rtbrick.github.io/bngblaster/access/ipoe.html # Start BNG Blaster bngblaster -S run.sock -J report.json -j sessions -C config.json -I -l dhcp -l ip -c 3 +.. note:: -You may see a warning like this, which can be ignored for now. + You may see a warning like those below, which can be ignored. .. code-block:: none diff --git a/docsrc/sources/basic.rst b/docsrc/sources/basic.rst index 0b3ccef..0457ff5 100644 --- a/docsrc/sources/basic.rst +++ b/docsrc/sources/basic.rst @@ -19,7 +19,8 @@ Before starting the tests, use the RBFS BNG CLI to verify that all physical inte The `lag-1` interface is expected to be in an operational down state if the BNG Blaster LAG test is not running. -Now, enter the following command to start the BNG Blaster. It’s recommended to open the terminal in full-screen mode to ensure the complete ncurses UI fits on the screen. +Now, enter the following command to start the BNG Blaster. It’s recommended to open the terminal in full-screen mode +to ensure the complete ncurses UI fits on the screen. .. code-block:: none @@ -37,7 +38,8 @@ In the ncurses UI, press ``F2`` to toggle network interface statistics, or use ` In the next step, we’ll interact with the BNG Blaster CLI (https://rtbrick.github.io/bngblaster/api/index.html). -Open another shell session and enter the following commands. +In the other shell, use the following commands to interact +with the active BNG Blaster instance. .. code-block:: none @@ -138,7 +140,9 @@ Delete the BNG Blaster instance. https://rtbrick.github.io/bngblaster/troubleshooting.html#pcap -In this exercise, we will start the BNG Blaster with `-P test.pcap` to generate a PCAP file that includes all traffic sent and received by the BNG Blaster. Normally, stream traffic would be excluded, but we've set `capture-include-streams` to `true` in the configuration so that stream traffic is also captured. +In this exercise, we will start the BNG Blaster with `-P test.pcap` to generate a PCAP file that includes +all traffic sent and received by the BNG Blaster. Normally, stream traffic would be excluded, but we've +set `capture-include-streams` to `true` in the configuration so that stream traffic is also captured. .. code-block:: none @@ -148,7 +152,8 @@ In this exercise, we will start the BNG Blaster with `-P test.pcap` to generate bngblaster -I -S run.sock -C config.json -l debug -P test.pcap -Wait for all flows to be verified (indicated by the log message `ALL STREAM TRAFFIC FLOWS VERIFIED`), then stop the process with `Ctrl+C`. Once the BNG Blaster has stopped, examine the PCAP file with tshark. +Wait for all flows to be verified (indicated by the log message `ALL STREAM TRAFFIC FLOWS VERIFIED`), +then stop the process with `Ctrl+C`. Once the BNG Blaster has stopped, examine the PCAP file with tshark. .. code-block:: none diff --git a/docsrc/sources/challenge.rst b/docsrc/sources/challenge.rst index 511b268..5d2a3ca 100644 --- a/docsrc/sources/challenge.rst +++ b/docsrc/sources/challenge.rst @@ -1,2 +1,3 @@ Challenge -========= \ No newline at end of file +========= + diff --git a/docsrc/sources/routing.rst b/docsrc/sources/routing.rst index 754cab4..e76e7a2 100644 --- a/docsrc/sources/routing.rst +++ b/docsrc/sources/routing.rst @@ -24,6 +24,9 @@ https://rtbrick.github.io/bngblaster/routing/isis.html bngblaster -S run.sock -C config.json -l isis +In the other shell, use the following commands to interact +with the active BNG Blaster instance. + .. code-block:: none # > Linux @@ -76,6 +79,9 @@ https://rtbrick.github.io/bngblaster/routing/ospf.html bngblaster -S run.sock -C config.json -l ospf +In the other shell, use the following commands to interact +with the active BNG Blaster instance. + .. code-block:: none # > Linux @@ -117,6 +123,9 @@ https://rtbrick.github.io/bngblaster/routing/ldp.html bngblaster -S run.sock -C config.json -l ldp +In the other shell, use the following commands to interact +with the active BNG Blaster instance. + .. code-block:: none # > Linux @@ -158,10 +167,33 @@ https://rtbrick.github.io/bngblaster/routing/bgp.html cd ~/bngblaster-training/03_routing/04_bgp # Generate BGP updates with corresponding streams - bgpupdate -f update.bgp -a 65001 -l 100 -n 192.168.0.0 -N 10 -p 10.1.0.0/24 -P 100000 -s streams.json + bgpupdate -f update.bgp -a 65001 -l 100 -n 172.16.2.2 -N 1 -p 10.1.0.0/24 -P 100000 --end-of-rib -s streams.json --stream-interface veth4:10 --stream-pps 0.1 # Start BNG Blaster - bngblaster -S run.sock -C config.json -T streams.json -l bgp + bngblaster -S run.sock -C config.json -T streams.json -l bgp -I + + +.. note:: + + The configuration shows asymmetric thread allocation, with two TX threads for the traffic source interface + and two RX threads for the traffic destination interface. All other interfaces and traffic directions are + handled by the main thread. + + +In the other shell, use the following commands to interact +with the active BNG Blaster instance. + +.. code-block:: none + + # > Linux + cd ~/bngblaster-training/03_routing/04_bgp + bngblaster-cli run.sock bgp-sessions + +.. code-block:: none + + # > RBFS (op) + show bgp peer + show route summary 03.05. BGP with ISIS