diff --git a/code/bngblaster/src/bbl_config.c b/code/bngblaster/src/bbl_config.c index 36ad4336..ebdf75e9 100644 --- a/code/bngblaster/src/bbl_config.c +++ b/code/bngblaster/src/bbl_config.c @@ -1647,13 +1647,22 @@ json_parse_isis_config(json_t *isis, isis_config_s *isis_config) if(json_is_object(sub)) { const char *schema[] = { - "mrt-file", "connections" + "purge", "auto-refresh", "mrt-file", "connections" }; if(!schema_validate(sub, "external", schema, sizeof(schema)/sizeof(schema[0]))) { return false; } - + + JSON_OBJ_GET_BOOL(sub, value, "isis->external", "purge"); + if(value) { + isis_config->external_purge = json_boolean_value(value); + } + JSON_OBJ_GET_BOOL(sub, value, "isis->external", "auto-refresh"); + if(value) { + isis_config->external_auto_refresh = json_boolean_value(value); + } + if(json_unpack(sub, "{s:s}", "mrt-file", &s) == 0) { isis_config->external_mrt_file = strdup(s); } @@ -1703,6 +1712,7 @@ json_parse_isis_config(json_t *isis, isis_config_s *isis_config) } } + /* Deprecated / Moved to external->auto-refresh ...*/ JSON_OBJ_GET_BOOL(isis, value, "isis", "external-auto-refresh"); if(value) { isis_config->external_auto_refresh = json_boolean_value(value); @@ -1832,17 +1842,28 @@ json_parse_ospf_config(json_t *ospf, ospf_config_s *ospf_config) ospf_config->teardown_time = OSPF_DEFAULT_TEARDOWN_TIME; } + ospf_config->external_purge = true; sub = json_object_get(ospf, "external"); if(json_is_object(sub)) { const char *schema[] = { - "mrt-file", "connections" + "purge", "auto-refresh", "mrt-file", "connections" }; if(!schema_validate(sub, "external", schema, sizeof(schema)/sizeof(schema[0]))) { return false; } + JSON_OBJ_GET_BOOL(sub, value, "ospf->external", "purge"); + if(value) { + ospf_config->external_purge = json_boolean_value(value); + } + /* TODO: Currently not supported! */ + JSON_OBJ_GET_BOOL(sub, value, "ospf->external", "auto-refresh"); + if(value) { + ospf_config->external_auto_refresh = json_boolean_value(value); + } + if(json_unpack(sub, "{s:s}", "mrt-file", &s) == 0) { ospf_config->external_mrt_file = strdup(s); } diff --git a/code/bngblaster/src/bbl_ctrl.c b/code/bngblaster/src/bbl_ctrl.c index 464e46f1..af3f8077 100644 --- a/code/bngblaster/src/bbl_ctrl.c +++ b/code/bngblaster/src/bbl_ctrl.c @@ -482,6 +482,9 @@ bbl_ctrl_socket_init() timer_add_periodic(&g_ctx->timer_root, &ctrl->main.timer, "CTRL Socket Main Timer", 0, 1000 * MSEC, ctrl, &bbl_ctrl_socket_main_job); LOG(INFO, "Opened control socket %s\n", g_ctx->ctrl_socket_path); + + /* Ignore SIGPIPE */ + signal(SIGPIPE, SIG_IGN); return true; } diff --git a/code/bngblaster/src/bbl_lag.c b/code/bngblaster/src/bbl_lag.c index 5b81aaff..002c111f 100644 --- a/code/bngblaster/src/bbl_lag.c +++ b/code/bngblaster/src/bbl_lag.c @@ -255,6 +255,12 @@ bbl_lag_interface_add(bbl_interface_s *interface, bbl_link_config_s *link_config timer_sec, 0, interface, &bbl_lag_lacp_job); } else { member->lacp_state = LACP_DISABLED; + lag->interface->state = INTERFACE_UP; + lag->active_list[lag->active_count++] = member; + lag->select++; + if(CIRCLEQ_EMPTY(&lag->lag_member_qhead)) { + member->primary = true; + } } bbl_lag_member_insert(lag, member); diff --git a/code/bngblaster/src/bbl_network.c b/code/bngblaster/src/bbl_network.c index b6608c82..130bcec4 100644 --- a/code/bngblaster/src/bbl_network.c +++ b/code/bngblaster/src/bbl_network.c @@ -463,7 +463,7 @@ bbl_network_rx_handler(bbl_network_interface_s *interface, } bbl_tcp_ipv4_rx(interface, eth, ipv4); return; - } else if(ipv4->protocol == PROTOCOL_IPV4_OSPF) { + } else if(ipv4->protocol == PROTOCOL_IPV4_OSPF && interface->ospf_interface) { ospf_handler_rx_ipv4(interface, eth, ipv4); return; } @@ -488,7 +488,7 @@ bbl_network_rx_handler(bbl_network_interface_s *interface, } bbl_tcp_ipv6_rx(interface, eth, ipv6); return; - } else if(ipv6->protocol == IPV6_NEXT_HEADER_OSPF) { + } else if(ipv6->protocol == IPV6_NEXT_HEADER_OSPF && interface->ospf_interface) { ospf_handler_rx_ipv6(interface, eth, ipv6); return; } diff --git a/code/bngblaster/src/isis/isis.c b/code/bngblaster/src/isis/isis.c index 2c9ff14e..9f685e63 100644 --- a/code/bngblaster/src/isis/isis.c +++ b/code/bngblaster/src/isis/isis.c @@ -182,7 +182,9 @@ isis_teardown() for(int i=0; ilevel[i].adjacency) { isis_lsp_self_update(instance, i+1); - isis_lsp_purge_all_external(instance, i+1); + if(instance->config->external_purge) { + isis_lsp_purge_all_external(instance, i+1); + } } } diff --git a/code/bngblaster/src/isis/isis_def.h b/code/bngblaster/src/isis/isis_def.h index d9de72ff..d877f50a 100644 --- a/code/bngblaster/src/isis/isis_def.h +++ b/code/bngblaster/src/isis/isis_def.h @@ -238,6 +238,8 @@ typedef struct isis_config_ { uint32_t sr_range; uint32_t sr_node_sid; + /* External */ + bool external_purge; bool external_auto_refresh; char *external_mrt_file; struct isis_external_connection_ *external_connection; diff --git a/code/bngblaster/src/ospf/ospf.c b/code/bngblaster/src/ospf/ospf.c index 3b6f7419..98822d9f 100644 --- a/code/bngblaster/src/ospf/ospf.c +++ b/code/bngblaster/src/ospf/ospf.c @@ -330,7 +330,9 @@ ospf_teardown() LOG(OSPF, "Teardown OSPFv%u instance %u\n", instance->config->version, instance->config->id); instance->teardown = true; ospf_lsa_self_update(instance); - ospf_lsa_purge_all_external(instance); + if(instance->config->external_purge) { + ospf_lsa_purge_all_external(instance); + } timer_add(&g_ctx->timer_root, &instance->timer_teardown, "OSPF TEARDOWN", instance->config->teardown_time, 0, instance, &ospf_teardown_job); diff --git a/code/bngblaster/src/ospf/ospf_def.h b/code/bngblaster/src/ospf/ospf_def.h index 021c5939..85c794a2 100644 --- a/code/bngblaster/src/ospf/ospf_def.h +++ b/code/bngblaster/src/ospf/ospf_def.h @@ -340,6 +340,9 @@ typedef struct ospf_config_ { const char *hostname; + /* External */ + bool external_purge; + bool external_auto_refresh; char *external_mrt_file; struct ospf_external_connection_ *external_connection; diff --git a/code/bngblaster/src/ospf/ospf_lsa.c b/code/bngblaster/src/ospf/ospf_lsa.c index d7aa42ac..273b0453 100644 --- a/code/bngblaster/src/ospf/ospf_lsa.c +++ b/code/bngblaster/src/ospf/ospf_lsa.c @@ -1007,6 +1007,37 @@ ospf_lsa_self_update_request(ospf_instance_s *ospf_instance) } } +static protocol_error_t +ospf_lsa_update_pdu_tx(ospf_pdu_s *pdu, uint16_t lsa_count, + ospf_interface_s *ospf_interface, + ospf_neighbor_s *ospf_neighbor) +{ + ospf_instance_s *ospf_instance = ospf_interface->instance; + ospf_config_s *config = ospf_instance->config; + + if(lsa_count == 0) { + return EMPTY; + } + + /* Update LSA count */ + if(pdu->pdu_version == OSPF_VERSION_2) { + *(uint32_t*)OSPF_PDU_OFFSET(pdu, OSPFV2_OFFSET_LS_UPDATE_COUNT) = htobe32(lsa_count); + } else { + *(uint32_t*)OSPF_PDU_OFFSET(pdu, OSPFV3_OFFSET_LS_UPDATE_COUNT) = htobe32(lsa_count); + } + + /* Update length, auth, checksum and send... */ + ospf_pdu_update_len(pdu); + ospf_pdu_update_auth(pdu, config->auth_type, config->auth_key); + ospf_pdu_update_checksum(pdu); + if(ospf_pdu_tx(pdu, ospf_interface, ospf_neighbor) == PROTOCOL_SUCCESS) { + ospf_interface->stats.ls_upd_tx++; + return PROTOCOL_SUCCESS; + } else { + return SEND_ERROR; + } +} + protocol_error_t ospf_lsa_update_tx(ospf_interface_s *ospf_interface, ospf_neighbor_s *ospf_neighbor, @@ -1031,6 +1062,9 @@ ospf_lsa_update_tx(ospf_interface_s *ospf_interface, struct timespec ago; clock_gettime(CLOCK_MONOTONIC, &now); + uint16_t lsa_start_cur; + uint16_t lsa_start_len; + ospf_pdu_s pdu; ospf_pdu_init(&pdu, OSPF_PDU_LS_UPDATE, ospf_interface->version); @@ -1053,6 +1087,8 @@ ospf_lsa_update_tx(ospf_interface_s *ospf_interface, } ospf_pdu_add_u32(&pdu, 0); /* skip lsa_count */ + lsa_start_cur = pdu.cur; + lsa_start_len = pdu.pdu_len; for(type=OSPF_LSA_TYPE_1; type < OSPF_LSA_TYPE_MAX; type++) { if(ospf_neighbor && retry) { /* Retry. */ @@ -1069,7 +1105,10 @@ ospf_lsa_update_tx(ospf_interface_s *ospf_interface, lsa = entry->lsa; if(lsa && lsa->lsa_len >= OSPF_LSA_HDR_LEN) { if(lsa_count > 0 && (overhead + pdu.pdu_len + lsa->lsa_len) > interface->mtu) { - break; + ospf_lsa_update_pdu_tx(&pdu, lsa_count, ospf_interface, ospf_neighbor); + pdu.cur = lsa_start_cur; + pdu.pdu_len = lsa_start_len; + lsa_count = 0; } ospf_lsa_update_age(entry->lsa, &now); ospf_pdu_add_bytes(&pdu, lsa->lsa, lsa->lsa_len); @@ -1092,7 +1131,10 @@ ospf_lsa_update_tx(ospf_interface_s *ospf_interface, lsa = entry->lsa; if(lsa && lsa->lsa_len >= OSPF_LSA_HDR_LEN) { if(lsa_count > 0 && (overhead + pdu.pdu_len + lsa->lsa_len) > interface->mtu) { - break; + ospf_lsa_update_pdu_tx(&pdu, lsa_count, ospf_interface, ospf_neighbor); + pdu.cur = lsa_start_cur; + pdu.pdu_len = lsa_start_cur; + lsa_count = 0; } ospf_lsa_update_age(entry->lsa, &now); ospf_pdu_add_bytes(&pdu, lsa->lsa, lsa->lsa_len); @@ -1103,29 +1145,11 @@ ospf_lsa_update_tx(ospf_interface_s *ospf_interface, } } } - if(lsa_count == 0) { - return EMPTY; - } - /* Update LSA count */ - if(ospf_interface->version == OSPF_VERSION_2) { - *(uint32_t*)OSPF_PDU_OFFSET(&pdu, OSPFV2_OFFSET_LS_UPDATE_COUNT) = htobe32(lsa_count); - } else { - *(uint32_t*)OSPF_PDU_OFFSET(&pdu, OSPFV3_OFFSET_LS_UPDATE_COUNT) = htobe32(lsa_count); - } - - /* Update length, auth, checksum and send... */ - ospf_pdu_update_len(&pdu); - ospf_pdu_update_auth(&pdu, config->auth_type, config->auth_key); - ospf_pdu_update_checksum(&pdu); - if(ospf_pdu_tx(&pdu, ospf_interface, ospf_neighbor) == PROTOCOL_SUCCESS) { - ospf_interface->stats.ls_upd_tx++; - return PROTOCOL_SUCCESS; - } else { - return SEND_ERROR; - } + return ospf_lsa_update_pdu_tx(&pdu, lsa_count, ospf_interface, ospf_neighbor); } + protocol_error_t ospf_lsa_req_tx(ospf_interface_s *ospf_interface, ospf_neighbor_s *ospf_neighbor) { @@ -1447,6 +1471,7 @@ ospf_lsa_update_handler_rx(ospf_interface_s *ospf_interface, lsa->age = be16toh(hdr->age)+1; lsa->timestamp.tv_sec = now.tv_sec; lsa->timestamp.tv_nsec = now.tv_sec; + lsa->expired = false; ospf_lsa_update_age(lsa, &now); ospf_lsa_flood(lsa); ospf_lsa_tree_add(lsa, NULL, ospf_interface->lsa_ack_tree[lsa->type]); @@ -1693,6 +1718,7 @@ ospf_lsa_load_external(ospf_instance_s *ospf_instance, uint16_t lsa_count, uint8 lsa->age = be16toh(hdr->age); lsa->timestamp.tv_sec = now.tv_sec; lsa->timestamp.tv_nsec = now.tv_sec; + lsa->expired = false; ospf_lsa_update_age(lsa, &now); ospf_lsa_flood(lsa); ospf_lsa_lifetime(lsa); diff --git a/code/bngblaster/src/ospf/ospf_neighbor.c b/code/bngblaster/src/ospf/ospf_neighbor.c index 9c216f55..19f26698 100644 --- a/code/bngblaster/src/ospf/ospf_neighbor.c +++ b/code/bngblaster/src/ospf/ospf_neighbor.c @@ -81,12 +81,16 @@ ospf_neighbor_dbd_tx(ospf_neighbor_s *ospf_neighbor) flags |= OSPF_DBD_FLAG_I; } else { /* Add LSA header */ + ospf_neighbor->dbd_more = false; for(type = ospf_neighbor->dbd_lsa_type_start; type < OSPF_LSA_TYPE_MAX; type++) { itor = hb_itor_new(ospf_instance->lsdb[type]); - next = hb_itor_search_ge(itor, &ospf_neighbor->dbd_lsa_start); + if(type == ospf_neighbor->dbd_lsa_type_start) { + next = hb_itor_search_ge(itor, &ospf_neighbor->dbd_lsa_start); + } else { + next = hb_itor_search_ge(itor, &g_lsa_key_zero); + } while(true) { if(!next) { - ospf_neighbor->dbd_more = false; break; } lsa = *hb_itor_datum(itor); @@ -98,6 +102,7 @@ ospf_neighbor_dbd_tx(ospf_neighbor_s *ospf_neighbor) if((overhead + pdu.pdu_len + OSPF_LLS_HDR_LEN + OSPF_LSA_HDR_LEN) > interface->mtu) { memcpy(&ospf_neighbor->dbd_lsa_next, &lsa->key, sizeof(ospf_lsa_key_s)); ospf_neighbor->dbd_lsa_type_next = type; + ospf_neighbor->dbd_more = true; break; } @@ -107,7 +112,7 @@ ospf_neighbor_dbd_tx(ospf_neighbor_s *ospf_neighbor) next = hb_itor_next(itor); } hb_itor_free(itor); - + if(ospf_neighbor->dbd_more) break; } } @@ -496,7 +501,6 @@ ospf_neighbor_dbd_rx(ospf_interface_s *ospf_interface, ospf_neighbor->dbd_lsa_type_start = ospf_neighbor->dbd_lsa_type_next; memset(&ospf_neighbor->dbd_lsa_next, UINT8_MAX, sizeof(ospf_lsa_key_s)); ospf_neighbor->dbd_lsa_type_next = OSPF_LSA_TYPE_MAX; - ospf_neighbor_dbd_tx(ospf_neighbor); } } else { @@ -512,7 +516,9 @@ ospf_neighbor_dbd_rx(ospf_interface_s *ospf_interface, /* Next */ ospf_neighbor->dd = dd; memcpy(&ospf_neighbor->dbd_lsa_start, &ospf_neighbor->dbd_lsa_next, sizeof(ospf_lsa_key_s)); + ospf_neighbor->dbd_lsa_type_start = ospf_neighbor->dbd_lsa_type_next; memset(&ospf_neighbor->dbd_lsa_next, UINT8_MAX, sizeof(ospf_lsa_key_s)); + ospf_neighbor->dbd_lsa_type_next = OSPF_LSA_TYPE_MAX; ospf_neighbor_dbd_tx(ospf_neighbor); } else { ospf_rx_error(interface, pdu, "DD sequence"); diff --git a/code/common/src/timer.c b/code/common/src/timer.c index dd794672..60b64193 100644 --- a/code/common/src/timer.c +++ b/code/common/src/timer.c @@ -37,23 +37,29 @@ timer_set_expire(timer_s *timer, time_t sec, long nsec) static int timespec_compare(struct timespec *ts1, struct timespec *ts2) { - if(ts1->tv_sec < ts2->tv_sec) { - return -1; - } - - if(ts1->tv_sec > ts2->tv_sec) { - return +1; - } - - if(ts1->tv_nsec < ts2->tv_nsec) { - return -1; - } - - if(ts1->tv_nsec > ts2->tv_nsec) { - return +1; + /* + * gcc -O2 does a lot of clever things using setg and setl instructions + * if the hierarchical comparison is done like this: + * + * timespec_compare: + * mov rax, QWORD PTR [rsi] + * cmp QWORD PTR [rdi], rax + * jne .L2 + * mov rax, QWORD PTR [rsi+8] + * cmp QWORD PTR [rdi+8], rax + * .L2: + * setg al + * setl dl + * movzx edx, dl + * movzx eax, al + * sub eax, edx + * ret + */ + if (ts1->tv_sec == ts2->tv_sec) { + return (ts1->tv_nsec > ts2->tv_nsec) - (ts1->tv_nsec < ts2->tv_nsec); + } else { + return (ts1->tv_sec > ts2->tv_sec) - (ts1->tv_sec < ts2->tv_sec); } - - return 0; } /** diff --git a/code/lspgen/src/lspgen.c b/code/lspgen/src/lspgen.c index 54c3ed15..f367a1f4 100644 --- a/code/lspgen/src/lspgen.c +++ b/code/lspgen/src/lspgen.c @@ -347,7 +347,7 @@ lspgen_gen_isis_attr(struct lsdb_ctx_ *ctx) struct lsdb_attr_ attr_template; dict_itor *itor; __uint128_t addr, inc, ext_addr4, ext_incr4, ext_addr6, ext_incr6; - uint32_t ext_per_node, idx; + uint32_t ext_per_node, idx, nodes_left, ext_left; /* * Walk the node DB. @@ -374,6 +374,9 @@ lspgen_gen_isis_attr(struct lsdb_ctx_ *ctx) ext_addr6 = lspgen_load_addr((uint8_t*)&ctx->ipv6_ext_prefix.address, IPV6_ADDR_LEN); ext_incr6 = lspgen_get_prefix_inc(AF_INET6, ctx->ipv6_ext_prefix.len); + nodes_left = ctx->num_nodes; + ext_left = ctx->num_ext; + do { node = *dict_itor_datum(itor); @@ -449,7 +452,8 @@ lspgen_gen_isis_attr(struct lsdb_ctx_ *ctx) lsdb_add_node_attr(node, &attr_template); /* external prefixes */ - ext_per_node = ctx->num_ext / ctx->num_nodes; + ext_per_node = ext_left / nodes_left; + ext_left -= ext_per_node; while (ext_per_node--) { /* ipv4 external prefix */ lsdb_reset_attr_template(&attr_template); @@ -524,6 +528,7 @@ lspgen_gen_isis_attr(struct lsdb_ctx_ *ctx) lsdb_add_node_attr(node, &attr_template); } + nodes_left--; } while (dict_itor_next(itor)); dict_itor_free(itor); @@ -540,7 +545,7 @@ lspgen_gen_ospf2_attr(struct lsdb_ctx_ *ctx) struct lsdb_attr_ attr_template; dict_itor *itor; __uint128_t addr, inc, ext_addr4, ext_incr4, addr_offset; - uint32_t ext_per_node, metric; + uint32_t ext_per_node, metric, nodes_left, ext_left; /* * Walk the node DB. @@ -565,6 +570,9 @@ lspgen_gen_ospf2_attr(struct lsdb_ctx_ *ctx) ext_addr4 = lspgen_load_addr((uint8_t*)&ctx->ipv4_ext_prefix.address, sizeof(ipv4addr_t)); ext_incr4 = lspgen_get_prefix_inc(AF_INET, ctx->ipv4_ext_prefix.len); + nodes_left = ctx->num_nodes; + ext_left = ctx->num_ext; + do { node = *dict_itor_datum(itor); @@ -604,7 +612,8 @@ lspgen_gen_ospf2_attr(struct lsdb_ctx_ *ctx) addr += node->node_index; /* external prefixes */ - ext_per_node = ctx->num_ext / ctx->num_nodes; + ext_per_node = ext_left / nodes_left; + ext_left -= ext_per_node; while (ext_per_node--) { /* ipv4 external prefix */ lsdb_reset_attr_template(&attr_template); @@ -695,6 +704,7 @@ lspgen_gen_ospf2_attr(struct lsdb_ctx_ *ctx) lsdb_add_node_attr(node, &attr_template); } + nodes_left--; } while (dict_itor_next(itor)); dict_itor_free(itor); diff --git a/docs/_sources/configuration/isis.rst.txt b/docs/_sources/configuration/isis.rst.txt index f1b86d2a..470acf63 100644 --- a/docs/_sources/configuration/isis.rst.txt +++ b/docs/_sources/configuration/isis.rst.txt @@ -105,7 +105,4 @@ - * - `teardown-time` - ISIS teardown time in seconds - - 5 - * - `external-auto-refresh` - - Automatically refresh external LSP from MRT files - - false \ No newline at end of file + - 5 \ No newline at end of file diff --git a/docs/_sources/configuration/isis_external.rst.txt b/docs/_sources/configuration/isis_external.rst.txt index 33d4efd5..11642249 100644 --- a/docs/_sources/configuration/isis_external.rst.txt +++ b/docs/_sources/configuration/isis_external.rst.txt @@ -10,6 +10,12 @@ * - Attribute - Description - Default + * - `purge` + - Automatically purge all external LSP during teardown + - true + * - `auto-refresh` + - Automatically refresh all external LSP + - false * - `mrt-file` - ISIS MRT file - \ No newline at end of file diff --git a/docs/_sources/configuration/ospf_external.rst.txt b/docs/_sources/configuration/ospf_external.rst.txt index 6ea0786f..48804481 100644 --- a/docs/_sources/configuration/ospf_external.rst.txt +++ b/docs/_sources/configuration/ospf_external.rst.txt @@ -10,6 +10,9 @@ * - Attribute - Description - Default + * - `purge` + - Automatically purge all external LSA during teardown + - true * - `mrt-file` - OSPF MRT file - \ No newline at end of file diff --git a/docs/_sources/install.rst.txt b/docs/_sources/install.rst.txt index 7a23a3ba..404658cf 100644 --- a/docs/_sources/install.rst.txt +++ b/docs/_sources/install.rst.txt @@ -39,14 +39,21 @@ and the following standard dependencies: .. code-block:: none + # install libdict for Ubuntu 18.04 LTS + wget https://github.com/rtbrick/libdict/releases/download/v1.0.1/libdict-debian.zip + unzip libdict-debian.zip + sudo dpkg -i libdict_1.0.1_amd64.deb + sudo dpkg -i libdict-dev_1.0.1_amd64.deb + # install libdict for Ubuntu 22.04 LTS wget https://github.com/rtbrick/libdict/releases/download/1.0.3/libdict-ubuntu-22.04.zip unzip libdict-ubuntu-22.04.zip sudo dpkg -i libdict_1.0.3_amd64.deb sudo dpkg -i libdict-dev_1.0.3_amd64.deb - # standard dependencies + # install other dependencies sudo apt install -y cmake \ + libpcap-dev \ libcunit1-dev \ libncurses5-dev \ libssl-dev \ diff --git a/docs/_sources/routing/lspgen.rst.txt b/docs/_sources/routing/lspgen.rst.txt index e992ea50..0428d9bb 100644 --- a/docs/_sources/routing/lspgen.rst.txt +++ b/docs/_sources/routing/lspgen.rst.txt @@ -53,6 +53,7 @@ The default protocol is ISIS which can be changed using the argument ``-P ospf2` -m --mrt-file -c --node-count -p --pcap-file + -G --purge -f --stream-file -s --seed -q --sequence diff --git a/docs/_sources/routing/ospf.rst.txt b/docs/_sources/routing/ospf.rst.txt index 0e473a87..14c96daa 100644 --- a/docs/_sources/routing/ospf.rst.txt +++ b/docs/_sources/routing/ospf.rst.txt @@ -174,7 +174,7 @@ request PDU including OSPF common header (``| Version | Type |``). .. code-block:: json { - "command": "ospf-lsa-update", + "command": "ospf-pdu-update", "arguments": { "instance": 1, "pdu": [ diff --git a/docs/_static/pygments.css b/docs/_static/pygments.css index 08bec689..84ab3030 100644 --- a/docs/_static/pygments.css +++ b/docs/_static/pygments.css @@ -17,6 +17,7 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: .highlight .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */ .highlight .gd { color: #A00000 } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ .highlight .gr { color: #E40000 } /* Generic.Error */ .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ .highlight .gi { color: #008400 } /* Generic.Inserted */ diff --git a/docs/access/ipoe.html b/docs/access/ipoe.html index d378e305..48e6d92b 100644 --- a/docs/access/ipoe.html +++ b/docs/access/ipoe.html @@ -129,56 +129,56 @@

Static Addresses

Static addresses mean that the IP address and gateway are assigned statically as shown in the example below.

-
{
-    "interfaces": {
-        "access": [
-        {
-            "interface": "eth1",
-            "type": "ipoe",
-            "vlan-mode": "1:1",
-            "outer-vlan-min": 128,
-            "outer-vlan-max": 4000,
-            "address": "200.0.0.1",
-            "address-iter": "0.0.0.4",
-            "gateway": "200.0.0.2",
-            "gateway-iter": "0.0.0.4",
-        }
-    ]
-    }
-}
+
{
+    "interfaces": {
+        "access": [
+        {
+            "interface": "eth1",
+            "type": "ipoe",
+            "vlan-mode": "1:1",
+            "outer-vlan-min": 128,
+            "outer-vlan-max": 4000,
+            "address": "200.0.0.1",
+            "address-iter": "0.0.0.4",
+            "gateway": "200.0.0.2",
+            "gateway-iter": "0.0.0.4",
+        }
+    ]
+    }
+}
 

DHCPv4/v6

The most common case for IPoE is using DHCPv4/v6 as shown below.

-
{
-    "interfaces": {
-        "access": [
-        {
-            "interface": "eth1",
-            "type": "ipoe",
-            "outer-vlan": 7,
-            "vlan-mode": "N:1"
-        }
-    ]
-    },
-    "dhcp": {
-        "enable": true,
-    },
-    "dhcpv6": {
-        "enable": true
-    },
-    "access-line": {
-        "agent-remote-id": "DEU.RTBRICK.{session-global}",
-        "agent-circuit-id": "0.0.0.0/0.0.0.0 eth 0:{session-global}"
-    }
-}
+
{
+    "interfaces": {
+        "access": [
+        {
+            "interface": "eth1",
+            "type": "ipoe",
+            "outer-vlan": 7,
+            "vlan-mode": "N:1"
+        }
+    ]
+    },
+    "dhcp": {
+        "enable": true,
+    },
+    "dhcpv6": {
+        "enable": true
+    },
+    "access-line": {
+        "agent-remote-id": "DEU.RTBRICK.{session-global}",
+        "agent-circuit-id": "0.0.0.0/0.0.0.0 eth 0:{session-global}"
+    }
+}
 

IPoE

-
{ "ipoe": {} }
+
{ "ipoe": {} }
 
@@ -215,7 +215,7 @@

IPoE

DHCP

-
{ "dhcp": {} }
+
{ "dhcp": {} }
 

@@ -272,7 +272,7 @@

DHCP

DHCPv6

-
{ "dhcpv6": {} }
+
{ "dhcpv6": {} }
 

@@ -333,100 +333,100 @@

IPoE Commandscommand session-info session-id <id> provides detailed information for IPoE sessions.

$ sudo bngblaster-cli run.sock session-info session-id 1 | jq .

-
{
-    "status": "ok",
-    "code": 200,
-    "session-information": {
-        "type": "ipoe",
-        "session-id": 1,
-        "session-state": "Established",
-        "interface": "eth1",
-        "outer-vlan": 8,
-        "inner-vlan": 1,
-        "mac": "02:00:00:00:00:01",
-        "agent-circuit-id": "0.0.0.0/0.0.0.0 eth 0:1",
-        "agent-remote-id": "DEU.RTBRICK.1",
-        "ipv4-address": "1.1.1.3",
-        "ipv4-netmask": "255.255.255.255",
-        "ipv4-gateway": "1.1.1.1",
-        "ipv4-dns1": "10.0.0.3",
-        "ipv4-dns2": "10.0.0.4",
-        "ipv6-prefix": "fc66:1337:2222::3/128",
-        "ipv6-delegated-prefix": "fc66:1337:3333:2::/64",
-        "dhcp-state": "Bound",
-        "dhcp-server": "1.1.1.1",
-        "dhcp-lease-time": 300,
-        "dhcp-lease-expire": 299,
-        "dhcp-lease-expire-t1": 149,
-        "dhcp-lease-expire-t2": 261,
-        "dhcp-tx": 2,
-        "dhcp-rx": 2,
-        "dhcp-tx-discover": 1,
-        "dhcp-rx-offer": 1,
-        "dhcp-tx-request": 1,
-        "dhcp-rx-ack": 1,
-        "dhcp-rx-nak": 0,
-        "dhcp-tx-release": 0,
-        "dhcpv6-state": "Bound",
-        "dhcpv6-lease-time": 14400,
-        "dhcpv6-lease-expire": 14399,
-        "dhcpv6-lease-expire-t1": 899,
-        "dhcpv6-lease-expire-t2": 1439,
-        "dhcpv6-tx": 1,
-        "dhcpv6-rx": 1,
-        "dhcpv6-tx-solicit": 1,
-        "dhcpv6-rx-advertise": 0,
-        "dhcpv6-tx-request": 0,
-        "dhcpv6-rx-reply": 1,
-        "dhcpv6-tx-renew": 0,
-        "dhcpv6-tx-release": 0,
-        "dhcpv6-dns1": "fc66::3",
-        "dhcpv6-dns2": "fc66::4",
-        "tx-packets": 6,
-        "rx-packets": 6,
-        "rx-fragmented-packets": 0,
-        "session-traffic": {
-            "total-flows": 6,
-            "verified-flows": 0,
-            "downstream-ipv4-flow-id": 2,
-            "downstream-ipv4-tx-packets": 13,
-            "downstream-ipv4-rx-packets": 13,
-            "downstream-ipv4-rx-first-seq": 1,
-            "downstream-ipv4-loss": 0,
-            "downstream-ipv4-wrong-session": 0,
-            "upstream-ipv4-flow-id": 1,
-            "upstream-ipv4-tx-packets": 13,
-            "upstream-ipv4-rx-packets": 13,
-            "upstream-ipv4-rx-first-seq": 1,
-            "upstream-ipv4-loss": 0,
-            "upstream-ipv4-wrong-session": 0,
-            "downstream-ipv6-flow-id": 4,
-            "downstream-ipv6-tx-packets": 13,
-            "downstream-ipv6-rx-packets": 13,
-            "downstream-ipv6-rx-first-seq": 1,
-            "downstream-ipv6-loss": 0,
-            "downstream-ipv6-wrong-session": 0,
-            "upstream-ipv6-flow-id": 3,
-            "upstream-ipv6-tx-packets": 13,
-            "upstream-ipv6-rx-packets": 13,
-            "upstream-ipv6-rx-first-seq": 1,
-            "upstream-ipv6-loss": 0,
-            "upstream-ipv6-wrong-session": 0,
-            "downstream-ipv6pd-flow-id": 6,
-            "downstream-ipv6pd-tx-packets": 13,
-            "downstream-ipv6pd-rx-packets": 13,
-            "downstream-ipv6pd-rx-first-seq": 1,
-            "downstream-ipv6pd-loss": 0,
-            "downstream-ipv6pd-wrong-session": 0,
-            "upstream-ipv6pd-flow-id": 5,
-            "upstream-ipv6pd-tx-packets": 13,
-            "upstream-ipv6pd-rx-packets": 13,
-            "upstream-ipv6pd-rx-first-seq": 1,
-            "upstream-ipv6pd-loss": 0,
-            "upstream-ipv6pd-wrong-session": 0
-        }
-    }
-}
+
{
+    "status": "ok",
+    "code": 200,
+    "session-information": {
+        "type": "ipoe",
+        "session-id": 1,
+        "session-state": "Established",
+        "interface": "eth1",
+        "outer-vlan": 8,
+        "inner-vlan": 1,
+        "mac": "02:00:00:00:00:01",
+        "agent-circuit-id": "0.0.0.0/0.0.0.0 eth 0:1",
+        "agent-remote-id": "DEU.RTBRICK.1",
+        "ipv4-address": "1.1.1.3",
+        "ipv4-netmask": "255.255.255.255",
+        "ipv4-gateway": "1.1.1.1",
+        "ipv4-dns1": "10.0.0.3",
+        "ipv4-dns2": "10.0.0.4",
+        "ipv6-prefix": "fc66:1337:2222::3/128",
+        "ipv6-delegated-prefix": "fc66:1337:3333:2::/64",
+        "dhcp-state": "Bound",
+        "dhcp-server": "1.1.1.1",
+        "dhcp-lease-time": 300,
+        "dhcp-lease-expire": 299,
+        "dhcp-lease-expire-t1": 149,
+        "dhcp-lease-expire-t2": 261,
+        "dhcp-tx": 2,
+        "dhcp-rx": 2,
+        "dhcp-tx-discover": 1,
+        "dhcp-rx-offer": 1,
+        "dhcp-tx-request": 1,
+        "dhcp-rx-ack": 1,
+        "dhcp-rx-nak": 0,
+        "dhcp-tx-release": 0,
+        "dhcpv6-state": "Bound",
+        "dhcpv6-lease-time": 14400,
+        "dhcpv6-lease-expire": 14399,
+        "dhcpv6-lease-expire-t1": 899,
+        "dhcpv6-lease-expire-t2": 1439,
+        "dhcpv6-tx": 1,
+        "dhcpv6-rx": 1,
+        "dhcpv6-tx-solicit": 1,
+        "dhcpv6-rx-advertise": 0,
+        "dhcpv6-tx-request": 0,
+        "dhcpv6-rx-reply": 1,
+        "dhcpv6-tx-renew": 0,
+        "dhcpv6-tx-release": 0,
+        "dhcpv6-dns1": "fc66::3",
+        "dhcpv6-dns2": "fc66::4",
+        "tx-packets": 6,
+        "rx-packets": 6,
+        "rx-fragmented-packets": 0,
+        "session-traffic": {
+            "total-flows": 6,
+            "verified-flows": 0,
+            "downstream-ipv4-flow-id": 2,
+            "downstream-ipv4-tx-packets": 13,
+            "downstream-ipv4-rx-packets": 13,
+            "downstream-ipv4-rx-first-seq": 1,
+            "downstream-ipv4-loss": 0,
+            "downstream-ipv4-wrong-session": 0,
+            "upstream-ipv4-flow-id": 1,
+            "upstream-ipv4-tx-packets": 13,
+            "upstream-ipv4-rx-packets": 13,
+            "upstream-ipv4-rx-first-seq": 1,
+            "upstream-ipv4-loss": 0,
+            "upstream-ipv4-wrong-session": 0,
+            "downstream-ipv6-flow-id": 4,
+            "downstream-ipv6-tx-packets": 13,
+            "downstream-ipv6-rx-packets": 13,
+            "downstream-ipv6-rx-first-seq": 1,
+            "downstream-ipv6-loss": 0,
+            "downstream-ipv6-wrong-session": 0,
+            "upstream-ipv6-flow-id": 3,
+            "upstream-ipv6-tx-packets": 13,
+            "upstream-ipv6-rx-packets": 13,
+            "upstream-ipv6-rx-first-seq": 1,
+            "upstream-ipv6-loss": 0,
+            "upstream-ipv6-wrong-session": 0,
+            "downstream-ipv6pd-flow-id": 6,
+            "downstream-ipv6pd-tx-packets": 13,
+            "downstream-ipv6pd-rx-packets": 13,
+            "downstream-ipv6pd-rx-first-seq": 1,
+            "downstream-ipv6pd-loss": 0,
+            "downstream-ipv6pd-wrong-session": 0,
+            "upstream-ipv6pd-flow-id": 5,
+            "upstream-ipv6pd-tx-packets": 13,
+            "upstream-ipv6pd-rx-packets": 13,
+            "upstream-ipv6pd-rx-first-seq": 1,
+            "upstream-ipv6pd-loss": 0,
+            "upstream-ipv6pd-wrong-session": 0
+        }
+    }
+}
 
diff --git a/docs/access/l2bsa.html b/docs/access/l2bsa.html index 17ce0305..d787c275 100644 --- a/docs/access/l2bsa.html +++ b/docs/access/l2bsa.html @@ -136,70 +136,70 @@

Following a basic PPPoE/A10NSP configuration example which is detailed explained in the configuration section.

-
{
-    "interfaces": {
-        "a10nsp": [
-            {
-                "interface": "eth4",
-                "qinq": true,
-                "mac": "02:00:00:ff:ff:01"
-            },
-            {
-                "interface": "eth5",
-                "qinq": true,
-                "mac": "02:00:00:ff:ff:01"
-            }
-        ],
-        "access": [
-            {
-                "__comment__": "PPPoE",
-                "interface": "eth1",
-                "type": "pppoe",
-                "outer-vlan-min": 1,
-                "outer-vlan-max": 4000,
-                "inner-vlan": 7,
-                "stream-group-id": 1,
-                "a10nsp-interface": "eth4"
-            }
-        ]
-    },
-    "pppoe": {
-        "reconnect": true,
-        "discovery-timeout": 3,
-        "discovery-retry": 10,
-        "host-uniq": true,
-        "vlan-priority": 6
-    },
-    "dhcpv6": {
-        "enable": false
-    },
-    "session-traffic": {
-        "autostart": true,
-        "ipv4-pps": 10
-    },
-    "streams": [
-        {
-            "stream-group-id": 2,
-            "name": "PPPOE-S1",
-            "type": "ipv4",
-            "direction": "both",
-            "priority": 128,
-            "length": 256,
-            "pps": 10,
-            "a10nsp-interface": "eth4"
-        },
-        {
-            "stream-group-id": 2,
-            "name": "PPPOE-S2",
-            "type": "ipv4",
-            "direction": "both",
-            "priority": 128,
-            "length": 256,
-            "pps": 10,
-            "a10nsp-interface": "eth5"
-        }
-    ]
-}
+
{
+    "interfaces": {
+        "a10nsp": [
+            {
+                "interface": "eth4",
+                "qinq": true,
+                "mac": "02:00:00:ff:ff:01"
+            },
+            {
+                "interface": "eth5",
+                "qinq": true,
+                "mac": "02:00:00:ff:ff:01"
+            }
+        ],
+        "access": [
+            {
+                "__comment__": "PPPoE",
+                "interface": "eth1",
+                "type": "pppoe",
+                "outer-vlan-min": 1,
+                "outer-vlan-max": 4000,
+                "inner-vlan": 7,
+                "stream-group-id": 1,
+                "a10nsp-interface": "eth4"
+            }
+        ]
+    },
+    "pppoe": {
+        "reconnect": true,
+        "discovery-timeout": 3,
+        "discovery-retry": 10,
+        "host-uniq": true,
+        "vlan-priority": 6
+    },
+    "dhcpv6": {
+        "enable": false
+    },
+    "session-traffic": {
+        "autostart": true,
+        "ipv4-pps": 10
+    },
+    "streams": [
+        {
+            "stream-group-id": 2,
+            "name": "PPPOE-S1",
+            "type": "ipv4",
+            "direction": "both",
+            "priority": 128,
+            "length": 256,
+            "pps": 10,
+            "a10nsp-interface": "eth4"
+        },
+        {
+            "stream-group-id": 2,
+            "name": "PPPOE-S2",
+            "type": "ipv4",
+            "direction": "both",
+            "priority": 128,
+            "length": 256,
+            "pps": 10,
+            "a10nsp-interface": "eth5"
+        }
+    ]
+}
 

You can define multiple interfaces with the same MAC diff --git a/docs/access/l2tp.html b/docs/access/l2tp.html index d2239fa9..fa4f03e2 100644 --- a/docs/access/l2tp.html +++ b/docs/access/l2tp.html @@ -102,256 +102,256 @@

Configuration

Following an example with 30 L2TP LNS servers.

-
{
-    "interfaces": {
-        "network": {
-            "interface": "eth2",
-            "address": "10.0.0.1",
-            "gateway": "10.0.0.2",
-            "address-ipv6": "fc66:1337:7331:8::10",
-            "gateway-ipv6": "fc66:1337:7331:8::1"
-        },
-        "access": [
-            {
-                "interface": "eth1",
-                "outer-vlan-min": 1,
-                "outer-vlan-max": 4000,
-                "inner-vlan-min": 7,
-                "inner-vlan-max": 7,
-                "authentication-protocol": "PAP"
-            },
-            {
-                "interface": "eth1",
-                "outer-vlan-min": 1,
-                "outer-vlan-max": 4000,
-                "inner-vlan-min": 8,
-                "inner-vlan-max": 8,
-                "authentication-protocol": "CHAP"
-            }
-        ]
-    },
-    "pppoe": {
-        "reconnect": true,
-        "discovery-timeout": 3,
-        "discovery-retry": 10
-    },
-    "ppp": {
-        "mru": 1492,
-        "authentication": {
-            "username": "blaster@l2tp.de",
-            "password": "test",
-            "timeout": 1,
-            "retry": 60
-        },
-        "lcp": {
-            "conf-request-timeout": 5,
-            "conf-request-retry": 30,
-            "keepalive-interval": 30,
-            "keepalive-retry": 3
-        },
-        "ipcp": {
-            "enable": true
-        },
-        "ip6cp": {
-            "enable": true
-        }
-    },
-    "access-line": {
-        "agent-remote-id": "DEU.RTBRICK.{session}",
-        "agent-circuit-id": "0.0.0.0/0.0.0.0 eth 0:{session}",
-        "rate-up": 1024,
-        "rate-down": 16384
-    },
-    "l2tp-server": [
-        {
-            "name": "LNS1",
-            "address": "10.0.0.11",
-            "secret": "test1",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS2",
-            "address": "10.0.0.12",
-            "secret": "test2",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS3",
-            "address": "10.0.0.13",
-            "secret": "test3",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS4",
-            "address": "10.0.0.14",
-            "secret": "test4",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS5",
-            "address": "10.0.0.15",
-            "secret": "test5",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS6",
-            "address": "10.0.0.16",
-            "secret": "test6",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS7",
-            "address": "10.0.0.17",
-            "secret": "test7",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS8",
-            "address": "10.0.0.18",
-            "secret": "test8",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS9",
-            "address": "10.0.0.19",
-            "secret": "test9",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS10",
-            "address": "10.0.0.20",
-            "secret": "test10",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS11",
-            "address": "10.0.0.21",
-            "secret": "test11",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS12",
-            "address": "10.0.0.22",
-            "secret": "test12",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS13",
-            "address": "10.0.0.23",
-            "secret": "test13",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS14",
-            "address": "10.0.0.24",
-            "secret": "test14",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS15",
-            "address": "10.0.0.25",
-            "secret": "test15",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS16",
-            "address": "10.0.0.26",
-            "secret": "test16",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS17",
-            "address": "10.0.0.27",
-            "secret": "test17",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS18",
-            "address": "10.0.0.28",
-            "secret": "test18",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS19",
-            "address": "10.0.0.29",
-            "secret": "test19",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS20",
-            "address": "10.0.0.30",
-            "secret": "test20",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS21",
-            "address": "10.0.0.31",
-            "secret": "test21",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS22",
-            "address": "10.0.0.32",
-            "secret": "test22",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS23",
-            "address": "10.0.0.33",
-            "secret": "test23",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS24",
-            "address": "10.0.0.34",
-            "secret": "test24",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS25",
-            "address": "10.0.0.35",
-            "secret": "test25",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS26",
-            "address": "10.0.0.36",
-            "secret": "test26",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS27",
-            "address": "10.0.0.37",
-            "secret": "test27",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS28",
-            "address": "10.0.0.38",
-            "secret": "test28",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS29",
-            "address": "10.0.0.39",
-            "secret": "test29",
-            "receive-window-size": 8
-        },
-        {
-            "name": "LNS30",
-            "address": "10.0.0.40",
-            "secret": "test30",
-            "receive-window-size": 8
-        }
-    ],
-    "session-traffic": {
-        "autostart": true,
-        "ipv4-pps": 1
-    }
-}
+
{
+    "interfaces": {
+        "network": {
+            "interface": "eth2",
+            "address": "10.0.0.1",
+            "gateway": "10.0.0.2",
+            "address-ipv6": "fc66:1337:7331:8::10",
+            "gateway-ipv6": "fc66:1337:7331:8::1"
+        },
+        "access": [
+            {
+                "interface": "eth1",
+                "outer-vlan-min": 1,
+                "outer-vlan-max": 4000,
+                "inner-vlan-min": 7,
+                "inner-vlan-max": 7,
+                "authentication-protocol": "PAP"
+            },
+            {
+                "interface": "eth1",
+                "outer-vlan-min": 1,
+                "outer-vlan-max": 4000,
+                "inner-vlan-min": 8,
+                "inner-vlan-max": 8,
+                "authentication-protocol": "CHAP"
+            }
+        ]
+    },
+    "pppoe": {
+        "reconnect": true,
+        "discovery-timeout": 3,
+        "discovery-retry": 10
+    },
+    "ppp": {
+        "mru": 1492,
+        "authentication": {
+            "username": "blaster@l2tp.de",
+            "password": "test",
+            "timeout": 1,
+            "retry": 60
+        },
+        "lcp": {
+            "conf-request-timeout": 5,
+            "conf-request-retry": 30,
+            "keepalive-interval": 30,
+            "keepalive-retry": 3
+        },
+        "ipcp": {
+            "enable": true
+        },
+        "ip6cp": {
+            "enable": true
+        }
+    },
+    "access-line": {
+        "agent-remote-id": "DEU.RTBRICK.{session}",
+        "agent-circuit-id": "0.0.0.0/0.0.0.0 eth 0:{session}",
+        "rate-up": 1024,
+        "rate-down": 16384
+    },
+    "l2tp-server": [
+        {
+            "name": "LNS1",
+            "address": "10.0.0.11",
+            "secret": "test1",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS2",
+            "address": "10.0.0.12",
+            "secret": "test2",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS3",
+            "address": "10.0.0.13",
+            "secret": "test3",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS4",
+            "address": "10.0.0.14",
+            "secret": "test4",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS5",
+            "address": "10.0.0.15",
+            "secret": "test5",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS6",
+            "address": "10.0.0.16",
+            "secret": "test6",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS7",
+            "address": "10.0.0.17",
+            "secret": "test7",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS8",
+            "address": "10.0.0.18",
+            "secret": "test8",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS9",
+            "address": "10.0.0.19",
+            "secret": "test9",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS10",
+            "address": "10.0.0.20",
+            "secret": "test10",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS11",
+            "address": "10.0.0.21",
+            "secret": "test11",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS12",
+            "address": "10.0.0.22",
+            "secret": "test12",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS13",
+            "address": "10.0.0.23",
+            "secret": "test13",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS14",
+            "address": "10.0.0.24",
+            "secret": "test14",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS15",
+            "address": "10.0.0.25",
+            "secret": "test15",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS16",
+            "address": "10.0.0.26",
+            "secret": "test16",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS17",
+            "address": "10.0.0.27",
+            "secret": "test17",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS18",
+            "address": "10.0.0.28",
+            "secret": "test18",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS19",
+            "address": "10.0.0.29",
+            "secret": "test19",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS20",
+            "address": "10.0.0.30",
+            "secret": "test20",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS21",
+            "address": "10.0.0.31",
+            "secret": "test21",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS22",
+            "address": "10.0.0.32",
+            "secret": "test22",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS23",
+            "address": "10.0.0.33",
+            "secret": "test23",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS24",
+            "address": "10.0.0.34",
+            "secret": "test24",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS25",
+            "address": "10.0.0.35",
+            "secret": "test25",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS26",
+            "address": "10.0.0.36",
+            "secret": "test26",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS27",
+            "address": "10.0.0.37",
+            "secret": "test27",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS28",
+            "address": "10.0.0.38",
+            "secret": "test28",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS29",
+            "address": "10.0.0.39",
+            "secret": "test29",
+            "receive-window-size": 8
+        },
+        {
+            "name": "LNS30",
+            "address": "10.0.0.40",
+            "secret": "test30",
+            "receive-window-size": 8
+        }
+    ],
+    "session-traffic": {
+        "autostart": true,
+        "ipv4-pps": 1
+    }
+}
 
-
{ "l2tp-server": [] }
+
{ "l2tp-server": [] }
 

@@ -433,46 +433,46 @@

Variable Data HeaderThe L2TP protocol allows different data header options resulting in variable header lengths. The most common options can be tested with just four servers as shown in the example below.

-
{
-    "l2tp-server": [
-        {
-            "name": "LNS1",
-            "address": "10.0.0.11",
-            "secret": "test1",
-            "receive-window-size": 8,
-            "congestion-mode": "default",
-            "data-control-priority": true
-        },
-        {
-            "name": "LNS2",
-            "address": "10.0.0.12",
-            "secret": "test2",
-            "receive-window-size": 8,
-            "congestion-mode": "default",
-            "data-control-priority": true,
-            "data-length": true
-        },
-        {
-            "name": "LNS3",
-            "address": "10.0.0.11",
-            "secret": "test3",
-            "receive-window-size": 8,
-            "congestion-mode": "default",
-            "data-control-priority": true,
-            "data-offset": true
-        },
-        {
-            "name": "LNS4",
-            "address": "10.0.0.12",
-            "secret": "test4",
-            "receive-window-size": 8,
-            "congestion-mode": "default",
-            "data-control-priority": true,
-            "data-length": true,
-            "data-offset": true
-        }
-    ]
-}
+
{
+    "l2tp-server": [
+        {
+            "name": "LNS1",
+            "address": "10.0.0.11",
+            "secret": "test1",
+            "receive-window-size": 8,
+            "congestion-mode": "default",
+            "data-control-priority": true
+        },
+        {
+            "name": "LNS2",
+            "address": "10.0.0.12",
+            "secret": "test2",
+            "receive-window-size": 8,
+            "congestion-mode": "default",
+            "data-control-priority": true,
+            "data-length": true
+        },
+        {
+            "name": "LNS3",
+            "address": "10.0.0.11",
+            "secret": "test3",
+            "receive-window-size": 8,
+            "congestion-mode": "default",
+            "data-control-priority": true,
+            "data-offset": true
+        },
+        {
+            "name": "LNS4",
+            "address": "10.0.0.12",
+            "secret": "test4",
+            "receive-window-size": 8,
+            "congestion-mode": "default",
+            "data-control-priority": true,
+            "data-length": true,
+            "data-offset": true
+        }
+    ]
+}
 
@@ -488,59 +488,59 @@

L2TP Commandscommand session-info l2tp-tunnels provides detailed information about L2TP tunnels.

$ sudo bngblaster-cli run.sock l2tp-tunnels

-
{
-    "status": "ok",
-    "code": 200,
-    "l2tp-tunnels": [
-        {
-            "state": "Established",
-            "server-name": "LNS1",
-            "server-address": "10.0.0.11",
-            "tunnel-id": 1,
-            "peer-tunnel-id": 50011,
-            "peer-name": "BNG",
-            "peer-address": "10.0.0.2",
-            "peer-vendor": "RtBrick, Inc.",
-            "secret": "test1",
-            "control-packets-rx": 102,
-            "control-packets-rx-dup": 0,
-            "control-packets-rx-out-of-order": 0,
-            "control-packets-tx": 102,
-            "control-packets-tx-retry": 0,
-            "data-packets-rx": 1406,
-            "data-packets-tx": 206
-        }
-    ]
-}
+
{
+    "status": "ok",
+    "code": 200,
+    "l2tp-tunnels": [
+        {
+            "state": "Established",
+            "server-name": "LNS1",
+            "server-address": "10.0.0.11",
+            "tunnel-id": 1,
+            "peer-tunnel-id": 50011,
+            "peer-name": "BNG",
+            "peer-address": "10.0.0.2",
+            "peer-vendor": "RtBrick, Inc.",
+            "secret": "test1",
+            "control-packets-rx": 102,
+            "control-packets-rx-dup": 0,
+            "control-packets-rx-out-of-order": 0,
+            "control-packets-tx": 102,
+            "control-packets-tx-retry": 0,
+            "data-packets-rx": 1406,
+            "data-packets-tx": 206
+        }
+    ]
+}
 

The l2tp-sessions command returns all L2TP sessions.

$ sudo bngblaster-cli run.sock l2tp-sessions

-
{
-    "status": "ok",
-    "code": 200,
-    "l2tp-sessions": [
-        {
-            "state": "Established",
-            "tunnel-id": 1,
-            "session-id": 1,
-            "peer-tunnel-id": 50011,
-            "peer-session-id": 32867,
-            "peer-proxy-auth-name": "blaster@l2tp.de",
-            "peer-called-number": "N/A",
-            "peer-calling-number": "N/A",
-            "peer-sub-address": "N/A",
-            "peer-tx-bps": 48000,
-            "peer-rx-bps": 1000,
-            "peer-ari": "DEU.RTBRICK.1",
-            "peer-aci": "0.0.0.0/0.0.0.0 eth 0:1",
-            "data-packets-rx": 79,
-            "data-packets-tx": 79,
-            "data-ipv4-packets-rx": 15,
-            "data-ipv4-packets-tx": 15
-        }
-    ]
-}
+
{
+    "status": "ok",
+    "code": 200,
+    "l2tp-sessions": [
+        {
+            "state": "Established",
+            "tunnel-id": 1,
+            "session-id": 1,
+            "peer-tunnel-id": 50011,
+            "peer-session-id": 32867,
+            "peer-proxy-auth-name": "blaster@l2tp.de",
+            "peer-called-number": "N/A",
+            "peer-calling-number": "N/A",
+            "peer-sub-address": "N/A",
+            "peer-tx-bps": 48000,
+            "peer-rx-bps": 1000,
+            "peer-ari": "DEU.RTBRICK.1",
+            "peer-aci": "0.0.0.0/0.0.0.0 eth 0:1",
+            "data-packets-rx": 79,
+            "data-packets-tx": 79,
+            "data-ipv4-packets-rx": 15,
+            "data-ipv4-packets-tx": 15
+        }
+    ]
+}
 

This output can be also filtered to return only sessions diff --git a/docs/access/li.html b/docs/access/li.html index bd93b804..f18696a4 100644 --- a/docs/access/li.html +++ b/docs/access/li.html @@ -103,69 +103,69 @@

The functionality is automatically enabled on the network interface and works combined with sessions in one instance or as standalone mediation device as shown in the following example.

-
{
-    "interfaces": {
-        "tx-interval": 10,
-        "rx-interval": 1,
-        "network": {
-            "interface": "eth2",
-            "address": "100.0.0.10/24",
-            "gateway": "100.0.0.2"
-        }
-    }
-}
+
{
+    "interfaces": {
+        "tx-interval": 10,
+        "rx-interval": 1,
+        "network": {
+            "interface": "eth2",
+            "address": "100.0.0.10/24",
+            "gateway": "100.0.0.2"
+        }
+    }
+}
 

The received flows can be displayed with the command li-flows.

$ sudo bngblaster-cli run.sock li-flows

-
{
-    "status": "ok",
-    "code": 200,
-    "li-flows": [
-        {
-            "source-address": "1.1.1.1",
-            "source-port": 49152,
-            "destination-address": "1.1.1.2",
-            "destination-port": 49152,
-            "direction": "downstream",
-            "packet-type": "ethernet",
-            "sub-packet-type": "double-tagged",
-            "liid": 4194301,
-            "bytes-rx": 94,
-            "packets-rx": 1,
-            "packets-rx-ipv4": 0,
-            "packets-rx-ipv4-tcp": 0,
-            "packets-rx-ipv4-udp": 0,
-            "packets-rx-ipv4-host-internal": 0,
-            "packets-rx-ipv6": 0,
-            "packets-rx-ipv6-tcp": 0,
-            "packets-rx-ipv6-udp": 0,
-            "packets-rx-ipv6-host-internal": 0,
-            "packets-rx-ipv6-no-next-header": 0
-        },
-        {
-            "source-address": "1.1.1.1",
-            "source-port": 49152,
-            "destination-address": "1.1.1.2",
-            "destination-port": 49152,
-            "direction": "upstream",
-            "packet-type": "ethernet",
-            "sub-packet-type": "double-tagged",
-            "liid": 4194301,
-            "bytes-rx": 160720,
-            "packets-rx": 820,
-            "packets-rx-ipv4": 820,
-            "packets-rx-ipv4-tcp": 0,
-            "packets-rx-ipv4-udp": 0,
-            "packets-rx-ipv4-host-internal": 820,
-            "packets-rx-ipv6": 0,
-            "packets-rx-ipv6-tcp": 0,
-            "packets-rx-ipv6-udp": 0,
-            "packets-rx-ipv6-host-internal": 0,
-            "packets-rx-ipv6-no-next-header": 0
-        }
-    ]
-}
+
{
+    "status": "ok",
+    "code": 200,
+    "li-flows": [
+        {
+            "source-address": "1.1.1.1",
+            "source-port": 49152,
+            "destination-address": "1.1.1.2",
+            "destination-port": 49152,
+            "direction": "downstream",
+            "packet-type": "ethernet",
+            "sub-packet-type": "double-tagged",
+            "liid": 4194301,
+            "bytes-rx": 94,
+            "packets-rx": 1,
+            "packets-rx-ipv4": 0,
+            "packets-rx-ipv4-tcp": 0,
+            "packets-rx-ipv4-udp": 0,
+            "packets-rx-ipv4-host-internal": 0,
+            "packets-rx-ipv6": 0,
+            "packets-rx-ipv6-tcp": 0,
+            "packets-rx-ipv6-udp": 0,
+            "packets-rx-ipv6-host-internal": 0,
+            "packets-rx-ipv6-no-next-header": 0
+        },
+        {
+            "source-address": "1.1.1.1",
+            "source-port": 49152,
+            "destination-address": "1.1.1.2",
+            "destination-port": 49152,
+            "direction": "upstream",
+            "packet-type": "ethernet",
+            "sub-packet-type": "double-tagged",
+            "liid": 4194301,
+            "bytes-rx": 160720,
+            "packets-rx": 820,
+            "packets-rx-ipv4": 820,
+            "packets-rx-ipv4-tcp": 0,
+            "packets-rx-ipv4-udp": 0,
+            "packets-rx-ipv4-host-internal": 820,
+            "packets-rx-ipv6": 0,
+            "packets-rx-ipv6-tcp": 0,
+            "packets-rx-ipv6-udp": 0,
+            "packets-rx-ipv6-host-internal": 0,
+            "packets-rx-ipv6-no-next-header": 0
+        }
+    ]
+}
 

The packets-rx-ipv4-host-internal refers to the IPv4 protocol number 61 diff --git a/docs/access/monkey.html b/docs/access/monkey.html index 20622ee0..e263019c 100644 --- a/docs/access/monkey.html +++ b/docs/access/monkey.html @@ -99,20 +99,20 @@

Monkey testing must be enabled per access function and starts automatically per default, which can be changed using the monkey-autostart option. It is also required to enable session auto-reconnect for monkey testing!

-
{
-    "interfaces": {
-        "access": [
-            {
-                "interface": "eth1",
-                "monkey": true
-            }
-        ]
-    },
-    "sessions": {
-        "reconnect": true,
-        "monkey-autostart": true
-    }
-}
+
{
+    "interfaces": {
+        "access": [
+            {
+                "interface": "eth1",
+                "monkey": true
+            }
+        ]
+    },
+    "sessions": {
+        "reconnect": true,
+        "monkey-autostart": true
+    }
+}
 

It is possible to start and stop the monkey test feature globally using diff --git a/docs/access/multicast.html b/docs/access/multicast.html index d2231bab..b88b9d22 100644 --- a/docs/access/multicast.html +++ b/docs/access/multicast.html @@ -110,54 +110,54 @@

Generate Multicast Traffic
{
-    "interfaces": {
-        "network": {
-            "interface": "eth2",
-            "address": "100.0.0.10",
-            "gateway": "100.0.0.2"
-        }
-    },
-    "igmp": {
-        "group": "239.0.0.1",
-        "group-iter": "0.0.0.1",
-        "group-count": 100,
-        "source": "100.0.0.10",
-        "send-multicast-traffic": true
-    }
-}
+
{
+    "interfaces": {
+        "network": {
+            "interface": "eth2",
+            "address": "100.0.0.10",
+            "gateway": "100.0.0.2"
+        }
+    },
+    "igmp": {
+        "group": "239.0.0.1",
+        "group-iter": "0.0.0.1",
+        "group-count": 100,
+        "source": "100.0.0.10",
+        "send-multicast-traffic": true
+    }
+}
 

It is recommended to send multicast traffic with 1000 PPS (default) per group to measure the join and leave delay in milliseconds.

It is also possible to generate multicast traffic using RAW streams as shown in the example below:

-
{
-    "streams": [
-        {
-            "name": "MC1",
-            "type": "ipv4",
-            "direction": "downstream",
-            "priority": 128,
-            "network-ipv4-address": "1.1.1.1",
-            "destination-ipv4-address": "239.0.0.1",
-            "length": 256,
-            "pps": 1000,
-            "network-interface": "eth1"
-        },
-        {
-            "name": "MC2",
-            "type": "ipv4",
-            "direction": "downstream",
-            "priority": 128,
-            "network-ipv4-address": "2.2.2.2",
-            "destination-ipv4-address": "239.0.0.2",
-            "length": 256,
-            "pps": 1000,
-            "network-interface": "eth2"
-        }
-    ]
-}
+
{
+    "streams": [
+        {
+            "name": "MC1",
+            "type": "ipv4",
+            "direction": "downstream",
+            "priority": 128,
+            "network-ipv4-address": "1.1.1.1",
+            "destination-ipv4-address": "239.0.0.1",
+            "length": 256,
+            "pps": 1000,
+            "network-interface": "eth1"
+        },
+        {
+            "name": "MC2",
+            "type": "ipv4",
+            "direction": "downstream",
+            "priority": 128,
+            "network-ipv4-address": "2.2.2.2",
+            "destination-ipv4-address": "239.0.0.2",
+            "length": 256,
+            "pps": 1000,
+            "network-interface": "eth2"
+        }
+    ]
+}
 

Using RAW streams allows generating streams distributed over multiple network interfaces @@ -184,55 +184,55 @@

Manual Join/Leave Testingcommand igmp-join.

$ sudo bngblaster-cli run.sock igmp-join session-id 1 group 232.1.1.1 source1 202.11.23.101 source2 202.11.23.102 source3 202.11.23.103

-
{
-    "status": "ok"
-}
+
{
+    "status": "ok"
+}
 

$ sudo bngblaster-cli run.sock igmp-info session-id 1

-
{
-    "status": "ok",
-    "igmp-groups": [
-        {
-            "group": "232.1.1.1",
-            "igmp-sources": [
-                "202.11.23.101",
-                "202.11.23.102",
-                "202.11.23.103"
-            ],
-            "packets": 1291,
-            "loss": 0,
-            "state": "active",
-            "join-delay-ms": 139
-        }
-    ]
-}
+
{
+    "status": "ok",
+    "igmp-groups": [
+        {
+            "group": "232.1.1.1",
+            "igmp-sources": [
+                "202.11.23.101",
+                "202.11.23.102",
+                "202.11.23.103"
+            ],
+            "packets": 1291,
+            "loss": 0,
+            "state": "active",
+            "join-delay-ms": 139
+        }
+    ]
+}
 

$ sudo bngblaster-cli run.sock igmp-leave session-id 1 group 232.1.1.1

-
{
-    "status": "ok"
-}
+
{
+    "status": "ok"
+}
 

$ sudo bngblaster-cli run.sock igmp-info session-id 1

-
{
-    "status": "ok",
-    "igmp-groups": [
-        {
-            "group": "232.1.1.1",
-            "igmp-sources": [
-                "202.11.23.101",
-                "202.11.23.102",
-                "202.11.23.103"
-            ],
-            "packets": 7456,
-            "loss": 0,
-            "state": "idle",
-            "leave-delay-ms": 114
-        }
-    ]
-}
+
{
+    "status": "ok",
+    "igmp-groups": [
+        {
+            "group": "232.1.1.1",
+            "igmp-sources": [
+                "202.11.23.101",
+                "202.11.23.102",
+                "202.11.23.103"
+            ],
+            "packets": 7456,
+            "loss": 0,
+            "state": "idle",
+            "leave-delay-ms": 114
+        }
+    ]
+}
 
@@ -253,25 +253,25 @@

IPTV Zapping Testigmp section for a typical zapping test.

-
{
-    "igmp": {
-        "version": 3,
-        "start-delay": 10,
-        "group": "239.0.0.1",
-        "group-iter": "0.0.0.1",
-        "group-count": 20,
-        "source": "100.0.0.10",
-        "zapping-interval": 5,
-        "zapping-count": 5,
-        "zapping-view-duration": 30,
-        "zapping-wait": false,
-        "combined-leave-join": true,
-        "send-multicast-traffic": true
-    }
-}
+
{
+    "igmp": {
+        "version": 3,
+        "start-delay": 10,
+        "group": "239.0.0.1",
+        "group-iter": "0.0.0.1",
+        "group-count": 20,
+        "source": "100.0.0.10",
+        "zapping-interval": 5,
+        "zapping-count": 5,
+        "zapping-view-duration": 30,
+        "zapping-wait": false,
+        "combined-leave-join": true,
+        "send-multicast-traffic": true
+    }
+}
 
-
{ "igmp": {} }
+
{ "igmp": {} }
 

diff --git a/docs/access/pppoe.html b/docs/access/pppoe.html index 98ab9624..1fd26219 100644 --- a/docs/access/pppoe.html +++ b/docs/access/pppoe.html @@ -118,97 +118,97 @@

Configuration

Following is a basic PPPoE configuration example.

-
{
-    "interfaces": {
-        "network": {
-            "interface": "eth2",
-            "address": "10.0.0.1/24",
-            "gateway": "10.0.0.2",
-            "address-ipv6": "fc66:1337:7331::1/64",
-            "gateway-ipv6": "fc66:1337:7331::2"
-        },
-        "access": [
-            {
-                "interface": "eth1",
-                "type": "pppoe",
-                "outer-vlan-min": 1000,
-                "outer-vlan-max": 1999,
-                "inner-vlan-min": 1,
-                "inner-vlan-max": 4049,
-                "authentication-protocol": "PAP"
-            },
-            {
-                "interface": "eth1",
-                "type": "pppoe",
-                "outer-vlan-min": 2000,
-                "outer-vlan-max": 2999,
-                "inner-vlan-min": 1,
-                "inner-vlan-max": 4049,
-                "authentication-protocol": "CHAP"
-            }
-        ]
-    },
-    "sessions": {
-        "count": 1000,
-        "session-time": 0,
-        "max-outstanding": 800,
-        "start-rate": 400,
-        "stop-rate": 400
-    },
-    "pppoe": {
-        "reconnect": true,
-        "discovery-timeout": 3,
-        "discovery-retry": 10
-    },
-    "ppp": {
-        "mru": 1492,
-        "authentication": {
-            "username": "user{session-global}@rtbrick.com",
-            "password": "test",
-            "timeout": 5,
-            "retry": 30
-        },
-        "lcp": {
-            "conf-request-timeout": 1,
-            "conf-request-retry": 10,
-            "keepalive-interval": 30,
-            "keepalive-retry": 3
-        },
-        "ipcp": {
-            "enable": true,
-            "request-ip": true,
-            "request-dns1": true,
-            "request-dns2": true,
-            "conf-request-timeout": 1,
-            "conf-request-retry": 10
-        },
-        "ip6cp": {
-            "enable": true,
-            "conf-request-timeout": 1,
-            "conf-request-retry": 10
-        }
-    },
-    "dhcpv6": {
-        "enable": true,
-        "rapid-commit": true
-    },
-    "access-line": {
-        "agent-remote-id": "DEU.RTBRICK.{session-global}",
-        "agent-circuit-id": "0.0.0.0/0.0.0.0 eth {outer-vlan}:{inner-vlan}",
-        "rate-up": 1024,
-        "rate-down": 16384
-    },
-    "session-traffic": {
-        "ipv4-pps": 1,
-        "ipv6-pps": 1,
-        "ipv6pd-pps": 1
-    }
-}
+
{
+    "interfaces": {
+        "network": {
+            "interface": "eth2",
+            "address": "10.0.0.1/24",
+            "gateway": "10.0.0.2",
+            "address-ipv6": "fc66:1337:7331::1/64",
+            "gateway-ipv6": "fc66:1337:7331::2"
+        },
+        "access": [
+            {
+                "interface": "eth1",
+                "type": "pppoe",
+                "outer-vlan-min": 1000,
+                "outer-vlan-max": 1999,
+                "inner-vlan-min": 1,
+                "inner-vlan-max": 4049,
+                "authentication-protocol": "PAP"
+            },
+            {
+                "interface": "eth1",
+                "type": "pppoe",
+                "outer-vlan-min": 2000,
+                "outer-vlan-max": 2999,
+                "inner-vlan-min": 1,
+                "inner-vlan-max": 4049,
+                "authentication-protocol": "CHAP"
+            }
+        ]
+    },
+    "sessions": {
+        "count": 1000,
+        "session-time": 0,
+        "max-outstanding": 800,
+        "start-rate": 400,
+        "stop-rate": 400
+    },
+    "pppoe": {
+        "reconnect": true,
+        "discovery-timeout": 3,
+        "discovery-retry": 10
+    },
+    "ppp": {
+        "mru": 1492,
+        "authentication": {
+            "username": "user{session-global}@rtbrick.com",
+            "password": "test",
+            "timeout": 5,
+            "retry": 30
+        },
+        "lcp": {
+            "conf-request-timeout": 1,
+            "conf-request-retry": 10,
+            "keepalive-interval": 30,
+            "keepalive-retry": 3
+        },
+        "ipcp": {
+            "enable": true,
+            "request-ip": true,
+            "request-dns1": true,
+            "request-dns2": true,
+            "conf-request-timeout": 1,
+            "conf-request-retry": 10
+        },
+        "ip6cp": {
+            "enable": true,
+            "conf-request-timeout": 1,
+            "conf-request-retry": 10
+        }
+    },
+    "dhcpv6": {
+        "enable": true,
+        "rapid-commit": true
+    },
+    "access-line": {
+        "agent-remote-id": "DEU.RTBRICK.{session-global}",
+        "agent-circuit-id": "0.0.0.0/0.0.0.0 eth {outer-vlan}:{inner-vlan}",
+        "rate-up": 1024,
+        "rate-down": 16384
+    },
+    "session-traffic": {
+        "ipv4-pps": 1,
+        "ipv6-pps": 1,
+        "ipv6pd-pps": 1
+    }
+}
 

PPPoE

-
{ "pppoe": {} }
+
{ "pppoe": {} }
 
@@ -257,7 +257,7 @@

PPPoE

PPP

-
{ "ppp": {} }
+
{ "ppp": {} }
 

@@ -282,7 +282,7 @@

PPP<

PPP Authentication

-
{ "ppp": { "authentication": {} } }
+
{ "ppp": { "authentication": {} } }
 

@@ -323,7 +323,7 @@

PPP Authentication

PPP LCP

-
{ "ppp": { "lcp": {} } }
+
{ "ppp": { "lcp": {} } }
 

@@ -372,7 +372,7 @@

PPP LCP

PPP IPCP (IPv4)

-
{ "ppp": { "ipcp": {} } }
+
{ "ppp": { "ipcp": {} } }
 

@@ -417,7 +417,7 @@

PPP IPCP (IPv4)

PPP IP6CP (IPv6)

-
{ "ppp": { "ip6cp": {} } }
+
{ "ppp": { "ip6cp": {} } }
 

@@ -466,78 +466,78 @@

PPPoE Commandscommand session-info session-id <id> provides detailed information for PPPoE sessions.

$ sudo bngblaster-cli run.sock session-info session-id 1 | jq .

-
{
-    "status": "ok",
-    "code": 200,
-    "session-information": {
-        "type": "pppoe",
-        "session-id": 1,
-        "session-state": "Established",
-        "interface": "eth1",
-        "outer-vlan": 1000,
-        "inner-vlan": 1,
-        "mac": "02:00:00:00:00:01",
-        "username": "user1@rtbrick.com",
-        "agent-circuit-id": "0.0.0.0/0.0.0.0 eth 0:1",
-        "agent-remote-id": "DEU.RTBRICK.1",
-        "lcp-state": "Opened",
-        "ipcp-state": "Opened",
-        "ip6cp-state": "Opened",
-        "ipv4-address": "10.100.128.0",
-        "ipv4-dns1": "10.0.0.3",
-        "ipv4-dns2": "10.0.0.4",
-        "ipv6-prefix": "fc66:1000:1::/64",
-        "ipv6-delegated-prefix": "fc66:2000::/56",
-        "ipv6-dns1": "fc66::3",
-        "ipv6-dns2": "fc66::4",
-        "dhcpv6-state": "Bound",
-        "dhcpv6-dns1": "fc66::3",
-        "dhcpv6-dns2": "fc66::4",
-        "tx-packets": 10036,
-        "rx-packets": 10083,
-        "rx-fragmented-packets": 0,
-        "session-traffic": {
-            "total-flows": 6,
-            "verified-flows": 6,
-            "downstream-ipv4-flow-id": 2,
-            "downstream-ipv4-tx-packets": 13,
-            "downstream-ipv4-rx-packets": 13,
-            "downstream-ipv4-rx-first-seq": 1,
-            "downstream-ipv4-loss": 0,
-            "downstream-ipv4-wrong-session": 0,
-            "upstream-ipv4-flow-id": 1,
-            "upstream-ipv4-tx-packets": 13,
-            "upstream-ipv4-rx-packets": 13,
-            "upstream-ipv4-rx-first-seq": 1,
-            "upstream-ipv4-loss": 0,
-            "upstream-ipv4-wrong-session": 0,
-            "downstream-ipv6-flow-id": 4,
-            "downstream-ipv6-tx-packets": 13,
-            "downstream-ipv6-rx-packets": 13,
-            "downstream-ipv6-rx-first-seq": 1,
-            "downstream-ipv6-loss": 0,
-            "downstream-ipv6-wrong-session": 0,
-            "upstream-ipv6-flow-id": 3,
-            "upstream-ipv6-tx-packets": 13,
-            "upstream-ipv6-rx-packets": 13,
-            "upstream-ipv6-rx-first-seq": 1,
-            "upstream-ipv6-loss": 0,
-            "upstream-ipv6-wrong-session": 0,
-            "downstream-ipv6pd-flow-id": 6,
-            "downstream-ipv6pd-tx-packets": 13,
-            "downstream-ipv6pd-rx-packets": 13,
-            "downstream-ipv6pd-rx-first-seq": 1,
-            "downstream-ipv6pd-loss": 0,
-            "downstream-ipv6pd-wrong-session": 0,
-            "upstream-ipv6pd-flow-id": 5,
-            "upstream-ipv6pd-tx-packets": 13,
-            "upstream-ipv6pd-rx-packets": 13,
-            "upstream-ipv6pd-rx-first-seq": 1,
-            "upstream-ipv6pd-loss": 0,
-            "upstream-ipv6pd-wrong-session": 0
-        }
-    }
-}
+
{
+    "status": "ok",
+    "code": 200,
+    "session-information": {
+        "type": "pppoe",
+        "session-id": 1,
+        "session-state": "Established",
+        "interface": "eth1",
+        "outer-vlan": 1000,
+        "inner-vlan": 1,
+        "mac": "02:00:00:00:00:01",
+        "username": "user1@rtbrick.com",
+        "agent-circuit-id": "0.0.0.0/0.0.0.0 eth 0:1",
+        "agent-remote-id": "DEU.RTBRICK.1",
+        "lcp-state": "Opened",
+        "ipcp-state": "Opened",
+        "ip6cp-state": "Opened",
+        "ipv4-address": "10.100.128.0",
+        "ipv4-dns1": "10.0.0.3",
+        "ipv4-dns2": "10.0.0.4",
+        "ipv6-prefix": "fc66:1000:1::/64",
+        "ipv6-delegated-prefix": "fc66:2000::/56",
+        "ipv6-dns1": "fc66::3",
+        "ipv6-dns2": "fc66::4",
+        "dhcpv6-state": "Bound",
+        "dhcpv6-dns1": "fc66::3",
+        "dhcpv6-dns2": "fc66::4",
+        "tx-packets": 10036,
+        "rx-packets": 10083,
+        "rx-fragmented-packets": 0,
+        "session-traffic": {
+            "total-flows": 6,
+            "verified-flows": 6,
+            "downstream-ipv4-flow-id": 2,
+            "downstream-ipv4-tx-packets": 13,
+            "downstream-ipv4-rx-packets": 13,
+            "downstream-ipv4-rx-first-seq": 1,
+            "downstream-ipv4-loss": 0,
+            "downstream-ipv4-wrong-session": 0,
+            "upstream-ipv4-flow-id": 1,
+            "upstream-ipv4-tx-packets": 13,
+            "upstream-ipv4-rx-packets": 13,
+            "upstream-ipv4-rx-first-seq": 1,
+            "upstream-ipv4-loss": 0,
+            "upstream-ipv4-wrong-session": 0,
+            "downstream-ipv6-flow-id": 4,
+            "downstream-ipv6-tx-packets": 13,
+            "downstream-ipv6-rx-packets": 13,
+            "downstream-ipv6-rx-first-seq": 1,
+            "downstream-ipv6-loss": 0,
+            "downstream-ipv6-wrong-session": 0,
+            "upstream-ipv6-flow-id": 3,
+            "upstream-ipv6-tx-packets": 13,
+            "upstream-ipv6-rx-packets": 13,
+            "upstream-ipv6-rx-first-seq": 1,
+            "upstream-ipv6-loss": 0,
+            "upstream-ipv6-wrong-session": 0,
+            "downstream-ipv6pd-flow-id": 6,
+            "downstream-ipv6pd-tx-packets": 13,
+            "downstream-ipv6pd-rx-packets": 13,
+            "downstream-ipv6pd-rx-first-seq": 1,
+            "downstream-ipv6pd-loss": 0,
+            "downstream-ipv6pd-wrong-session": 0,
+            "upstream-ipv6pd-flow-id": 5,
+            "upstream-ipv6pd-tx-packets": 13,
+            "upstream-ipv6pd-rx-packets": 13,
+            "upstream-ipv6pd-rx-first-seq": 1,
+            "upstream-ipv6pd-loss": 0,
+            "upstream-ipv6pd-wrong-session": 0
+        }
+    }
+}
 
diff --git a/docs/access/traffic.html b/docs/access/traffic.html index 447caf61..4f3605f1 100644 --- a/docs/access/traffic.html +++ b/docs/access/traffic.html @@ -113,16 +113,16 @@

Configuration

The following example shows how to enable session traffic.

-
{
-    "session-traffic": {
-        "ipv4-pps": 1,
-        "ipv6-pps": 1,
-        "ipv6pd-pps": 1
-    }
-}
+
{
+    "session-traffic": {
+        "ipv4-pps": 1,
+        "ipv6-pps": 1,
+        "ipv6pd-pps": 1
+    }
+}
 
-
{ "session-traffic": {} }
+
{ "session-traffic": {} }
 

diff --git a/docs/api/index.html b/docs/api/index.html index d5fad4fa..0f7f5cee 100644 --- a/docs/api/index.html +++ b/docs/api/index.html @@ -107,32 +107,32 @@ 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.

-
{
-    "command": "<command>"
-    "arguments": {
-        "<argument-key>": "<argument-value>"
-    }
-}
+
{
+    "command": "<command>"
+    "arguments": {
+        "<argument-key>": "<argument-value>"
+    }
+}
 

Following an example RPC request with corresponding response.

$ cat command.json | jq .

-
{
-    "command": "session-counters"
-}
+
{
+    "command": "session-counters"
+}
 

$ cat command.json | sudo nc -U run.sock | jq .

-
{
-    "status": "ok",
-    "code": 200,
-    "session-counters": {
-        "sessions": 3,
-        "sessions-established": 3,
-        "sessions-flapped": 3,
-        "dhcpv6-sessions-established": 3
-    }
-}
+
{
+    "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 @@ -140,11 +140,11 @@ 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 .

-
{
-    "status": "warning",
-    "code": 404,
-    "message": "session not found"
-}
+
{
+    "status": "warning",
+    "code": 404,
+    "message": "session not found"
+}
 

The session-id is the same as used for {session-global} in the @@ -161,14 +161,14 @@ 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.

-

The L2TP CSURQ command expects the local tunnel-id and a list of remote session-id for which a connect speed update is requested.

-
{
-    "command": "l2tp-csurq",
-    "arguments": {
-        "tunnel-id": 1,
-        "sessions": [
-            1,
-            2,
-            3,
-            4
-        ]
-    }
-}
+
{
+    "command": "l2tp-csurq",
+    "arguments": {
+        "tunnel-id": 1,
+        "sessions": [
+            1,
+            2,
+            3,
+            4
+        ]
+    }
+}
 

This command can be executed as shown below using the CLI tool.

diff --git a/docs/api/l2tp.html b/docs/api/l2tp.html index 9fbf66c8..b426dcc7 100644 --- a/docs/api/l2tp.html +++ b/docs/api/l2tp.html @@ -119,18 +119,18 @@

The L2TP CSURQ command expects the local tunnel-id and a list of remote session-id for which a connect speed update is requested.

-
{
-    "command": "l2tp-csurq",
-    "arguments": {
-        "tunnel-id": 1,
-        "sessions": [
-            1,
-            2,
-            3,
-            4
-        ]
-    }
-}
+
{
+    "command": "l2tp-csurq",
+    "arguments": {
+        "tunnel-id": 1,
+        "sessions": [
+            1,
+            2,
+            3,
+            4
+        ]
+    }
+}
 

This command can be executed as shown below using the CLI tool.

diff --git a/docs/configuration/access_line.html b/docs/configuration/access_line.html index 04acb069..ddbe68d5 100644 --- a/docs/configuration/access_line.html +++ b/docs/configuration/access_line.html @@ -75,7 +75,7 @@
-
{ "access-line": {} }
+  
{ "access-line": {} }
 
diff --git a/docs/configuration/access_line_profiles.html b/docs/configuration/access_line_profiles.html index 4862bf1d..1f365394 100644 --- a/docs/configuration/access_line_profiles.html +++ b/docs/configuration/access_line_profiles.html @@ -75,7 +75,7 @@
-
{ "access-line-profiles": [] }
+  
{ "access-line-profiles": [] }
 
diff --git a/docs/configuration/bgp.html b/docs/configuration/bgp.html index e329cba0..f208eae0 100644 --- a/docs/configuration/bgp.html +++ b/docs/configuration/bgp.html @@ -75,7 +75,7 @@
-
{ "bgp": {} }
+  
{ "bgp": {} }
 
diff --git a/docs/configuration/dhcp.html b/docs/configuration/dhcp.html index fdd80e35..d4e0589e 100644 --- a/docs/configuration/dhcp.html +++ b/docs/configuration/dhcp.html @@ -75,7 +75,7 @@
-
{ "dhcp": {} }
+  
{ "dhcp": {} }
 
diff --git a/docs/configuration/dhcpv6.html b/docs/configuration/dhcpv6.html index 8553a86d..a23d0c8a 100644 --- a/docs/configuration/dhcpv6.html +++ b/docs/configuration/dhcpv6.html @@ -75,7 +75,7 @@
-
{ "dhcpv6": {} }
+  
{ "dhcpv6": {} }
 
diff --git a/docs/configuration/http_client.html b/docs/configuration/http_client.html index b12b95cf..15b62576 100644 --- a/docs/configuration/http_client.html +++ b/docs/configuration/http_client.html @@ -75,7 +75,7 @@
-
{ "http-client": {} }
+  
{ "http-client": {} }
 
diff --git a/docs/configuration/http_server.html b/docs/configuration/http_server.html index 90333d17..05952dc6 100644 --- a/docs/configuration/http_server.html +++ b/docs/configuration/http_server.html @@ -75,7 +75,7 @@
-
{ "http-server": {} }
+  
{ "http-server": {} }
 
diff --git a/docs/configuration/igmp.html b/docs/configuration/igmp.html index 7de16b74..7c9e5cda 100644 --- a/docs/configuration/igmp.html +++ b/docs/configuration/igmp.html @@ -75,7 +75,7 @@
-
{ "igmp": {} }
+  
{ "igmp": {} }
 
diff --git a/docs/configuration/index.html b/docs/configuration/index.html index d0cfe9c9..5f369ecd 100644 --- a/docs/configuration/index.html +++ b/docs/configuration/index.html @@ -122,7 +122,7 @@

Interfacesinterfaces section.

The following configuration allows to overwrite the global default interface link settings.

-
{ "interfaces": {} }
+
{ "interfaces": {} }
 

@@ -191,7 +191,7 @@

Links

The link configuration is optional and allows to define per interface link configurations. An explicit link configuration with the global default settings is automatically generated if no link is defined for interface links referenced by interface functions.

-
{ "interfaces": { "links": [] } }
+
{ "interfaces": { "links": [] } }
 

@@ -276,7 +276,7 @@

Links

@@ -333,7 +333,7 @@

Link Aggregation (LAG)

Network Interfaces

-
{ "interfaces": { "network": [] } }
+
{ "interfaces": { "network": [] } }
 

@@ -410,7 +410,7 @@

Network Interfaces

Access Interfaces

-
{ "interfaces": { "access": [] } }
+
{ "interfaces": { "access": [] } }
 

@@ -631,7 +631,7 @@

Access Interfaces

A10NSP Interfaces

-
{ "interfaces": { "a10nsp": [] } }
+
{ "interfaces": { "a10nsp": [] } }
 

@@ -665,7 +665,7 @@

A10NSP Interfaces

Sessions

-
{ "sessions": {} }
+
{ "sessions": {} }
 

@@ -725,18 +725,18 @@

Sessionsiterate-vlan-outer enabled.

-

@@ -773,7 +773,7 @@

IPoE

PPPoE

-
{ "pppoe": {} }
+
{ "pppoe": {} }
 

@@ -822,7 +822,7 @@

PPPoE

PPP

-
{ "ppp": {} }
+
{ "ppp": {} }
 

@@ -846,7 +846,7 @@

PPP<

PPP Authentication

-
{ "ppp": { "authentication": {} } }
+
{ "ppp": { "authentication": {} } }
 
@@ -887,7 +887,7 @@

PPP Authentication

PPP LCP

-
{ "ppp": { "lcp": {} } }
+
{ "ppp": { "lcp": {} } }
 

@@ -936,7 +936,7 @@

PPP LCP

PPP IPCP (IPv4)

-
{ "ppp": { "ipcp": {} } }
+
{ "ppp": { "ipcp": {} } }
 

@@ -981,7 +981,7 @@

PPP IPCP (IPv4)

PPP IP6CP (IPv6)

-
{ "ppp": { "ip6cp": {} } }
+
{ "ppp": { "ip6cp": {} } }
 

@@ -1015,7 +1015,7 @@

PPP IP6CP (IPv6)

DHCP

-
{ "dhcp": {} }
+
{ "dhcp": {} }
 

@@ -1072,7 +1072,7 @@

DHCP

DHCPv6

-
{ "dhcpv6": {} }
+
{ "dhcpv6": {} }
 

@@ -1129,7 +1129,7 @@

DHCPv6

IGMP

-
{ "igmp": {} }
+
{ "igmp": {} }
 

@@ -1242,7 +1242,7 @@

IGMP

L2TPv2 Server (LNS)

-
{ "l2tp-server": [] }
+
{ "l2tp-server": [] }
 

@@ -1321,7 +1321,7 @@

L2TPv2 Server (LNS)

Traffic

-
{ "traffic": {} }
+
{ "traffic": {} }
 

@@ -1361,7 +1361,7 @@

Traffic

Traffic-Streams

-
{ "streams": {} }
+
{ "streams": {} }
 

@@ -1522,7 +1522,7 @@

Traffic-Streams

Session-Traffic

-
{ "session-traffic": {} }
+
{ "session-traffic": {} }
 

@@ -1575,7 +1575,7 @@

Session-Traffic

Access-Line

-
{ "access-line": {} }
+
{ "access-line": {} }
 

@@ -1620,7 +1620,7 @@

Access-Line

Access-Line-Profiles

-
{ "access-line-profiles": [] }
+
{ "access-line-profiles": [] }
 

@@ -1776,7 +1776,7 @@

Access-Line-Profiles

ISIS

-
{ "isis": {} }
+
{ "isis": {} }
 

@@ -1920,15 +1920,11 @@

ISIS

- - - -

ISIS teardown time in seconds

5

external-auto-refresh

Automatically refresh external LSP from MRT files

false

ISIS External

-
{ "isis": { "external": {} } }
+
{ "isis": { "external": {} } }
 
@@ -1944,6 +1940,14 @@

ISIS External

+ + + + + + + @@ -1953,7 +1957,7 @@

ISIS External

ISIS External Connections

-
{ "isis": { "external": { "connections": [] } } }
+
{ "isis": { "external": { "connections": [] } } }
 

purge

Automatically purge all external LSP during teardown

true

auto-refresh

Automatically refresh all external LSP

false

mrt-file

ISIS MRT file

@@ -1987,7 +1991,7 @@

ISIS External Connections

BGP

-
{ "bgp": {} }
+
{ "bgp": {} }
 

@@ -2052,7 +2056,7 @@

BGP<

LDP

-
{ "ldp": {} }
+
{ "ldp": {} }
 

@@ -2131,7 +2135,7 @@

LDP<

HTTP-Client

-
{ "http-client": {} }
+
{ "http-client": {} }
 

@@ -2184,7 +2188,7 @@

HTTP-Client

HTTP-Server

-
{ "http-server": {} }
+
{ "http-server": {} }
 

diff --git a/docs/configuration/interfaces.html b/docs/configuration/interfaces.html index c6a8dc9c..f74969e0 100644 --- a/docs/configuration/interfaces.html +++ b/docs/configuration/interfaces.html @@ -76,7 +76,7 @@

The following configuration allows to overwrite the global default interface link settings.

-
{ "interfaces": {} }
+
{ "interfaces": {} }
 
diff --git a/docs/configuration/interfaces_a10nsp.html b/docs/configuration/interfaces_a10nsp.html index 546b1b81..2e3f40dc 100644 --- a/docs/configuration/interfaces_a10nsp.html +++ b/docs/configuration/interfaces_a10nsp.html @@ -75,7 +75,7 @@
-
{ "interfaces": { "a10nsp": [] } }
+  
{ "interfaces": { "a10nsp": [] } }
 
diff --git a/docs/configuration/interfaces_access.html b/docs/configuration/interfaces_access.html index c1db50ce..889dbad2 100644 --- a/docs/configuration/interfaces_access.html +++ b/docs/configuration/interfaces_access.html @@ -75,7 +75,7 @@
-
{ "interfaces": { "access": [] } }
+  
{ "interfaces": { "access": [] } }
 
diff --git a/docs/configuration/interfaces_lag.html b/docs/configuration/interfaces_lag.html index d1a13fb9..acb782f0 100644 --- a/docs/configuration/interfaces_lag.html +++ b/docs/configuration/interfaces_lag.html @@ -75,7 +75,7 @@
-
{ "interfaces": { "lag": [] } }
+  
{ "interfaces": { "lag": [] } }
 
diff --git a/docs/configuration/interfaces_links.html b/docs/configuration/interfaces_links.html index 5301d7f6..3f9fe9fd 100644 --- a/docs/configuration/interfaces_links.html +++ b/docs/configuration/interfaces_links.html @@ -78,7 +78,7 @@

The link configuration is optional and allows to define per interface link configurations. An explicit link configuration with the global default settings is automatically generated if no link is defined for interface links referenced by interface functions.

-
{ "interfaces": { "links": [] } }
+
{ "interfaces": { "links": [] } }
 
diff --git a/docs/configuration/interfaces_network.html b/docs/configuration/interfaces_network.html index dac91d05..ee0bfd6c 100644 --- a/docs/configuration/interfaces_network.html +++ b/docs/configuration/interfaces_network.html @@ -75,7 +75,7 @@
-
{ "interfaces": { "network": [] } }
+  
{ "interfaces": { "network": [] } }
 
diff --git a/docs/configuration/ipoe.html b/docs/configuration/ipoe.html index 3c2d8845..a6a2176f 100644 --- a/docs/configuration/ipoe.html +++ b/docs/configuration/ipoe.html @@ -75,7 +75,7 @@
-
{ "ipoe": {} }
+  
{ "ipoe": {} }
 
diff --git a/docs/configuration/isis.html b/docs/configuration/isis.html index 0503f4f5..0086dbc7 100644 --- a/docs/configuration/isis.html +++ b/docs/configuration/isis.html @@ -75,7 +75,7 @@
-
{ "isis": {} }
+  
{ "isis": {} }
 
@@ -219,10 +219,6 @@ - - - -

ISIS teardown time in seconds

5

external-auto-refresh

Automatically refresh external LSP from MRT files

false

diff --git a/docs/configuration/isis_external.html b/docs/configuration/isis_external.html index c2f64af5..9274c8a8 100644 --- a/docs/configuration/isis_external.html +++ b/docs/configuration/isis_external.html @@ -75,7 +75,7 @@
-
{ "isis": { "external": {} } }
+  
{ "isis": { "external": {} } }
 
@@ -91,6 +91,14 @@ + + + + + + + + diff --git a/docs/configuration/isis_external_connections.html b/docs/configuration/isis_external_connections.html index 2ffc8315..bbe91356 100644 --- a/docs/configuration/isis_external_connections.html +++ b/docs/configuration/isis_external_connections.html @@ -75,7 +75,7 @@
-
{ "isis": { "external": { "connections": [] } } }
+  
{ "isis": { "external": { "connections": [] } } }
 

purge

Automatically purge all external LSP during teardown

true

auto-refresh

Automatically refresh all external LSP

false

mrt-file

ISIS MRT file

diff --git a/docs/configuration/ldp.html b/docs/configuration/ldp.html index 22402172..848027db 100644 --- a/docs/configuration/ldp.html +++ b/docs/configuration/ldp.html @@ -75,7 +75,7 @@
-
{ "ldp": {} }
+  
{ "ldp": {} }
 
diff --git a/docs/configuration/lns.html b/docs/configuration/lns.html index b762b7d5..cb270571 100644 --- a/docs/configuration/lns.html +++ b/docs/configuration/lns.html @@ -75,7 +75,7 @@
-
{ "l2tp-server": [] }
+  
{ "l2tp-server": [] }
 
diff --git a/docs/configuration/ospf.html b/docs/configuration/ospf.html index 525af4ac..12fbe8cf 100644 --- a/docs/configuration/ospf.html +++ b/docs/configuration/ospf.html @@ -75,7 +75,7 @@
-
{ "ospf": {} }
+  
{ "ospf": {} }
 
diff --git a/docs/configuration/ospf_external.html b/docs/configuration/ospf_external.html index faddd98c..5ff812a1 100644 --- a/docs/configuration/ospf_external.html +++ b/docs/configuration/ospf_external.html @@ -75,7 +75,7 @@
-
{ "ospf": { "external": {} } }
+  
{ "ospf": { "external": {} } }
 
@@ -91,7 +91,11 @@ - + + + + + diff --git a/docs/configuration/ospf_external_connections.html b/docs/configuration/ospf_external_connections.html index 9361f39f..5a387b9f 100644 --- a/docs/configuration/ospf_external_connections.html +++ b/docs/configuration/ospf_external_connections.html @@ -75,7 +75,7 @@
-
{ "ospf": { "external": { "connections": [] } } }
+  
{ "ospf": { "external": { "connections": [] } } }
 

mrt-file

purge

Automatically purge all external LSA during teardown

true

mrt-file

OSPF MRT file

diff --git a/docs/configuration/ppp.html b/docs/configuration/ppp.html index ae8045c2..98c27a31 100644 --- a/docs/configuration/ppp.html +++ b/docs/configuration/ppp.html @@ -75,7 +75,7 @@
-
{ "ppp": {} }
+  
{ "ppp": {} }
 
diff --git a/docs/configuration/ppp_authentication.html b/docs/configuration/ppp_authentication.html index b8fdd8d8..11abff16 100644 --- a/docs/configuration/ppp_authentication.html +++ b/docs/configuration/ppp_authentication.html @@ -75,7 +75,7 @@
-
{ "ppp": { "authentication": {} } }
+  
{ "ppp": { "authentication": {} } }
 
diff --git a/docs/configuration/ppp_ip6cp.html b/docs/configuration/ppp_ip6cp.html index 6c6243de..c391fb70 100644 --- a/docs/configuration/ppp_ip6cp.html +++ b/docs/configuration/ppp_ip6cp.html @@ -75,7 +75,7 @@
-
{ "ppp": { "ip6cp": {} } }
+  
{ "ppp": { "ip6cp": {} } }
 
diff --git a/docs/configuration/ppp_ipcp.html b/docs/configuration/ppp_ipcp.html index 158c37f1..8566aacb 100644 --- a/docs/configuration/ppp_ipcp.html +++ b/docs/configuration/ppp_ipcp.html @@ -75,7 +75,7 @@
-
{ "ppp": { "ipcp": {} } }
+  
{ "ppp": { "ipcp": {} } }
 
diff --git a/docs/configuration/ppp_lcp.html b/docs/configuration/ppp_lcp.html index d5230e66..21526923 100644 --- a/docs/configuration/ppp_lcp.html +++ b/docs/configuration/ppp_lcp.html @@ -75,7 +75,7 @@
-
{ "ppp": { "lcp": {} } }
+  
{ "ppp": { "lcp": {} } }
 
diff --git a/docs/configuration/pppoe.html b/docs/configuration/pppoe.html index 613b16c8..fa30c221 100644 --- a/docs/configuration/pppoe.html +++ b/docs/configuration/pppoe.html @@ -75,7 +75,7 @@
-
{ "pppoe": {} }
+  
{ "pppoe": {} }
 
diff --git a/docs/configuration/session_traffic.html b/docs/configuration/session_traffic.html index 9334b5ef..78b31aa4 100644 --- a/docs/configuration/session_traffic.html +++ b/docs/configuration/session_traffic.html @@ -75,7 +75,7 @@
-
{ "session-traffic": {} }
+  
{ "session-traffic": {} }
 
diff --git a/docs/configuration/sessions.html b/docs/configuration/sessions.html index d38dcfe7..0419fdc9 100644 --- a/docs/configuration/sessions.html +++ b/docs/configuration/sessions.html @@ -75,7 +75,7 @@
-
{ "sessions": {} }
+  
{ "sessions": {} }
 
@@ -135,12 +135,12 @@

Therefore the following configuration generates the sessions on VLAN (outer:inner) 1:3, 1:4, 2:3, 2:4 per default or alternative 1:3, 2:3, 1:4, 2:4 with iterate-vlan-outer enabled.

-
{
-    "outer-vlan-min": 1,
-    "outer-vlan-max": 2,
-    "inner-vlan-min": 3,
-    "inner-vlan-max": 4
-}
+
{
+    "outer-vlan-min": 1,
+    "outer-vlan-max": 2,
+    "inner-vlan-min": 3,
+    "inner-vlan-max": 4
+}
 
diff --git a/docs/configuration/streams.html b/docs/configuration/streams.html index bcda1a38..14e40d3a 100644 --- a/docs/configuration/streams.html +++ b/docs/configuration/streams.html @@ -75,7 +75,7 @@
-
{ "streams": {} }
+  
{ "streams": {} }
 
diff --git a/docs/configuration/traffic.html b/docs/configuration/traffic.html index f0030b0f..8a37d95e 100644 --- a/docs/configuration/traffic.html +++ b/docs/configuration/traffic.html @@ -75,7 +75,7 @@
-
{ "traffic": {} }
+  
{ "traffic": {} }
 
diff --git a/docs/controller.html b/docs/controller.html index 09d2bf04..f3004638 100644 --- a/docs/controller.html +++ b/docs/controller.html @@ -183,15 +183,15 @@

Start Test
{
-    "logging": true,
-    "logging_flags": [
-        "debug",
-        "ip"
-    ],
-    "report": true,
-    "session_count": 1000
-}
+
{
+    "logging": true,
+    "logging_flags": [
+        "debug",
+        "ip"
+    ],
+    "report": true,
+    "session_count": 1000
+}
 

All supported argument options are explained in the OpenAPI schema.

@@ -218,24 +218,24 @@

Command
{
-    "status": "ok",
-    "code": 200,
-    "session-info": {
-        "type": "pppoe",
-        "session-id": 1,
-        "session-state": "Established",
-        "...": "..."
-    }
-}
+
{
+    "status": "ok",
+    "code": 200,
+    "session-info": {
+        "type": "pppoe",
+        "session-id": 1,
+        "session-state": "Established",
+        "...": "..."
+    }
+}
 

The result code is passed as HTTP response status code.

-
{
-    "status": "warning",
-    "code": 404,
-    "message": "session not found"
-}
+
{
+    "status": "warning",
+    "code": 404,
+    "message": "session not found"
+}
 
@@ -262,13 +262,13 @@

Reports
{
-   "report": true,
-   "report_flags": [
-       "sessions",
-       "streams"
-   ]
-}
+
{
+   "report": true,
+   "report_flags": [
+       "sessions",
+       "streams"
+   ]
+}
 
@@ -287,14 +287,14 @@

Logs argument logging_flags allows for enabling log categories.

POST /api/v1/instances/<instance-name>/_start

-
{
-   "logging": true,
-   "logging_flags": [
-       "bgp",
-       "isis",
-       "ip"
-   ]
-}
+
{
+   "logging": true,
+   "logging_flags": [
+       "bgp",
+       "isis",
+       "ip"
+   ]
+}
 
@@ -315,9 +315,9 @@

PCAP the start with the argument option pcap_capture.

POST /api/v1/instances/<instance-name>/_start

-
{
-   "pcap_capture": true
-}
+
{
+   "pcap_capture": true
+}
 
@@ -343,17 +343,17 @@

Metrics
{
-    "logging": true,
-    "logging_flags": [
-        "error",
-        "ip"
-    ],
-    "metric_flags": [
-        "session_counters",
-        "interfaces"
-    ]
-}
+
{
+    "logging": true,
+    "logging_flags": [
+        "error",
+        "ip"
+    ],
+    "metric_flags": [
+        "session_counters",
+        "interfaces"
+    ]
+}
 

Currently, the following metrics are supported:

diff --git a/docs/http.html b/docs/http.html index c529bc01..857cab92 100644 --- a/docs/http.html +++ b/docs/http.html @@ -97,37 +97,37 @@

HTTP Client

Following is a basic HTTP client configuration example.

-
{
-    "interfaces": {
-        "access": [
-        {
-            "interface": "eth1",
-            "type": "ipoe",
-            "outer-vlan": 7,
-            "vlan-mode": "N:1",
-            "http-client-group-id": 1
-        }
-    ]
-    },
-    "dhcp": {
-        "enable": true,
-    },
-    "dhcpv6": {
-        "enable": true
-    },
-    "http-client": [
-        {
-            "http-client-group-id": 1,
-            "name": "CLIENT-1",
-            "url": "blaster.rtbrick.com",
-            "destination-ipv4-address": "10.10.10.10",
-            "destination-port": 80
-        }
-    ]
-}
+
{
+    "interfaces": {
+        "access": [
+        {
+            "interface": "eth1",
+            "type": "ipoe",
+            "outer-vlan": 7,
+            "vlan-mode": "N:1",
+            "http-client-group-id": 1
+        }
+    ]
+    },
+    "dhcp": {
+        "enable": true,
+    },
+    "dhcpv6": {
+        "enable": true
+    },
+    "http-client": [
+        {
+            "http-client-group-id": 1,
+            "name": "CLIENT-1",
+            "url": "blaster.rtbrick.com",
+            "destination-ipv4-address": "10.10.10.10",
+            "destination-port": 80
+        }
+    ]
+}
 
-
{ "http-client": {} }
+
{ "http-client": {} }
 

@@ -196,56 +196,56 @@

HTTP Client
$ sudo bngblaster-cli run.sock http-clients session-id 1 | jq .
 
-
{
-    "status": "ok",
-    "code": 200,
-    "http-clients": [
-        {
-            "session-id": 1,
-            "http-client-group-id": 1,
-            "name": "CLIENT-2",
-            "url": "blaster.test.de",
-            "destination-address": "10.10.10.12",
-            "destination-port": 80,
-            "state": "closed",
-            "response": {
-                "minor-version": 1,
-                "status": 302,
-                "msg": "Found\r\nLocation: https://github.com/rtbrick/bngblaster\r\nContent-Length: 0\r\n\r\n",
-                "headers": [
-                    {
-                        "name": "Location",
-                        "value": "https://github.com/rtbrick/bngblaster"
-                    },
-                    {
-                        "name": "Content-Length",
-                        "value": "0"
-                    }
-                ]
-            }
-        },
-        {
-            "session-id": 1,
-            "http-client-group-id": 1,
-            "name": "CLIENT-1",
-            "url": "blaster.test.de",
-            "destination-address": "10.10.10.11",
-            "destination-port": 80,
-            "state": "closed",
-            "response": {
-                "minor-version": 1,
-                "status": 200,
-                "msg": "OK\r\nServer: BNG-Blaster\r\n\r\n",
-                "headers": [
-                    {
-                        "name": "Server",
-                        "value": "BNG-Blaster"
-                    }
-                ]
-            }
-        }
-    ]
-}
+
{
+    "status": "ok",
+    "code": 200,
+    "http-clients": [
+        {
+            "session-id": 1,
+            "http-client-group-id": 1,
+            "name": "CLIENT-2",
+            "url": "blaster.test.de",
+            "destination-address": "10.10.10.12",
+            "destination-port": 80,
+            "state": "closed",
+            "response": {
+                "minor-version": 1,
+                "status": 302,
+                "msg": "Found\r\nLocation: https://github.com/rtbrick/bngblaster\r\nContent-Length: 0\r\n\r\n",
+                "headers": [
+                    {
+                        "name": "Location",
+                        "value": "https://github.com/rtbrick/bngblaster"
+                    },
+                    {
+                        "name": "Content-Length",
+                        "value": "0"
+                    }
+                ]
+            }
+        },
+        {
+            "session-id": 1,
+            "http-client-group-id": 1,
+            "name": "CLIENT-1",
+            "url": "blaster.test.de",
+            "destination-address": "10.10.10.11",
+            "destination-port": 80,
+            "state": "closed",
+            "response": {
+                "minor-version": 1,
+                "status": 200,
+                "msg": "OK\r\nServer: BNG-Blaster\r\n\r\n",
+                "headers": [
+                    {
+                        "name": "Server",
+                        "value": "BNG-Blaster"
+                    }
+                ]
+            }
+        }
+    ]
+}
 

The output above demonstrates the responses of two HTTP client instances. However, @@ -264,54 +264,54 @@

HTTP Client

HTTP Server

Following is a basic HTTP server configuration example.

-
{
-    "interfaces": {
-        "access": [
-            {
-                "interface": "eth1",
-                "type": "ipoe",
-                "outer-vlan": 7,
-                "vlan-mode": "N:1",
-                "http-client-group-id": 1
-            }
-        ]
-        "network": [
-            {
-                "interface": "eth2",
-                "address": "10.10.10.10.1/24",
-                "gateway": "10.10.10.1",
-                "address-ipv6": "fc66:1337:7331::1/64",
-                "gateway-ipv6": "fc66:1337:7331::2",
-            }
-        ]
-    },
-    "dhcp": {
-        "enable": true,
-    },
-    "dhcpv6": {
-        "enable": true
-    },
-    "http-client": [
-        {
-            "http-client-group-id": 1,
-            "name": "CLIENT-1",
-            "url": "blaster.rtbrick.com",
-            "destination-ipv4-address": "10.10.10.10",
-            "destination-port": 80
-        }
-    ],
-    "http-server": [
-        {
-            "name": "SERVER",
-            "network-interface": "eth2"
-            "ipv4-address": "10.10.10.10",
-            "port": 80,
-        }
-    ]
-}
+
{
+    "interfaces": {
+        "access": [
+            {
+                "interface": "eth1",
+                "type": "ipoe",
+                "outer-vlan": 7,
+                "vlan-mode": "N:1",
+                "http-client-group-id": 1
+            }
+        ]
+        "network": [
+            {
+                "interface": "eth2",
+                "address": "10.10.10.10.1/24",
+                "gateway": "10.10.10.1",
+                "address-ipv6": "fc66:1337:7331::1/64",
+                "gateway-ipv6": "fc66:1337:7331::2",
+            }
+        ]
+    },
+    "dhcp": {
+        "enable": true,
+    },
+    "dhcpv6": {
+        "enable": true
+    },
+    "http-client": [
+        {
+            "http-client-group-id": 1,
+            "name": "CLIENT-1",
+            "url": "blaster.rtbrick.com",
+            "destination-ipv4-address": "10.10.10.10",
+            "destination-port": 80
+        }
+    ],
+    "http-server": [
+        {
+            "name": "SERVER",
+            "network-interface": "eth2"
+            "ipv4-address": "10.10.10.10",
+            "port": 80,
+        }
+    ]
+}
 
-
{ "http-server": {} }
+
{ "http-server": {} }
 

diff --git a/docs/install.html b/docs/install.html index d1c5dbd4..d1ce8478 100644 --- a/docs/install.html +++ b/docs/install.html @@ -115,14 +115,21 @@

Dependencieslibdict fork and the following standard dependencies:

-
# install libdict for Ubuntu 22.04 LTS
+
# install libdict for Ubuntu 18.04 LTS
+wget https://github.com/rtbrick/libdict/releases/download/v1.0.1/libdict-debian.zip
+unzip libdict-debian.zip
+sudo dpkg -i libdict_1.0.1_amd64.deb
+sudo dpkg -i libdict-dev_1.0.1_amd64.deb
+
+# install libdict for Ubuntu 22.04 LTS
 wget https://github.com/rtbrick/libdict/releases/download/1.0.3/libdict-ubuntu-22.04.zip
 unzip libdict-ubuntu-22.04.zip
 sudo dpkg -i libdict_1.0.3_amd64.deb
 sudo dpkg -i libdict-dev_1.0.3_amd64.deb
 
-# standard dependencies
+# install other dependencies
 sudo apt install -y cmake \
+    libpcap-dev \
     libcunit1-dev \
     libncurses5-dev \
     libssl-dev \
diff --git a/docs/interfaces.html b/docs/interfaces.html
index 3751cfc5..8b69fc1e 100644
--- a/docs/interfaces.html
+++ b/docs/interfaces.html
@@ -129,20 +129,20 @@ 

Operating System Settings

@@ -240,13 +240,13 @@

Interface Settingsio-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.

-

@@ -339,13 +339,13 @@

Links

-
{
-    "interfaces": {
-        "tx-interval": 0.1,
-        "rx-interval": 0.1,
-        "io-slots": 4096,
-    }
-}
+
{
+    "interfaces": {
+        "tx-interval": 0.1,
+        "rx-interval": 0.1,
+        "io-slots": 4096,
+    }
+}
 
@@ -354,7 +354,7 @@

Links

The BNG Blaster supports link aggregation (LAG) with and without LACP. The created LAG interface can be used as the parent interface link for all kinds of interface functions.

-
{ "interfaces": { "lag": [] } }
+
{ "interfaces": { "lag": [] } }
 
@@ -408,34 +408,34 @@

Links

Note

Multithreaded IO is not supported for LAG member interfaces!

-

@@ -536,29 +536,29 @@

Links

The BNG Blaster supports multiple network interfaces as shown in the example below.

-
{
-    "interfaces": {
-        "tx-interval": 1,
-        "rx-interval": 1,
-        "io-slots": 4096,
-        "network": [
-            {
-                "interface": "eth2",
-                "address": "10.0.0.1/24",
-                "gateway": "10.0.0.2",
-                "address-ipv6": "fc66:1337:7331::1/64",
-                "gateway-ipv6": "fc66:1337:7331::2"
-            },
-            {
-                "interface": "eth3",
-                "address": "10.0.1.1/24",
-                "gateway": "10.0.1.2",
-                "address-ipv6": "fc66:1337:7331:1::1/64",
-                "gateway-ipv6": "fc66:1337:7331:1::2"
-            }
-        ],
-    }
-}
+
{
+    "interfaces": {
+        "tx-interval": 1,
+        "rx-interval": 1,
+        "io-slots": 4096,
+        "network": [
+            {
+                "interface": "eth2",
+                "address": "10.0.0.1/24",
+                "gateway": "10.0.0.2",
+                "address-ipv6": "fc66:1337:7331::1/64",
+                "gateway-ipv6": "fc66:1337:7331::2"
+            },
+            {
+                "interface": "eth3",
+                "address": "10.0.1.1/24",
+                "gateway": "10.0.1.2",
+                "address-ipv6": "fc66:1337:7331:1::1/64",
+                "gateway-ipv6": "fc66:1337:7331:1::2"
+            }
+        ],
+    }
+}
 

Using multiple network interfaces requires selecting which network interface @@ -569,47 +569,47 @@

Links same interface link.

VLAN-tagged network interfaces must be referenced by <interface>:<vlan> in the configuration to distinguish between them.

-
{
-    "interfaces": {
-        "network": [
-            {
-                "interface": "eth1",
-                "address": "10.100.0.2/24",
-                "gateway": "10.100.0.1",
-                "vlan": 100
-            },
-            {
-                "interface": "eth1",
-                "address": "10.200.0.2/24",
-                "gateway": "10.200.0.1",
-                "vlan": 200
-            }
-        ]
-    },
-    "streams": [
-        {
-            "name": "S100",
-            "type": "ipv4",
-            "pps": 10,
-            "network-interface": "eth1:100",
-            "destination-ipv4-address": "10.200.0.2"
-        },
-        {
-            "name": "S200",
-            "type": "ipv4",
-            "pps": 20,
-            "network-interface": "eth1:200",
-            "destination-ipv4-address": "10.100.0.2"
-        }
-    ]
-}
+
{
+    "interfaces": {
+        "network": [
+            {
+                "interface": "eth1",
+                "address": "10.100.0.2/24",
+                "gateway": "10.100.0.1",
+                "vlan": 100
+            },
+            {
+                "interface": "eth1",
+                "address": "10.200.0.2/24",
+                "gateway": "10.200.0.1",
+                "vlan": 200
+            }
+        ]
+    },
+    "streams": [
+        {
+            "name": "S100",
+            "type": "ipv4",
+            "pps": 10,
+            "network-interface": "eth1:100",
+            "destination-ipv4-address": "10.200.0.2"
+        },
+        {
+            "name": "S200",
+            "type": "ipv4",
+            "pps": 20,
+            "network-interface": "eth1:200",
+            "destination-ipv4-address": "10.100.0.2"
+        }
+    ]
+}
 

Access Interfaces

The access interfaces are used to emulate PPPoE and IPoE clients.

-
{ "interfaces": { "access": [] } }
+
{ "interfaces": { "access": [] } }
 
@@ -835,107 +835,107 @@

Links

Untagged

-
{
-    "access": {
-        "interface": "eth1",
-        "outer-vlan-min": 0,
-        "outer-vlan-max": 0,
-        "inner-vlan-min": 0,
-        "inner-vlan-max": 0
-    }
-}
+
{
+    "access": {
+        "interface": "eth1",
+        "outer-vlan-min": 0,
+        "outer-vlan-max": 0,
+        "inner-vlan-min": 0,
+        "inner-vlan-max": 0
+    }
+}
 

Single Tagged

-
{
-    "access": {
-        "interface": "eth1",
-        "outer-vlan-min": 1,
-        "outer-vlan-max": 4049,
-        "inner-vlan-min": 0,
-        "inner-vlan-max": 0
-    }
-}
+
{
+    "access": {
+        "interface": "eth1",
+        "outer-vlan-min": 1,
+        "outer-vlan-max": 4049,
+        "inner-vlan-min": 0,
+        "inner-vlan-max": 0
+    }
+}
 

Double Tagged

-
{
-    "access": {
-        "interface": "eth1",
-        "outer-vlan-min": 1,
-        "outer-vlan-max": 4049,
-        "inner-vlan-min": 7,
-        "inner-vlan-max": 7
-    }
-}
+
{
+    "access": {
+        "interface": "eth1",
+        "outer-vlan-min": 1,
+        "outer-vlan-max": 4049,
+        "inner-vlan-min": 7,
+        "inner-vlan-max": 7
+    }
+}
 

Triple Tagged

-
{
-    "access": {
-        "interface": "eth1",
-        "outer-vlan-min": 10,
-        "outer-vlan-max": 20,
-        "inner-vlan-min": 128,
-        "inner-vlan-max": 4000,
-        "third-vlan": 7
-    }
-}
+
{
+    "access": {
+        "interface": "eth1",
+        "outer-vlan-min": 10,
+        "outer-vlan-max": 20,
+        "inner-vlan-min": 128,
+        "inner-vlan-max": 4000,
+        "third-vlan": 7
+    }
+}
 

The BNG Blaster supports also multiple access interfaces or VLAN ranges as shown in the example below.

-
{
-    "access": [
-        {
-            "interface": "eth1",
-            "type": "pppoe",
-            "session-group-id": 1,
-            "username": "pta@rtbrick.com",
-            "outer-vlan-min": 1000,
-            "outer-vlan-max": 1999,
-            "inner-vlan-min": 7,
-            "inner-vlan-max": 7
-        },
-        {
-            "interface": "eth1",
-            "type": "pppoe",
-            "session-group-id": 2,
-            "username": "l2tp@rtbrick.com",
-            "outer-vlan-min": 2000,
-            "outer-vlan-max": 2999,
-            "inner-vlan-min": 7,
-            "inner-vlan-max": 7
-        },
-        {
-            "interface": "eth3",
-            "type": "pppoe",
-            "session-group-id": 1,
-            "username": "test@rtbrick.com",
-            "outer-vlan-min": 128,
-            "outer-vlan-max": 4000,
-            "inner-vlan-min": 7,
-            "inner-vlan-max": 7
-        },
-        {
-            "interface": "eth4",
-            "type": "ipoe",
-            "session-group-id": 3,
-            "outer-vlan-min": 8,
-            "outer-vlan-max": 9,
-            "address": "200.0.0.1",
-            "address-iter": "0.0.0.4",
-            "gateway": "200.0.0.2",
-            "gateway-iter": "0.0.0.4"
-        }
-    ]
-}
+
{
+    "access": [
+        {
+            "interface": "eth1",
+            "type": "pppoe",
+            "session-group-id": 1,
+            "username": "pta@rtbrick.com",
+            "outer-vlan-min": 1000,
+            "outer-vlan-max": 1999,
+            "inner-vlan-min": 7,
+            "inner-vlan-max": 7
+        },
+        {
+            "interface": "eth1",
+            "type": "pppoe",
+            "session-group-id": 2,
+            "username": "l2tp@rtbrick.com",
+            "outer-vlan-min": 2000,
+            "outer-vlan-max": 2999,
+            "inner-vlan-min": 7,
+            "inner-vlan-max": 7
+        },
+        {
+            "interface": "eth3",
+            "type": "pppoe",
+            "session-group-id": 1,
+            "username": "test@rtbrick.com",
+            "outer-vlan-min": 128,
+            "outer-vlan-max": 4000,
+            "inner-vlan-min": 7,
+            "inner-vlan-max": 7
+        },
+        {
+            "interface": "eth4",
+            "type": "ipoe",
+            "session-group-id": 3,
+            "outer-vlan-min": 8,
+            "outer-vlan-max": 9,
+            "address": "200.0.0.1",
+            "address-iter": "0.0.0.4",
+            "gateway": "200.0.0.2",
+            "gateway-iter": "0.0.0.4"
+        }
+    ]
+}
 

The configuration attributes for username, password, agent-remote-id, agent-circuit-id, @@ -949,25 +949,25 @@

Triple TaggedN:1 assigns one VLAN to N subscribers and therefore only one VLAN combination is supported per access interface section using this mode.

-
{
-    "access": [
-        {
-            "interface": "eth1",
-            "type": "pppoe",
-            "vlan-mode": "N:1",
-            "username": "test@rtbrick.com",
-            "outer-vlan": 7
-        },
-        {
-            "interface": "eth2",
-            "type": "pppoe",
-            "vlan-mode": "N:1",
-            "username": "test@rtbrick.com",
-            "outer-vlan": 2000,
-            "inner-vlan": 7,
-        },
-    ]
-}
+
{
+    "access": [
+        {
+            "interface": "eth1",
+            "type": "pppoe",
+            "vlan-mode": "N:1",
+            "username": "test@rtbrick.com",
+            "outer-vlan": 7
+        },
+        {
+            "interface": "eth2",
+            "type": "pppoe",
+            "vlan-mode": "N:1",
+            "username": "test@rtbrick.com",
+            "outer-vlan": 2000,
+            "inner-vlan": 7,
+        },
+    ]
+}
 

One or more access interface blocks can be grouped using the session-group-id, @@ -975,30 +975,30 @@

Triple Tagged

@@ -1042,24 +1042,24 @@

Triple Tagged
{
-    "interfaces": {
-        "tx-interval": 1,
-        "rx-interval": 1,
-        "a10nsp": [
-            {
-                "interface": "eth4",
-                "qinq": true,
-                "mac": "02:00:00:ff:ff:01"
-            },
-            {
-                "interface": "eth5",
-                "qinq": false,
-                "mac": "02:00:00:ff:ff:02"
-            }
-        ],
-    }
-}
+
{
+    "interfaces": {
+        "tx-interval": 1,
+        "rx-interval": 1,
+        "a10nsp": [
+            {
+                "interface": "eth4",
+                "qinq": true,
+                "mac": "02:00:00:ff:ff:01"
+            },
+            {
+                "interface": "eth5",
+                "qinq": false,
+                "mac": "02:00:00:ff:ff:02"
+            }
+        ],
+    }
+}
 
diff --git a/docs/performance.html b/docs/performance.html index 69463434..ca65443b 100644 --- a/docs/performance.html +++ b/docs/performance.html @@ -90,19 +90,19 @@ Every I/O thread will handle only one interface and direction. It is also possible to start multiple threads for the same interface and direction.

The number of I/O threads can be configured globally for all interfaces or per interface link.

-
{
-    "interfaces": {
-        "rx-threads": 2,
-        "tx-threads": 1,
-        "links": [
-            {
-                "interface": "eth1",
-                "rx-threads": 4,
-                "tx-threads": 2,
-            }
-        ]
-    }
-}
+
{
+    "interfaces": {
+        "rx-threads": 2,
+        "tx-threads": 1,
+        "links": [
+            {
+                "interface": "eth1",
+                "rx-threads": 4,
+                "tx-threads": 2,
+            }
+        ]
+    }
+}
 

The configuration per interface link allows asymmetric thread pools. Assuming you would send @@ -133,15 +133,15 @@ This can be increased by changing the TX interval. With a TX interval of 0.1, the single stream performance increases to 320K PPS. The max burst size is should not be increased to prevent microbursts.

The following settings are recommended for most tests with 1M PPS or beyond.

-
-
{
-    "interfaces": {
-        "tx-interval": 0.1,
-        "rx-interval": 0.1,
-        "links": [
-            {
-                "interface": "0000:23:00.0",
-                "io-mode": "dpdk",
-                "rx-threads": 4,
-                "rx-cpuset": [4,5,6,7],
-                "tx-threads": 3,
-                "tx-cpuset": [1,2,3]
-            },
-            {
-                "interface": "0000:23:00.2",
-                "io-mode": "dpdk",
-                "rx-threads": 4,
-                "rx-cpuset": [12,13,14,15],
-                "tx-threads": 3,
-                "tx-cpuset": [9,10,11]
-            }
-        ],
-        "a10nsp": [
-            {
-                "__comment__": "PPPoE Server",
-                "interface": "0000:23:00.0"
-            }
-        ],
-        "access": [
-            {
-                "__comment__": "PPPoE Client",
-                "interface": "0000:23:00.2",
-                "type": "pppoe",
-                "outer-vlan-min": 1,
-                "outer-vlan-max": 4000,
-                "inner-vlan-min": 1,
-                "inner-vlan-max": 4000,
-                "stream-group-id": 1
-            }
-        ]
-    },
-    "pppoe": {
-        "reconnect": true
-    },
-    "dhcpv6": {
-        "enable": false
-    },
-    "streams": [
-        {
-            "stream-group-id": 1,
-            "name": "S1",
-            "type": "ipv4",
-            "direction": "both",
-            "pps": 1000,
-            "a10nsp-interface": "0000:23:00.0"
-        }
-    ]
-}
+
{
+    "interfaces": {
+        "tx-interval": 0.1,
+        "rx-interval": 0.1,
+        "links": [
+            {
+                "interface": "0000:23:00.0",
+                "io-mode": "dpdk",
+                "rx-threads": 4,
+                "rx-cpuset": [4,5,6,7],
+                "tx-threads": 3,
+                "tx-cpuset": [1,2,3]
+            },
+            {
+                "interface": "0000:23:00.2",
+                "io-mode": "dpdk",
+                "rx-threads": 4,
+                "rx-cpuset": [12,13,14,15],
+                "tx-threads": 3,
+                "tx-cpuset": [9,10,11]
+            }
+        ],
+        "a10nsp": [
+            {
+                "__comment__": "PPPoE Server",
+                "interface": "0000:23:00.0"
+            }
+        ],
+        "access": [
+            {
+                "__comment__": "PPPoE Client",
+                "interface": "0000:23:00.2",
+                "type": "pppoe",
+                "outer-vlan-min": 1,
+                "outer-vlan-max": 4000,
+                "inner-vlan-min": 1,
+                "inner-vlan-max": 4000,
+                "stream-group-id": 1
+            }
+        ]
+    },
+    "pppoe": {
+        "reconnect": true
+    },
+    "dhcpv6": {
+        "enable": false
+    },
+    "streams": [
+        {
+            "stream-group-id": 1,
+            "name": "S1",
+            "type": "ipv4",
+            "direction": "both",
+            "pps": 1000,
+            "a10nsp-interface": "0000:23:00.0"
+        }
+    ]
+}
 
diff --git a/docs/quickstart.html b/docs/quickstart.html index c11bdf14..8fdd22a6 100644 --- a/docs/quickstart.html +++ b/docs/quickstart.html @@ -109,48 +109,48 @@

PPPoE bidirectional traffic between client and server. There is also one more traffic stream bound to the sessions.

pppoe.json:

-
{
-    "interfaces": {
-        "a10nsp": [
-            {
-                "__comment__": "PPPoE Server",
-                "interface": "veth1.1"
-            }
-        ],
-        "access": [
-            {
-                "__comment__": "PPPoE Client",
-                "interface": "veth1.2",
-                "type": "pppoe",
-                "outer-vlan-min": 1,
-                "outer-vlan-max": 4000,
-                "inner-vlan": 7,
-                "stream-group-id": 1
-            }
-        ]
-    },
-    "pppoe": {
-        "reconnect": true
-    },
-    "dhcpv6": {
-        "enable": false
-    },
-    "session-traffic": {
-        "ipv4-pps": 1
-    },
-    "streams": [
-        {
-            "stream-group-id": 1,
-            "name": "S1",
-            "type": "ipv4",
-            "direction": "both",
-            "priority": 128,
-            "length": 256,
-            "pps": 1,
-            "a10nsp-interface": "veth1.1"
-        }
-    ]
-}
+
{
+    "interfaces": {
+        "a10nsp": [
+            {
+                "__comment__": "PPPoE Server",
+                "interface": "veth1.1"
+            }
+        ],
+        "access": [
+            {
+                "__comment__": "PPPoE Client",
+                "interface": "veth1.2",
+                "type": "pppoe",
+                "outer-vlan-min": 1,
+                "outer-vlan-max": 4000,
+                "inner-vlan": 7,
+                "stream-group-id": 1
+            }
+        ]
+    },
+    "pppoe": {
+        "reconnect": true
+    },
+    "dhcpv6": {
+        "enable": false
+    },
+    "session-traffic": {
+        "ipv4-pps": 1
+    },
+    "streams": [
+        {
+            "stream-group-id": 1,
+            "name": "S1",
+            "type": "ipv4",
+            "direction": "both",
+            "priority": 128,
+            "length": 256,
+            "pps": 1,
+            "a10nsp-interface": "veth1.1"
+        }
+    ]
+}
 

Now you can start the BNG Blaster with this configuration.

@@ -188,55 +188,55 @@

PPPoE
$ sudo bngblaster-cli run.sock session-info session-id 1 | jq .
 
-
{
-    "status": "ok",
-    "code": 200,
-    "session-info": {
-        "type": "pppoe",
-        "session-id": 1,
-        "session-state": "Established",
-        "interface": "veth1.2",
-        "outer-vlan": 1,
-        "inner-vlan": 7,
-        "mac": "02:00:00:00:00:01",
-        "username": "user1@rtbrick.com",
-        "reply-message": "BNG-Blaster-A10NSP",
-        "lcp-state": "Opened",
-        "ipcp-state": "Opened",
-        "ip6cp-state": "Opened",
-        "ipv4-address": "10.10.10.10",
-        "ipv4-dns1": "10.12.12.10",
-        "ipv4-dns2": "10.13.13.10",
-        "dhcpv6-state": "Init",
-        "tx-packets": 38,
-        "rx-packets": 35,
-        "rx-fragmented-packets": 0,
-        "session-traffic": {
-            "total-flows": 2,
-            "verified-flows": 2,
-            "downstream-ipv4-flow-id": 2,
-            "downstream-ipv4-tx-packets": 13,
-            "downstream-ipv4-rx-packets": 13,
-            "downstream-ipv4-rx-first-seq": 1,
-            "downstream-ipv4-loss": 0,
-            "downstream-ipv4-wrong-session": 0,
-            "upstream-ipv4-flow-id": 1,
-            "upstream-ipv4-tx-packets": 13,
-            "upstream-ipv4-rx-packets": 13,
-            "upstream-ipv4-rx-first-seq": 1,
-            "upstream-ipv4-loss": 0,
-            "upstream-ipv4-wrong-session": 0
-        },
-        "a10nsp": {
-            "interface": "veth1.1",
-            "s-vlan": 1,
-            "qinq-send": false,
-            "qinq-received": false,
-            "tx-packets": 35,
-            "rx-packets": 38
-        }
-    }
-}
+
{
+    "status": "ok",
+    "code": 200,
+    "session-info": {
+        "type": "pppoe",
+        "session-id": 1,
+        "session-state": "Established",
+        "interface": "veth1.2",
+        "outer-vlan": 1,
+        "inner-vlan": 7,
+        "mac": "02:00:00:00:00:01",
+        "username": "user1@rtbrick.com",
+        "reply-message": "BNG-Blaster-A10NSP",
+        "lcp-state": "Opened",
+        "ipcp-state": "Opened",
+        "ip6cp-state": "Opened",
+        "ipv4-address": "10.10.10.10",
+        "ipv4-dns1": "10.12.12.10",
+        "ipv4-dns2": "10.13.13.10",
+        "dhcpv6-state": "Init",
+        "tx-packets": 38,
+        "rx-packets": 35,
+        "rx-fragmented-packets": 0,
+        "session-traffic": {
+            "total-flows": 2,
+            "verified-flows": 2,
+            "downstream-ipv4-flow-id": 2,
+            "downstream-ipv4-tx-packets": 13,
+            "downstream-ipv4-rx-packets": 13,
+            "downstream-ipv4-rx-first-seq": 1,
+            "downstream-ipv4-loss": 0,
+            "downstream-ipv4-wrong-session": 0,
+            "upstream-ipv4-flow-id": 1,
+            "upstream-ipv4-tx-packets": 13,
+            "upstream-ipv4-rx-packets": 13,
+            "upstream-ipv4-rx-first-seq": 1,
+            "upstream-ipv4-loss": 0,
+            "upstream-ipv4-wrong-session": 0
+        },
+        "a10nsp": {
+            "interface": "veth1.1",
+            "s-vlan": 1,
+            "qinq-send": false,
+            "qinq-received": false,
+            "tx-packets": 35,
+            "rx-packets": 38
+        }
+    }
+}
 

You can also try other commands to get familiar with the API.

@@ -248,51 +248,51 @@

DHCP

Let’s repeat all the steps from the PPPoE example before but with the following IPoE DHCP configuration.

dhcp.json:

-
{
-    "interfaces": {
-        "a10nsp": [
-            {
-                "__comment__": "DHCP Server",
-                "interface": "veth1.1"
-            }
-        ],
-        "access": [
-            {
-                "__comment__": "DHCP Client",
-                "interface": "veth1.2",
-                "type": "ipoe",
-                "ipv6": false,
-                "outer-vlan-min": 1,
-                "outer-vlan-max": 4000,
-                "inner-vlan": 7,
-                "stream-group-id": 1
-            }
-        ]
-    },
-    "access-line": {
-        "agent-remote-id": "DEU.RTBRICK.{session-global}",
-        "agent-circuit-id": "0.0.0.0/0.0.0.0 eth 0:{session-global}"
-    },
-    "dhcp": {
-        "enable": true,
-        "broadcast": false
-    },
-    "session-traffic": {
-        "ipv4-pps": 1
-    },
-    "streams": [
-        {
-            "stream-group-id": 1,
-            "name": "S1",
-            "type": "ipv4",
-            "direction": "both",
-            "priority": 128,
-            "length": 256,
-            "pps": 1,
-            "a10nsp-interface": "veth1.1"
-        }
-    ]
-}
+
{
+    "interfaces": {
+        "a10nsp": [
+            {
+                "__comment__": "DHCP Server",
+                "interface": "veth1.1"
+            }
+        ],
+        "access": [
+            {
+                "__comment__": "DHCP Client",
+                "interface": "veth1.2",
+                "type": "ipoe",
+                "ipv6": false,
+                "outer-vlan-min": 1,
+                "outer-vlan-max": 4000,
+                "inner-vlan": 7,
+                "stream-group-id": 1
+            }
+        ]
+    },
+    "access-line": {
+        "agent-remote-id": "DEU.RTBRICK.{session-global}",
+        "agent-circuit-id": "0.0.0.0/0.0.0.0 eth 0:{session-global}"
+    },
+    "dhcp": {
+        "enable": true,
+        "broadcast": false
+    },
+    "session-traffic": {
+        "ipv4-pps": 1
+    },
+    "streams": [
+        {
+            "stream-group-id": 1,
+            "name": "S1",
+            "type": "ipv4",
+            "direction": "both",
+            "priority": 128,
+            "length": 256,
+            "pps": 1,
+            "a10nsp-interface": "veth1.1"
+        }
+    ]
+}
 
@@ -302,85 +302,85 @@

ISIS ISIS topology attached to R1 (isis.mrt`).

ISIS Quickstart

isis.json:

-
{
-    "interfaces": {
-        "network": [
-            {
-                "interface": "veth1.1",
-                "address": "10.0.0.1/24",
-                "gateway": "10.0.0.2",
-                "address-ipv6": "fc66:1337:7331::1/64",
-                "gateway-ipv6": "fc66:1337:7331::2",
-                "isis-instance-id": 1,
-                "isis-level": 1
-            },
-            {
-                "interface": "veth1.2",
-                "address": "10.0.0.2/24",
-                "gateway": "10.0.0.1",
-                "address-ipv6": "fc66:1337:7331::2/64",
-                "gateway-ipv6": "fc66:1337:7331::1",
-                "isis-instance-id": 2,
-                "isis-level": 1
-            }
-        ]
+
{
+    "interfaces": {
+        "network": [
+            {
+                "interface": "veth1.1",
+                "address": "10.0.0.1/24",
+                "gateway": "10.0.0.2",
+                "address-ipv6": "fc66:1337:7331::1/64",
+                "gateway-ipv6": "fc66:1337:7331::2",
+                "isis-instance-id": 1,
+                "isis-level": 1
+            },
+            {
+                "interface": "veth1.2",
+                "address": "10.0.0.2/24",
+                "gateway": "10.0.0.1",
+                "address-ipv6": "fc66:1337:7331::2/64",
+                "gateway-ipv6": "fc66:1337:7331::1",
+                "isis-instance-id": 2,
+                "isis-level": 1
+            }
+        ]
 
-    },
-    "isis": [
-        {
-            "instance-id": 1,
-            "area": [
-                "49.0001/24",
-                "49.0002/24"
-            ],
-            "system-id": "1921.6800.1001",
-            "router-id": "192.168.1.1",
-            "hostname": "R1",
-            "sr-base": 1000,
-            "sr-range": 100,
-            "sr-node-sid": 1,
-            "level1-auth-key": "secret123",
-            "level1-auth-type": "md5",
-            "external": {
-                "mrt-file": "isis.mrt",
-                "connections": [
-                    {
-                        "system-id": "1921.6800.0000.00",
-                        "l1-metric": 1000,
-                        "l2-metric": 2000
-                    }
-                ]
-            }
-        },
-        {
-            "instance-id": 2,
-            "area": [
-                "49.0001/24",
-                "49.0002/24"
-            ],
-            "system-id": "1921.6800.1002",
-            "router-id": "192.168.1.2",
-            "hostname": "R2",
-            "sr-base": 1000,
-            "sr-range": 100,
-            "sr-node-sid": 2,
-            "level1-auth-key": "secret123",
-            "level1-auth-type": "md5"
-        }
-    ],
-    "streams": [
-        {
-            "name": "RAW1",
-            "type": "ipv4",
-            "direction": "downstream",
-            "priority": 128,
-            "destination-ipv4-address": "192.168.1.2",
-            "length": 256,
-            "pps": 1,
-            "network-interface": "veth1.1"
-        }
-    ]
-}
+    },
+    "isis": [
+        {
+            "instance-id": 1,
+            "area": [
+                "49.0001/24",
+                "49.0002/24"
+            ],
+            "system-id": "1921.6800.1001",
+            "router-id": "192.168.1.1",
+            "hostname": "R1",
+            "sr-base": 1000,
+            "sr-range": 100,
+            "sr-node-sid": 1,
+            "level1-auth-key": "secret123",
+            "level1-auth-type": "md5",
+            "external": {
+                "mrt-file": "isis.mrt",
+                "connections": [
+                    {
+                        "system-id": "1921.6800.0000.00",
+                        "l1-metric": 1000,
+                        "l2-metric": 2000
+                    }
+                ]
+            }
+        },
+        {
+            "instance-id": 2,
+            "area": [
+                "49.0001/24",
+                "49.0002/24"
+            ],
+            "system-id": "1921.6800.1002",
+            "router-id": "192.168.1.2",
+            "hostname": "R2",
+            "sr-base": 1000,
+            "sr-range": 100,
+            "sr-node-sid": 2,
+            "level1-auth-key": "secret123",
+            "level1-auth-type": "md5"
+        }
+    ],
+    "streams": [
+        {
+            "name": "RAW1",
+            "type": "ipv4",
+            "direction": "downstream",
+            "priority": 128,
+            "destination-ipv4-address": "192.168.1.2",
+            "length": 256,
+            "pps": 1,
+            "network-interface": "veth1.1"
+        }
+    ]
+}
 

Now use the included tool lspgen to generate the attached ISIS topology.

@@ -422,32 +422,32 @@

ISIS
$ sudo bngblaster-cli run.sock isis-adjacencies
 
-

bgp.json:

-
{
-    "interfaces": {
-        "tx-interval": 1,
-        "rx-interval": 1,
-        "io-slots": 4096,
-        "network": {
-            "interface": "veth1.2",
-            "address": "192.168.92.2/24",
-            "gateway": "192.168.92.1"
-        }
-    },
-    "bgp": [
-        {
-            "local-ipv4-address": "192.168.92.2",
-            "peer-ipv4-address": "192.168.92.1",
-            "raw-update-file": "out.bgp",
-            "local-as": 65001,
-            "peer-as": 65001
-        }
-    ]
-}
+
{
+    "interfaces": {
+        "tx-interval": 1,
+        "rx-interval": 1,
+        "io-slots": 4096,
+        "network": {
+            "interface": "veth1.2",
+            "address": "192.168.92.2/24",
+            "gateway": "192.168.92.1"
+        }
+    },
+    "bgp": [
+        {
+            "local-ipv4-address": "192.168.92.2",
+            "peer-ipv4-address": "192.168.92.1",
+            "raw-update-file": "out.bgp",
+            "local-as": 65001,
+            "peer-as": 65001
+        }
+    ]
+}
 

Use the included tool bgpupdate to generate a BGP update file @@ -558,34 +558,34 @@

BGP<
$ sudo bngblaster-cli run.sock bgp-sessions
 
-
{
-    "status": "ok",
-    "code": 200,
-    "bgp-sessions": [
-        {
-            "interface": "veth1.2",
-            "local-address": "192.168.92.2",
-            "local-id": "1.2.3.4",
-            "local-as": 65001,
-            "local-hold-time": 90,
-            "peer-address": "192.168.92.1",
-            "peer-id": "1.92.168.192",
-            "peer-as": 65001,
-            "peer-hold-time": 90,
-            "state": "established",
-            "raw-update-state": "done",
-            "raw-update-file": "out.bgp",
-            "stats": {
-                "messages-rx": 3,
-                "messages-tx": 38,
-                "keepalive-rx": 2,
-                "keepalive-tx": 1,
-                "update-rx": 0,
-                "update-tx": 36
-            }
-        }
-    ]
-}
+
{
+    "status": "ok",
+    "code": 200,
+    "bgp-sessions": [
+        {
+            "interface": "veth1.2",
+            "local-address": "192.168.92.2",
+            "local-id": "1.2.3.4",
+            "local-as": 65001,
+            "local-hold-time": 90,
+            "peer-address": "192.168.92.1",
+            "peer-id": "1.92.168.192",
+            "peer-as": 65001,
+            "peer-hold-time": 90,
+            "state": "established",
+            "raw-update-state": "done",
+            "raw-update-file": "out.bgp",
+            "stats": {
+                "messages-rx": 3,
+                "messages-tx": 38,
+                "keepalive-rx": 2,
+                "keepalive-tx": 1,
+                "update-rx": 0,
+                "update-tx": 36
+            }
+        }
+    ]
+}
 

You can also try other commands to get familiar with the API.

@@ -630,15 +630,15 @@

BGP<
sudo bngblaster-cli run.sock bgp-raw-update file update.bgp peer-ipv4-address 192.168.92.1 local-ipv4-address 192.168.92.2
 
-
{
-    "status": "ok",
-    "code": 200,
-    "bgp-raw-update": {
-        "started": 1,
-        "skipped": 0,
-        "filtered": 0
-    }
-}
+
{
+    "status": "ok",
+    "code": 200,
+    "bgp-raw-update": {
+        "started": 1,
+        "skipped": 0,
+        "filtered": 0
+    }
+}
 

The parameters peer-ipv4-address and local-ipv4-address are used to filter to which sessions @@ -660,48 +660,48 @@

BGP<

LDP

In the following example, we create two connected LDP instances.

ldp.json:

-
{
-    "interfaces": {
-        "capture-include-streams": true,
-        "network": [
-            {
-                "interface": "veth1.1",
-                "address": "10.0.0.1/24",
-                "gateway": "10.0.0.2",
-                "ldp-instance-id": 1
-            },
-            {
-                "interface": "veth1.2",
-                "address": "10.0.0.2/24",
-                "gateway": "10.0.0.1",
-                "ldp-instance-id": 2
-            }
-        ]
-    },
-    "ldp": [
-        {
-            "instance-id": 1,
-            "lsr-id": "10.2.3.1",
-            "raw-update-file": "out.ldp"
-        },
-        {
-            "instance-id": 2,
-            "lsr-id": "10.2.3.2"
-        }
-    ],
-    "streams": [
-        {
-            "name": "S1",
-            "type": "ipv4",
-            "direction": "downstream",
-            "priority": 128,
-            "network-interface": "veth1.2",
-            "destination-ipv4-address": "100.0.0.1",
-            "ldp-ipv4-lookup-address": "13.37.0.1",
-            "pps": 1
-        }
-    ]
-}
+
{
+    "interfaces": {
+        "capture-include-streams": true,
+        "network": [
+            {
+                "interface": "veth1.1",
+                "address": "10.0.0.1/24",
+                "gateway": "10.0.0.2",
+                "ldp-instance-id": 1
+            },
+            {
+                "interface": "veth1.2",
+                "address": "10.0.0.2/24",
+                "gateway": "10.0.0.1",
+                "ldp-instance-id": 2
+            }
+        ]
+    },
+    "ldp": [
+        {
+            "instance-id": 1,
+            "lsr-id": "10.2.3.1",
+            "raw-update-file": "out.ldp"
+        },
+        {
+            "instance-id": 2,
+            "lsr-id": "10.2.3.2"
+        }
+    ],
+    "streams": [
+        {
+            "name": "S1",
+            "type": "ipv4",
+            "direction": "downstream",
+            "priority": 128,
+            "network-interface": "veth1.2",
+            "destination-ipv4-address": "100.0.0.1",
+            "ldp-ipv4-lookup-address": "13.37.0.1",
+            "pps": 1
+        }
+    ]
+}
 

Use the included tool ldpupdate to generate an LDP update file @@ -719,38 +719,38 @@

Network Traffic
{
-    "interfaces": {
-        "network": [
-            {
-                "interface": "veth1.1",
-                "address": "192.168.0.1/24",
-                "gateway": "192.168.0.2"
-            },
-            {
-                "interface": "veth1.2",
-                "address": "192.168.0.2/24",
-                "gateway": "192.168.0.1"
-            }
-        ]
-    },
-    "streams": [
-        {
-            "name": "S1",
-            "type": "ipv4",
-            "pps": 1,
-            "network-interface": "veth1.1",
-            "destination-ipv4-address": "192.168.0.2"
-        },
-        {
-            "name": "S2",
-            "type": "ipv4",
-            "pps": 1,
-            "network-interface": "veth1.2",
-            "destination-ipv4-address": "192.168.0.1"
-        }
-    ]
-}
+
{
+    "interfaces": {
+        "network": [
+            {
+                "interface": "veth1.1",
+                "address": "192.168.0.1/24",
+                "gateway": "192.168.0.2"
+            },
+            {
+                "interface": "veth1.2",
+                "address": "192.168.0.2/24",
+                "gateway": "192.168.0.1"
+            }
+        ]
+    },
+    "streams": [
+        {
+            "name": "S1",
+            "type": "ipv4",
+            "pps": 1,
+            "network-interface": "veth1.1",
+            "destination-ipv4-address": "192.168.0.2"
+        },
+        {
+            "name": "S2",
+            "type": "ipv4",
+            "pps": 1,
+            "network-interface": "veth1.2",
+            "destination-ipv4-address": "192.168.0.1"
+        }
+    ]
+}
 

Now you can start the BNG Blaster with stream reports enabled to get extensive diff --git a/docs/reports.html b/docs/reports.html index 10f88299..53ff4907 100644 --- a/docs/reports.html +++ b/docs/reports.html @@ -333,297 +333,297 @@

Standard Output ReportsJSON Reports

A detailed JSON report is generated if enabled using the optional argument -J <filename>.

-
{
-  "report": {
-    "sessions": 1000,
-    "sessions-pppoe": 1000,
-    "sessions-ipoe": 0,
-    "sessions-established": 1000,
-    "sessions-flapped": 0,
-    "setup-time-ms": 55661,
-    "setup-rate-cps": 17.97,
-    "setup-rate-cps-min": 15.01,
-    "setup-rate-cps-avg": 18.03,
-    "setup-rate-cps-max": 19.36,
-    "dhcp-sessions-established": 0,
-    "dhcpv6-sessions-established": 1000,
-    "interfaces": [
-      {
-        "name": "SN-6-L1",
-        "type": "Interface",
-        "tx-packets": 111410,
-        "tx-bytes": 12654727,
-        "tx-polled": 0,
-        "tx-io-error": 0,
-        "rx-packets": 110161,
-        "rx-bytes": 12300031,
-        "rx-protocol-error": 0,
-        "rx-unknown": 5,
-        "rx-polled": 12300031,
-        "rx-io-error": 0
-      },
-      {
-        "name": "SN-5-L1",
-        "type": "Interface",
-        "tx-packets": 108580,
-        "tx-bytes": 12360218,
-        "tx-polled": 0,
-        "tx-io-error": 0,
-        "rx-packets": 106881,
-        "rx-bytes": 11982029,
-        "rx-protocol-error": 0,
-        "rx-unknown": 5,
-        "rx-polled": 11982029,
-        "rx-io-error": 0
-      },
-      {
-        "name": "SN-2-S1",
-        "type": "Interface",
-        "tx-packets": 197523,
-        "tx-bytes": 21009053,
-        "tx-polled": 0,
-        "tx-io-error": 0,
-        "rx-packets": 188259,
-        "rx-bytes": 20425245,
-        "rx-protocol-error": 0,
-        "rx-unknown": 0,
-        "rx-polled": 20425245,
-        "rx-io-error": 0
-      }
-    ],
-    "network-interfaces": [
-      {
-        "name": "SN-2-S1",
-        "tx-packets": 197523,
-        "tx-multicast-packets": 0,
-        "rx-packets": 188259,
-        "tx-stream-packets": 197340,
-        "rx-stream-packets": 188120,
-        "rx-stream-packets-loss": 0,
-        "tx-session-packets-ipv4": 65784,
-        "rx-session-packets-ipv4": 64537,
-        "rx-session-packets-ipv4-loss": 0,
-        "tx-session-packets-ipv4-avg-pps-max": 1000,
-        "rx-session-packets-ipv4-avg-pps-max": 1000,
-        "tx-session-packets-ipv6": 65784,
-        "rx-session-packets-ipv6": 61793,
-        "rx-session-packets-ipv6-loss": 0,
-        "tx-session-packets-ipv6-avg-pps-max": 1000,
-        "rx-session-packets-ipv6-avg-pps-max": 1000,
-        "tx-session-packets-ipv6pd": 65772,
-        "rx-session-packets-ipv6pd": 61790,
-        "rx-session-packets-ipv6pd-loss": 0,
-        "tx-session-packets-ipv6pd-avg-pps-max": 1000,
-        "rx-session-packets-ipv6pd-avg-pps-max": 1000
-      }
-    ],
-    "access-interfaces": [
-      {
-        "name": "SN-6-L1",
-        "tx-packets": 111410,
-        "rx-packets": 110156,
-        "rx-multicast-packets": 0,
-        "rx-multicast-packets-loss": 0,
-        "tx-stream-packets": 99949,
-        "rx-stream-packets": 97909,
-        "rx-stream-packets-loss": 0,
-        "tx-session-packets-ipv4": 33319,
-        "rx-session-packets-ipv4": 32641,
-        "rx-session-packets-ipv4-loss": 0,
-        "rx-session-packets-ipv4-wrong-session": 0,
-        "tx-session-packets-ipv4-avg-pps-max": 500,
-        "rx-session-packets-ipv4-avg-pps-max": 500,
-        "tx-session-packets-ipv6": 33319,
-        "rx-session-packets-ipv6": 32635,
-        "rx-session-packets-ipv6-loss": 0,
-        "rx-session-packets-ipv6-wrong-session": 0,
-        "tx-session-packets-ipv6-avg-pps-max": 500,
-        "rx-session-packets-ipv6avg-pps-max": 500,
-        "tx-session-packets-ipv6pd": 33311,
-        "rx-session-packets-ipv6pd": 32633,
-        "rx-session-packets-ipv6pd-loss": 0,
-        "rx-session-packets-ipv6pd-wrong-session": 0,
-        "tx-session-packets-ipv6pd-avg-pps-max": 500,
-        "rx-session-packets-ipv6pd-avg-pps-max": 500,
-        "protocol-stats": {
-          "tx-arp": 0,
-          "rx-arp": 0,
-          "tx-padi": 1104,
-          "rx-pado": 500,
-          "tx-padr": 500,
-          "rx-pads": 500,
-          "tx-padt": 127,
-          "rx-padt": 373,
-          "tx-lcp": 4880,
-          "rx-lcp": 4880,
-          "tx-pap": 0,
-          "rx-pap": 0,
-          "tx-chap": 1700,
-          "rx-chap": 1000,
-          "tx-ipcp": 1500,
-          "rx-ipcp": 1500,
-          "tx-ip6cp": 1000,
-          "rx-ip6cp": 1000,
-          "tx-igmp": 0,
-          "rx-igmp": 0,
-          "tx-icmp": 0,
-          "rx-icmp": 0,
-          "tx-dhcp": 0,
-          "rx-dhcp": 0,
-          "tx-dhcpv6": 500,
-          "rx-dhcpv6": 500,
-          "tx-icmpv6": 1000,
-          "rx-icmpv6": 1840,
-          "rx-ipv4-fragmented": 0,
-          "lcp-echo-timeout": 0,
-          "lcp-request-timeout": 0,
-          "ipcp-request-timeout": 0,
-          "ip6cp-request-timeout": 0,
-          "pap-timeout": 0,
-          "chap-timeout": 350,
-          "dhcp-timeout": 0,
-          "dhcpv6-timeout": 0,
-          "icmpv6-rs-timeout": 0
-        }
-      },
-      {
-        "name": "SN-5-L1",
-        "tx-packets": 108580,
-        "rx-packets": 106876,
-        "rx-multicast-packets": 0,
-        "rx-multicast-packets-loss": 0,
-        "tx-stream-packets": 97391,
-        "rx-stream-packets": 95685,
-        "rx-stream-packets-loss": 0,
-        "tx-session-packets-ipv4": 32465,
-        "rx-session-packets-ipv4": 31896,
-        "rx-session-packets-ipv4-loss": 0,
-        "rx-session-packets-ipv4-wrong-session": 0,
-        "tx-session-packets-ipv4-avg-pps-max": 500,
-        "rx-session-packets-ipv4-avg-pps-max": 500,
-        "tx-session-packets-ipv6": 32465,
-        "rx-session-packets-ipv6": 31895,
-        "rx-session-packets-ipv6-loss": 0,
-        "rx-session-packets-ipv6-wrong-session": 0,
-        "tx-session-packets-ipv6-avg-pps-max": 500,
-        "rx-session-packets-ipv6avg-pps-max": 500,
-        "tx-session-packets-ipv6pd": 32461,
-        "rx-session-packets-ipv6pd": 31894,
-        "rx-session-packets-ipv6pd-loss": 0,
-        "rx-session-packets-ipv6pd-wrong-session": 0,
-        "tx-session-packets-ipv6pd-avg-pps-max": 500,
-        "rx-session-packets-ipv6pd-avg-pps-max": 500,
-        "protocol-stats": {
-          "tx-arp": 0,
-          "rx-arp": 0,
-          "tx-padi": 1102,
-          "rx-pado": 500,
-          "tx-padr": 844,
-          "rx-pads": 500,
-          "tx-padt": 78,
-          "rx-padt": 422,
-          "tx-lcp": 4343,
-          "rx-lcp": 4343,
-          "tx-pap": 822,
-          "rx-pap": 500,
-          "tx-chap": 0,
-          "rx-chap": 0,
-          "tx-ipcp": 1500,
-          "rx-ipcp": 1500,
-          "tx-ip6cp": 1000,
-          "rx-ip6cp": 1000,
-          "tx-igmp": 0,
-          "rx-igmp": 0,
-          "tx-icmp": 0,
-          "rx-icmp": 0,
-          "tx-dhcp": 0,
-          "rx-dhcp": 0,
-          "tx-dhcpv6": 500,
-          "rx-dhcpv6": 500,
-          "tx-icmpv6": 1000,
-          "rx-icmpv6": 1816,
-          "rx-ipv4-fragmented": 0,
-          "lcp-echo-timeout": 0,
-          "lcp-request-timeout": 0,
-          "ipcp-request-timeout": 0,
-          "ip6cp-request-timeout": 0,
-          "pap-timeout": 322,
-          "chap-timeout": 0,
-          "dhcp-timeout": 0,
-          "dhcpv6-timeout": 0,
-          "icmpv6-rs-timeout": 0
-        }
-      }
-    ],
-    "session-traffic": {
-      "config-ipv4-pps": 1,
-      "config-ipv6-pps": 1,
-      "config-ipv6pd-pps": 1,
-      "total-flows": 6000,
-      "verified-flows": 6000,
-      "verified-flows-downstream-ipv4": 1000,
-      "verified-flows-downstream-ipv6": 1000,
-      "verified-flows-downstream-ipv6pd": 1000,
-      "verified-flows-upstream-ipv4": 1000,
-      "verified-flows-upstream-ipv6": 1000,
-      "verified-flows-upstream-ipv6pd": 1000,
-      "violated-flows-downstream-ipv4-3s": 200,
-      "violated-flows-downstream-ipv6-3s": 206,
-      "violated-flows-downstream-ipv6pd-3s": 197,
-      "violated-flows-upstream-ipv4-3s": 200,
-      "violated-flows-upstream-ipv6-3s": 206,
-      "violated-flows-upstream-ipv6pd-3s": 197,
-      "violated-flows-downstream-ipv4-2s": 224,
-      "violated-flows-downstream-ipv6-2s": 218,
-      "violated-flows-downstream-ipv6pd-2s": 227,
-      "violated-flows-upstream-ipv4-2s": 224,
-      "violated-flows-upstream-ipv6-2s": 218,
-      "violated-flows-upstream-ipv6pd-2s": 227,
-      "violated-flows-downstream-ipv4-1s": 199,
-      "violated-flows-downstream-ipv6-1s": 200,
-      "violated-flows-downstream-ipv6pd-1s": 200,
-      "violated-flows-upstream-ipv4-1s": 199,
-      "violated-flows-upstream-ipv6-1s": 200,
-      "violated-flows-upstream-ipv6pd-1s": 200,
-      "first-seq-rx-downstream-ipv4-min": 1,
-      "first-seq-rx-downstream-ipv4-avg": 2,
-      "first-seq-rx-downstream-ipv4-max": 4,
-      "first-seq-rx-downstream-ipv6-min": 1,
-      "first-seq-rx-downstream-ipv6-avg": 2,
-      "first-seq-rx-downstream-ipv6-max": 4,
-      "first-seq-rx-downstream-ipv6pd-min": 1,
-      "first-seq-rx-downstream-ipv6pd-avg": 2,
-      "first-seq-rx-downstream-ipv6pd-max": 4,
-      "first-seq-rx-upstream-ipv4-min": 1,
-      "first-seq-rx-upstream-ipv4-avg": 2,
-      "first-seq-rx-upstream-ipv4-max": 4,
-      "first-seq-rx-upstream-ipv6-min": 1,
-      "first-seq-rx-upstream-ipv6-avg": 2,
-      "first-seq-rx-upstream-ipv6-max": 4,
-      "first-seq-rx-upstream-ipv6pd-min": 1,
-      "first-seq-rx-upstream-ipv6pd-avg": 2,
-      "first-seq-rx-upstream-ipv6pd-max": 4,
-      "first-seq-rx-downstream-ipv4-min-seconds": 1,
-      "first-seq-rx-downstream-ipv4-avg-seconds": 2,
-      "first-seq-rx-downstream-ipv4-max-seconds": 4,
-      "first-seq-rx-downstream-ipv6-min-seconds": 1,
-      "first-seq-rx-downstream-ipv6-avg-seconds": 2,
-      "first-seq-rx-downstream-ipv6-max-seconds": 4,
-      "first-seq-rx-downstream-ipv6pd-min-seconds": 1,
-      "first-seq-rx-downstream-ipv6pd-avg-seconds": 2,
-      "first-seq-rx-downstream-ipv6pd-max-seconds": 4,
-      "first-seq-rx-upstream-ipv4-min-seconds": 1,
-      "first-seq-rx-upstream-ipv4-avg-seconds": 2,
-      "first-seq-rx-upstream-ipv4-max-seconds": 4,
-      "first-seq-rx-upstream-ipv6-min-seconds": 1,
-      "first-seq-rx-upstream-ipv6-avg-seconds": 2,
-      "first-seq-rx-upstream-ipv6-max-seconds": 4,
-      "first-seq-rx-upstream-ipv6pd-min-seconds": 1,
-      "first-seq-rx-upstream-ipv6pd-avg-seconds": 2,
-      "first-seq-rx-upstream-ipv6pd-max-seconds": 4
-    }
-  }
-}
+
{
+  "report": {
+    "sessions": 1000,
+    "sessions-pppoe": 1000,
+    "sessions-ipoe": 0,
+    "sessions-established": 1000,
+    "sessions-flapped": 0,
+    "setup-time-ms": 55661,
+    "setup-rate-cps": 17.97,
+    "setup-rate-cps-min": 15.01,
+    "setup-rate-cps-avg": 18.03,
+    "setup-rate-cps-max": 19.36,
+    "dhcp-sessions-established": 0,
+    "dhcpv6-sessions-established": 1000,
+    "interfaces": [
+      {
+        "name": "SN-6-L1",
+        "type": "Interface",
+        "tx-packets": 111410,
+        "tx-bytes": 12654727,
+        "tx-polled": 0,
+        "tx-io-error": 0,
+        "rx-packets": 110161,
+        "rx-bytes": 12300031,
+        "rx-protocol-error": 0,
+        "rx-unknown": 5,
+        "rx-polled": 12300031,
+        "rx-io-error": 0
+      },
+      {
+        "name": "SN-5-L1",
+        "type": "Interface",
+        "tx-packets": 108580,
+        "tx-bytes": 12360218,
+        "tx-polled": 0,
+        "tx-io-error": 0,
+        "rx-packets": 106881,
+        "rx-bytes": 11982029,
+        "rx-protocol-error": 0,
+        "rx-unknown": 5,
+        "rx-polled": 11982029,
+        "rx-io-error": 0
+      },
+      {
+        "name": "SN-2-S1",
+        "type": "Interface",
+        "tx-packets": 197523,
+        "tx-bytes": 21009053,
+        "tx-polled": 0,
+        "tx-io-error": 0,
+        "rx-packets": 188259,
+        "rx-bytes": 20425245,
+        "rx-protocol-error": 0,
+        "rx-unknown": 0,
+        "rx-polled": 20425245,
+        "rx-io-error": 0
+      }
+    ],
+    "network-interfaces": [
+      {
+        "name": "SN-2-S1",
+        "tx-packets": 197523,
+        "tx-multicast-packets": 0,
+        "rx-packets": 188259,
+        "tx-stream-packets": 197340,
+        "rx-stream-packets": 188120,
+        "rx-stream-packets-loss": 0,
+        "tx-session-packets-ipv4": 65784,
+        "rx-session-packets-ipv4": 64537,
+        "rx-session-packets-ipv4-loss": 0,
+        "tx-session-packets-ipv4-avg-pps-max": 1000,
+        "rx-session-packets-ipv4-avg-pps-max": 1000,
+        "tx-session-packets-ipv6": 65784,
+        "rx-session-packets-ipv6": 61793,
+        "rx-session-packets-ipv6-loss": 0,
+        "tx-session-packets-ipv6-avg-pps-max": 1000,
+        "rx-session-packets-ipv6-avg-pps-max": 1000,
+        "tx-session-packets-ipv6pd": 65772,
+        "rx-session-packets-ipv6pd": 61790,
+        "rx-session-packets-ipv6pd-loss": 0,
+        "tx-session-packets-ipv6pd-avg-pps-max": 1000,
+        "rx-session-packets-ipv6pd-avg-pps-max": 1000
+      }
+    ],
+    "access-interfaces": [
+      {
+        "name": "SN-6-L1",
+        "tx-packets": 111410,
+        "rx-packets": 110156,
+        "rx-multicast-packets": 0,
+        "rx-multicast-packets-loss": 0,
+        "tx-stream-packets": 99949,
+        "rx-stream-packets": 97909,
+        "rx-stream-packets-loss": 0,
+        "tx-session-packets-ipv4": 33319,
+        "rx-session-packets-ipv4": 32641,
+        "rx-session-packets-ipv4-loss": 0,
+        "rx-session-packets-ipv4-wrong-session": 0,
+        "tx-session-packets-ipv4-avg-pps-max": 500,
+        "rx-session-packets-ipv4-avg-pps-max": 500,
+        "tx-session-packets-ipv6": 33319,
+        "rx-session-packets-ipv6": 32635,
+        "rx-session-packets-ipv6-loss": 0,
+        "rx-session-packets-ipv6-wrong-session": 0,
+        "tx-session-packets-ipv6-avg-pps-max": 500,
+        "rx-session-packets-ipv6avg-pps-max": 500,
+        "tx-session-packets-ipv6pd": 33311,
+        "rx-session-packets-ipv6pd": 32633,
+        "rx-session-packets-ipv6pd-loss": 0,
+        "rx-session-packets-ipv6pd-wrong-session": 0,
+        "tx-session-packets-ipv6pd-avg-pps-max": 500,
+        "rx-session-packets-ipv6pd-avg-pps-max": 500,
+        "protocol-stats": {
+          "tx-arp": 0,
+          "rx-arp": 0,
+          "tx-padi": 1104,
+          "rx-pado": 500,
+          "tx-padr": 500,
+          "rx-pads": 500,
+          "tx-padt": 127,
+          "rx-padt": 373,
+          "tx-lcp": 4880,
+          "rx-lcp": 4880,
+          "tx-pap": 0,
+          "rx-pap": 0,
+          "tx-chap": 1700,
+          "rx-chap": 1000,
+          "tx-ipcp": 1500,
+          "rx-ipcp": 1500,
+          "tx-ip6cp": 1000,
+          "rx-ip6cp": 1000,
+          "tx-igmp": 0,
+          "rx-igmp": 0,
+          "tx-icmp": 0,
+          "rx-icmp": 0,
+          "tx-dhcp": 0,
+          "rx-dhcp": 0,
+          "tx-dhcpv6": 500,
+          "rx-dhcpv6": 500,
+          "tx-icmpv6": 1000,
+          "rx-icmpv6": 1840,
+          "rx-ipv4-fragmented": 0,
+          "lcp-echo-timeout": 0,
+          "lcp-request-timeout": 0,
+          "ipcp-request-timeout": 0,
+          "ip6cp-request-timeout": 0,
+          "pap-timeout": 0,
+          "chap-timeout": 350,
+          "dhcp-timeout": 0,
+          "dhcpv6-timeout": 0,
+          "icmpv6-rs-timeout": 0
+        }
+      },
+      {
+        "name": "SN-5-L1",
+        "tx-packets": 108580,
+        "rx-packets": 106876,
+        "rx-multicast-packets": 0,
+        "rx-multicast-packets-loss": 0,
+        "tx-stream-packets": 97391,
+        "rx-stream-packets": 95685,
+        "rx-stream-packets-loss": 0,
+        "tx-session-packets-ipv4": 32465,
+        "rx-session-packets-ipv4": 31896,
+        "rx-session-packets-ipv4-loss": 0,
+        "rx-session-packets-ipv4-wrong-session": 0,
+        "tx-session-packets-ipv4-avg-pps-max": 500,
+        "rx-session-packets-ipv4-avg-pps-max": 500,
+        "tx-session-packets-ipv6": 32465,
+        "rx-session-packets-ipv6": 31895,
+        "rx-session-packets-ipv6-loss": 0,
+        "rx-session-packets-ipv6-wrong-session": 0,
+        "tx-session-packets-ipv6-avg-pps-max": 500,
+        "rx-session-packets-ipv6avg-pps-max": 500,
+        "tx-session-packets-ipv6pd": 32461,
+        "rx-session-packets-ipv6pd": 31894,
+        "rx-session-packets-ipv6pd-loss": 0,
+        "rx-session-packets-ipv6pd-wrong-session": 0,
+        "tx-session-packets-ipv6pd-avg-pps-max": 500,
+        "rx-session-packets-ipv6pd-avg-pps-max": 500,
+        "protocol-stats": {
+          "tx-arp": 0,
+          "rx-arp": 0,
+          "tx-padi": 1102,
+          "rx-pado": 500,
+          "tx-padr": 844,
+          "rx-pads": 500,
+          "tx-padt": 78,
+          "rx-padt": 422,
+          "tx-lcp": 4343,
+          "rx-lcp": 4343,
+          "tx-pap": 822,
+          "rx-pap": 500,
+          "tx-chap": 0,
+          "rx-chap": 0,
+          "tx-ipcp": 1500,
+          "rx-ipcp": 1500,
+          "tx-ip6cp": 1000,
+          "rx-ip6cp": 1000,
+          "tx-igmp": 0,
+          "rx-igmp": 0,
+          "tx-icmp": 0,
+          "rx-icmp": 0,
+          "tx-dhcp": 0,
+          "rx-dhcp": 0,
+          "tx-dhcpv6": 500,
+          "rx-dhcpv6": 500,
+          "tx-icmpv6": 1000,
+          "rx-icmpv6": 1816,
+          "rx-ipv4-fragmented": 0,
+          "lcp-echo-timeout": 0,
+          "lcp-request-timeout": 0,
+          "ipcp-request-timeout": 0,
+          "ip6cp-request-timeout": 0,
+          "pap-timeout": 322,
+          "chap-timeout": 0,
+          "dhcp-timeout": 0,
+          "dhcpv6-timeout": 0,
+          "icmpv6-rs-timeout": 0
+        }
+      }
+    ],
+    "session-traffic": {
+      "config-ipv4-pps": 1,
+      "config-ipv6-pps": 1,
+      "config-ipv6pd-pps": 1,
+      "total-flows": 6000,
+      "verified-flows": 6000,
+      "verified-flows-downstream-ipv4": 1000,
+      "verified-flows-downstream-ipv6": 1000,
+      "verified-flows-downstream-ipv6pd": 1000,
+      "verified-flows-upstream-ipv4": 1000,
+      "verified-flows-upstream-ipv6": 1000,
+      "verified-flows-upstream-ipv6pd": 1000,
+      "violated-flows-downstream-ipv4-3s": 200,
+      "violated-flows-downstream-ipv6-3s": 206,
+      "violated-flows-downstream-ipv6pd-3s": 197,
+      "violated-flows-upstream-ipv4-3s": 200,
+      "violated-flows-upstream-ipv6-3s": 206,
+      "violated-flows-upstream-ipv6pd-3s": 197,
+      "violated-flows-downstream-ipv4-2s": 224,
+      "violated-flows-downstream-ipv6-2s": 218,
+      "violated-flows-downstream-ipv6pd-2s": 227,
+      "violated-flows-upstream-ipv4-2s": 224,
+      "violated-flows-upstream-ipv6-2s": 218,
+      "violated-flows-upstream-ipv6pd-2s": 227,
+      "violated-flows-downstream-ipv4-1s": 199,
+      "violated-flows-downstream-ipv6-1s": 200,
+      "violated-flows-downstream-ipv6pd-1s": 200,
+      "violated-flows-upstream-ipv4-1s": 199,
+      "violated-flows-upstream-ipv6-1s": 200,
+      "violated-flows-upstream-ipv6pd-1s": 200,
+      "first-seq-rx-downstream-ipv4-min": 1,
+      "first-seq-rx-downstream-ipv4-avg": 2,
+      "first-seq-rx-downstream-ipv4-max": 4,
+      "first-seq-rx-downstream-ipv6-min": 1,
+      "first-seq-rx-downstream-ipv6-avg": 2,
+      "first-seq-rx-downstream-ipv6-max": 4,
+      "first-seq-rx-downstream-ipv6pd-min": 1,
+      "first-seq-rx-downstream-ipv6pd-avg": 2,
+      "first-seq-rx-downstream-ipv6pd-max": 4,
+      "first-seq-rx-upstream-ipv4-min": 1,
+      "first-seq-rx-upstream-ipv4-avg": 2,
+      "first-seq-rx-upstream-ipv4-max": 4,
+      "first-seq-rx-upstream-ipv6-min": 1,
+      "first-seq-rx-upstream-ipv6-avg": 2,
+      "first-seq-rx-upstream-ipv6-max": 4,
+      "first-seq-rx-upstream-ipv6pd-min": 1,
+      "first-seq-rx-upstream-ipv6pd-avg": 2,
+      "first-seq-rx-upstream-ipv6pd-max": 4,
+      "first-seq-rx-downstream-ipv4-min-seconds": 1,
+      "first-seq-rx-downstream-ipv4-avg-seconds": 2,
+      "first-seq-rx-downstream-ipv4-max-seconds": 4,
+      "first-seq-rx-downstream-ipv6-min-seconds": 1,
+      "first-seq-rx-downstream-ipv6-avg-seconds": 2,
+      "first-seq-rx-downstream-ipv6-max-seconds": 4,
+      "first-seq-rx-downstream-ipv6pd-min-seconds": 1,
+      "first-seq-rx-downstream-ipv6pd-avg-seconds": 2,
+      "first-seq-rx-downstream-ipv6pd-max-seconds": 4,
+      "first-seq-rx-upstream-ipv4-min-seconds": 1,
+      "first-seq-rx-upstream-ipv4-avg-seconds": 2,
+      "first-seq-rx-upstream-ipv4-max-seconds": 4,
+      "first-seq-rx-upstream-ipv6-min-seconds": 1,
+      "first-seq-rx-upstream-ipv6-avg-seconds": 2,
+      "first-seq-rx-upstream-ipv6-max-seconds": 4,
+      "first-seq-rx-upstream-ipv6pd-min-seconds": 1,
+      "first-seq-rx-upstream-ipv6pd-avg-seconds": 2,
+      "first-seq-rx-upstream-ipv6pd-max-seconds": 4
+    }
+  }
+}
 

The optional argument -j sessions allows to include per session statistics diff --git a/docs/routing/bgp.html b/docs/routing/bgp.html index 7c19fc01..e7888791 100644 --- a/docs/routing/bgp.html +++ b/docs/routing/bgp.html @@ -103,29 +103,29 @@

Configuration

Following is an example of a BGP configuration with one session.

-
{
-    "interfaces": {
-        "network": [
-            {
-                "interface": "eth1",
-                "address": "10.0.1.2/24",
-                "gateway": "10.0.1.1"
-            }
-        ]
-    },
-    "bgp": [
-        {
-            "local-ipv4-address": "10.0.1.2",
-            "peer-ipv4-address": "10.0.1.1",
-            "raw-update-file": "test.bgp",
-            "local-as": 65001,
-            "peer-as": 65001
-        }
-    ]
-}
+
{
+    "interfaces": {
+        "network": [
+            {
+                "interface": "eth1",
+                "address": "10.0.1.2/24",
+                "gateway": "10.0.1.1"
+            }
+        ]
+    },
+    "bgp": [
+        {
+            "local-ipv4-address": "10.0.1.2",
+            "peer-ipv4-address": "10.0.1.1",
+            "raw-update-file": "test.bgp",
+            "local-as": 65001,
+            "peer-as": 65001
+        }
+    ]
+}
 
-
{ "bgp": {} }
+
{ "bgp": {} }
 

@@ -257,21 +257,21 @@

RAW Update Filesbgp-raw-update-files configuration.

-
{
-    "bgp": [
-        {
-            "local-ipv4-address": "10.0.1.2",
-            "peer-ipv4-address": "10.0.1.1",
-            "raw-update-file": "start.bgp",
-            "local-as": 65001,
-            "peer-as": 65001
-        }
-    ],
-    "bgp-raw-update-files": [
-        "update1.bgp",
-        "update2.bgp"
-    ]
-}
+
{
+    "bgp": [
+        {
+            "local-ipv4-address": "10.0.1.2",
+            "peer-ipv4-address": "10.0.1.1",
+            "raw-update-file": "start.bgp",
+            "local-as": 65001,
+            "peer-as": 65001
+        }
+    ],
+    "bgp-raw-update-files": [
+        "update1.bgp",
+        "update2.bgp"
+    ]
+}
 

Incremental updates not listed here will be loaded dynamically as soon diff --git a/docs/routing/isis.html b/docs/routing/isis.html index d909484a..87f51968 100644 --- a/docs/routing/isis.html +++ b/docs/routing/isis.html @@ -118,51 +118,51 @@

Configuration

Following an example ISIS configuration with one instance attached to two network interfaces.

-
{
-    "interfaces": {
-        "network": [
-            {
-                "interface": "eth1",
-                "address": "10.0.1.2/24",
-                "gateway": "10.0.1.1",
-                "address-ipv6": "fc66:1337:7331:1::2/64",
-                "gateway-ipv6": "fc66:1337:7331:1::1",
-                "isis-instance-id": 1,
-                "isis-level": 1,
-                "isis-l1-metric": 100,
-            },
-            {
-                "interface": "eth2",
-                "address": "10.0.2.2/24",
-                "gateway": "10.0.2.1",
-                "address-ipv6": "fc66:1337:7331:2::2/64",
-                "gateway-ipv6": "fc66:1337:7331:2::1",
-                "isis-instance-id": 1
-            }
-        ]
-    },
-    "isis": [
-        {
-            "instance-id": 1,
-            "system-id": "1921.6800.1001",
-            "router-id": "192.168.1.1",
-            "hostname": "R1",
-            "area": [
-                "49.0001/24",
-                "49.0002/24"
-            ],
-            "hello-padding": true,
-            "lsp-lifetime": 65535,
-            "level1-auth-key": "secret",
-            "level1-auth-type": "md5",
-            "sr-base": 2000,
-            "sr-range": 3600
-        }
-    ]
-}
+
{
+    "interfaces": {
+        "network": [
+            {
+                "interface": "eth1",
+                "address": "10.0.1.2/24",
+                "gateway": "10.0.1.1",
+                "address-ipv6": "fc66:1337:7331:1::2/64",
+                "gateway-ipv6": "fc66:1337:7331:1::1",
+                "isis-instance-id": 1,
+                "isis-level": 1,
+                "isis-l1-metric": 100,
+            },
+            {
+                "interface": "eth2",
+                "address": "10.0.2.2/24",
+                "gateway": "10.0.2.1",
+                "address-ipv6": "fc66:1337:7331:2::2/64",
+                "gateway-ipv6": "fc66:1337:7331:2::1",
+                "isis-instance-id": 1
+            }
+        ]
+    },
+    "isis": [
+        {
+            "instance-id": 1,
+            "system-id": "1921.6800.1001",
+            "router-id": "192.168.1.1",
+            "hostname": "R1",
+            "area": [
+                "49.0001/24",
+                "49.0002/24"
+            ],
+            "hello-padding": true,
+            "lsp-lifetime": 65535,
+            "level1-auth-key": "secret",
+            "level1-auth-type": "md5",
+            "sr-base": 2000,
+            "sr-range": 3600
+        }
+    ]
+}
 
-
{ "isis": {} }
+
{ "isis": {} }
 

@@ -306,10 +306,6 @@

Configuration

- - -

external-auto-refresh

Automatically refresh external LSP from MRT files

false

The support for multiple instances allows different use cases. One example might @@ -319,35 +315,35 @@

Configuration -
{
-    "isis": [
-        {
-            "instance-id": 1,
-            "system-id": "1921.6800.1001",
-            "router-id": "192.168.1.1",
-            "hostname": "R1",
-            "external": {
-                "mrt-file": "isis.mrt",
-                "connections": [
-                    {
-                        "system-id": "1921.6800.0000.00",
-                        "l1-metric": 1000,
-                        "l2-metric": 2000
-                    }
-                ]
-            }
-        },
-        {
-            "instance-id": 2,
-            "system-id": "1921.6800.1002",
-            "router-id": "192.168.1.2",
-            "hostname": "R2"
-        }
-    ]
-}
+
{
+    "isis": [
+        {
+            "instance-id": 1,
+            "system-id": "1921.6800.1001",
+            "router-id": "192.168.1.1",
+            "hostname": "R1",
+            "external": {
+                "mrt-file": "isis.mrt",
+                "connections": [
+                    {
+                        "system-id": "1921.6800.0000.00",
+                        "l1-metric": 1000,
+                        "l2-metric": 2000
+                    }
+                ]
+            }
+        },
+        {
+            "instance-id": 2,
+            "system-id": "1921.6800.1002",
+            "router-id": "192.168.1.2",
+            "hostname": "R2"
+        }
+    ]
+}
 
-
{ "isis": { "external": {} } }
+
{ "isis": { "external": {} } }
 
@@ -363,6 +359,14 @@

Configuration

+ + + + + + + @@ -371,7 +375,7 @@

ConfigurationN1 in this example also needs to advertise the reachability to node B1.

-
{ "isis": { "external": { "connections": [] } } }
+
{ "isis": { "external": { "connections": [] } } }
 

purge

Automatically purge all external LSP during teardown

true

auto-refresh

Automatically refresh all external LSP

false

mrt-file

ISIS MRT file

@@ -406,32 +410,32 @@

Configuration

The BNG Blaster supports P2P adjacencies with 3-way-handshake only.

$ sudo bngblaster-cli run.sock isis-adjacencies

-
{
-    "status": "ok",
-    "code": 200,
-    "isis-adjacencies": [
-        {
-            "interface": "eth1",
-            "type": "P2P",
-            "level": "L1",
-            "instance-id": 2,
-            "adjacency-state": "Up",
-            "peer": {
-                "system-id": "0100.1001.0022"
-            }
-        },
-        {
-            "interface": "eth2",
-            "type": "P2P",
-            "level": "L1",
-            "instance-id": 1,
-            "adjacency-state": "Up",
-            "peer": {
-                "system-id": "0100.1001.0021"
-            }
-        }
-    ]
-}
+
{
+    "status": "ok",
+    "code": 200,
+    "isis-adjacencies": [
+        {
+            "interface": "eth1",
+            "type": "P2P",
+            "level": "L1",
+            "instance-id": 2,
+            "adjacency-state": "Up",
+            "peer": {
+                "system-id": "0100.1001.0022"
+            }
+        },
+        {
+            "interface": "eth2",
+            "type": "P2P",
+            "level": "L1",
+            "instance-id": 1,
+            "adjacency-state": "Up",
+            "peer": {
+                "system-id": "0100.1001.0021"
+            }
+        }
+    ]
+}
 
@@ -444,42 +448,42 @@

Databaseexternal is used for those LSP entries learned via MRT files or injected via isis-lsp-update command.

$ sudo bngblaster-cli run.sock isis-database instance 1 level 1

-
{
-    "status": "ok",
-    "code": 200,
-    "isis-database": [
-        {
-            "id": "0000.0000.0001.00-00",
-            "seq": 1,
-            "lifetime": 65535,
-            "lifetime-remaining": 65529,
-            "source-type": "external"
-        },
-        {
-            "id": "0100.1001.0011.00-00",
-            "seq": 2,
-            "lifetime": 65535,
-            "lifetime-remaining": 65507,
-            "source-type": "self"
-        },
-        {
-            "id": "0100.1001.0021.00-00",
-            "seq": 2,
-            "lifetime": 65524,
-            "lifetime-remaining": 65506,
-            "source-type": "adjacency",
-            "source-system-id": "0100.1001.0021"
-        },
-        {
-            "id": "0100.1001.0022.00-00",
-            "seq": 2,
-            "lifetime": 65524,
-            "lifetime-remaining": 65506,
-            "source-type": "adjacency",
-            "source-system-id": "0100.1001.0021"
-        }
-    ]
-}
+
{
+    "status": "ok",
+    "code": 200,
+    "isis-database": [
+        {
+            "id": "0000.0000.0001.00-00",
+            "seq": 1,
+            "lifetime": 65535,
+            "lifetime-remaining": 65529,
+            "source-type": "external"
+        },
+        {
+            "id": "0100.1001.0011.00-00",
+            "seq": 2,
+            "lifetime": 65535,
+            "lifetime-remaining": 65507,
+            "source-type": "self"
+        },
+        {
+            "id": "0100.1001.0021.00-00",
+            "seq": 2,
+            "lifetime": 65524,
+            "lifetime-remaining": 65506,
+            "source-type": "adjacency",
+            "source-system-id": "0100.1001.0021"
+        },
+        {
+            "id": "0100.1001.0022.00-00",
+            "seq": 2,
+            "lifetime": 65524,
+            "lifetime-remaining": 65506,
+            "source-type": "adjacency",
+            "source-system-id": "0100.1001.0021"
+        }
+    ]
+}
 

The BNG Blaster automatically purges all LSPs of type @@ -506,16 +510,16 @@

LSP Update Commandcommand expects a list of hex encoded PDU’s including the ISIS common header starting with 0x83.

$ cat command.json | jq .

-
{
-    "command": "isis-lsp-update",
-    "arguments": {
-        "instance": 1,
-        "pdu": [
-            "831b0100120100000021ffff010203040506000000000003c0d103010403490001",
-            "831b0100120100000021ffff010203040506000100000003bad603010403490001"
-        ]
-    }
-}
+
{
+    "command": "isis-lsp-update",
+    "arguments": {
+        "instance": 1,
+        "pdu": [
+            "831b0100120100000021ffff010203040506000000000003c0d103010403490001",
+            "831b0100120100000021ffff010203040506000100000003bad603010403490001"
+        ]
+    }
+}
 
@@ -531,7 +535,7 @@

LSP Update via Scapyfrom scapy.contrib.isis import * def error(*args, **kwargs): - """print error and exit""" + """print error and exit""" print(*args, file=sys.stderr, **kwargs) sys.exit(1) @@ -559,7 +563,7 @@

LSP Update via Scapydef main(): - """main function""" + """main function""" socket_path = sys.argv[1] command = { diff --git a/docs/routing/ldp.html b/docs/routing/ldp.html index aeba64ec..4da4ed0f 100644 --- a/docs/routing/ldp.html +++ b/docs/routing/ldp.html @@ -110,27 +110,27 @@

Configuration

Following an example LDP configuration with one instance attached to a network interface function.

-
{
-    "interfaces": {
-        "network": [
-            {
-                "interface": "eth1",
-                "address": "10.0.1.2/24",
-                "gateway": "10.0.1.1",
-                "ldp-instance-id": 1,
-            }
-        ]
-    },
-    "ldp": [
-        {
-            "instance-id": 1,
-            "lsr-id": "10.10.10.11"
-        }
-    ]
-}
+
{
+    "interfaces": {
+        "network": [
+            {
+                "interface": "eth1",
+                "address": "10.0.1.2/24",
+                "gateway": "10.0.1.1",
+                "ldp-instance-id": 1,
+            }
+        ]
+    },
+    "ldp": [
+        {
+            "instance-id": 1,
+            "lsr-id": "10.10.10.11"
+        }
+    ]
+}
 
-
{ "ldp": {} }
+
{ "ldp": {} }
 

@@ -222,17 +222,17 @@

LDP Adjacencies$ sudo bngblaster-cli run.sock ldp-adjacencies

-
{
-    "status": "ok",
-    "code": 200,
-    "ldp-adjacencies": [
-        {
-            "ldp-instance-id": 1,
-            "interface": "eth0",
-            "state": "up"
-        }
-    ]
-}
+
{
+    "status": "ok",
+    "code": 200,
+    "ldp-adjacencies": [
+        {
+            "ldp-instance-id": 1,
+            "interface": "eth0",
+            "state": "up"
+        }
+    ]
+}
 
@@ -249,31 +249,31 @@

LDP Sessions$ sudo bngblaster-cli run.sock ldp-sessions

-
{
-    "status": "ok",
-    "code": 200,
-    "ldp-sessions": [
-        {
-            "ldp-instance-id": 1,
-            "interface": "eth0",
-            "local-address": "10.2.3.1",
-            "local-identifier": "10.2.3.1:0",
-            "peer-address": "10.2.3.2",
-            "peer-identifier": "10.2.3.2:0",
-            "state": "operational",
-            "raw-update-state": "done",
-            "raw-update-file": "out.ldp",
-            "stats": {
-                "pdu-rx": 23,
-                "pdu-tx": 32,
-                "messages-rx": 24,
-                "messages-tx": 34,
-                "keepalive-rx": 21,
-                "keepalive-tx": 21
-            }
-        }
-    ]
-}
+
{
+    "status": "ok",
+    "code": 200,
+    "ldp-sessions": [
+        {
+            "ldp-instance-id": 1,
+            "interface": "eth0",
+            "local-address": "10.2.3.1",
+            "local-identifier": "10.2.3.1:0",
+            "peer-address": "10.2.3.2",
+            "peer-identifier": "10.2.3.2:0",
+            "state": "operational",
+            "raw-update-state": "done",
+            "raw-update-file": "out.ldp",
+            "stats": {
+                "pdu-rx": 23,
+                "pdu-tx": 32,
+                "messages-rx": 24,
+                "messages-tx": 34,
+                "keepalive-rx": 21,
+                "keepalive-tx": 21
+            }
+        }
+    ]
+}
 
@@ -286,47 +286,47 @@

LDP Traffic Streams
{
-    "streams": [
-        {
-            "name": "S1",
-            "type": "ipv4",
-            "direction": "downstream",
-            "priority": 128,
-            "network-interface": "eth1",
-            "destination-ipv4-address": "10.0.0.1",
-            "ldp-ipv4-lookup-address": "13.37.0.1",
-            "pps": 1
-        }
-    ]
-}
+
{
+    "streams": [
+        {
+            "name": "S1",
+            "type": "ipv4",
+            "direction": "downstream",
+            "priority": 128,
+            "network-interface": "eth1",
+            "destination-ipv4-address": "10.0.0.1",
+            "ldp-ipv4-lookup-address": "13.37.0.1",
+            "pps": 1
+        }
+    ]
+}
 

$ sudo bngblaster-cli run.sock ldp-database instance 1

-
{
-    "status": "ok",
-    "code": 200,
-    "ldp-database": [
-        {
-            "direction": "ipv4",
-            "prefix": "10.0.0.0/24",
-            "label": 3,
-            "source-identifier": "10.2.3.1:0"
-        },
-        {
-            "direction": "ipv4",
-            "prefix": "13.37.0.0/32",
-            "label": 10000,
-            "source-identifier": "10.2.3.1:0"
-        },
-        {
-            "direction": "ipv4",
-            "prefix": "13.37.0.1/32",
-            "label": 10001,
-            "source-identifier": "10.2.3.1:0"
-        }
-    ]
-}
+
{
+    "status": "ok",
+    "code": 200,
+    "ldp-database": [
+        {
+            "direction": "ipv4",
+            "prefix": "10.0.0.0/24",
+            "label": 3,
+            "source-identifier": "10.2.3.1:0"
+        },
+        {
+            "direction": "ipv4",
+            "prefix": "13.37.0.0/32",
+            "label": 10000,
+            "source-identifier": "10.2.3.1:0"
+        },
+        {
+            "direction": "ipv4",
+            "prefix": "13.37.0.1/32",
+            "label": 10001,
+            "source-identifier": "10.2.3.1:0"
+        }
+    ]
+}
 

The ldp-ipv4-lookup-address and ldp-ipv6-lookup-address are mutually exclusive diff --git a/docs/routing/lspgen.html b/docs/routing/lspgen.html index 9fa48a12..eaf261b4 100644 --- a/docs/routing/lspgen.html +++ b/docs/routing/lspgen.html @@ -139,6 +139,7 @@ -m --mrt-file <args> -c --node-count <args> -p --pcap-file <args> + -G --purge -f --stream-file <args> -s --seed <args> -q --sequence <args> @@ -164,29 +165,29 @@

Connector
{
-    "isis": [
-        {
-            "instance-id": 1,
-            "area": [
-                "49.0001/24",
-            ],
-            "system-id": "1921.6800.1001",
-            "router-id": "192.168.1.1",
-            "hostname": "R1",
-            "level1-auth-key": "secret123",
-            "level1-auth-type": "md5",
-            "external": {
-                "mrt-file": "isis.mrt",
-                "connections": [
-                    {
-                        "system-id": "1921.6800.0000.00"
-                    }
-                ]
-            }
-        }
-    ]
-}
+
{
+    "isis": [
+        {
+            "instance-id": 1,
+            "area": [
+                "49.0001/24",
+            ],
+            "system-id": "1921.6800.1001",
+            "router-id": "192.168.1.1",
+            "hostname": "R1",
+            "level1-auth-key": "secret123",
+            "level1-auth-type": "md5",
+            "external": {
+                "mrt-file": "isis.mrt",
+                "connections": [
+                    {
+                        "system-id": "1921.6800.0000.00"
+                    }
+                ]
+            }
+        }
+    ]
+}
 

This is simlar for OSPFv2 but here the connector is constructed based on remote router-id @@ -199,25 +200,25 @@

Connector
{
-    "ospf": [
-        {
-            "instance-id": 1,
-            "version": 2,
-            "router-id": "10.0.0.11",
-            "hostname": "R1"
-            "external": {
-                "mrt-file": "ospf.mrt",
-                "connections": [
-                    {
-                        "router-id": "10.10.0.1",
-                        "local-ipv4-address": "10.0.0.1",
-                    }
-                ]
-            }
-        }
-    ]
-}
+
{
+    "ospf": [
+        {
+            "instance-id": 1,
+            "version": 2,
+            "router-id": "10.0.0.11",
+            "hostname": "R1"
+            "external": {
+                "mrt-file": "ospf.mrt",
+                "connections": [
+                    {
+                        "router-id": "10.10.0.1",
+                        "local-ipv4-address": "10.0.0.1",
+                    }
+                ]
+            }
+        }
+    ]
+}
 
@@ -244,134 +245,134 @@

Topology from Configuration File
{
-    "level1": [
-        {
-            "node_id": "1337.0000.0001",
-            "hostname": "R1",
-            "area_list": [
-                "49.1337/24"
-            ],
-            "protocol_list": [
-                "ipv4"
-            ],
-            "ipv4_address_list": [
-                "10.13.37.1"
-            ],
-            "ipv4_prefix_list": [
-                {
-                    "ipv4_prefix": "10.13.37.1/32",
-                    "metric": 0,
-                    "segment_id": 30005,
-                    "node_flag": true
-                },
-                {
-                    "ipv4_prefix": "10.0.1.0/24",
-                    "metric": 1000
-                },
-                {
-                    "ipv4_prefix": "10.0.2.0/24",
-                    "metric": 1000
-                }
-            ],
-            "capability_list": [
-                {
-                    "router_id": "10.13.37.1",
-                    "mpls_ipv4_flag": true,
-                    "mpls_ipv6_flag": false,
-                    "srgb_base": 100000,
-                    "srgb_range": 36000
-                }
-            ],
-            "neighbor_list": [
-                {
-                    "remote_node_id": "1337.0000.0000.00",
-                    "metric": 10
-                },
-                {
-                    "remote_node_id": "1337.0000.0002.00",
-                    "metric": 10
-                },
-                {
-                    "remote_node_id": "0204.0000.0003.00",
-                    "metric": 10
-                }
-            ]
-        },
-        {
-            "node_id": "1337.0000.0002",
-            "hostname": "R2",
-            "area_list": [
-                "49.1337/24"
-            ],
-            "protocol_list": [
-                "ipv4"
-            ],
-            "ipv4_address_list": [
-                "10.13.37.2"
-            ],
-            "ipv4_prefix_list": [
-                {
-                    "ipv4_prefix": "10.13.37.2/32",
-                    "metric": 0,
-                    "segment_id": 30003,
-                    "node_flag": true
-                }
-            ],
-            "capability_list": [
-                {
-                    "router_id": "10.13.37.2",
-                    "mpls_ipv4_flag": true,
-                    "mpls_ipv6_flag": false,
-                    "srgb_base": 100000,
-                    "srgb_range": 36000
-                }
-            ],
-            "neighbor_list": [
-                {
-                    "remote_node_id": "1337.0000.0001.00",
-                    "metric": 10
-                }
-            ]
-        },
-        {
-            "node_id": "1337.0000.3",
-            "hostname": "R3",
-            "area_list": [
-                "49.1337/24"
-            ],
-            "protocol_list": [
-                "ipv4"
-            ],
-            "ipv4_address_list": [
-                "10.13.37.3"
-            ],
-            "ipv4_prefix_list": [
-                {
-                    "ipv4_prefix": "10.13.37.3/32",
-                    "metric": 0,
-                    "segment_id": 30003,
-                    "node_flag": true
-                }
-            ],
-            "capability_list": [
-                {
-                    "router_id": "10.13.37.3",
-                    "mpls_ipv4_flag": true,
-                    "mpls_ipv6_flag": false,
-                    "srgb_base": 100000,
-                    "srgb_range": 36000
-                }
-            ],
-            "neighbor_list": [
-                {
-                    "remote_node_id": "1337.0000.0001.00",
-                    "metric": 10
-                }
-            ]
-        }
-    ]
-}
+
{
+    "level1": [
+        {
+            "node_id": "1337.0000.0001",
+            "hostname": "R1",
+            "area_list": [
+                "49.1337/24"
+            ],
+            "protocol_list": [
+                "ipv4"
+            ],
+            "ipv4_address_list": [
+                "10.13.37.1"
+            ],
+            "ipv4_prefix_list": [
+                {
+                    "ipv4_prefix": "10.13.37.1/32",
+                    "metric": 0,
+                    "segment_id": 30005,
+                    "node_flag": true
+                },
+                {
+                    "ipv4_prefix": "10.0.1.0/24",
+                    "metric": 1000
+                },
+                {
+                    "ipv4_prefix": "10.0.2.0/24",
+                    "metric": 1000
+                }
+            ],
+            "capability_list": [
+                {
+                    "router_id": "10.13.37.1",
+                    "mpls_ipv4_flag": true,
+                    "mpls_ipv6_flag": false,
+                    "srgb_base": 100000,
+                    "srgb_range": 36000
+                }
+            ],
+            "neighbor_list": [
+                {
+                    "remote_node_id": "1337.0000.0000.00",
+                    "metric": 10
+                },
+                {
+                    "remote_node_id": "1337.0000.0002.00",
+                    "metric": 10
+                },
+                {
+                    "remote_node_id": "0204.0000.0003.00",
+                    "metric": 10
+                }
+            ]
+        },
+        {
+            "node_id": "1337.0000.0002",
+            "hostname": "R2",
+            "area_list": [
+                "49.1337/24"
+            ],
+            "protocol_list": [
+                "ipv4"
+            ],
+            "ipv4_address_list": [
+                "10.13.37.2"
+            ],
+            "ipv4_prefix_list": [
+                {
+                    "ipv4_prefix": "10.13.37.2/32",
+                    "metric": 0,
+                    "segment_id": 30003,
+                    "node_flag": true
+                }
+            ],
+            "capability_list": [
+                {
+                    "router_id": "10.13.37.2",
+                    "mpls_ipv4_flag": true,
+                    "mpls_ipv6_flag": false,
+                    "srgb_base": 100000,
+                    "srgb_range": 36000
+                }
+            ],
+            "neighbor_list": [
+                {
+                    "remote_node_id": "1337.0000.0001.00",
+                    "metric": 10
+                }
+            ]
+        },
+        {
+            "node_id": "1337.0000.3",
+            "hostname": "R3",
+            "area_list": [
+                "49.1337/24"
+            ],
+            "protocol_list": [
+                "ipv4"
+            ],
+            "ipv4_address_list": [
+                "10.13.37.3"
+            ],
+            "ipv4_prefix_list": [
+                {
+                    "ipv4_prefix": "10.13.37.3/32",
+                    "metric": 0,
+                    "segment_id": 30003,
+                    "node_flag": true
+                }
+            ],
+            "capability_list": [
+                {
+                    "router_id": "10.13.37.3",
+                    "mpls_ipv4_flag": true,
+                    "mpls_ipv6_flag": false,
+                    "srgb_base": 100000,
+                    "srgb_range": 36000
+                }
+            ],
+            "neighbor_list": [
+                {
+                    "remote_node_id": "1337.0000.0001.00",
+                    "metric": 10
+                }
+            ]
+        }
+    ]
+}
 
diff --git a/docs/routing/ospf.html b/docs/routing/ospf.html index 895ac6e6..49dea200 100644 --- a/docs/routing/ospf.html +++ b/docs/routing/ospf.html @@ -116,43 +116,43 @@

Configuration

Following an example OSPFv2 configuration with two instances attached to two network interfaces.

-
{
-    "interfaces": {
-        "network": [
-            {
-                "interface": "eth1",
-                "address": "10.0.1.2/30",
-                "gateway": "10.0.1.1",
-                "ospfv2-instance-id": 1,
-                "ospfv2-type": "p2p",
-            },
-            {
-                "interface": "eth2",
-                "address": "10.0.2.2/24",
-                "gateway": "10.0.2.1",
-                "ospfv2-instance-id": 2,
-                "ospfv2-type": "broadcast"
-            }
-        ]
-    },
-    "ospf": [
-        {
-            "instance-id": 1,
-            "version": 2,
-            "router-id": "10.0.0.11",
-            "hostname": "R1"
-        },
-        {
-            "instance-id": 2,
-            "version": 2,
-            "router-id": "10.0.0.12",
-            "hostname": "R2"
-        }
-    ]
-}
+
{
+    "interfaces": {
+        "network": [
+            {
+                "interface": "eth1",
+                "address": "10.0.1.2/30",
+                "gateway": "10.0.1.1",
+                "ospfv2-instance-id": 1,
+                "ospfv2-type": "p2p",
+            },
+            {
+                "interface": "eth2",
+                "address": "10.0.2.2/24",
+                "gateway": "10.0.2.1",
+                "ospfv2-instance-id": 2,
+                "ospfv2-type": "broadcast"
+            }
+        ]
+    },
+    "ospf": [
+        {
+            "instance-id": 1,
+            "version": 2,
+            "router-id": "10.0.0.11",
+            "hostname": "R1"
+        },
+        {
+            "instance-id": 2,
+            "version": 2,
+            "router-id": "10.0.0.12",
+            "hostname": "R2"
+        }
+    ]
+}
 
-
{ "ospf": {} }
+
{ "ospf": {} }
 

@@ -229,29 +229,29 @@

Configuration -
{
-    "ospf": [
-        {
-            "instance-id": 1,
-            "version": 2,
-            "router-id": "10.0.0.11",
-            "hostname": "R1"
-            "external": {
-                "mrt-file": "ospf.mrt",
-                "connections": [
-                    {
-                        "router-id": "10.10.0.1",
-                        "local-ipv4-address": "10.0.0.1",
-                        "metric": 1000
-                    }
-                ]
-            }
-        }
-    ]
-}
+
{
+    "ospf": [
+        {
+            "instance-id": 1,
+            "version": 2,
+            "router-id": "10.0.0.11",
+            "hostname": "R1"
+            "external": {
+                "mrt-file": "ospf.mrt",
+                "connections": [
+                    {
+                        "router-id": "10.10.0.1",
+                        "local-ipv4-address": "10.0.0.1",
+                        "metric": 1000
+                    }
+                ]
+            }
+        }
+    ]
+}
 
-
{ "ospf": { "external": {} } }
+
{ "ospf": { "external": {} } }
 

@@ -267,13 +267,17 @@

Configuration

+ + + + +

mrt-file

purge

Automatically purge all external LSA during teardown

true

mrt-file

OSPF MRT file

-
{ "ospf": { "external": { "connections": [] } } }
+
{ "ospf": { "external": { "connections": [] } } }
 
@@ -342,30 +346,30 @@

LSA Update Commandcommand expects a list of hex encoded LSA including the OSPF LSA common header (| LS age | Options | LS type |).

$ cat command.json | jq .

-
{
-    "command": "ospf-lsa-update",
-    "arguments": {
-        "instance": 1,
-        "lsa": [
-            "000100050ac801000aff010180000001e7790024ffffff00000000140000000000000000",
-            "000100050ac802000aff010180000001dc830024ffffff00000000140000000000000000"
-        ]
-    }
-}
+
{
+    "command": "ospf-lsa-update",
+    "arguments": {
+        "instance": 1,
+        "lsa": [
+            "000100050ac801000aff010180000001e7790024ffffff00000000140000000000000000",
+            "000100050ac802000aff010180000001dc830024ffffff00000000140000000000000000"
+        ]
+    }
+}
 

The command ospf-pdu-update work similar to ospf-lsa-update expecting OSPF LS update request PDU including OSPF common header (| Version | Type |).

-
{
-    "command": "ospf-lsa-update",
-    "arguments": {
-        "instance": 1,
-        "pdu": [
-            "020400400101010100000000456e0000000000000000000000000001000100050ac80c000aff01018000012d13160024ffffff00000000140000000000000000",
-            "0204004001010101000000003b780000000000000000000000000001000100050ac80b000aff01018000012d1e0c0024ffffff00000000140000000000000000"
-        ]
-    }
-}
+
{
+    "command": "ospf-pdu-update",
+    "arguments": {
+        "instance": 1,
+        "pdu": [
+            "020400400101010100000000456e0000000000000000000000000001000100050ac80c000aff01018000012d13160024ffffff00000000140000000000000000",
+            "0204004001010101000000003b780000000000000000000000000001000100050ac80b000aff01018000012d1e0c0024ffffff00000000140000000000000000"
+        ]
+    }
+}
 
@@ -381,7 +385,7 @@

LSA Update via Scapyfrom scapy.contrib.ospf import * def error(*args, **kwargs): - """print error and exit""" + """print error and exit""" print(*args, file=sys.stderr, **kwargs) sys.exit(1) @@ -409,7 +413,7 @@

LSA Update via Scapydef main(): - """main function""" + """main function""" socket_path = sys.argv[1] command = { @@ -462,7 +466,7 @@

MRT Filesfrom scapy.contrib.ospf import * def main(): - """main function""" + """main function""" with open("ospf.mrt", "wb") as f: for i in range(10): lsa = OSPF_External_LSA(type=5, id="10.222.%s.0" % i, adrouter="10.255.1.1", mask="255.255.255.0", seq=2147483949) @@ -490,27 +494,27 @@

OSPFv3
{
-    "interfaces": {
-        "network": [
-            {
-                "interface": "eth1",
-                "address-ipv6": "fc66:1337:60::2/64",
-                "gateway-ipv6": "fc66:1337:60::1",
-                "ospfv3-instance-id": 1,
-                "ospfv3-type": "p2p"
-            }
-        ]
-    },
-    "ospf": [
-        {
-            "instance-id": 1,
-            "version": 3,
-            "router-id": "10.0.0.16",
-            "hostname": "R6"
-        }
-    ]
-}
+
{
+    "interfaces": {
+        "network": [
+            {
+                "interface": "eth1",
+                "address-ipv6": "fc66:1337:60::2/64",
+                "gateway-ipv6": "fc66:1337:60::1",
+                "ospfv3-instance-id": 1,
+                "ospfv3-type": "p2p"
+            }
+        ]
+    },
+    "ospf": [
+        {
+            "instance-id": 1,
+            "version": 3,
+            "router-id": "10.0.0.16",
+            "hostname": "R6"
+        }
+    ]
+}
 
diff --git a/docs/searchindex.js b/docs/searchindex.js index 17a79f96..a71185c9 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["access/index","access/ipoe","access/l2bsa","access/l2tp","access/li","access/monkey","access/multicast","access/pppoe","access/traffic","api/bgp","api/cfm","api/http","api/igmp","api/index","api/interfaces","api/isis","api/l2tp","api/ldp","api/li","api/ospf","api/ppp","api/sessions","api/streams","api/traffic","configuration/access_line","configuration/access_line_profiles","configuration/bgp","configuration/dhcp","configuration/dhcpv6","configuration/http_client","configuration/http_server","configuration/igmp","configuration/index","configuration/interfaces","configuration/interfaces_a10nsp","configuration/interfaces_access","configuration/interfaces_lag","configuration/interfaces_links","configuration/interfaces_network","configuration/ipoe","configuration/isis","configuration/isis_external","configuration/isis_external_connections","configuration/ldp","configuration/lns","configuration/ospf","configuration/ospf_external","configuration/ospf_external_connections","configuration/ppp","configuration/ppp_authentication","configuration/ppp_ip6cp","configuration/ppp_ipcp","configuration/ppp_lcp","configuration/pppoe","configuration/session_traffic","configuration/sessions","configuration/streams","configuration/traffic","controller","faq","http","index","install","interfaces","performance","quickstart","reports","routing/bgp","routing/index","routing/isis","routing/ldp","routing/lspgen","routing/mpls","routing/ospf","streams","troubleshooting"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":4,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["access/index.rst","access/ipoe.rst","access/l2bsa.rst","access/l2tp.rst","access/li.rst","access/monkey.rst","access/multicast.rst","access/pppoe.rst","access/traffic.rst","api/bgp.rst","api/cfm.rst","api/http.rst","api/igmp.rst","api/index.rst","api/interfaces.rst","api/isis.rst","api/l2tp.rst","api/ldp.rst","api/li.rst","api/ospf.rst","api/ppp.rst","api/sessions.rst","api/streams.rst","api/traffic.rst","configuration/access_line.rst","configuration/access_line_profiles.rst","configuration/bgp.rst","configuration/dhcp.rst","configuration/dhcpv6.rst","configuration/http_client.rst","configuration/http_server.rst","configuration/igmp.rst","configuration/index.rst","configuration/interfaces.rst","configuration/interfaces_a10nsp.rst","configuration/interfaces_access.rst","configuration/interfaces_lag.rst","configuration/interfaces_links.rst","configuration/interfaces_network.rst","configuration/ipoe.rst","configuration/isis.rst","configuration/isis_external.rst","configuration/isis_external_connections.rst","configuration/ldp.rst","configuration/lns.rst","configuration/ospf.rst","configuration/ospf_external.rst","configuration/ospf_external_connections.rst","configuration/ppp.rst","configuration/ppp_authentication.rst","configuration/ppp_ip6cp.rst","configuration/ppp_ipcp.rst","configuration/ppp_lcp.rst","configuration/pppoe.rst","configuration/session_traffic.rst","configuration/sessions.rst","configuration/streams.rst","configuration/traffic.rst","controller.rst","faq.rst","http.rst","index.rst","install.rst","interfaces.rst","performance.rst","quickstart.rst","reports.rst","routing/bgp.rst","routing/index.rst","routing/isis.rst","routing/ldp.rst","routing/lspgen.rst","routing/mpls.rst","routing/ospf.rst","streams.rst","troubleshooting.rst"],objects:{},objnames:{},objtypes:{},terms:{"0":[1,3,4,6,7,8,13,25,27,29,31,32,33,35,36,38,39,44,45,51,52,53,54,55,56,58,60,61,62,63,64,65,66,67,69,70,71,73,74],"00":[1,2,7,8,25,32,36,62,63,64,65,66,69,71],"000":[58,64,65],"0000":[64,65,69,71],"0001":[32,40,65,69,71],"000100050ac801000aff010180000001e7790024ffffff00000000140000000000000000":73,"000100050ac802000aff010180000001dc830024ffffff00000000140000000000000000":73,"0002":[65,69,71],"0003":71,"0010":[32,40,69],"0011":69,"0021":69,"0022":69,"01":[1,2,7,58,63,64,65,66,69],"0100":[32,40,69],"0102":69,"02":[1,2,7,32,36,63,65,71],"0204":71,"0204004001010101000000003b780000000000000000000000000001000100050ac80b000aff01018000012d1e0c0024ffffff00000000140000000000000000":73,"020400400101010100000000456e0000000000000000000000000001000100050ac80c000aff01018000012d13160024ffffff00000000140000000000000000":73,"025":63,"0288":74,"03":[65,66],"0304":69,"031917":65,"04":[25,32,58,62,65,71],"0506":69,"07":58,"0792":74,"08":65,"087877":65,"087971":65,"088013":65,"088035":65,"088050":65,"08t14":65,"09":65,"090288":74,"093906":65,"093964":65,"099792":74,"0s":65,"0x1":65,"0x192168001001":65,"0x5274427269636b21":74,"0x83":69,"0x88a8":[32,34,35,63],"1":[1,2,3,4,6,7,8,13,16,26,27,31,32,33,35,38,39,40,42,44,55,56,58,60,61,62,63,64,65,66,67,69,70,71,73,74],"10":[1,2,3,4,6,7,13,27,28,32,38,40,42,43,45,47,50,51,52,53,58,60,63,64,65,66,67,69,70,71,73,74],"100":[4,6,7,8,60,62,63,64,65,66,69,74],"1000":[3,6,7,31,32,58,63,64,65,66,67,69,71,73,74],"10000":[65,70],"100000":[65,67,71],"1000000000":[32,56,74],"10001":70,"1001":[32,40,63,65,69,71,74],"1002":[65,69],"10036":7,"10083":7,"101":[2,6],"1014":74,"102":[3,6],"1024":[3,7,69,73],"1026":74,"103":6,"1030":74,"10561":74,"10589":69,"106876":66,"106881":66,"108580":66,"11":[3,6,58,60,62,64,65,70,71,73],"1100":74,"110156":66,"110161":66,"1102":66,"1104":66,"111410":66,"112":74,"114":[6,74],"1142":69,"1198":66,"11981554":66,"11982029":66,"12":[3,6,8,60,64,65,73],"120000":65,"1206":66,"12252":8,"12278":8,"12299556":66,"12300031":66,"12306":8,"12314":8,"12360218":66,"12361":8,"124":65,"126":74,"12654727":66,"127":[65,66],"128":[1,2,6,7,32,56,63,65,70,74],"129":[7,32,51],"1291":6,"13":[1,3,7,64,65,70,71],"131":[7,32,51],"1337":[1,3,7,60,63,65,69,71,73,74],"1338":66,"138":65,"139":[6,66],"14":[3,58,64,65],"1406":3,"1439":1,"14399":1,"14400":1,"149":1,"1492":[3,7,32,48],"15":[3,32,43,64,66,70],"150":[58,66],"1500":[63,66],"155":58,"158":58,"16":[3,32,44,57,65,73],"16000":8,"160720":4,"163":58,"16384":[3,7],"168":[65,69,71],"17":[3,66],"1700":66,"172":65,"17799":8,"18":[3,58,62,66],"1816":66,"182885":65,"1840":66,"188120":66,"188259":66,"18845":8,"19":[3,65,66],"192":[65,69,71],"1921":[65,69,71],"197":66,"197340":66,"197523":66,"199":66,"1998":63,"1999":[7,63],"1m":[32,33,57,63,64],"1s":[8,66],"2":[1,2,3,4,6,7,13,16,26,28,31,32,35,38,40,42,45,55,56,58,60,62,63,64,65,66,67,69,70,71,73,74],"20":[3,6,58,62,63,65,71,74],"200":[1,3,4,7,13,58,60,63,65,66,69,70,73,74],"2000":[7,63,65,69,74],"20000":65,"20001":67,"2001":74,"2002":69,"2010":2,"202":6,"2020":61,"2022":[58,65],"2023":61,"20425245":66,"206":[3,66],"208":74,"21":[3,62,70],"21009053":66,"213":74,"2147483649":73,"2147483949":73,"2153":7,"218":66,"22":[3,58,62,65],"222":73,"2222":1,"224":[66,70,74],"227":66,"23":[3,6,64,70],"232":6,"239":[6,13,31,32,74],"24":[3,4,5,7,32,40,60,63,65,67,69,70,71,73,74],"242810":71,"242827":71,"25":3,"250":64,"255":[1,32,33,36,56,63,73,74],"256":[2,6,65,74],"26":3,"261":1,"27":[3,65],"27008":74,"27040":74,"28":[3,65],"2891":8,"29":[3,62],"2900":8,"293":[6,31,32],"2957":8,"2978":8,"299":1,"2999":[7,63],"2s":[8,66],"2xx":13,"3":[1,2,3,4,6,7,13,16,26,27,31,32,35,38,40,43,52,55,56,61,62,63,64,65,66,67,69,70,71,73,74],"30":[3,6,7,32,40,44,49,52,65,69,73],"300":[1,32,39,40,69],"30003":71,"30005":71,"302":60,"3033":8,"303904":65,"303952":65,"3040":8,"3071":8,"309235":58,"31":[3,65],"3104":8,"3123":8,"3178":8,"3184":8,"3185":8,"31894":66,"31895":66,"31896":66,"32":[3,64,65,70,71],"320k":64,"322":66,"32461":66,"32465":66,"32633":66,"32635":66,"32641":66,"32768":[32,36,37,63,64],"32867":3,"32k":64,"33":[3,74],"33311":66,"33319":66,"3333":1,"34":[3,70],"35":[3,65],"350":66,"36":[3,65,66],"3600":69,"36000":71,"362":74,"37":[3,65,66,70,71,74],"37119":8,"373":66,"3742":66,"38":[3,65,66],"39":3,"3936":[59,63],"396765":65,"3_amd64":62,"3s":[8,66],"3x1":[32,36,63],"3x30":[32,36,63],"4":[1,4,7,8,13,16,26,32,55,58,60,61,63,64,65,66,67,69,70,73,74],"40":[3,45,66,73],"400":[7,32,55,60],"4000":[1,2,3,63,64,65,74],"404":[13,58],"4049":[7,63],"4094":2,"4096":[32,33,63,65],"41":74,"4194301":4,"422":66,"43":74,"4343":66,"48":[67,74],"48000":3,"4880":66,"49":[32,40,65,69,71],"49152":4,"5":[1,3,4,6,7,8,26,27,28,31,32,33,40,43,44,45,49,50,51,52,53,56,63,64,65,66,67,69,70,73,74],"50":[66,71,74],"500":66,"50000":67,"50011":3,"500mb":58,"5036":70,"51":65,"512":63,"52":65,"53":65,"54":65,"5422":74,"54232":74,"5458":74,"54593":74,"54594":74,"54610":74,"55":[65,71],"55661":66,"56":[7,65],"59":[4,65,71],"59655":74,"59670":74,"6":[1,2,4,7,64,66,67,69,70,73,74],"60":[3,73],"6000":66,"61":4,"6167":8,"6177":8,"61790":66,"61793":66,"62":66,"6205":8,"6226":8,"623":66,"624":66,"63":65,"64":[1,7,8,32,38,45,60,63,65,69,73,74],"64537":66,"646":70,"647569":65,"647630":65,"647633":65,"647639":65,"647642":65,"647645":65,"647648":65,"647651":65,"647654":65,"647657":65,"647660":65,"647669":65,"647672":65,"647678":65,"647813":65,"64bit":8,"65000":[26,32,67],"65001":[65,67],"65056":[32,56,74],"65506":69,"65507":69,"65524":69,"65529":69,"65535":[32,40,65,69],"65772":66,"65784":66,"6800":[65,69,71],"682535":58,"69":66,"6m":58,"6pe":67,"7":[1,2,3,4,32,44,60,63,64,65,67,69,70,73,74],"7142":69,"72":65,"7331":[3,7,60,63,65,69,74],"73763":8,"7456":6,"74810":66,"75":66,"76":[6,8,31,32,56,74],"78":66,"780109":71,"780127":71,"79":[3,8,65],"79200":74,"7min":58,"8":[1,3,4,58,63,67,69,70,73,74],"80":[29,30,32,60],"800":[7,32,55],"800000":74,"8000000":74,"8001":58,"8112":74,"811200":74,"8112000":74,"82":8,"820":4,"8208":74,"820800":74,"8208000":74,"822":66,"8240000":74,"83":8,"831b0100120100000021ffff010203040506000000000003c0d103010403490001":69,"831b0100120100000021ffff010203040506000100000003bad603010403490001":69,"84":8,"844":66,"870722":65,"88":[8,66],"899":1,"9":[4,8,58,63,64,67,69,70,73,74],"90":[26,32,65,67],"9000":[32,56,59,63,74],"90288":74,"9028800":74,"904266":65,"904293":65,"904359":65,"904369":65,"904389":65,"904448":65,"905659":65,"907888":65,"907903":65,"907917":65,"907989":65,"92":65,"93709":66,"94":4,"95265":66,"95685":66,"96000":8,"96548":74,"97":66,"97391":66,"97909":66,"981279":65,"981314":65,"981335":65,"98595":74,"98903":74,"99":74,"99792":74,"99949":66,"abstract":63,"break":[69,73],"byte":[4,32,33,59,63,66,74],"case":[1,7,8,64,69,73],"default":[1,3,4,5,6,7,8,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,67,69,70,71,73,74,75],"do":[6,63,64,74],"export":[69,71,73],"final":[6,8,31,32,58,65,66,69,73],"float":[32,56,74],"function":[1,2,3,4,5,6,8,13,14,32,37,56,58,60,69,70,73,74],"import":[66,69,71,73],"int":58,"long":[6,61],"new":[6,58,61,62,63,65,74],"return":[3,7,12,13,58,73,74],"short":[32,35,36,61,63],"static":[2,32,35,63],"switch":70,"true":[1,2,3,5,6,7,8,26,27,28,29,31,32,33,38,39,40,50,51,54,55,56,57,58,60,63,64,65,67,69,71,73,74,75],"try":[65,69,73],"var":58,"while":[2,69,73],A:[3,5,6,32,44,61,62,64,66,67,70],AS:[26,32,65,67],As:[5,58,62],At:63,BE:74,But:65,By:[1,58,60],For:[1,5,32,33,56,60,63,64,71,74],IS:[65,69],If:[5,6,7,31,32,61,62,63,64,65,74],In:[1,2,8,13,32,33,60,63,64,65,71],It:[2,3,5,6,32,33,56,58,61,62,63,64,69,70,73,74],ON:62,On:[1,65],One:[13,60,63,69,73],Such:[65,69,73,74],TOS:[1,3,6,27,31,32,44,56,74],The:[1,2,3,4,5,6,7,8,13,16,21,25,31,32,33,37,43,44,56,57,58,59,60,61,62,63,64,65,66,67,69,70,71,72,73,74,75],Then:[62,65],There:[61,62,65,67,68,69,70,73],These:[2,58],To:66,With:[7,64],_:71,__:71,___:71,____:71,_____:71,______:71,__comment__:[2,64,65],__main__:[69,73],__name__:[69,73],_amd64:58,_command:58,_start:58,_stop:58,a00:65,a10:[2,63],a10nsp:[2,8,13,14,34,35,56,58,61,64,65,74],a10nsp_interfac:58,abbrev:62,abil:[60,64],abl:[3,64,69,71,73],about:[3,4,13,58,61,66,73],abov:[6,31,32,60,64],ac10:65,accept:[2,7,32,52,63,65],access:[1,2,3,5,7,8,13,14,24,25,27,28,33,35,56,58,60,61,64,65,66,74],access_interfac:58,accommod:71,accord:[32,43,60,70],account:74,accur:1,accuraci:60,achiev:64,aci:3,ack:1,across:60,act:[25,32],action:2,activ:[6,32,35,36,58,61,63,69,70,73],actual:[2,13,24,25,32,33,63,64,66,70,74],ad:[1,13,28,32,65,74],adapt:73,add:[1,3,27,28,32,35,37,44,63,65,67,71],addit:[1,60,62,71],addr:58,address:[2,3,4,6,7,8,9,13,17,26,29,30,31,32,33,34,35,36,37,38,43,44,47,51,54,56,58,60,63,65,67,69,70,71,73,74,75],adjac:[13,15,17,65,73],administr:1,adrout:73,adsl:[2,63],advanc:[6,65],advertis:[1,32,38,59,63,65,69],advisori:2,af_unix:[69,73],affair:2,afi:65,after:[5,6,8,26,31,32,54,55,56,58,65,67,70,74],ag:[61,73],again:[5,65],agenc:2,agent:[1,2,3,7,24,27,28,32,35,63,65],aggreg:[2,13,14,24,35,61,64,75],aggress:[3,32,44],ago:58,algorithm:73,all:[1,2,3,5,6,7,8,9,11,12,13,14,16,17,18,21,22,23,27,32,33,44,53,54,55,58,59,60,61,62,63,64,65,66,67,69,70,73,74,75],alloc:1,allow:[1,2,3,5,6,7,13,16,27,28,31,32,33,37,49,50,51,58,59,60,61,62,63,64,66,67,69,70,71,73,74,75],alreadi:[58,67],also:[2,3,5,6,13,32,33,56,58,60,61,62,63,64,65,66,69,71,73,74,75],altern:[13,32,55,62,69,73,74],although:73,alwai:64,among:67,amount:[2,13,21,58,61],an:[2,3,6,8,13,32,37,43,58,59,60,61,63,65,66,67,69,70,73,74],analysi:[6,31,32,58],analyz:[58,66,75],ani:[4,7,58,60,61,62,63,65,74],anoth:[2,6,65],api:[61,65],apnic:61,append:[65,67,69,70,73],appendix:[3,32,44],appli:[6,31,32,56,60,63,64,65,74],applic:[13,21,58,60],apr:65,apt:[62,65],ar:[1,2,3,5,6,7,8,31,32,33,38,55,57,58,59,60,61,62,63,64,65,66,67,68,69,70,73,74,75],architectur:[2,64],archiv:63,area:[1,32,40,45,65,69,71,73],area_list:71,areaid:69,arg:[69,71,73],argument:[6,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,58,62,66,67,69,70,71,73,74,75],argv:[69,73],ari:3,around:[58,63,64,74],arp:[1,32,39,66],arriv:[32,43,70],articl:61,ascii:[24,32,74],ask:61,asm:[6,31,32],asn:67,ass:[25,32],assess:[1,60],assign:[1,8,13,32,38,56,63,74],associ:[1,32,35,60,63,73],assum:[8,32,43,64,70,74],assur:[25,32],asymmetr:64,att:[25,32],attach:[63,65,69,70,71,73],attain:[25,32],attetr:[25,32],attgdr:[25,32],attribut:[1,3,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,60,63,67,69,70,73,74],auth:[3,32,40,45,65,69,71,73],authent:[3,35,40,45,49,63,65,67,69,70,71,73],author:2,auto:[5,32,40,69],autogener:[2,6,8,32,54],autom:[58,61],automat:[2,4,5,6,7,8,13,31,32,37,40,53,54,55,57,58,60,63,64,67,69,73,74],autonom:67,autostart:[2,3,5,6,8,29,31,32,35,54,55,57,60,63],avail:[2,58],averag:[25,32,66],avg:[8,25,32,66],avoid:[3,32,44],avp:[3,32,44],b1:69,back:58,backbon:69,balanc:[2,64],base:[1,2,3,6,13,15,31,32,35,40,44,56,61,63,64,65,67,69,70,71,74],basic:[2,7,60,65,73],bbl:74,bbl_header:75,bcm:4,becaus:[13,32,56,69,74],becom:[5,7,58,60],been:[61,66,69,71,75],befor:[6,31,32,55,56,59,62,65,74],begin:60,behav:[7,63,69,73],behavior:[1,6,7,60,61,64,75],belong:63,below:[1,2,3,6,13,16,62,63,65,69,73,75],best:73,besteffort:74,better:[32,56,61,66,74],between:[2,6,8,31,32,40,43,54,60,63,64,65,66,69,70,71,73,74],beyond:64,bgp:[9,26,58,61,64,68,75],bgpupdat:[65,67],bi:70,bidirect:[8,32,54,64,65],bin:[58,62,66],binari:[62,67,70],bind:60,bit:[3,32,44,56,74],bitstream:2,blaster:[1,2,3,4,6,7,8,31,32,43,44,58,59,60,63,64,65,66,67,68,69,70,71,72,73,75],block:[2,63],blog:61,blueprint:[67,70],bnetza:2,bng:[1,2,3,4,5,6,7,8,31,32,43,44,56,58,59,60,63,64,65,66,67,68,69,70,71,72,73,75],bngblaster:[1,3,4,5,6,7,13,16,32,33,40,43,45,58,60,61,62,63,65,67,69,70,73,74,75],bngblaster_test:62,bngblasterctrl:58,bngbnlaster:58,board:2,bodi:58,bonn:2,border:67,both:[1,2,6,32,56,63,64,65,66,73,74],bound:[1,7,65,74],bp:[3,32,56,74],broadband:[2,60],broadcast:[1,27,32,65,73],bsd:61,buffer:[32,33,63],bug:61,build:[61,64,67,69,70,73],build_dpdk:62,built:[61,70],bundesnetzagentur:2,bundl:2,burst:[32,56,57,64,74],bust:64,bypass:[32,33,37,63],c0a8:65,c:[61,62,65,71,75],cach:64,calcualt:63,calcul:[32,43,56,57,59,66,70,74],call:[2,3,8,58,63,66,69,70,71,73],can:[2,3,4,5,6,7,8,13,16,31,32,33,43,49,55,56,58,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75],cap_dac_read_search:62,cap_net_admin:62,cap_net_raw:62,capability_list:71,capabl:[1,58,60,62,65,67,70],capit:[32,56,74],captur:[6,32,33,58,59,61,63,64,65,75],carri:13,cat:[13,69,73],categori:58,caus:[2,64,69],caution:64,cc:[10,13,32,35,63],cd:62,cfm:[10,32,35,63],cgroup:58,chang:[2,5,6,31,32,43,55,58,59,62,63,64,65,67,70,71,73],channel:[3,6,31,32,44],chap:[3,7,32,49,66],chapter:7,check:[6,58,62,65,69,73,74],checksum:65,chosen:[32,43,70],circuit:[1,2,3,7,24,27,28,32,35,63,65],classifi:[67,75],claus:61,cli:[1,3,4,5,6,7,16,60,61,65,67,69,70,73,74],client:[6,11,13,29,56,58,61,63,64,65,69,73,74],clone:62,close:[13,20,60,65,69,73],cmake:62,cmocka:62,code:[1,3,4,7,13,16,58,60,65,69,70,74],coher:64,color:58,com:[7,13,32,49,58,60,61,62,63,65],combin:[4,6,13,21,31,32,58,63,66,74],command:[4,5,6,13,16,60,62,63,65,67,70],commerci:61,commit:[1,7,28,32,61,62],common:[1,3,5,69,73],commun:[13,61,63],compar:73,compat:60,compil:[62,63,67,70],complet:[61,69,73],compon:1,compos:2,comprehens:[1,58,60],comput:73,concept:7,conceptu:73,condit:[7,61],conf:[3,7,32,50,51,52,65],config:[8,58,59,62,65,66,71],configur:[1,2,6,13,21,31,33,37,50,51,52,55,58,59,60,61,63,64,65,75],confus:69,congest:[3,6,32,44],connect:[1,7,13,16,42,43,47,52,63,65,69,70,71,73],connector:65,consid:[32,33,58,59,63,64,73,74],consol:58,constant:61,construct:71,consum:6,contain:[13,58,61,63,69,73],content:[58,60],context:65,continu:[60,64],contrib:[69,73],contribut:[61,64],control:[1,3,6,7,13,27,31,32,44,53,60,61,65,71,73,74],controller_:58,conveni:58,converg:[8,61],convert:67,copi:[7,63],core:[2,32,37,61,63,64],corner:65,correct:6,correctli:[3,8,62],correspond:[2,5,6,8,13,31,32,35,56,58,63,64,67,70,71,74],could:[5,59,64,66,71,74,75],count:[6,7,12,13,31,32,55,58,67,70,71,74],counter:[13,21,58],cours:[65,75],cp:66,cpack:62,cpe:[2,5,7],cpu:[32,37,61,63,64],cpuset:[32,37,63,64],crash:5,creat:[32,55,63,65,67,69,70,71,73],csnp:[32,40,69],csun:3,csurq:[3,13,16],ctrl:[65,71],curl:58,current:[32,33,58,63,64,67,69,70,71],custom:[2,58],d:[4,58],daemon:65,data:[2,24,25,32,44,58,66,69,73,74],databas:[13,15,17,19,66,70],datar:[25,32],datatrack:[1,28,32,69,73],dbngblaster_dpdk:62,dbngblaster_test:62,dcmake_build_typ:62,de:[3,32,35,36,60,63,69],dead:[45,73],deb:[58,62],debian:[58,62,64],debug:[58,62,67,70,71,75],decis:67,decod:[69,73,74],decreas:[32,33,63,66],dedic:[1,6,31,32,63,64],def:[69,73],defin:[1,2,3,6,7,13,21,25,28,31,32,33,36,37,43,48,57,58,60,63,65,67,69,70,71,73,74],definit:[2,60],delai:[6,7,13,21,25,29,31,32,52,55,56,60,74],deleg:[1,7,8,32,54],delet:61,deliveri:[3,32,44,73],demonstr:60,denog13:61,depend:[32,33,59,63,64,74],depict:2,deploy:[1,60],deriv:[66,74],describ:[3,32,44,69,73],descript:[1,3,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,60,63,67,69,70,73,74],design:[67,69,73],desir:[32,33,63,66],destin:[4,6,29,32,56,60,63,65,70,74],detail:[1,2,3,4,6,7,8,13,18,31,32,58,61,62,63,65,66,73,74],determin:73,deu:[1,3,7,65],deutsch:61,dev:[62,63,65],dev_1:62,develop:[1,13,62,71,73],devic:[3,4,5,7,59,60,63,65,69,70,73],df453a5ee9dbf6440aefbfb9630fa0f06e326d44:62,df:[32,56,74],dgit_ref:62,dgit_sha:62,dhcp4:63,dhcp6:63,dhcp:[27,35,60,61,63,66,75],dhcpv4:[2,5],dhcpv6:[2,5,7,13,28,35,59,60,63,64,65,66],dialogu:2,differ:[1,3,5,6,7,32,44,56,60,61,63,65,66,67,69,73,74],direct:[2,4,6,13,16,32,56,58,64,65,70,74],directli:[2,32,33,63,69,73],directori:[58,62,65,75],disabl:[1,2,5,6,7,8,13,14,21,22,27,28,31,32,38,39,40,43,45,50,51,52,54,63,65,69,70,73,74],discard:[32,43,65,70],disconnect:[9,13,16,17],discov:1,discoveri:[2,3,7,32,53,70],disjoint:63,displai:[3,4,9,11,12,13,15,16,17,19,21,22],dissector:75,distinguish:[63,69,73],distribut:[6,58,62,64,70],divid:[32,43,66,70,74],dn:[7,32,51],dns1:[1,7,32,51,65],dns2:[1,7,32,51,65],doc:[1,28,32,62,69,73],document:[58,61],doe:[6,59,62],domain:[13,32,35,63],done:[6,65,69,70,73],doubl:4,down:[2,3,7,24,25,32,35,63,65],download:[58,62,75],downstream:[1,4,6,7,8,24,25,32,54,56,63,65,66,70,74],dpdk:[61,75],dpkg:[58,62],draft:[25,32,69],driven:64,driver:[59,63,74],drop:[59,75],dsl:[24,25,32,35,63],dump:[69,73],dup:3,durat:[6,31,32,66],dure:[58,67,69,70,73],dut:70,dynam:[1,32,56,59,61,63,67,70,73,74],e:[5,6,31,32,33,34,35,36,37,38,58,62,63,65,69,71,73],each:[1,3,13,32,43,58,60,63,64,70,74],eas:58,easi:63,easiest:62,easili:[4,62,66,67,70,74,75],echo:[7,32,52,63,66],ecmp:70,econom:2,edg:61,effect:[32,43,60,70],effici:[60,69,73],eip:62,either:[58,60,62],elaps:[32,43,70],electr:2,element:[6,13],els:[69,73],emul:[1,2,3,4,6,7,61,63,65,69,73],enabl:[1,2,3,4,5,6,7,8,13,14,21,22,27,28,32,35,39,40,43,50,51,55,57,58,60,62,63,64,65,66,69,70,74],encap:[25,32],encapsul:[25,32],encod:[69,73],encount:58,end:[2,58,61,63,65,66,67,68],endpoint:58,energi:2,enforc:58,engin:69,enhanc:[58,61,67,71],enough:[6,63,69],enrich:2,ens5f1:63,ensur:[1,7,73],enter:65,entir:61,entri:[66,69,73],env:66,environ:[1,64,74],eoam:[10,13,32,35,63],equal:[32,35,56,63,69,73,74],error:[13,16,58,66,69,71,73,75],establ:65,establish:[1,3,5,6,7,8,13,21,31,32,54,56,58,59,60,65,66,67,70,74],etc:58,eth0:[32,34,35,37,38,63,70],eth11:58,eth12:58,eth1:[1,2,3,5,6,7,58,60,63,64,66,67,69,70,73,74],eth2:[3,4,6,7,60,63,64,66,69,73,74],eth3:[63,66],eth4:[2,63],eth5:[2,63],eth:[1,3,7,65],ethernet:[1,2,4,7,59,63,65],ethertyp:[32,34,35,63],ethtool:[63,65],etr:[25,32],evalu:[1,60],even:[32,43,61,63,64,70,71],event:[61,75],everi:[2,6,58,61,63,64,65,66,67,69,73,74],everyth:64,evolv:61,exactli:70,exampl:[1,2,3,4,6,7,8,13,32,56,60,61,62,63,64,65,66,67,69,70,71,73,74],excel:1,except:[32,33,63,69,73,74],exchang:[67,70],exclud:[74,75],exclus:[70,71],execut:[13,16,58,60,62,66],execute_command:[69,73],exist:[67,69,70,73],exit:[67,69,70,73],exp:[32,56,74],expect:[7,13,16,25,32,56,59,67,69,73,74],expens:63,experiment:[32,33,61,62,63,64,73],expir:1,explain:[2,13,32,58,61,62,63,64,65],explicit:[32,37,63],explicitli:[2,58,63,70,74],expos:58,express:74,extend:[1,67,70],extens:[58,65,66],exterior:67,extern:[6,40,41,42,46,47,58,65,69,71,73],extra:2,extract:66,f1:65,f9:65,f:[65,66,67,70,71,73],face:63,facilit:[1,58],facto:69,fail:[7,62],failur:59,fals:[1,2,3,6,7,26,27,28,31,32,33,34,35,36,40,43,44,45,52,53,55,57,60,63,64,65,67,69,70,71,73],famili:67,familiar:65,famou:61,far:64,fast:[6,7,62,63,74],faster:[6,31,32,74],faulti:7,fc00:65,fc66:[1,3,7,60,63,65,67,69,73,74],featur:[5,61,65],feder:2,feed:61,ff:[2,32,36,63],field:[69,73],figur:2,file:[6,9,13,15,17,19,26,32,40,41,43,46,58,59,61,62,65,66,75],filenam:[66,74],filter:[3,60,65,75],find:61,finish:65,first:[1,2,6,7,8,13,26,32,55,56,63,64,65,66,67,73,74],fix:[3,32,35,44,61,63,74],flag:[1,27,32,58,59,63],flap:[5,13,15,66],flexibl:[1,60],flop:65,flow:[1,4,7,8,13,18,22,32,57,61,64,65,66],focu:6,folder:58,follow:[2,3,4,5,6,7,8,13,31,32,33,55,58,60,62,63,64,65,66,67,69,70,71,73,74,75],footprint:61,forc:69,forcefulli:58,fork:62,format:[4,58,74],forum:2,forward:[2,8,61,70,74],found:[2,13,58,60,61,62,69,70,73],four:3,fragment:[1,7,65,66],free:61,frequent:61,fri:58,friendli:61,from:[2,3,6,7,8,12,13,19,32,33,35,40,43,44,56,59,61,63,64,65,67,69,70,73,74,75],front:[32,56,74],fsm:61,fulfil:[7,61],full:[61,64,67],fulli:[5,61],further:[4,6,32,33,58,61,63,64,65,67,70,74],furthermor:[1,58],g:[5,6,31,32,33,34,35,36,37,38,56,58,62,63,71,73,74],ga:2,gamma:[25,32],gap:[6,74],gatewai:[1,3,4,6,7,32,34,35,38,60,63,65,67,69,70,73,74],gaug:58,gbp:[32,56,74],gdb:62,gdr:[25,32],gener:[8,31,32,37,54,55,58,60,61,62,63,65,66,69,71,73,74,75],german:2,germani:2,get:[58,61,63,65],giga:[32,56,74],git:62,github:[58,60,61,62],give:[60,66],given:[3,8,32,56,64,73,74],global:[1,5,7,8,13,26,32,33,37,49,63,64,65,66,67,74],gnu:[62,63],go:[61,65],gobgp:65,gobgpd:65,good:61,gracefulli:[5,58],graph:[65,69,71,73],graphviz:71,group:[1,2,6,12,13,21,29,31,32,35,37,56,60,63,64,65,70,74],guid:[61,62,63],h:[67,70,71],ha:[25,32,56,58,61,62,65,67,69,70,71,74,75],hand:1,handl:[1,63,64],handshak:[1,28,32,69],hang:5,happen:65,hard:[61,64],hardwar:[63,64],have:[61,63,65,66],head:62,header:[2,4,6,32,44,56,58,59,60,63,69,73,74,75],hello:[3,32,40,43,44,45,69,70,73],help:[6,58,67,70,71,75],helper:[32,56,74],henc:71,here:[25,32,59,65,67,71],hex:[69,73],hi:2,high:[32,33,63],higher:[32,33,63,64],histor:69,hold:[26,32,40,43,65,67,69,70],hop:67,host:[1,2,4,7,32,53,63,74],hostnam:[3,32,40,43,44,45,58,65,69,70,71,73],hour:5,how:[6,8,31,32,58,63,64,65,66,67,69,73,75],howev:[60,71],html:[1,28,32,62,69,73],http:[1,11,28,29,30,58,61,62,69,73],huge:[58,61],i1:[32,35,63],i2:[32,35,63],i:[58,62,64,65,70,73],ia:[1,28,32],ia_na:[1,28,32],ia_pd:[1,28,32],icmp:[63,66],icmpv6:[59,66],icrq:[3,32,44],id:[1,2,3,6,7,10,11,12,13,15,16,17,20,21,22,24,25,26,27,28,29,32,35,36,38,40,42,43,45,47,56,58,60,63,64,65,67,69,70,71,73,74],idea:[7,59],ident:73,identif:[2,74],identifi:[2,13,15,25,26,29,32,35,36,40,42,43,45,47,56,60,63,64,67,69,70,73],idl:[6,65],iec:69,ietf:[1,28,32,69,70,73],ifac:67,ifindex:13,igmp:[6,12,31,35,63,66,75],igmpv3:[6,31,32],ignor:[7,32,52,70],igp:73,ihhi:73,ii:73,implement:[6,61,63],implicitli:[32,38,63],inc:[3,61],includ:[1,2,6,7,8,13,31,32,33,51,58,61,62,63,65,66,67,69,70,71,73,74,75],increas:[13,32,33,63,64,65],increment:[63,67,70,74],indent:[69,73],independ:5,index:[13,14,74],indic:[32,43,70],individu:1,infin:[7,32,53,56,74],info:[1,3,6,7,12,13,14,21,22,58,65,67,70,75],inform:[1,3,7,8,12,13,21,22,28,32,58,67,69,70,73,75],infrastructur:[1,2],init:65,initi:[1,6,7,31,32,39,51,52,58,60,70,71],inject:[63,67,69,70,73],inner:[1,2,3,7,13,32,35,55,56,63,64,65,67,74],input:[65,75],instal:[61,64,65],instanc:[4,6,11,13,15,17,19,32,38,40,43,45,60,63,65,69,70,71,73],instance_nam:58,instances_run:58,instances_tot:58,integr:[4,58],interact:[13,58,60,65,75],intercept:[0,61],interconnect:69,interest:61,interfac:[1,2,3,4,5,6,7,8,14,19,25,26,30,31,33,34,35,36,37,38,42,47,54,55,56,58,59,60,61,62,64,65,66,67,69,70,74,75],interface_nam:58,interface_typ:58,interfaces_rx_packet:58,interior:73,interl:[25,32],interleav:[25,32],intermedi:[2,69],intern:[4,59,66,69],internet:[2,61,63,67,69],interv:[1,3,4,6,7,27,31,32,33,37,39,40,43,44,45,52,63,64,65,69,70,73,74],introduc:2,introduct:[61,71],intuit:58,invok:74,io:[32,33,36,37,58,59,62,63,64,65,66,74,75],ip6cp:[3,5,13,20,35,50,63,65,66],ip:[1,3,6,7,31,32,44,51,56,58,63,65,70,74,75],ipcp:[3,5,13,20,35,44,51,63,65,66],ipo:[0,2,5,35,39,55,60,61,63,65,66],iptv:[0,61,63],ipv4:[1,2,3,4,5,6,8,9,13,17,26,27,29,30,35,38,39,40,43,44,47,54,56,59,60,63,64,65,66,67,69,70,71,73,74],ipv4_address_list:71,ipv4_prefix:71,ipv4_prefix_list:71,ipv6:[1,2,3,4,5,8,29,30,35,38,39,40,43,54,56,59,60,63,65,66,67,69,70,71,73,74],ipv6avg:66,ipv6pd:[1,7,8,32,54,56,66,74],isi:[15,38,40,41,42,58,61,63,68,71,75],isis_areaentri:69,isis_areatlv:69,isis_commonhdr:69,isis_l1_lsp:69,iso:69,isol:1,issu:[58,61,64],iter:[1,6,12,13,31,32,35,55,63],its:[1,32,43,60,61,63,70,71,73],itself:[69,73],j:[65,66],jitter:74,job:66,join:[12,13,31,32,75],jq:[1,7,13,60,65,69,73,74],json:[13,58,62,65,67,69,73,75],jsonpath:74,jumbo:63,junk:[69,73],just:[3,60,62],k:[32,56,65,71,74],kb:65,keep:5,keepal:[3,7,32,43,52,65,70],kei:[6,13,32,40,45,65,69,71,73,74],kernel:[32,33,37,59,63],keyboard:65,kill:[5,58],kilo:[32,56,74],kind:[7,61,63],kwarg:[69,73],l1:[32,38,42,63,65,66,69],l2:[32,38,42,63,65,69,74],l2bsa:[0,61,63],l2tp:[0,16,32,44,56,61,63,74,75],l2tpv2:[3,61],l3:74,l:[6,65,67,70,71,75],label1:[32,56,74],label2:[32,56,74],label:[8,32,54,56,58,61,65,67,70,72,74],lac:3,lacp:[2,32,36,37,63],lag0:[32,36,63],lag1:63,lag:[2,13,14,36,37,61,64,75],lane:63,larg:[58,63,69,71,73],larger:[63,70],last:[6,66,67,74],latenc:[61,74],later:[69,71],layer:[1,2,32,33,37,56,63,65,74],lcp:[3,5,13,16,44,51,52,65,66],ldconfig:62,ldp:[17,43,56,61,68,74],ldpupdat:[65,70],ldra:[1,28,32,35,63],le:74,lead:[6,61],leak:[5,69],lean:7,learn:[63,69,70,73,75],leas:1,least:[2,13,63,64],leav:[12,13,31,32,75],left:65,legal:[0,61],len:[73,74],length:[2,3,6,31,32,44,56,59,60,63,65,67,69,70,73,74],less:64,let:65,letter:[32,56,74],level1:[32,40,65,69,71],level2:[32,40,69],level:[13,15,32,35,38,40,42,63,65,67,69,70,71],li:[0,18,61],lib:58,libcmocka:62,libcunit1:62,libdict:62,libdict_1:62,libdpdk:62,libjansson4:62,libjansson:62,libncurses5:62,libncurses6:62,librari:[61,67,70],libssl1:62,libssl3:62,libssl:62,lifetim:[32,40,65,67,69,70,71],lightweight:[1,2,28,32,60,61,65],lihawi:[25,32],liid:4,like:[1,6,27,28,32,56,61,63,67,68,69,70,73,74],limit:[2,32,36,58,59,63,64],line:[1,2,3,7,24,25,27,28,35,63,65,74],link:[1,2,13,14,25,33,34,35,36,37,38,58,61,64,65,69,70,71,73,75],linux:[58,61,62,63],linux_gsg:62,list:[9,13,14,16,17,18,21,32,33,58,63,65,67,69,73,75],listen:58,live:[32,57],ll:65,ln:[3,44,61,75],lns10:3,lns11:3,lns12:3,lns13:3,lns14:3,lns15:3,lns16:3,lns17:3,lns18:3,lns19:3,lns1:3,lns20:3,lns21:3,lns22:3,lns23:3,lns24:3,lns25:3,lns26:3,lns27:3,lns28:3,lns29:3,lns2:3,lns30:3,lns3:3,lns4:3,lns5:3,lns6:3,lns7:3,lns8:3,lns9:3,load:[9,13,15,17,19,32,33,58,63,65,66,67,69,70,73],local:[1,2,9,13,16,17,26,30,32,38,43,47,58,60,63,65,67,70,71,73],local_pref:67,locat:[2,58,60],log:[6,13,65,67,70,71],logging_flag:58,logic:63,longest:70,look:61,lookup:[32,56,65,70,74],loop:[61,71],loss:[1,6,7,61,65,66,74,75],low:[25,32,61,63],lower:[32,33,63],ls:73,lsa:[13,19,45,69],lsacount:73,lsdb:[13,15,19,71],lsp:[13,15,32,40,65,70,71,73],lspgen:[65,68],lspid:69,lsr:[32,43,65,70],lt:[58,62],lua:75,lua_script:75,m:[32,56,65,67,70,71,74],ma:[32,35,63],mac:[1,2,7,32,33,34,36,37,38,63,65,74],machin:[61,65],mai:[2,5,6,7,32,43,58,67,70],main:[32,33,58,63,64,69,73],maintain:[61,70],mainten:[32,35,63],make:[2,58,62,67],manag:[2,58,60],mandat:2,mandatori:[3,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,29,30,32,44,47,56,60,73,74],mani:[2,5,58,61,63,65],manual:[2,13,21,32,34,38,60,62,63,67,70,71],manufactur:2,map:[2,63,70,73],mar:65,mark:[60,69],marker:67,market:2,mask:73,massiv:[32,57,58,61,64],match:[9,13,16,17,70],max:[1,2,3,6,7,8,25,31,32,35,36,44,49,50,51,52,53,55,56,57,63,64,65,66,73,74],maximum:[5,6,7,25,31,32,33,35,36,43,48,63,64,66,70,74],mbp:74,mc1:6,mc2:6,md5:[32,40,45,65,69,71,73],mean:[1,2,7,8,32,33,39,52,61,63,64,67,70,74],measur:[6,8,31,32,61,66,74],mechan:1,mediat:4,mega:[32,56,74],mellanox:62,member:[2,32,36,63],memori:[5,58,61,63,67,70],mention:[6,31,32],merg:74,meson:62,messag:[3,7,13,16,32,43,44,52,58,65,67,69,70,73],meta:75,method:[1,5],metric:[32,38,42,47,63,65,69,71,73],metric_flag:58,microburst:64,microsecond:74,might:[32,33,63,69,73,74],migrat:2,million:[58,61,64],millisecond:[6,7,31,32,33,37,52,63],min:[1,2,3,7,8,25,32,35,36,55,63,64,65,66,74],mini:63,minimum:[25,32,35,36,63,66,74],ministri:2,minor:60,minu:[59,63],miss:6,mission:61,mkdir:62,mmap:[32,33,59],mode:[1,3,7,32,33,35,37,44,59,60,62,64],model:[2,63],modern:[58,61,62,64],modifi:[6,32,33,63,67,70,71],modul:62,monitor:58,monkei:[0,13,32,35,55,63],more:[2,5,6,31,32,60,61,63,64,65,67,69,70,73],moreov:60,most:[1,3,32,35,59,63,64,75],motiv:61,move:69,mpl:[8,32,54,56,59,61,68,70,74],mpls_ipv4_flag:71,mpls_ipv6_flag:71,mrt:[13,15,19,32,40,41,46,65,67,71],mru:[3,7,32,35,48,63],ms:[6,32,40,66,69],msg:[60,65],mtu:63,much:64,multicast:[0,13,23,31,32,61,63,66,70],multipl:[1,2,6,8,12,13,31,32,58,60,63,64,67,69,70,73],multipli:64,multiprotocol:[65,70],multithread:[32,36,63,64],must:[2,5,13,32,43,58,63,65,70,71,74],mutual:70,n1:69,n:[1,3,7,13,32,35,55,56,60,63,65,67,70,71,74],na:[1,28,32],nak:1,name:[2,3,6,7,8,29,30,32,34,35,36,37,38,44,53,56,58,60,63,64,65,66,67,70,71,74,75],nano:74,nat:60,navig:65,nc:13,ncontent:60,need:[2,13,32,33,62,63,65,69],negoti:7,neighbor:[13,19,65],neighbor_list:71,netmask:1,netplan:63,network:[1,2,3,4,6,7,8,13,14,26,30,31,35,38,54,56,58,60,61,62,64,66,67,69,70,73,74,75],network_interfac:58,networkd:63,newer:[69,73],next:[4,6,31,32,65,67],nga:2,nic:62,ninja:62,nlocat:60,node1:71,node:[2,32,40,61,65,69,71,73],node_flag:71,node_id:71,non:[3,32,44,61,63,68],none:71,normal:[62,71],note:73,notif:65,now:[62,65,66,69,73],nserver:60,nsp:2,num:[67,70],number:[3,4,5,6,8,13,31,32,33,36,37,43,56,58,63,64,65,66,67,69,70,73,75],o:[61,64],obtain:1,occur:59,octet:65,odd:63,off:[10,13,65],offer:[1,58,60],offic:2,offici:64,offload:[65,74],offset:[3,32,44,74],often:[6,31,32],ok:[1,3,4,6,7,13,58,60,65,69,70,74],old:6,onc:[67,70],one:[2,4,6,7,58,63,64,65,66,67,69,70,73,74],onli:[1,3,4,6,7,13,21,28,31,32,35,47,56,59,63,64,69,71,73,74,75],ont:[25,32],onu:[25,32],onupeak:[25,32],open:[7,13,20,61,65,66,67,69,73],openapi:58,openconfirm:65,opens:65,oper:[2,58,60,61,64,67,70],opposit:[7,64],optim:[1,7,61,62,73],option:[1,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,27,28,31,32,34,37,38,47,50,51,56,57,58,61,62,63,65,66,67,69,70,71,73,74,75],order:[3,64,74],org:[1,28,32,62,69,73],origin:[69,73],os:[69,73],osi:[63,69],ospf2:71,ospf:[19,45,46,47,68,71],ospf_external_lsa:73,ospf_hdr:73,ospf_lsupd:73,ospfv2:[47,71,73],other:[1,2,7,13,32,33,49,58,59,60,63,64,65,69,73,75],otherwis:2,oui:7,our:61,out:[3,61,62,65,70],outag:5,outcom:58,outer:[1,2,3,7,13,32,34,35,44,55,56,59,60,63,64,65,67,70,74,75],output:[3,58,60,62,67,70,75],outq:65,outstand:[7,32,55],over:[1,2,6,7,12,13,25,32,43,55,56,60,64,66,67,69,70,73,74],overal:[58,60],overhead:[59,63],overlap:6,overload:[32,40,45,69,73],overseen:59,overwrit:[8,32,33,35,37,54,56,63,74],own:[63,67,69,70,73],p2p:[32,38,63,65,69,73],p:[65,67,70,71,75],pack:73,packag:[58,62,64],packet:[1,2,3,4,6,7,31,32,33,44,56,57,58,59,62,64,65,66,67,69,70,71,73,74],packet_mmap:[62,63],packet_mmap_raw:[32,33,62,63],packet_rx_r:63,packet_tx_r:63,pad:[3,32,40,44,66,69],padi:[7,32,53,66],pado:66,padr:[7,32,53,66],padt:[5,66],pages:[59,63],pair:65,pap:[3,7,32,49,66],paramet:[58,60,63,65],parent:[2,32,34,35,38,63],pars:62,particular:[6,66],particularli:1,pass:[58,62],password:[3,7,32,35,49,63],path:[13,67,69,73],payload:[32,56,74],pbit:[1,7,27,32,53,74],pcap:[59,65,67,69,70,71,73],pcap_captur:58,pd:[1,28,32],pdu:[13,15,19,32,43,69,70,73],peak:[25,32],peer:[3,9,13,17,26,32,43,44,65,67,69,70],pend:[13,21],per:[2,5,6,7,13,31,32,33,35,37,40,55,56,57,58,61,62,63,64,66,67,69,74,75],perform:[1,58,60,61,63],period:[1,32,39],permiss:62,permit:[3,32,44],phase:[67,70],physic:63,pid:58,pin:[32,37,63],pkg:62,pkgconfig:62,place:75,plan:[2,67],pleas:58,point:2,polici:[1,67],poll:[32,33,37,63,66],pon:[25,32],pool:64,port:[2,4,29,30,32,56,58,60,70,74],possibl:[3,5,6,58,60,62,63,64,69,71,73],post:[2,58],potenti:59,power:[5,8,25,32],pp:[2,3,6,7,8,31,32,54,56,63,64,65,66,67,70,74],ppp:[3,35,48,49,50,51,52,53,63],pppoe:[0,2,3,5,6,35,53,55,58,59,60,61,63,64,66,74,75],pre:[63,67,70],precis:[32,33,63],pref:67,prefer:[8,32,43,67,70],prefix:[1,7,8,32,54,61,63,64,65,67,70,71],present:[13,58,61],preset:58,press:65,pretti:58,prevent:[59,60,63,64],previous:60,primari:[7,32,51,60,74],primarili:[58,62,64],print:[65,69,73],prioriti:[1,2,3,6,7,25,27,31,32,36,37,44,45,53,56,63,65,70,73,74],problem:58,process:[3,6,31,32,58,74],profil:[25,35,63],program:63,programmat:58,progress:58,project:[61,62],prometheu:58,promot:2,proper:[6,75],properli:64,propos:[7,32,48,64],protocol:[1,3,4,6,7,13,16,31,32,35,40,49,50,51,59,61,63,65,66,67,69,70,71,73],protocol_list:71,provid:[1,2,3,4,6,7,13,58,60,62,63,69,73],provis:2,proxi:3,psnp:[32,40,69],pt:4,pta:63,purg:[13,15,69,73],purpos:[58,60,61],put:[32,56,58,74],python3:66,python:[13,66,67,70],q:71,qdisc:[32,33,37,63],qinq:[2,32,34,35,63,65],qmx:4,qo:[61,65,74],queri:74,question:61,queue:[61,63,64],quick:61,quickli:[8,61],quickstart:61,quit:71,r1:[65,69,71,73],r2:[65,69,71,73],r3:71,r6:73,r:[60,71],railwai:2,randomli:[5,71],rang:[2,32,40,55,63,65,69,73],rapid:[1,7,28,32],rate:[2,3,7,8,24,25,32,35,55,56,57,61,63,74],rather:69,raw1:65,raw:[6,9,13,17,26,32,33,43,56,58,59,62,65],rbf:58,rcvd:65,rdi:[10,13],re:[2,64],reach:[32,33,63],reachabl:[67,69],read:[63,65,71],readabl:[32,56,74],real:[1,6,62,69,73],realist:1,reason:64,receipt:[32,43,70],receiv:[2,3,4,6,7,8,32,33,43,44,48,56,58,61,63,64,65,66,69,70,72,73,74,75],recogn:6,recommend:[2,6,58,61,62,64],reconnect:[2,3,5,7,13,21,26,32,53,55,64,65,67],record:[6,31,32],recov:[5,59],recv:[69,73],redirect:60,ref:62,refer:[2,4,7,63,67,69,70],referenc:[32,37,63,67,71],refresh:[32,40,65,69],region:2,regulatori:2,reject:[7,32,49],rel:62,relai:[1,28,32],relat:[2,75],releas:[1,27,32,58,62,64,67],reli:1,reliabl:[3,6,32,44],remain:[64,69],remot:[1,2,3,7,13,16,24,27,28,32,35,47,63,65,71,73],remote_node_id:71,render:63,renew:1,repeat:65,replac:[13,63,67],repli:[1,65],report:[6,8,31,32,61,65,74],report_flag:58,repres:71,republish:69,request:[1,3,5,6,7,13,16,29,31,32,49,50,51,52,55,58,60,61,63,66,69,73],requir:[1,5,7,32,57,60,62,63,64],reserv:74,reset:[12,13,21,22,32,43,70],resid:63,resolv:[32,38,55,56,61,63,65,70,74],respond:[7,63],respons:[7,13,58,60],rest:58,restart:[5,13,21,60,61,63],result:[3,6,13,16,31,32,43,56,58,59,65,66,70,74],resum:60,retail:2,retri:[1,2,3,7,27,28,32,39,40,44,45,49,50,51,52,53,69,73],retriev:58,rev:62,rfc2661:[3,13,16,32,44],rfc3145:[13,16],rfc6221:[1,28,32],rfc6396:[69,73],rfc7552:[32,43,70],rfc:[7,69,70],rib:67,right:6,ring:[32,33,37,63],robust:[5,7],rollout:2,root:[62,65,71],rout:[61,63,65,67,69],router:[32,38,40,45,47,59,61,63,65,68,69,70,71,73],router_id:71,rpc:[13,58,65],rpf:[32,56,74],rs:66,rtbrick:[1,3,7,13,32,49,58,60,61,62,63,65,74],rule:[60,67],run:[1,3,4,5,6,7,13,16,58,60,61,65,67,69,70,73,74],run_report:58,rx:[1,3,4,6,7,32,33,37,56,58,63,64,65,66,67,70,74],s100:63,s1:[2,64,65,66,70],s200:63,s2:[2,65],s:[1,2,6,13,31,32,33,37,40,58,60,63,65,67,69,71,73],safi:65,same:[2,4,6,13,60,63,64,65,66,67,70,73],sbin:[58,62],scale:[61,64],scapi:[67,70],sccrq:[3,32,44],scenario:[1,2,60,64],schema:58,scratch:61,script:[13,58,66,67,70,74,75],seamless:58,search:[6,66],sec:62,second:[1,6,7,8,13,21,26,27,28,31,32,39,40,43,45,49,50,51,52,53,55,56,65,66,67,69,70,73,74],secondari:[7,32,51],secret123:[65,71],secret:[3,32,44,69,71],section:[2,6,13,25,32,35,58,63,64,74],see:[61,65,74],seed:71,segment:61,segment_id:71,select:[8,32,33,35,56,63,74],self:[69,73],send:[2,3,6,7,8,13,16,31,32,40,43,44,54,56,58,59,61,62,63,64,65,67,69,70,72,73,75],sens:67,sent:[6,8,25,31,32,33,56,58,63,64,65,70,74,75],sep:71,separ:[61,74],seq:[1,7,65,66,69,73,74],seqnum:69,sequenc:[6,8,65,66,69,71,73,75],sequenti:74,seri:[66,67,70],serious:61,serv:[58,61],server:[1,2,3,7,30,44,51,61,64,65],servic:[1,2,6,7,32,53,58,61,63,69],session:[0,1,2,3,4,5,6,7,9,10,11,12,16,17,20,21,22,23,31,33,35,38,43,49,53,54,55,56,58,59,60,61,63,64,65],session_count:58,sessions_establish:58,set:[3,6,7,8,10,13,25,31,32,33,34,35,37,38,43,44,49,56,57,60,62,64,65,66,67,70,71,74],setcap:62,setup:[32,55,61,64,65,70],sever:[60,67],sha:62,share:[1,63],shortest:73,should:[5,6,32,57,58,60,62,63,64,65,67,70,73,74],show:[6,8,58,62,63,65,67,69,70,71,73,74,75],shown:[1,3,4,6,13,16,62,63,69,70,73,75],sid:[32,40,65,69],side:[63,65],sigint:58,signal:[58,61],signatur:[6,31,32,74],similar:[1,63,66,73],similarli:5,simlar:71,simpl:[13,32,40,45,61,65,66,67,69,70,71,73,74],simpli:61,simplifi:58,simul:[1,60],simultan:60,sinc:58,singl:[2,3,6,13,31,32,61,64,65,70,75],size:[3,32,33,37,40,44,57,63,64,69,74],skip:[13,65],slice:58,slot:[32,33,37,63,64,65],slow:[3,32,44],smaller:[32,43,70],sn:66,so:[2,61,63,68],sock:[1,3,4,5,6,7,13,16,58,60,65,67,69,70,73,74],sock_stream:[69,73],socket:[3,13,32,33,58,63,65,69,71,73],socket_path:[69,73],softwar:[61,63,64],solicit:1,some:[2,4,6,31,32,58,59,63,64,65,75],soon:[5,8,58,67,70,74],sourc:[4,6,26,31,32,56,64,67,69,70,73,74],source1:[6,12,13],source2:[6,12,13],source3:[6,12,13],space:[61,63],special:[6,31,32],specif:[1,2,7,32,52,58,60,71,73],specifi:[2,6,8,31,32,54,65,70],speed:[13,16],split:64,spt:4,sr:[32,40,65,69,71],srgb:65,srgb_base:71,srgb_rang:71,stabil:73,stabl:62,stack:61,standalon:[4,65],standard:[58,62,67,69,75],start:[3,5,6,7,8,10,11,12,13,21,22,23,26,29,31,32,35,38,44,52,54,55,56,57,59,60,61,62,63,64,65,66,67,69,70,73,75],startup:[60,67,69,70,73],stat:[12,13,22,65,66,70],state:[1,2,3,6,7,25,32,58,60,61,63,65,69,70,71,73],statist:[4,13,18,21,22,32,57,58,61,65,66,74],statu:[1,3,4,6,7,13,32,52,60,65,69,70,74],stderr:[58,69,73],stdout:58,steam:63,step:[32,35,62,63,65],stick:[3,32,44],still:[64,65,73,75],stop:[5,6,7,10,11,12,13,21,22,23,32,55,56,57,60,63,65],store:[3,7,58,59,66,74],stream:[2,4,6,8,21,22,23,33,35,56,57,58,59,61,63,64,65,66,67,71,75],streamlin:58,string:[32,35,58,63],struct:73,sub:[3,4,74],subnet:70,subscrib:[1,61,63],subset:2,substitut:63,subtract:74,subtyp:[69,73],success:[32,43,70],successfulli:[7,13],sudo:[1,3,4,5,6,7,13,16,58,60,62,63,65,67,69,70,73,74,75],suit:61,summari:[13,22],support:[1,2,3,4,6,7,13,32,33,36,44,56,58,61,63,64,65,67,68,69,70,71,73,74,75],suppress:[6,31,32],sy:[69,73],symbol:62,synchron:[69,73],system:[32,33,36,40,42,58,59,64,65,67,69,71,74],systemctl:58,systemd:58,t1:1,t2:1,t:[63,64,65,71,74],tabl:[61,64,66,67],tag:[2,4],take:[6,58,61],tar:62,target:[62,70],task:[58,69],tc:[32,56,74],tcp:[4,29,30,32,43,60,65,70,75],teardown:[9,13,15,17,19,26,32,40,43,45,55,67,69,70,73],telecommun:2,telekom:61,term:[2,63],termin:[5,7,13,16,32,53,55,58,60,65],test10:3,test11:3,test12:3,test13:3,test14:3,test15:3,test16:3,test17:3,test18:3,test19:3,test1:3,test20:3,test21:3,test22:3,test23:3,test24:3,test25:3,test26:3,test27:3,test28:3,test29:3,test2:3,test30:3,test3:3,test4:3,test5:3,test6:3,test7:3,test8:3,test9:3,test:[1,3,5,7,12,16,32,35,49,55,56,59,60,61,63,64,65,66,67,68,69,70,73,74,75],tester:[4,60,61],testprotocol:62,text:58,than:[2,32,56,61,63,67,69,70,74],thei:[2,65],them:[58,60,63,65,69,71,73],therefor:[6,7,32,55,58,63,64,65,67,70],thi:[1,2,3,5,6,7,8,13,16,21,27,28,31,32,35,49,50,51,56,58,59,60,61,62,63,64,65,66,67,69,70,71,73,74,75],think:66,third:[32,33,35,62,63],thorough:1,those:[2,7,8,25,32,33,56,58,63,64,65,66,67,69,70,71,73,74,75],thousand:61,thread:[2,6,32,33,37,63,64,67,75],three:[2,6,31,32,63,66,69,71,73],threshold:[6,31,32],through:[32,33,58,60,61,63,65,70],throughput:[25,32,33,63,64],thu:2,time:[1,6,7,26,32,40,43,45,53,58,61,62,65,66,67,69,70,73,75],timeout:[1,2,3,7,27,28,32,36,39,43,49,50,51,52,53,63,66,70],timer:[13,15,61],timestamp:[32,33,63,69,73],tlv:[69,71],todai:4,took:[8,74],tool:[8,13,16,61,65,67,69,70,71,73],top:[60,65],topic:65,toplog:71,topolog:[61,65,69,73],tos:[1,3,6,27,31,32,44,74],total:[1,7,8,58,60,62,65,66],tr:[2,63],track:61,traffic:[0,1,2,3,4,7,21,22,23,26,27,31,33,44,53,54,56,57,58,61,63,64,66,67,72,75],translat:60,transmiss:73,transmit:63,transpar:2,transport:[32,43,70],tree:[25,32],tri:59,trigger:[2,67,70],troubleshoot:[58,61,62],ttl:[32,56,74],tunnel:[3,13,16,32,44],turn:58,two:[2,5,7,60,63,65,67,69,70,72,73,74],tx:[1,2,3,4,7,32,33,37,40,56,63,64,65,66,67,69,70,74],txqueuelen:63,type:[1,2,4,6,7,24,25,32,35,40,45,56,58,60,62,63,64,65,66,67,69,70,71,73,74],typic:[6,63,67],u:[2,13],ubuntu:58,udp:[4,70],under:[3,5,7,59,60,61,63,67,69,70,73],underli:[1,58],understand:66,unicast:[8,65,67],unidirect:64,uniq:[2,7,32,53],uniqu:74,unit:[7,32,48,58],unix:13,unknown:66,unlabel:[8,32,54],unset:[10,13],untag:[2,32,35,38],until:[8,32,38,58,63,70,74],unzip:62,up:[2,3,6,7,8,24,25,32,35,59,63,64,65,66,69,70,72],updat:[9,13,15,16,17,19,26,32,43,65],update1:[67,70],update2:67,upstream:[1,2,4,7,8,24,25,32,56,65,66,74],url:[29,32,60],us:[1,2,3,4,5,6,7,8,13,16,31,32,43,44,56,58,59,60,61,62,63,64,65,66,67,68,69,70,71,73,74,75],usabl:[2,58],usag:[32,35,58,63,67,70,71],user10:13,user1:[7,65],user:[1,2,7,13,32,49,58,60,61,62,63,65],usernam:[3,7,13,32,35,49,63,65],usr:[58,62,66],utc:58,utf:[69,73],util:[1,64],v1:58,v6:2,v:[2,32,33,62,63,71],valid:[1,4,32,43,67,70,71,74],valu:[7,13,25,32,33,35,43,49,60,63,66,70],valuabl:[1,60],variabl:[63,69,73],variou:[1,58,60,61,68,74],vector:67,vendor:[3,32,52,58,61],veri:61,verif:[61,74],verifi:[1,2,6,7,8,32,57,58,61,64,65,66,75],versa:64,versatil:[1,60],version:[6,25,31,32,35,45,58,60,62,63,65,69,70,71,73],veth1:65,veth:65,via:[3,7,32,48,62,63,67],vice:64,view:[6,31,32,65],violat:[8,66],virtual:[1,61,65,69,73],vlan:[1,2,3,7,13,27,32,34,35,38,53,55,56,59,60,63,64,65,74,75],voic:74,volum:74,w:[67,70,71],wa:[2,7,13,61,69,71],wai:[1,6,28,32,58,62,69,73],wait:[5,6,31,32,38,55,56,63,74],walk:65,warn:[13,58,67,70],wb:73,we:[13,61,64,65],welcom:[61,64],well:[2,6,63,71],were:2,wget:[58,62],what:65,when:[60,70],where:[1,2,3,32,44,56,58,61,63,65,74,75],whether:[1,58],which:[2,4,5,6,13,16,31,32,43,55,56,58,59,61,62,63,64,65,66,69,70,71,73,74,75],who:2,whole:69,wholesal:2,why:59,wide:73,window:[3,32,40,44,63,65,69,75],withdraw:[65,67,70],within:[6,31,32,59,69],without:[2,5,6,62,63,65,74],word:74,work:[4,5,6,8,62,64,65,73,74],worker:64,workload:64,world:[1,6],would:[6,8,59,64,65,66,74],write:[63,67,70,71,73],written:69,wrong:[1,7,65,66,74],x:[67,71,75],xjf:62,xz:62,y:[62,71],you:[2,13,60,61,63,64,65,66,68,71,75],your:[59,61,63,64,65,67,70],youtub:61,z:71,zap:[12,13,31,32],zero:[3,32,44,63,64,74],zip:62},titles:["Access Protocols","IPoE","L2BSA","L2TP","Legal Interception (LI)","Monkey","Multicast and IPTV","PPPoE","Session Traffic","<no title>","<no title>","<no title>","<no title>","API/CLI","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","Configuration","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","Controller","Frequently Asked Questions","HTTP Emulation","BNG Blaster","Installation","Interfaces","Performance Guide","Quickstart Guide","Reports","BGP","Routing Protocols","ISIS","LDP","LSPGEN","MPLS","OSPF","Traffic Streams","Troubleshooting"],titleterms:{"function":63,"static":1,a10nsp:[32,63],access:[0,32,63],address:1,adjac:[69,70],aggreg:[32,63],api:[13,58],ask:59,authent:[7,32],bgp:[13,32,65,67],blaster:[13,61,62,74],bng:[13,61,62,74],build:62,cfm:13,cli:13,client:[32,60],command:[1,3,7,58,69,73,74],configur:[3,7,8,32,67,69,70,71,73,74],connect:32,connector:71,contact:61,content:61,control:58,copyright:61,creat:58,data:3,databas:[69,73],delet:58,depend:62,dhcp:[1,32,65],dhcpv4:1,dhcpv6:[1,32],doubl:63,dpdk:[62,63,64],emul:60,extens:7,extern:32,file:[67,69,70,71,73,74],flood:[69,73],flow:74,frequent:59,from:[62,71],gener:[6,67,70],guid:[64,65],header:3,http:[13,32,60],i:63,identifi:74,igmp:[13,32],instal:[58,62],instanc:58,intercept:[4,13],interfac:[13,32,63,73],ip6cp:[7,32],ipcp:[7,32],ipo:[1,32],iptv:6,ipv4:[7,32],ipv6:[7,32],isi:[13,32,65,69],join:6,json:66,l2bsa:2,l2tp:[3,13],l2tpv2:32,lag:[32,63],lcp:[7,32],ldp:[13,32,65,70],leav:6,legal:[4,13],li:[4,13],licens:61,limit:[6,67,69,70],line:32,link:[32,63],ln:32,log:[58,75],lsa:73,lsp:69,lspgen:[69,71,73],magic:74,manual:6,metric:58,mmap:63,mode:63,monkei:5,mpl:72,mrt:[69,73],multicast:[6,74],nanosecond:74,neighbor:73,network:[32,63,65],number:74,o:63,oper:63,ospf:[13,73],ospfv3:73,output:66,packet:63,pcap:[58,75],perform:64,plugin:75,ppp:[7,13,32],pppoe:[7,32,65],profil:32,protocol:[0,68],question:59,quickstart:65,random:71,rate:66,raw:[63,67,70,74],report:[58,66],rfc5515:3,rout:68,run:62,scapi:[69,73],send:74,sequenc:74,server:[32,60],session:[8,13,32,66,67,70,74],set:63,setup:66,singl:63,sourc:[61,62],standard:66,start:[58,74],statu:58,stop:[58,74],stream:[13,32,70,74],support:62,system:63,tag:63,test:[6,13,58,62],timestamp:74,topolog:71,traffic:[6,8,13,32,65,70,74],tripl:63,troubleshoot:75,ubuntu:62,unicast:74,unit:62,untag:63,updat:[67,69,70,73],v6:1,variabl:3,vendor:7,verif:8,via:[69,73],wireshark:75,zap:6}}) \ No newline at end of file +Search.setIndex({docnames:["access/index","access/ipoe","access/l2bsa","access/l2tp","access/li","access/monkey","access/multicast","access/pppoe","access/traffic","api/bgp","api/cfm","api/http","api/igmp","api/index","api/interfaces","api/isis","api/l2tp","api/ldp","api/li","api/ospf","api/ppp","api/sessions","api/streams","api/traffic","configuration/access_line","configuration/access_line_profiles","configuration/bgp","configuration/dhcp","configuration/dhcpv6","configuration/http_client","configuration/http_server","configuration/igmp","configuration/index","configuration/interfaces","configuration/interfaces_a10nsp","configuration/interfaces_access","configuration/interfaces_lag","configuration/interfaces_links","configuration/interfaces_network","configuration/ipoe","configuration/isis","configuration/isis_external","configuration/isis_external_connections","configuration/ldp","configuration/lns","configuration/ospf","configuration/ospf_external","configuration/ospf_external_connections","configuration/ppp","configuration/ppp_authentication","configuration/ppp_ip6cp","configuration/ppp_ipcp","configuration/ppp_lcp","configuration/pppoe","configuration/session_traffic","configuration/sessions","configuration/streams","configuration/traffic","controller","faq","http","index","install","interfaces","performance","quickstart","reports","routing/bgp","routing/index","routing/isis","routing/ldp","routing/lspgen","routing/mpls","routing/ospf","streams","troubleshooting"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":4,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["access/index.rst","access/ipoe.rst","access/l2bsa.rst","access/l2tp.rst","access/li.rst","access/monkey.rst","access/multicast.rst","access/pppoe.rst","access/traffic.rst","api/bgp.rst","api/cfm.rst","api/http.rst","api/igmp.rst","api/index.rst","api/interfaces.rst","api/isis.rst","api/l2tp.rst","api/ldp.rst","api/li.rst","api/ospf.rst","api/ppp.rst","api/sessions.rst","api/streams.rst","api/traffic.rst","configuration/access_line.rst","configuration/access_line_profiles.rst","configuration/bgp.rst","configuration/dhcp.rst","configuration/dhcpv6.rst","configuration/http_client.rst","configuration/http_server.rst","configuration/igmp.rst","configuration/index.rst","configuration/interfaces.rst","configuration/interfaces_a10nsp.rst","configuration/interfaces_access.rst","configuration/interfaces_lag.rst","configuration/interfaces_links.rst","configuration/interfaces_network.rst","configuration/ipoe.rst","configuration/isis.rst","configuration/isis_external.rst","configuration/isis_external_connections.rst","configuration/ldp.rst","configuration/lns.rst","configuration/ospf.rst","configuration/ospf_external.rst","configuration/ospf_external_connections.rst","configuration/ppp.rst","configuration/ppp_authentication.rst","configuration/ppp_ip6cp.rst","configuration/ppp_ipcp.rst","configuration/ppp_lcp.rst","configuration/pppoe.rst","configuration/session_traffic.rst","configuration/sessions.rst","configuration/streams.rst","configuration/traffic.rst","controller.rst","faq.rst","http.rst","index.rst","install.rst","interfaces.rst","performance.rst","quickstart.rst","reports.rst","routing/bgp.rst","routing/index.rst","routing/isis.rst","routing/ldp.rst","routing/lspgen.rst","routing/mpls.rst","routing/ospf.rst","streams.rst","troubleshooting.rst"],objects:{},objnames:{},objtypes:{},terms:{"0":[1,3,4,6,7,8,13,25,27,29,31,32,33,35,36,38,39,44,45,51,52,53,54,55,56,58,60,61,62,63,64,65,66,67,69,70,71,73,74],"00":[1,2,7,8,25,32,36,62,63,64,65,66,69,71],"000":[58,64,65],"0000":[64,65,69,71],"0001":[32,40,65,69,71],"000100050ac801000aff010180000001e7790024ffffff00000000140000000000000000":73,"000100050ac802000aff010180000001dc830024ffffff00000000140000000000000000":73,"0002":[65,69,71],"0003":71,"0010":[32,40,69],"0011":69,"0021":69,"0022":69,"01":[1,2,7,58,63,64,65,66,69],"0100":[32,40,69],"0102":69,"02":[1,2,7,32,36,63,65,71],"0204":71,"0204004001010101000000003b780000000000000000000000000001000100050ac80b000aff01018000012d1e0c0024ffffff00000000140000000000000000":73,"020400400101010100000000456e0000000000000000000000000001000100050ac80c000aff01018000012d13160024ffffff00000000140000000000000000":73,"025":63,"0288":74,"03":[65,66],"0304":69,"031917":65,"04":[25,32,58,62,65,71],"0506":69,"07":58,"0792":74,"08":65,"087877":65,"087971":65,"088013":65,"088035":65,"088050":65,"08t14":65,"09":65,"090288":74,"093906":65,"093964":65,"099792":74,"0s":65,"0x1":65,"0x192168001001":65,"0x5274427269636b21":74,"0x83":69,"0x88a8":[32,34,35,63],"1":[1,2,3,4,6,7,8,13,16,26,27,31,32,33,35,38,39,40,42,44,55,56,58,60,61,62,63,64,65,66,67,69,70,71,73,74],"10":[1,2,3,4,6,7,13,27,28,32,38,40,42,43,45,47,50,51,52,53,58,60,63,64,65,66,67,69,70,71,73,74],"100":[4,6,7,8,60,62,63,64,65,66,69,74],"1000":[3,6,7,31,32,58,63,64,65,66,67,69,71,73,74],"10000":[65,70],"100000":[65,67,71],"1000000000":[32,56,74],"10001":70,"1001":[32,40,63,65,69,71,74],"1002":[65,69],"10036":7,"10083":7,"101":[2,6],"1014":74,"102":[3,6],"1024":[3,7,69,73],"1026":74,"103":6,"1030":74,"10561":74,"10589":69,"106876":66,"106881":66,"108580":66,"11":[3,6,58,60,62,64,65,70,71,73],"1100":74,"110156":66,"110161":66,"1102":66,"1104":66,"111410":66,"112":74,"114":[6,74],"1142":69,"1198":66,"11981554":66,"11982029":66,"12":[3,6,8,60,64,65,73],"120000":65,"1206":66,"12252":8,"12278":8,"12299556":66,"12300031":66,"12306":8,"12314":8,"12360218":66,"12361":8,"124":65,"126":74,"12654727":66,"127":[65,66],"128":[1,2,6,7,32,56,63,65,70,74],"129":[7,32,51],"1291":6,"13":[1,3,7,64,65,70,71],"131":[7,32,51],"1337":[1,3,7,60,63,65,69,71,73,74],"1338":66,"138":65,"139":[6,66],"14":[3,58,64,65],"1406":3,"1439":1,"14399":1,"14400":1,"149":1,"1492":[3,7,32,48],"15":[3,32,43,64,66,70],"150":[58,66],"1500":[63,66],"155":58,"158":58,"16":[3,32,44,57,65,73],"16000":8,"160720":4,"163":58,"16384":[3,7],"168":[65,69,71],"17":[3,66],"1700":66,"172":65,"17799":8,"18":[3,58,62,66],"1816":66,"182885":65,"1840":66,"188120":66,"188259":66,"18845":8,"19":[3,65,66],"192":[65,69,71],"1921":[65,69,71],"197":66,"197340":66,"197523":66,"199":66,"1998":63,"1999":[7,63],"1_amd64":62,"1m":[32,33,57,63,64],"1s":[8,66],"2":[1,2,3,4,6,7,13,16,26,28,31,32,35,38,40,42,45,55,56,58,60,62,63,64,65,66,67,69,70,71,73,74],"20":[3,6,58,62,63,65,71,74],"200":[1,3,4,7,13,58,60,63,65,66,69,70,73,74],"2000":[7,63,65,69,74],"20000":65,"20001":67,"2001":74,"2002":69,"2010":2,"202":6,"2020":61,"2022":[58,65],"2023":61,"20425245":66,"206":[3,66],"208":74,"21":[3,62,70],"21009053":66,"213":74,"2147483649":73,"2147483949":73,"2153":7,"218":66,"22":[3,58,62,65],"222":73,"2222":1,"224":[66,70,74],"227":66,"23":[3,6,64,70],"232":6,"239":[6,13,31,32,74],"24":[3,4,5,7,32,40,60,63,65,67,69,70,71,73,74],"242810":71,"242827":71,"25":3,"250":64,"255":[1,32,33,36,56,63,73,74],"256":[2,6,65,74],"26":3,"261":1,"27":[3,65],"27008":74,"27040":74,"28":[3,65],"2891":8,"29":[3,62],"2900":8,"293":[6,31,32],"2957":8,"2978":8,"299":1,"2999":[7,63],"2s":[8,66],"2xx":13,"3":[1,2,3,4,6,7,13,16,26,27,31,32,35,38,40,43,52,55,56,61,62,63,64,65,66,67,69,70,71,73,74],"30":[3,6,7,32,40,44,49,52,65,69,73],"300":[1,32,39,40,69],"30003":71,"30005":71,"302":60,"3033":8,"303904":65,"303952":65,"3040":8,"3071":8,"309235":58,"31":[3,65],"3104":8,"3123":8,"3178":8,"3184":8,"3185":8,"31894":66,"31895":66,"31896":66,"32":[3,64,65,70,71],"320k":64,"322":66,"32461":66,"32465":66,"32633":66,"32635":66,"32641":66,"32768":[32,36,37,63,64],"32867":3,"32k":64,"33":[3,74],"33311":66,"33319":66,"3333":1,"34":[3,70],"35":[3,65],"350":66,"36":[3,65,66],"3600":69,"36000":71,"362":74,"37":[3,65,66,70,71,74],"37119":8,"373":66,"3742":66,"38":[3,65,66],"39":3,"3936":[59,63],"396765":65,"3_amd64":62,"3s":[8,66],"3x1":[32,36,63],"3x30":[32,36,63],"4":[1,4,7,8,13,16,26,32,55,58,60,61,63,64,65,66,67,69,70,73,74],"40":[3,45,66,73],"400":[7,32,55,60],"4000":[1,2,3,63,64,65,74],"404":[13,58],"4049":[7,63],"4094":2,"4096":[32,33,63,65],"41":74,"4194301":4,"422":66,"43":74,"4343":66,"48":[67,74],"48000":3,"4880":66,"49":[32,40,65,69,71],"49152":4,"5":[1,3,4,6,7,8,26,27,28,31,32,33,40,43,44,45,49,50,51,52,53,56,63,64,65,66,67,69,70,73,74],"50":[66,71,74],"500":66,"50000":67,"50011":3,"500mb":58,"5036":70,"51":65,"512":63,"52":65,"53":65,"54":65,"5422":74,"54232":74,"5458":74,"54593":74,"54594":74,"54610":74,"55":[65,71],"55661":66,"56":[7,65],"59":[4,65,71],"59655":74,"59670":74,"6":[1,2,4,7,64,66,67,69,70,73,74],"60":[3,73],"6000":66,"61":4,"6167":8,"6177":8,"61790":66,"61793":66,"62":66,"6205":8,"6226":8,"623":66,"624":66,"63":65,"64":[1,7,8,32,38,45,60,63,65,69,73,74],"64537":66,"646":70,"647569":65,"647630":65,"647633":65,"647639":65,"647642":65,"647645":65,"647648":65,"647651":65,"647654":65,"647657":65,"647660":65,"647669":65,"647672":65,"647678":65,"647813":65,"64bit":8,"65000":[26,32,67],"65001":[65,67],"65056":[32,56,74],"65506":69,"65507":69,"65524":69,"65529":69,"65535":[32,40,65,69],"65772":66,"65784":66,"6800":[65,69,71],"682535":58,"69":66,"6m":58,"6pe":67,"7":[1,2,3,4,32,44,60,63,64,65,67,69,70,73,74],"7142":69,"72":65,"7331":[3,7,60,63,65,69,74],"73763":8,"7456":6,"74810":66,"75":66,"76":[6,8,31,32,56,74],"78":66,"780109":71,"780127":71,"79":[3,8,65],"79200":74,"7min":58,"8":[1,3,4,58,63,67,69,70,73,74],"80":[29,30,32,60],"800":[7,32,55],"800000":74,"8000000":74,"8001":58,"8112":74,"811200":74,"8112000":74,"82":8,"820":4,"8208":74,"820800":74,"8208000":74,"822":66,"8240000":74,"83":8,"831b0100120100000021ffff010203040506000000000003c0d103010403490001":69,"831b0100120100000021ffff010203040506000100000003bad603010403490001":69,"84":8,"844":66,"870722":65,"88":[8,66],"899":1,"9":[4,8,58,63,64,67,69,70,73,74],"90":[26,32,65,67],"9000":[32,56,59,63,74],"90288":74,"9028800":74,"904266":65,"904293":65,"904359":65,"904369":65,"904389":65,"904448":65,"905659":65,"907888":65,"907903":65,"907917":65,"907989":65,"92":65,"93709":66,"94":4,"95265":66,"95685":66,"96000":8,"96548":74,"97":66,"97391":66,"97909":66,"981279":65,"981314":65,"981335":65,"98595":74,"98903":74,"99":74,"99792":74,"99949":66,"abstract":63,"break":[69,73],"byte":[4,32,33,59,63,66,74],"case":[1,7,8,64,69,73],"default":[1,3,4,5,6,7,8,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,67,69,70,71,73,74,75],"do":[6,63,64,74],"export":[69,71,73],"final":[6,8,31,32,58,65,66,69,73],"float":[32,56,74],"function":[1,2,3,4,5,6,8,13,14,32,37,56,58,60,69,70,73,74],"import":[66,69,71,73],"int":58,"long":[6,61],"new":[6,58,61,62,63,65,74],"return":[3,7,12,13,58,73,74],"short":[32,35,36,61,63],"static":[2,32,35,63],"switch":70,"true":[1,2,3,5,6,7,8,26,27,28,29,31,32,33,38,39,40,41,46,50,51,54,55,56,57,58,60,63,64,65,67,69,71,73,74,75],"try":[65,69,73],"var":58,"while":[2,69,73],A:[3,5,6,32,44,61,62,64,66,67,70],AS:[26,32,65,67],As:[5,58,62],At:63,BE:74,But:65,By:[1,58,60],For:[1,5,32,33,56,60,63,64,71,74],IS:[65,69],If:[5,6,7,31,32,61,62,63,64,65,74],In:[1,2,8,13,32,33,60,63,64,65,71],It:[2,3,5,6,32,33,56,58,61,62,63,64,69,70,73,74],ON:62,On:[1,65],One:[13,60,63,69,73],Such:[65,69,73,74],TOS:[1,3,6,27,31,32,44,56,74],The:[1,2,3,4,5,6,7,8,13,16,21,25,31,32,33,37,43,44,56,57,58,59,60,61,62,63,64,65,66,67,69,70,71,72,73,74,75],Then:[62,65],There:[61,62,65,67,68,69,70,73],These:[2,58],To:66,With:[7,64],_:71,__:71,___:71,____:71,_____:71,______:71,__comment__:[2,64,65],__main__:[69,73],__name__:[69,73],_amd64:58,_command:58,_start:58,_stop:58,a00:65,a10:[2,63],a10nsp:[2,8,13,14,34,35,56,58,61,64,65,74],a10nsp_interfac:58,abbrev:62,abil:[60,64],abl:[3,64,69,71,73],about:[3,4,13,58,61,66,73],abov:[6,31,32,60,64],ac10:65,accept:[2,7,32,52,63,65],access:[1,2,3,5,7,8,13,14,24,25,27,28,33,35,56,58,60,61,64,65,66,74],access_interfac:58,accommod:71,accord:[32,43,60,70],account:74,accur:1,accuraci:60,achiev:64,aci:3,ack:1,across:60,act:[25,32],action:2,activ:[6,32,35,36,58,61,63,69,70,73],actual:[2,13,24,25,32,33,63,64,66,70,74],ad:[1,13,28,32,65,74],adapt:73,add:[1,3,27,28,32,35,37,44,63,65,67,71],addit:[1,60,62,71],addr:58,address:[2,3,4,6,7,8,9,13,17,26,29,30,31,32,33,34,35,36,37,38,43,44,47,51,54,56,58,60,63,65,67,69,70,71,73,74,75],adjac:[13,15,17,65,73],administr:1,adrout:73,adsl:[2,63],advanc:[6,65],advertis:[1,32,38,59,63,65,69],advisori:2,af_unix:[69,73],affair:2,afi:65,after:[5,6,8,26,31,32,54,55,56,58,65,67,70,74],ag:[61,73],again:[5,65],agenc:2,agent:[1,2,3,7,24,27,28,32,35,63,65],aggreg:[2,13,14,24,35,61,64,75],aggress:[3,32,44],ago:58,algorithm:73,all:[1,2,3,5,6,7,8,9,11,12,13,14,16,17,18,21,22,23,27,32,33,41,44,46,53,54,55,58,59,60,61,62,63,64,65,66,67,69,70,73,74,75],alloc:1,allow:[1,2,3,5,6,7,13,16,27,28,31,32,33,37,49,50,51,58,59,60,61,62,63,64,66,67,69,70,71,73,74,75],alreadi:[58,67],also:[2,3,5,6,13,32,33,56,58,60,61,62,63,64,65,66,69,71,73,74,75],altern:[13,32,55,62,69,73,74],although:73,alwai:64,among:67,amount:[2,13,21,58,61],an:[2,3,6,8,13,32,37,43,58,59,60,61,63,65,66,67,69,70,73,74],analysi:[6,31,32,58],analyz:[58,66,75],ani:[4,7,58,60,61,62,63,65,74],anoth:[2,6,65],api:[61,65],apnic:61,append:[65,67,69,70,73],appendix:[3,32,44],appli:[6,31,32,56,60,63,64,65,74],applic:[13,21,58,60],apr:65,apt:[62,65],ar:[1,2,3,5,6,7,8,31,32,33,38,55,57,58,59,60,61,62,63,64,65,66,67,68,69,70,73,74,75],architectur:[2,64],archiv:63,area:[1,32,40,45,65,69,71,73],area_list:71,areaid:69,arg:[69,71,73],argument:[6,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,58,62,66,67,69,70,71,73,74,75],argv:[69,73],ari:3,around:[58,63,64,74],arp:[1,32,39,66],arriv:[32,43,70],articl:61,ascii:[24,32,74],ask:61,asm:[6,31,32],asn:67,ass:[25,32],assess:[1,60],assign:[1,8,13,32,38,56,63,74],associ:[1,32,35,60,63,73],assum:[8,32,43,64,70,74],assur:[25,32],asymmetr:64,att:[25,32],attach:[63,65,69,70,71,73],attain:[25,32],attetr:[25,32],attgdr:[25,32],attribut:[1,3,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,60,63,67,69,70,73,74],auth:[3,32,40,45,65,69,71,73],authent:[3,35,40,45,49,63,65,67,69,70,71,73],author:2,auto:[5,32,41,69],autogener:[2,6,8,32,54],autom:[58,61],automat:[2,4,5,6,7,8,13,31,32,37,41,46,53,54,55,57,58,60,63,64,67,69,73,74],autonom:67,autostart:[2,3,5,6,8,29,31,32,35,54,55,57,60,63],avail:[2,58],averag:[25,32,66],avg:[8,25,32,66],avoid:[3,32,44],avp:[3,32,44],b1:69,back:58,backbon:69,balanc:[2,64],base:[1,2,3,6,13,15,31,32,35,40,44,56,61,63,64,65,67,69,70,71,74],basic:[2,7,60,65,73],bbl:74,bbl_header:75,bcm:4,becaus:[13,32,56,69,74],becom:[5,7,58,60],been:[61,66,69,71,75],befor:[6,31,32,55,56,59,62,65,74],begin:60,behav:[7,63,69,73],behavior:[1,6,7,60,61,64,75],belong:63,below:[1,2,3,6,13,16,62,63,65,69,73,75],best:73,besteffort:74,better:[32,56,61,66,74],between:[2,6,8,31,32,40,43,54,60,63,64,65,66,69,70,71,73,74],beyond:64,bgp:[9,26,58,61,64,68,75],bgpupdat:[65,67],bi:70,bidirect:[8,32,54,64,65],bin:[58,62,66],binari:[62,67,70],bind:60,bit:[3,32,44,56,74],bitstream:2,blaster:[1,2,3,4,6,7,8,31,32,43,44,58,59,60,63,64,65,66,67,68,69,70,71,72,73,75],block:[2,63],blog:61,blueprint:[67,70],bnetza:2,bng:[1,2,3,4,5,6,7,8,31,32,43,44,56,58,59,60,63,64,65,66,67,68,69,70,71,72,73,75],bngblaster:[1,3,4,5,6,7,13,16,32,33,40,43,45,58,60,61,62,63,65,67,69,70,73,74,75],bngblaster_test:62,bngblasterctrl:58,bngbnlaster:58,board:2,bodi:58,bonn:2,border:67,both:[1,2,6,32,56,63,64,65,66,73,74],bound:[1,7,65,74],bp:[3,32,56,74],broadband:[2,60],broadcast:[1,27,32,65,73],bsd:61,buffer:[32,33,63],bug:61,build:[61,64,67,69,70,73],build_dpdk:62,built:[61,70],bundesnetzagentur:2,bundl:2,burst:[32,56,57,64,74],bust:64,bypass:[32,33,37,63],c0a8:65,c:[61,62,65,71,75],cach:64,calcualt:63,calcul:[32,43,56,57,59,66,70,74],call:[2,3,8,58,63,66,69,70,71,73],can:[2,3,4,5,6,7,8,13,16,31,32,33,43,49,55,56,58,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75],cap_dac_read_search:62,cap_net_admin:62,cap_net_raw:62,capability_list:71,capabl:[1,58,60,62,65,67,70],capit:[32,56,74],captur:[6,32,33,58,59,61,63,64,65,75],carri:13,cat:[13,69,73],categori:58,caus:[2,64,69],caution:64,cc:[10,13,32,35,63],cd:62,cfm:[10,32,35,63],cgroup:58,chang:[2,5,6,31,32,43,55,58,59,62,63,64,65,67,70,71,73],channel:[3,6,31,32,44],chap:[3,7,32,49,66],chapter:7,check:[6,58,62,65,69,73,74],checksum:65,chosen:[32,43,70],circuit:[1,2,3,7,24,27,28,32,35,63,65],classifi:[67,75],claus:61,cli:[1,3,4,5,6,7,16,60,61,65,67,69,70,73,74],client:[6,11,13,29,56,58,61,63,64,65,69,73,74],clone:62,close:[13,20,60,65,69,73],cmake:62,cmocka:62,code:[1,3,4,7,13,16,58,60,65,69,70,74],coher:64,color:58,com:[7,13,32,49,58,60,61,62,63,65],combin:[4,6,13,21,31,32,58,63,66,74],command:[4,5,6,13,16,60,62,63,65,67,70],commerci:61,commit:[1,7,28,32,61,62],common:[1,3,5,69,73],commun:[13,61,63],compar:73,compat:60,compil:[62,63,67,70],complet:[61,69,73],compon:1,compos:2,comprehens:[1,58,60],comput:73,concept:7,conceptu:73,condit:[7,61],conf:[3,7,32,50,51,52,65],config:[8,58,59,62,65,66,71],configur:[1,2,6,13,21,31,33,37,50,51,52,55,58,59,60,61,63,64,65,75],confus:69,congest:[3,6,32,44],connect:[1,7,13,16,42,43,47,52,63,65,69,70,71,73],connector:65,consid:[32,33,58,59,63,64,73,74],consol:58,constant:61,construct:71,consum:6,contain:[13,58,61,63,69,73],content:[58,60],context:65,continu:[60,64],contrib:[69,73],contribut:[61,64],control:[1,3,6,7,13,27,31,32,44,53,60,61,65,71,73,74],controller_:58,conveni:58,converg:[8,61],convert:67,copi:[7,63],core:[2,32,37,61,63,64],corner:65,correct:6,correctli:[3,8,62],correspond:[2,5,6,8,13,31,32,35,56,58,63,64,67,70,71,74],could:[5,59,64,66,71,74,75],count:[6,7,12,13,31,32,55,58,67,70,71,74],counter:[13,21,58],cours:[65,75],cp:66,cpack:62,cpe:[2,5,7],cpu:[32,37,61,63,64],cpuset:[32,37,63,64],crash:5,creat:[32,55,63,65,67,69,70,71,73],csnp:[32,40,69],csun:3,csurq:[3,13,16],ctrl:[65,71],curl:58,current:[32,33,58,63,64,67,69,70,71],custom:[2,58],d:[4,58],daemon:65,data:[2,24,25,32,44,58,66,69,73,74],databas:[13,15,17,19,66,70],datar:[25,32],datatrack:[1,28,32,69,73],dbngblaster_dpdk:62,dbngblaster_test:62,dcmake_build_typ:62,de:[3,32,35,36,60,63,69],dead:[45,73],deb:[58,62],debian:[58,62,64],debug:[58,62,67,70,71,75],decis:67,decod:[69,73,74],decreas:[32,33,63,66],dedic:[1,6,31,32,63,64],def:[69,73],defin:[1,2,3,6,7,13,21,25,28,31,32,33,36,37,43,48,57,58,60,63,65,67,69,70,71,73,74],definit:[2,60],delai:[6,7,13,21,25,29,31,32,52,55,56,60,74],deleg:[1,7,8,32,54],delet:61,deliveri:[3,32,44,73],demonstr:60,denog13:61,depend:[32,33,59,63,64,74],depict:2,deploy:[1,60],deriv:[66,74],describ:[3,32,44,69,73],descript:[1,3,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,60,63,67,69,70,73,74],design:[67,69,73],desir:[32,33,63,66],destin:[4,6,29,32,56,60,63,65,70,74],detail:[1,2,3,4,6,7,8,13,18,31,32,58,61,62,63,65,66,73,74],determin:73,deu:[1,3,7,65],deutsch:61,dev:[62,63,65],dev_1:62,develop:[1,13,62,71,73],devic:[3,4,5,7,59,60,63,65,69,70,73],df453a5ee9dbf6440aefbfb9630fa0f06e326d44:62,df:[32,56,74],dgit_ref:62,dgit_sha:62,dhcp4:63,dhcp6:63,dhcp:[27,35,60,61,63,66,75],dhcpv4:[2,5],dhcpv6:[2,5,7,13,28,35,59,60,63,64,65,66],dialogu:2,differ:[1,3,5,6,7,32,44,56,60,61,63,65,66,67,69,73,74],direct:[2,4,6,13,16,32,56,58,64,65,70,74],directli:[2,32,33,63,69,73],directori:[58,62,65,75],disabl:[1,2,5,6,7,8,13,14,21,22,27,28,31,32,38,39,40,43,45,50,51,52,54,63,65,69,70,73,74],discard:[32,43,65,70],disconnect:[9,13,16,17],discov:1,discoveri:[2,3,7,32,53,70],disjoint:63,displai:[3,4,9,11,12,13,15,16,17,19,21,22],dissector:75,distinguish:[63,69,73],distribut:[6,58,62,64,70],divid:[32,43,66,70,74],dn:[7,32,51],dns1:[1,7,32,51,65],dns2:[1,7,32,51,65],doc:[1,28,32,62,69,73],document:[58,61],doe:[6,59,62],domain:[13,32,35,63],done:[6,65,69,70,73],doubl:4,down:[2,3,7,24,25,32,35,63,65],download:[58,62,75],downstream:[1,4,6,7,8,24,25,32,54,56,63,65,66,70,74],dpdk:[61,75],dpkg:[58,62],draft:[25,32,69],driven:64,driver:[59,63,74],drop:[59,75],dsl:[24,25,32,35,63],dump:[69,73],dup:3,durat:[6,31,32,66],dure:[32,41,46,58,67,69,70,73],dut:70,dynam:[1,32,56,59,61,63,67,70,73,74],e:[5,6,31,32,33,34,35,36,37,38,58,62,63,65,69,71,73],each:[1,3,13,32,43,58,60,63,64,70,74],eas:58,easi:63,easiest:62,easili:[4,62,66,67,70,74,75],echo:[7,32,52,63,66],ecmp:70,econom:2,edg:61,effect:[32,43,60,70],effici:[60,69,73],eip:62,either:[58,60,62],elaps:[32,43,70],electr:2,element:[6,13],els:[69,73],emul:[1,2,3,4,6,7,61,63,65,69,73],enabl:[1,2,3,4,5,6,7,8,13,14,21,22,27,28,32,35,39,40,43,50,51,55,57,58,60,62,63,64,65,66,69,70,74],encap:[25,32],encapsul:[25,32],encod:[69,73],encount:58,end:[2,58,61,63,65,66,67,68],endpoint:58,energi:2,enforc:58,engin:69,enhanc:[58,61,67,71],enough:[6,63,69],enrich:2,ens5f1:63,ensur:[1,7,73],enter:65,entir:61,entri:[66,69,73],env:66,environ:[1,64,74],eoam:[10,13,32,35,63],equal:[32,35,56,63,69,73,74],error:[13,16,58,66,69,71,73,75],establ:65,establish:[1,3,5,6,7,8,13,21,31,32,54,56,58,59,60,65,66,67,70,74],etc:58,eth0:[32,34,35,37,38,63,70],eth11:58,eth12:58,eth1:[1,2,3,5,6,7,58,60,63,64,66,67,69,70,73,74],eth2:[3,4,6,7,60,63,64,66,69,73,74],eth3:[63,66],eth4:[2,63],eth5:[2,63],eth:[1,3,7,65],ethernet:[1,2,4,7,59,63,65],ethertyp:[32,34,35,63],ethtool:[63,65],etr:[25,32],evalu:[1,60],even:[32,43,61,63,64,70,71],event:[61,75],everi:[2,6,58,61,63,64,65,66,67,69,73,74],everyth:64,evolv:61,exactli:70,exampl:[1,2,3,4,6,7,8,13,32,56,60,61,62,63,64,65,66,67,69,70,71,73,74],excel:1,except:[32,33,63,69,73,74],exchang:[67,70],exclud:[74,75],exclus:[70,71],execut:[13,16,58,60,62,66],execute_command:[69,73],exist:[67,69,70,73],exit:[67,69,70,73],exp:[32,56,74],expect:[7,13,16,25,32,56,59,67,69,73,74],expens:63,experiment:[32,33,61,62,63,64,73],expir:1,explain:[2,13,32,58,61,62,63,64,65],explicit:[32,37,63],explicitli:[2,58,63,70,74],expos:58,express:74,extend:[1,67,70],extens:[58,65,66],exterior:67,extern:[6,41,42,46,47,58,65,69,71,73],extra:2,extract:66,f1:65,f9:65,f:[65,66,67,70,71,73],face:63,facilit:[1,58],facto:69,fail:[7,62],failur:59,fals:[1,2,3,6,7,26,27,28,31,32,33,34,35,36,40,41,43,44,45,52,53,55,57,60,63,64,65,67,69,70,71,73],famili:67,familiar:65,famou:61,far:64,fast:[6,7,62,63,74],faster:[6,31,32,74],faulti:7,fc00:65,fc66:[1,3,7,60,63,65,67,69,73,74],featur:[5,61,65],feder:2,feed:61,ff:[2,32,36,63],field:[69,73],figur:2,file:[6,9,13,15,17,19,26,32,41,43,46,58,59,61,62,65,66,75],filenam:[66,74],filter:[3,60,65,75],find:61,finish:65,first:[1,2,6,7,8,13,26,32,55,56,63,64,65,66,67,73,74],fix:[3,32,35,44,61,63,74],flag:[1,27,32,58,59,63],flap:[5,13,15,66],flexibl:[1,60],flop:65,flow:[1,4,7,8,13,18,22,32,57,61,64,65,66],focu:6,folder:58,follow:[2,3,4,5,6,7,8,13,31,32,33,55,58,60,62,63,64,65,66,67,69,70,71,73,74,75],footprint:61,forc:69,forcefulli:58,fork:62,format:[4,58,74],forum:2,forward:[2,8,61,70,74],found:[2,13,58,60,61,62,69,70,73],four:3,fragment:[1,7,65,66],free:61,frequent:61,fri:58,friendli:61,from:[2,3,6,7,8,12,13,19,32,33,35,43,44,56,59,61,63,64,65,67,69,70,73,74,75],front:[32,56,74],fsm:61,fulfil:[7,61],full:[61,64,67],fulli:[5,61],further:[4,6,32,33,58,61,63,64,65,67,70,74],furthermor:[1,58],g:[5,6,31,32,33,34,35,36,37,38,56,58,62,63,71,73,74],ga:2,gamma:[25,32],gap:[6,74],gatewai:[1,3,4,6,7,32,34,35,38,60,63,65,67,69,70,73,74],gaug:58,gbp:[32,56,74],gdb:62,gdr:[25,32],gener:[8,31,32,37,54,55,58,60,61,62,63,65,66,69,71,73,74,75],german:2,germani:2,get:[58,61,63,65],giga:[32,56,74],git:62,github:[58,60,61,62],give:[60,66],given:[3,8,32,56,64,73,74],global:[1,5,7,8,13,26,32,33,37,49,63,64,65,66,67,74],gnu:[62,63],go:[61,65],gobgp:65,gobgpd:65,good:61,gracefulli:[5,58],graph:[65,69,71,73],graphviz:71,group:[1,2,6,12,13,21,29,31,32,35,37,56,60,63,64,65,70,74],guid:[61,62,63],h:[67,70,71],ha:[25,32,56,58,61,62,65,67,69,70,71,74,75],hand:1,handl:[1,63,64],handshak:[1,28,32,69],hang:5,happen:65,hard:[61,64],hardwar:[63,64],have:[61,63,65,66],head:62,header:[2,4,6,32,44,56,58,59,60,63,69,73,74,75],hello:[3,32,40,43,44,45,69,70,73],help:[6,58,67,70,71,75],helper:[32,56,74],henc:71,here:[25,32,59,65,67,71],hex:[69,73],hi:2,high:[32,33,63],higher:[32,33,63,64],histor:69,hold:[26,32,40,43,65,67,69,70],hop:67,host:[1,2,4,7,32,53,63,74],hostnam:[3,32,40,43,44,45,58,65,69,70,71,73],hour:5,how:[6,8,31,32,58,63,64,65,66,67,69,73,75],howev:[60,71],html:[1,28,32,62,69,73],http:[1,11,28,29,30,58,61,62,69,73],huge:[58,61],i1:[32,35,63],i2:[32,35,63],i:[58,62,64,65,70,73],ia:[1,28,32],ia_na:[1,28,32],ia_pd:[1,28,32],icmp:[63,66],icmpv6:[59,66],icrq:[3,32,44],id:[1,2,3,6,7,10,11,12,13,15,16,17,20,21,22,24,25,26,27,28,29,32,35,36,38,40,42,43,45,47,56,58,60,63,64,65,67,69,70,71,73,74],idea:[7,59],ident:73,identif:[2,74],identifi:[2,13,15,25,26,29,32,35,36,40,42,43,45,47,56,60,63,64,67,69,70,73],idl:[6,65],iec:69,ietf:[1,28,32,69,70,73],ifac:67,ifindex:13,igmp:[6,12,31,35,63,66,75],igmpv3:[6,31,32],ignor:[7,32,52,70],igp:73,ihhi:73,ii:73,implement:[6,61,63],implicitli:[32,38,63],inc:[3,61],includ:[1,2,6,7,8,13,31,32,33,51,58,61,62,63,65,66,67,69,70,71,73,74,75],increas:[13,32,33,63,64,65],increment:[63,67,70,74],indent:[69,73],independ:5,index:[13,14,74],indic:[32,43,70],individu:1,infin:[7,32,53,56,74],info:[1,3,6,7,12,13,14,21,22,58,65,67,70,75],inform:[1,3,7,8,12,13,21,22,28,32,58,67,69,70,73,75],infrastructur:[1,2],init:65,initi:[1,6,7,31,32,39,51,52,58,60,70,71],inject:[63,67,69,70,73],inner:[1,2,3,7,13,32,35,55,56,63,64,65,67,74],input:[65,75],instal:[61,64,65],instanc:[4,6,11,13,15,17,19,32,38,40,43,45,60,63,65,69,70,71,73],instance_nam:58,instances_run:58,instances_tot:58,integr:[4,58],interact:[13,58,60,65,75],intercept:[0,61],interconnect:69,interest:61,interfac:[1,2,3,4,5,6,7,8,14,19,25,26,30,31,33,34,35,36,37,38,42,47,54,55,56,58,59,60,61,62,64,65,66,67,69,70,74,75],interface_nam:58,interface_typ:58,interfaces_rx_packet:58,interior:73,interl:[25,32],interleav:[25,32],intermedi:[2,69],intern:[4,59,66,69],internet:[2,61,63,67,69],interv:[1,3,4,6,7,27,31,32,33,37,39,40,43,44,45,52,63,64,65,69,70,73,74],introduc:2,introduct:[61,71],intuit:58,invok:74,io:[32,33,36,37,58,59,62,63,64,65,66,74,75],ip6cp:[3,5,13,20,35,50,63,65,66],ip:[1,3,6,7,31,32,44,51,56,58,63,65,70,74,75],ipcp:[3,5,13,20,35,44,51,63,65,66],ipo:[0,2,5,35,39,55,60,61,63,65,66],iptv:[0,61,63],ipv4:[1,2,3,4,5,6,8,9,13,17,26,27,29,30,35,38,39,40,43,44,47,54,56,59,60,63,64,65,66,67,69,70,71,73,74],ipv4_address_list:71,ipv4_prefix:71,ipv4_prefix_list:71,ipv6:[1,2,3,4,5,8,29,30,35,38,39,40,43,54,56,59,60,63,65,66,67,69,70,71,73,74],ipv6avg:66,ipv6pd:[1,7,8,32,54,56,66,74],isi:[15,38,40,41,42,58,61,63,68,71,75],isis_areaentri:69,isis_areatlv:69,isis_commonhdr:69,isis_l1_lsp:69,iso:69,isol:1,issu:[58,61,64],iter:[1,6,12,13,31,32,35,55,63],its:[1,32,43,60,61,63,70,71,73],itself:[69,73],j:[65,66],jitter:74,job:66,join:[12,13,31,32,75],jq:[1,7,13,60,65,69,73,74],json:[13,58,62,65,67,69,73,75],jsonpath:74,jumbo:63,junk:[69,73],just:[3,60,62],k:[32,56,65,71,74],kb:65,keep:5,keepal:[3,7,32,43,52,65,70],kei:[6,13,32,40,45,65,69,71,73,74],kernel:[32,33,37,59,63],keyboard:65,kill:[5,58],kilo:[32,56,74],kind:[7,61,63],kwarg:[69,73],l1:[32,38,42,63,65,66,69],l2:[32,38,42,63,65,69,74],l2bsa:[0,61,63],l2tp:[0,16,32,44,56,61,63,74,75],l2tpv2:[3,61],l3:74,l:[6,65,67,70,71,75],label1:[32,56,74],label2:[32,56,74],label:[8,32,54,56,58,61,65,67,70,72,74],lac:3,lacp:[2,32,36,37,63],lag0:[32,36,63],lag1:63,lag:[2,13,14,36,37,61,64,75],lane:63,larg:[58,63,69,71,73],larger:[63,70],last:[6,66,67,74],latenc:[61,74],later:[69,71],layer:[1,2,32,33,37,56,63,65,74],lcp:[3,5,13,16,44,51,52,65,66],ldconfig:62,ldp:[17,43,56,61,68,74],ldpupdat:[65,70],ldra:[1,28,32,35,63],le:74,lead:[6,61],leak:[5,69],lean:7,learn:[63,69,70,73,75],leas:1,least:[2,13,63,64],leav:[12,13,31,32,75],left:65,legal:[0,61],len:[73,74],length:[2,3,6,31,32,44,56,59,60,63,65,67,69,70,73,74],less:64,let:65,letter:[32,56,74],level1:[32,40,65,69,71],level2:[32,40,69],level:[13,15,32,35,38,40,42,63,65,67,69,70,71],li:[0,18,61],lib:58,libcmocka:62,libcunit1:62,libdict:62,libdict_1:62,libdpdk:62,libjansson4:62,libjansson:62,libncurses5:62,libncurses6:62,libpcap:62,librari:[61,67,70],libssl1:62,libssl3:62,libssl:62,lifetim:[32,40,65,67,69,70,71],lightweight:[1,2,28,32,60,61,65],lihawi:[25,32],liid:4,like:[1,6,27,28,32,56,61,63,67,68,69,70,73,74],limit:[2,32,36,58,59,63,64],line:[1,2,3,7,24,25,27,28,35,63,65,74],link:[1,2,13,14,25,33,34,35,36,37,38,58,61,64,65,69,70,71,73,75],linux:[58,61,62,63],linux_gsg:62,list:[9,13,14,16,17,18,21,32,33,58,63,65,67,69,73,75],listen:58,live:[32,57],ll:65,ln:[3,44,61,75],lns10:3,lns11:3,lns12:3,lns13:3,lns14:3,lns15:3,lns16:3,lns17:3,lns18:3,lns19:3,lns1:3,lns20:3,lns21:3,lns22:3,lns23:3,lns24:3,lns25:3,lns26:3,lns27:3,lns28:3,lns29:3,lns2:3,lns30:3,lns3:3,lns4:3,lns5:3,lns6:3,lns7:3,lns8:3,lns9:3,load:[9,13,15,17,19,32,33,58,63,65,66,67,69,70,73],local:[1,2,9,13,16,17,26,30,32,38,43,47,58,60,63,65,67,70,71,73],local_pref:67,locat:[2,58,60],log:[6,13,65,67,70,71],logging_flag:58,logic:63,longest:70,look:61,lookup:[32,56,65,70,74],loop:[61,71],loss:[1,6,7,61,65,66,74,75],low:[25,32,61,63],lower:[32,33,63],ls:73,lsa:[13,19,45,46,69],lsacount:73,lsdb:[13,15,19,71],lsp:[13,15,32,40,41,65,70,71,73],lspgen:[65,68],lspid:69,lsr:[32,43,65,70],lt:[58,62],lua:75,lua_script:75,m:[32,56,65,67,70,71,74],ma:[32,35,63],mac:[1,2,7,32,33,34,36,37,38,63,65,74],machin:[61,65],mai:[2,5,6,7,32,43,58,67,70],main:[32,33,58,63,64,69,73],maintain:[61,70],mainten:[32,35,63],make:[2,58,62,67],manag:[2,58,60],mandat:2,mandatori:[3,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,29,30,32,44,47,56,60,73,74],mani:[2,5,58,61,63,65],manual:[2,13,21,32,34,38,60,62,63,67,70,71],manufactur:2,map:[2,63,70,73],mar:65,mark:[60,69],marker:67,market:2,mask:73,massiv:[32,57,58,61,64],match:[9,13,16,17,70],max:[1,2,3,6,7,8,25,31,32,35,36,44,49,50,51,52,53,55,56,57,63,64,65,66,73,74],maximum:[5,6,7,25,31,32,33,35,36,43,48,63,64,66,70,74],mbp:74,mc1:6,mc2:6,md5:[32,40,45,65,69,71,73],mean:[1,2,7,8,32,33,39,52,61,63,64,67,70,74],measur:[6,8,31,32,61,66,74],mechan:1,mediat:4,mega:[32,56,74],mellanox:62,member:[2,32,36,63],memori:[5,58,61,63,67,70],mention:[6,31,32],merg:74,meson:62,messag:[3,7,13,16,32,43,44,52,58,65,67,69,70,73],meta:75,method:[1,5],metric:[32,38,42,47,63,65,69,71,73],metric_flag:58,microburst:64,microsecond:74,might:[32,33,63,69,73,74],migrat:2,million:[58,61,64],millisecond:[6,7,31,32,33,37,52,63],min:[1,2,3,7,8,25,32,35,36,55,63,64,65,66,74],mini:63,minimum:[25,32,35,36,63,66,74],ministri:2,minor:60,minu:[59,63],miss:6,mission:61,mkdir:62,mmap:[32,33,59],mode:[1,3,7,32,33,35,37,44,59,60,62,64],model:[2,63],modern:[58,61,62,64],modifi:[6,32,33,63,67,70,71],modul:62,monitor:58,monkei:[0,13,32,35,55,63],more:[2,5,6,31,32,60,61,63,64,65,67,69,70,73],moreov:60,most:[1,3,32,35,59,63,64,75],motiv:61,move:69,mpl:[8,32,54,56,59,61,68,70,74],mpls_ipv4_flag:71,mpls_ipv6_flag:71,mrt:[13,15,19,32,41,46,65,67,71],mru:[3,7,32,35,48,63],ms:[6,32,40,66,69],msg:[60,65],mtu:63,much:64,multicast:[0,13,23,31,32,61,63,66,70],multipl:[1,2,6,8,12,13,31,32,58,60,63,64,67,69,70,73],multipli:64,multiprotocol:[65,70],multithread:[32,36,63,64],must:[2,5,13,32,43,58,63,65,70,71,74],mutual:70,n1:69,n:[1,3,7,13,32,35,55,56,60,63,65,67,70,71,74],na:[1,28,32],nak:1,name:[2,3,6,7,8,29,30,32,34,35,36,37,38,44,53,56,58,60,63,64,65,66,67,70,71,74,75],nano:74,nat:60,navig:65,nc:13,ncontent:60,need:[2,13,32,33,62,63,65,69],negoti:7,neighbor:[13,19,65],neighbor_list:71,netmask:1,netplan:63,network:[1,2,3,4,6,7,8,13,14,26,30,31,35,38,54,56,58,60,61,62,64,66,67,69,70,73,74,75],network_interfac:58,networkd:63,newer:[69,73],next:[4,6,31,32,65,67],nga:2,nic:62,ninja:62,nlocat:60,node1:71,node:[2,32,40,61,65,69,71,73],node_flag:71,node_id:71,non:[3,32,44,61,63,68],none:71,normal:[62,71],note:73,notif:65,now:[62,65,66,69,73],nserver:60,nsp:2,num:[67,70],number:[3,4,5,6,8,13,31,32,33,36,37,43,56,58,63,64,65,66,67,69,70,73,75],o:[61,64],obtain:1,occur:59,octet:65,odd:63,off:[10,13,65],offer:[1,58,60],offic:2,offici:64,offload:[65,74],offset:[3,32,44,74],often:[6,31,32],ok:[1,3,4,6,7,13,58,60,65,69,70,74],old:6,onc:[67,70],one:[2,4,6,7,58,63,64,65,66,67,69,70,73,74],onli:[1,3,4,6,7,13,21,28,31,32,35,47,56,59,63,64,69,71,73,74,75],ont:[25,32],onu:[25,32],onupeak:[25,32],open:[7,13,20,61,65,66,67,69,73],openapi:58,openconfirm:65,opens:65,oper:[2,58,60,61,64,67,70],opposit:[7,64],optim:[1,7,61,62,73],option:[1,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,27,28,31,32,34,37,38,47,50,51,56,57,58,61,62,63,65,66,67,69,70,71,73,74,75],order:[3,64,74],org:[1,28,32,62,69,73],origin:[69,73],os:[69,73],osi:[63,69],ospf2:71,ospf:[19,45,46,47,68,71],ospf_external_lsa:73,ospf_hdr:73,ospf_lsupd:73,ospfv2:[47,71,73],other:[1,2,7,13,32,33,49,58,59,60,62,63,64,65,69,73,75],otherwis:2,oui:7,our:61,out:[3,61,62,65,70],outag:5,outcom:58,outer:[1,2,3,7,13,32,34,35,44,55,56,59,60,63,64,65,67,70,74,75],output:[3,58,60,62,67,70,75],outq:65,outstand:[7,32,55],over:[1,2,6,7,12,13,25,32,43,55,56,60,64,66,67,69,70,73,74],overal:[58,60],overhead:[59,63],overlap:6,overload:[32,40,45,69,73],overseen:59,overwrit:[8,32,33,35,37,54,56,63,74],own:[63,67,69,70,73],p2p:[32,38,63,65,69,73],p:[65,67,70,71,75],pack:73,packag:[58,62,64],packet:[1,2,3,4,6,7,31,32,33,44,56,57,58,59,62,64,65,66,67,69,70,71,73,74],packet_mmap:[62,63],packet_mmap_raw:[32,33,62,63],packet_rx_r:63,packet_tx_r:63,pad:[3,32,40,44,66,69],padi:[7,32,53,66],pado:66,padr:[7,32,53,66],padt:[5,66],pages:[59,63],pair:65,pap:[3,7,32,49,66],paramet:[58,60,63,65],parent:[2,32,34,35,38,63],pars:62,particular:[6,66],particularli:1,pass:[58,62],password:[3,7,32,35,49,63],path:[13,67,69,73],payload:[32,56,74],pbit:[1,7,27,32,53,74],pcap:[59,65,67,69,70,71,73],pcap_captur:58,pd:[1,28,32],pdu:[13,15,19,32,43,69,70,73],peak:[25,32],peer:[3,9,13,17,26,32,43,44,65,67,69,70],pend:[13,21],per:[2,5,6,7,13,31,32,33,35,37,40,55,56,57,58,61,62,63,64,66,67,69,74,75],perform:[1,58,60,61,63],period:[1,32,39],permiss:62,permit:[3,32,44],phase:[67,70],physic:63,pid:58,pin:[32,37,63],pkg:62,pkgconfig:62,place:75,plan:[2,67],pleas:58,point:2,polici:[1,67],poll:[32,33,37,63,66],pon:[25,32],pool:64,port:[2,4,29,30,32,56,58,60,70,74],possibl:[3,5,6,58,60,62,63,64,69,71,73],post:[2,58],potenti:59,power:[5,8,25,32],pp:[2,3,6,7,8,31,32,54,56,63,64,65,66,67,70,74],ppp:[3,35,48,49,50,51,52,53,63],pppoe:[0,2,3,5,6,35,53,55,58,59,60,61,63,64,66,74,75],pre:[63,67,70],precis:[32,33,63],pref:67,prefer:[8,32,43,67,70],prefix:[1,7,8,32,54,61,63,64,65,67,70,71],present:[13,58,61],preset:58,press:65,pretti:58,prevent:[59,60,63,64],previous:60,primari:[7,32,51,60,74],primarili:[58,62,64],print:[65,69,73],prioriti:[1,2,3,6,7,25,27,31,32,36,37,44,45,53,56,63,65,70,73,74],problem:58,process:[3,6,31,32,58,74],profil:[25,35,63],program:63,programmat:58,progress:58,project:[61,62],prometheu:58,promot:2,proper:[6,75],properli:64,propos:[7,32,48,64],protocol:[1,3,4,6,7,13,16,31,32,35,40,49,50,51,59,61,63,65,66,67,69,70,71,73],protocol_list:71,provid:[1,2,3,4,6,7,13,58,60,62,63,69,73],provis:2,proxi:3,psnp:[32,40,69],pt:4,pta:63,purg:[13,15,32,41,46,69,71,73],purpos:[58,60,61],put:[32,56,58,74],python3:66,python:[13,66,67,70],q:71,qdisc:[32,33,37,63],qinq:[2,32,34,35,63,65],qmx:4,qo:[61,65,74],queri:74,question:61,queue:[61,63,64],quick:61,quickli:[8,61],quickstart:61,quit:71,r1:[65,69,71,73],r2:[65,69,71,73],r3:71,r6:73,r:[60,71],railwai:2,randomli:[5,71],rang:[2,32,40,55,63,65,69,73],rapid:[1,7,28,32],rate:[2,3,7,8,24,25,32,35,55,56,57,61,63,74],rather:69,raw1:65,raw:[6,9,13,17,26,32,33,43,56,58,59,62,65],rbf:58,rcvd:65,rdi:[10,13],re:[2,64],reach:[32,33,63],reachabl:[67,69],read:[63,65,71],readabl:[32,56,74],real:[1,6,62,69,73],realist:1,reason:64,receipt:[32,43,70],receiv:[2,3,4,6,7,8,32,33,43,44,48,56,58,61,63,64,65,66,69,70,72,73,74,75],recogn:6,recommend:[2,6,58,61,62,64],reconnect:[2,3,5,7,13,21,26,32,53,55,64,65,67],record:[6,31,32],recov:[5,59],recv:[69,73],redirect:60,ref:62,refer:[2,4,7,63,67,69,70],referenc:[32,37,63,67,71],refresh:[32,40,41,65,69],region:2,regulatori:2,reject:[7,32,49],rel:62,relai:[1,28,32],relat:[2,75],releas:[1,27,32,58,62,64,67],reli:1,reliabl:[3,6,32,44],remain:[64,69],remot:[1,2,3,7,13,16,24,27,28,32,35,47,63,65,71,73],remote_node_id:71,render:63,renew:1,repeat:65,replac:[13,63,67],repli:[1,65],report:[6,8,31,32,61,65,74],report_flag:58,repres:71,republish:69,request:[1,3,5,6,7,13,16,29,31,32,49,50,51,52,55,58,60,61,63,66,69,73],requir:[1,5,7,32,57,60,62,63,64],reserv:74,reset:[12,13,21,22,32,43,70],resid:63,resolv:[32,38,55,56,61,63,65,70,74],respond:[7,63],respons:[7,13,58,60],rest:58,restart:[5,13,21,60,61,63],result:[3,6,13,16,31,32,43,56,58,59,65,66,70,74],resum:60,retail:2,retri:[1,2,3,7,27,28,32,39,40,44,45,49,50,51,52,53,69,73],retriev:58,rev:62,rfc2661:[3,13,16,32,44],rfc3145:[13,16],rfc6221:[1,28,32],rfc6396:[69,73],rfc7552:[32,43,70],rfc:[7,69,70],rib:67,right:6,ring:[32,33,37,63],robust:[5,7],rollout:2,root:[62,65,71],rout:[61,63,65,67,69],router:[32,38,40,45,47,59,61,63,65,68,69,70,71,73],router_id:71,rpc:[13,58,65],rpf:[32,56,74],rs:66,rtbrick:[1,3,7,13,32,49,58,60,61,62,63,65,74],rule:[60,67],run:[1,3,4,5,6,7,13,16,58,60,61,65,67,69,70,73,74],run_report:58,rx:[1,3,4,6,7,32,33,37,56,58,63,64,65,66,67,70,74],s100:63,s1:[2,64,65,66,70],s200:63,s2:[2,65],s:[1,2,6,13,31,32,33,37,40,58,60,63,65,67,69,71,73],safi:65,same:[2,4,6,13,60,63,64,65,66,67,70,73],sbin:[58,62],scale:[61,64],scapi:[67,70],sccrq:[3,32,44],scenario:[1,2,60,64],schema:58,scratch:61,script:[13,58,66,67,70,74,75],seamless:58,search:[6,66],sec:62,second:[1,6,7,8,13,21,26,27,28,31,32,39,40,43,45,49,50,51,52,53,55,56,65,66,67,69,70,73,74],secondari:[7,32,51],secret123:[65,71],secret:[3,32,44,69,71],section:[2,6,13,25,32,35,58,63,64,74],see:[61,65,74],seed:71,segment:61,segment_id:71,select:[8,32,33,35,56,63,74],self:[69,73],send:[2,3,6,7,8,13,16,31,32,40,43,44,54,56,58,59,61,62,63,64,65,67,69,70,72,73,75],sens:67,sent:[6,8,25,31,32,33,56,58,63,64,65,70,74,75],sep:71,separ:[61,74],seq:[1,7,65,66,69,73,74],seqnum:69,sequenc:[6,8,65,66,69,71,73,75],sequenti:74,seri:[66,67,70],serious:61,serv:[58,61],server:[1,2,3,7,30,44,51,61,64,65],servic:[1,2,6,7,32,53,58,61,63,69],session:[0,1,2,3,4,5,6,7,9,10,11,12,16,17,20,21,22,23,31,33,35,38,43,49,53,54,55,56,58,59,60,61,63,64,65],session_count:58,sessions_establish:58,set:[3,6,7,8,10,13,25,31,32,33,34,35,37,38,43,44,49,56,57,60,62,64,65,66,67,70,71,74],setcap:62,setup:[32,55,61,64,65,70],sever:[60,67],sha:62,share:[1,63],shortest:73,should:[5,6,32,57,58,60,62,63,64,65,67,70,73,74],show:[6,8,58,62,63,65,67,69,70,71,73,74,75],shown:[1,3,4,6,13,16,62,63,69,70,73,75],sid:[32,40,65,69],side:[63,65],sigint:58,signal:[58,61],signatur:[6,31,32,74],similar:[1,63,66,73],similarli:5,simlar:71,simpl:[13,32,40,45,61,65,66,67,69,70,71,73,74],simpli:61,simplifi:58,simul:[1,60],simultan:60,sinc:58,singl:[2,3,6,13,31,32,61,64,65,70,75],size:[3,32,33,37,40,44,57,63,64,69,74],skip:[13,65],slice:58,slot:[32,33,37,63,64,65],slow:[3,32,44],smaller:[32,43,70],sn:66,so:[2,61,63,68],sock:[1,3,4,5,6,7,13,16,58,60,65,67,69,70,73,74],sock_stream:[69,73],socket:[3,13,32,33,58,63,65,69,71,73],socket_path:[69,73],softwar:[61,63,64],solicit:1,some:[2,4,6,31,32,58,59,63,64,65,75],soon:[5,8,58,67,70,74],sourc:[4,6,26,31,32,56,64,67,69,70,73,74],source1:[6,12,13],source2:[6,12,13],source3:[6,12,13],space:[61,63],special:[6,31,32],specif:[1,2,7,32,52,58,60,71,73],specifi:[2,6,8,31,32,54,65,70],speed:[13,16],split:64,spt:4,sr:[32,40,65,69,71],srgb:65,srgb_base:71,srgb_rang:71,stabil:73,stabl:62,stack:61,standalon:[4,65],standard:[58,62,67,69,75],start:[3,5,6,7,8,10,11,12,13,21,22,23,26,29,31,32,35,38,44,52,54,55,56,57,59,60,61,62,63,64,65,66,67,69,70,73,75],startup:[60,67,69,70,73],stat:[12,13,22,65,66,70],state:[1,2,3,6,7,25,32,58,60,61,63,65,69,70,71,73],statist:[4,13,18,21,22,32,57,58,61,65,66,74],statu:[1,3,4,6,7,13,32,52,60,65,69,70,74],stderr:[58,69,73],stdout:58,steam:63,step:[32,35,62,63,65],stick:[3,32,44],still:[64,65,73,75],stop:[5,6,7,10,11,12,13,21,22,23,32,55,56,57,60,63,65],store:[3,7,58,59,66,74],stream:[2,4,6,8,21,22,23,33,35,56,57,58,59,61,63,64,65,66,67,71,75],streamlin:58,string:[32,35,58,63],struct:73,sub:[3,4,74],subnet:70,subscrib:[1,61,63],subset:2,substitut:63,subtract:74,subtyp:[69,73],success:[32,43,70],successfulli:[7,13],sudo:[1,3,4,5,6,7,13,16,58,60,62,63,65,67,69,70,73,74,75],suit:61,summari:[13,22],support:[1,2,3,4,6,7,13,32,33,36,44,56,58,61,63,64,65,67,68,69,70,71,73,74,75],suppress:[6,31,32],sy:[69,73],symbol:62,synchron:[69,73],system:[32,33,36,40,42,58,59,64,65,67,69,71,74],systemctl:58,systemd:58,t1:1,t2:1,t:[63,64,65,71,74],tabl:[61,64,66,67],tag:[2,4],take:[6,58,61],tar:62,target:[62,70],task:[58,69],tc:[32,56,74],tcp:[4,29,30,32,43,60,65,70,75],teardown:[9,13,15,17,19,26,32,40,41,43,45,46,55,67,69,70,73],telecommun:2,telekom:61,term:[2,63],termin:[5,7,13,16,32,53,55,58,60,65],test10:3,test11:3,test12:3,test13:3,test14:3,test15:3,test16:3,test17:3,test18:3,test19:3,test1:3,test20:3,test21:3,test22:3,test23:3,test24:3,test25:3,test26:3,test27:3,test28:3,test29:3,test2:3,test30:3,test3:3,test4:3,test5:3,test6:3,test7:3,test8:3,test9:3,test:[1,3,5,7,12,16,32,35,49,55,56,59,60,61,63,64,65,66,67,68,69,70,73,74,75],tester:[4,60,61],testprotocol:62,text:58,than:[2,32,56,61,63,67,69,70,74],thei:[2,65],them:[58,60,63,65,69,71,73],therefor:[6,7,32,55,58,63,64,65,67,70],thi:[1,2,3,5,6,7,8,13,16,21,27,28,31,32,35,49,50,51,56,58,59,60,61,62,63,64,65,66,67,69,70,71,73,74,75],think:66,third:[32,33,35,62,63],thorough:1,those:[2,7,8,25,32,33,56,58,63,64,65,66,67,69,70,71,73,74,75],thousand:61,thread:[2,6,32,33,37,63,64,67,75],three:[2,6,31,32,63,66,69,71,73],threshold:[6,31,32],through:[32,33,58,60,61,63,65,70],throughput:[25,32,33,63,64],thu:2,time:[1,6,7,26,32,40,43,45,53,58,61,62,65,66,67,69,70,73,75],timeout:[1,2,3,7,27,28,32,36,39,43,49,50,51,52,53,63,66,70],timer:[13,15,61],timestamp:[32,33,63,69,73],tlv:[69,71],todai:4,took:[8,74],tool:[8,13,16,61,65,67,69,70,71,73],top:[60,65],topic:65,toplog:71,topolog:[61,65,69,73],tos:[1,3,6,27,31,32,44,74],total:[1,7,8,58,60,62,65,66],tr:[2,63],track:61,traffic:[0,1,2,3,4,7,21,22,23,26,27,31,33,44,53,54,56,57,58,61,63,64,66,67,72,75],translat:60,transmiss:73,transmit:63,transpar:2,transport:[32,43,70],tree:[25,32],tri:59,trigger:[2,67,70],troubleshoot:[58,61,62],ttl:[32,56,74],tunnel:[3,13,16,32,44],turn:58,two:[2,5,7,60,63,65,67,69,70,72,73,74],tx:[1,2,3,4,7,32,33,37,40,56,63,64,65,66,67,69,70,74],txqueuelen:63,type:[1,2,4,6,7,24,25,32,35,40,45,56,58,60,62,63,64,65,66,67,69,70,71,73,74],typic:[6,63,67],u:[2,13],ubuntu:58,udp:[4,70],under:[3,5,7,59,60,61,63,67,69,70,73],underli:[1,58],understand:66,unicast:[8,65,67],unidirect:64,uniq:[2,7,32,53],uniqu:74,unit:[7,32,48,58],unix:13,unknown:66,unlabel:[8,32,54],unset:[10,13],untag:[2,32,35,38],until:[8,32,38,58,63,70,74],unzip:62,up:[2,3,6,7,8,24,25,32,35,59,63,64,65,66,69,70,72],updat:[9,13,15,16,17,19,26,32,43,65],update1:[67,70],update2:67,upstream:[1,2,4,7,8,24,25,32,56,65,66,74],url:[29,32,60],us:[1,2,3,4,5,6,7,8,13,16,31,32,43,44,56,58,59,60,61,62,63,64,65,66,67,68,69,70,71,73,74,75],usabl:[2,58],usag:[32,35,58,63,67,70,71],user10:13,user1:[7,65],user:[1,2,7,13,32,49,58,60,61,62,63,65],usernam:[3,7,13,32,35,49,63,65],usr:[58,62,66],utc:58,utf:[69,73],util:[1,64],v1:[58,62],v6:2,v:[2,32,33,62,63,71],valid:[1,4,32,43,67,70,71,74],valu:[7,13,25,32,33,35,43,49,60,63,66,70],valuabl:[1,60],variabl:[63,69,73],variou:[1,58,60,61,68,74],vector:67,vendor:[3,32,52,58,61],veri:61,verif:[61,74],verifi:[1,2,6,7,8,32,57,58,61,64,65,66,75],versa:64,versatil:[1,60],version:[6,25,31,32,35,45,58,60,62,63,65,69,70,71,73],veth1:65,veth:65,via:[3,7,32,48,62,63,67],vice:64,view:[6,31,32,65],violat:[8,66],virtual:[1,61,65,69,73],vlan:[1,2,3,7,13,27,32,34,35,38,53,55,56,59,60,63,64,65,74,75],voic:74,volum:74,w:[67,70,71],wa:[2,7,13,61,69,71],wai:[1,6,28,32,58,62,69,73],wait:[5,6,31,32,38,55,56,63,74],walk:65,warn:[13,58,67,70],wb:73,we:[13,61,64,65],welcom:[61,64],well:[2,6,63,71],were:2,wget:[58,62],what:65,when:[60,70],where:[1,2,3,32,44,56,58,61,63,65,74,75],whether:[1,58],which:[2,4,5,6,13,16,31,32,43,55,56,58,59,61,62,63,64,65,66,69,70,71,73,74,75],who:2,whole:69,wholesal:2,why:59,wide:73,window:[3,32,40,44,63,65,69,75],withdraw:[65,67,70],within:[6,31,32,59,69],without:[2,5,6,62,63,65,74],word:74,work:[4,5,6,8,62,64,65,73,74],worker:64,workload:64,world:[1,6],would:[6,8,59,64,65,66,74],write:[63,67,70,71,73],written:69,wrong:[1,7,65,66,74],x:[67,71,75],xjf:62,xz:62,y:[62,71],you:[2,13,60,61,63,64,65,66,68,71,75],your:[59,61,63,64,65,67,70],youtub:61,z:71,zap:[12,13,31,32],zero:[3,32,44,63,64,74],zip:62},titles:["Access Protocols","IPoE","L2BSA","L2TP","Legal Interception (LI)","Monkey","Multicast and IPTV","PPPoE","Session Traffic","<no title>","<no title>","<no title>","<no title>","API/CLI","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","Configuration","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","<no title>","Controller","Frequently Asked Questions","HTTP Emulation","BNG Blaster","Installation","Interfaces","Performance Guide","Quickstart Guide","Reports","BGP","Routing Protocols","ISIS","LDP","LSPGEN","MPLS","OSPF","Traffic Streams","Troubleshooting"],titleterms:{"function":63,"static":1,a10nsp:[32,63],access:[0,32,63],address:1,adjac:[69,70],aggreg:[32,63],api:[13,58],ask:59,authent:[7,32],bgp:[13,32,65,67],blaster:[13,61,62,74],bng:[13,61,62,74],build:62,cfm:13,cli:13,client:[32,60],command:[1,3,7,58,69,73,74],configur:[3,7,8,32,67,69,70,71,73,74],connect:32,connector:71,contact:61,content:61,control:58,copyright:61,creat:58,data:3,databas:[69,73],delet:58,depend:62,dhcp:[1,32,65],dhcpv4:1,dhcpv6:[1,32],doubl:63,dpdk:[62,63,64],emul:60,extens:7,extern:32,file:[67,69,70,71,73,74],flood:[69,73],flow:74,frequent:59,from:[62,71],gener:[6,67,70],guid:[64,65],header:3,http:[13,32,60],i:63,identifi:74,igmp:[13,32],instal:[58,62],instanc:58,intercept:[4,13],interfac:[13,32,63,73],ip6cp:[7,32],ipcp:[7,32],ipo:[1,32],iptv:6,ipv4:[7,32],ipv6:[7,32],isi:[13,32,65,69],join:6,json:66,l2bsa:2,l2tp:[3,13],l2tpv2:32,lag:[32,63],lcp:[7,32],ldp:[13,32,65,70],leav:6,legal:[4,13],li:[4,13],licens:61,limit:[6,67,69,70],line:32,link:[32,63],ln:32,log:[58,75],lsa:73,lsp:69,lspgen:[69,71,73],magic:74,manual:6,metric:58,mmap:63,mode:63,monkei:5,mpl:72,mrt:[69,73],multicast:[6,74],nanosecond:74,neighbor:73,network:[32,63,65],number:74,o:63,oper:63,ospf:[13,73],ospfv3:73,output:66,packet:63,pcap:[58,75],perform:64,plugin:75,ppp:[7,13,32],pppoe:[7,32,65],profil:32,protocol:[0,68],question:59,quickstart:65,random:71,rate:66,raw:[63,67,70,74],report:[58,66],rfc5515:3,rout:68,run:62,scapi:[69,73],send:74,sequenc:74,server:[32,60],session:[8,13,32,66,67,70,74],set:63,setup:66,singl:63,sourc:[61,62],standard:66,start:[58,74],statu:58,stop:[58,74],stream:[13,32,70,74],support:62,system:63,tag:63,test:[6,13,58,62],timestamp:74,topolog:71,traffic:[6,8,13,32,65,70,74],tripl:63,troubleshoot:75,ubuntu:62,unicast:74,unit:62,untag:63,updat:[67,69,70,73],v6:1,variabl:3,vendor:7,verif:8,via:[69,73],wireshark:75,zap:6}}) \ No newline at end of file diff --git a/docs/streams.html b/docs/streams.html index 69050019..ea8b6d61 100644 --- a/docs/streams.html +++ b/docs/streams.html @@ -105,65 +105,65 @@

Configuration

Following a simple PPPoE example with streams.

-
{
-    "interfaces": {
-        "network": {
-            "interface": "eth2",
-            "address": "10.0.0.1/24",
-            "gateway": "10.0.0.2",
-            "address-ipv6": "fc66:1337:7331::1/64",
-            "gateway-ipv6": "fc66:1337:7331::2"
-        },
-        "access": [
-        {
-            "interface": "eth1",
-            "outer-vlan-min": 1001,
-            "outer-vlan-max": 2000,
-            "inner-vlan-min": 7,
-            "inner-vlan-max": 7,
-            "type": "pppoe",
-            "stream-group-id": 1
-        },
-        {
-            "interface": "eth1",
-            "outer-vlan-min": 2001,
-            "outer-vlan-max": 4000,
-            "inner-vlan": 7,
-            "type": "pppoe",
-            "stream-group-id": 2
-        }
-    ]
-    },
-    "streams": [
-        {
-            "name": "BestEffort",
-            "stream-group-id": 1,
-            "type": "ipv4",
-            "direction": "both",
-            "pps": 1000
-        },
-        {
-            "name": "Voice",
-            "stream-group-id": 1,
-            "type": "ipv4",
-            "direction": "downstream",
-            "priority": 128,
-            "vlan-priority": 2,
-            "network-ipv4-address": "10.0.0.10",
-            "pps": 100
-        },
-        {
-            "name": "BestEffort",
-            "stream-group-id": 2,
-            "type": "ipv4",
-            "direction": "both",
-            "pps": 1
-        }
-    ]
-}
+
{
+    "interfaces": {
+        "network": {
+            "interface": "eth2",
+            "address": "10.0.0.1/24",
+            "gateway": "10.0.0.2",
+            "address-ipv6": "fc66:1337:7331::1/64",
+            "gateway-ipv6": "fc66:1337:7331::2"
+        },
+        "access": [
+        {
+            "interface": "eth1",
+            "outer-vlan-min": 1001,
+            "outer-vlan-max": 2000,
+            "inner-vlan-min": 7,
+            "inner-vlan-max": 7,
+            "type": "pppoe",
+            "stream-group-id": 1
+        },
+        {
+            "interface": "eth1",
+            "outer-vlan-min": 2001,
+            "outer-vlan-max": 4000,
+            "inner-vlan": 7,
+            "type": "pppoe",
+            "stream-group-id": 2
+        }
+    ]
+    },
+    "streams": [
+        {
+            "name": "BestEffort",
+            "stream-group-id": 1,
+            "type": "ipv4",
+            "direction": "both",
+            "pps": 1000
+        },
+        {
+            "name": "Voice",
+            "stream-group-id": 1,
+            "type": "ipv4",
+            "direction": "downstream",
+            "priority": 128,
+            "vlan-priority": 2,
+            "network-ipv4-address": "10.0.0.10",
+            "pps": 100
+        },
+        {
+            "name": "BestEffort",
+            "stream-group-id": 2,
+            "type": "ipv4",
+            "direction": "both",
+            "pps": 1
+        }
+    ]
+}
 
-
{ "streams": {} }
+
{ "streams": {} }
 

@@ -329,9 +329,9 @@

Stream Configuration File
{
-    "streams": []
-}
+
{
+    "streams": []
+}
 
@@ -339,100 +339,100 @@

Stream Configuration File

The session-streams command returns detailed stream statistics per session.

$ sudo bngblaster-cli run.sock session-streams session-id 1

-
{
-    "status": "ok",
-    "code": 200,
-    "session-streams": {
-        "session-id": 1,
-        "rx-packets": 59670,
-        "tx-packets": 54610,
-        "rx-accounting-packets": 59655,
-        "tx-accounting-packets": 54594,
-        "rx-pps": 1100,
-        "tx-pps": 1000,
-        "rx-bps-l2": 9028800,
-        "tx-bps-l2": 8240000,
-        "rx-mbps-l2": 9.0288,
-        "tx-mbps-l2": 8.24,
-        "streams": [
-            {
-                "name": "BestEffort",
-                "direction": "upstream",
-                "flow-id": 1,
-                "rx-first-seq": 362,
-                "rx-last-seq": 54593,
-                "rx-tos-tc": 0,
-                "rx-outer-vlan-pbit": 0,
-                "rx-inner-vlan-pbit": 0,
-                "rx-len": 1014,
-                "tx-len": 1030,
-                "rx-packets": 54232,
-                "tx-packets": 54594,
-                "rx-loss": 0,
-                "rx-delay-us-min": 37,
-                "rx-delay-us-max": 98595,
-                "rx-pps": 1000,
-                "tx-pps": 1000,
-                "tx-bps-l2": 8240000,
-                "rx-bps-l2": 8112000,
-                "rx-bps-l3": 8000000,
-                "tx-mbps-l2": 8.24,
-                "rx-mbps-l2": 8.112,
-                "rx-mbps-l3": 8.0
-            },
-            {
-                "name": "BestEffort",
-                "direction": "downstream",
-                "flow-id": 2,
-                "rx-first-seq": 362,
-                "rx-last-seq": 54593,
-                "rx-tos-tc": 0,
-                "rx-outer-vlan-pbit": 0,
-                "rx-inner-vlan-pbit": 0,
-                "rx-len": 1026,
-                "tx-len": 1014,
-                "rx-packets": 54232,
-                "tx-packets": 54594,
-                "rx-loss": 0,
-                "rx-delay-us-min": 43,
-                "rx-delay-us-max": 98903,
-                "rx-pps": 1000,
-                "tx-pps": 1000,
-                "tx-bps-l2": 8112000,
-                "rx-bps-l2": 8208000,
-                "rx-bps-l3": 8000000,
-                "tx-mbps-l2": 8.112,
-                "rx-mbps-l2": 8.208,
-                "rx-mbps-l3": 8.0
-            },
-            {
-                "name": "Voice",
-                "direction": "downstream",
-                "flow-id": 3,
-                "rx-first-seq": 37,
-                "rx-last-seq": 5458,
-                "rx-tos-tc": 128,
-                "rx-outer-vlan-pbit": 0,
-                "rx-inner-vlan-pbit": 0,
-                "rx-len": 1026,
-                "tx-len": 1014,
-                "rx-packets": 5422,
-                "tx-packets": 5458,
-                "rx-loss": 0,
-                "rx-delay-us-min": 41,
-                "rx-delay-us-max": 96548,
-                "rx-pps": 100,
-                "tx-pps": 100,
-                "tx-bps-l2": 811200,
-                "rx-bps-l2": 820800,
-                "rx-bps-l3": 800000,
-                "tx-mbps-l2": 0.8112,
-                "rx-mbps-l2": 0.8208,
-                "rx-mbps-l3": 0.8
-            }
-        ]
-    }
-}
+
{
+    "status": "ok",
+    "code": 200,
+    "session-streams": {
+        "session-id": 1,
+        "rx-packets": 59670,
+        "tx-packets": 54610,
+        "rx-accounting-packets": 59655,
+        "tx-accounting-packets": 54594,
+        "rx-pps": 1100,
+        "tx-pps": 1000,
+        "rx-bps-l2": 9028800,
+        "tx-bps-l2": 8240000,
+        "rx-mbps-l2": 9.0288,
+        "tx-mbps-l2": 8.24,
+        "streams": [
+            {
+                "name": "BestEffort",
+                "direction": "upstream",
+                "flow-id": 1,
+                "rx-first-seq": 362,
+                "rx-last-seq": 54593,
+                "rx-tos-tc": 0,
+                "rx-outer-vlan-pbit": 0,
+                "rx-inner-vlan-pbit": 0,
+                "rx-len": 1014,
+                "tx-len": 1030,
+                "rx-packets": 54232,
+                "tx-packets": 54594,
+                "rx-loss": 0,
+                "rx-delay-us-min": 37,
+                "rx-delay-us-max": 98595,
+                "rx-pps": 1000,
+                "tx-pps": 1000,
+                "tx-bps-l2": 8240000,
+                "rx-bps-l2": 8112000,
+                "rx-bps-l3": 8000000,
+                "tx-mbps-l2": 8.24,
+                "rx-mbps-l2": 8.112,
+                "rx-mbps-l3": 8.0
+            },
+            {
+                "name": "BestEffort",
+                "direction": "downstream",
+                "flow-id": 2,
+                "rx-first-seq": 362,
+                "rx-last-seq": 54593,
+                "rx-tos-tc": 0,
+                "rx-outer-vlan-pbit": 0,
+                "rx-inner-vlan-pbit": 0,
+                "rx-len": 1026,
+                "tx-len": 1014,
+                "rx-packets": 54232,
+                "tx-packets": 54594,
+                "rx-loss": 0,
+                "rx-delay-us-min": 43,
+                "rx-delay-us-max": 98903,
+                "rx-pps": 1000,
+                "tx-pps": 1000,
+                "tx-bps-l2": 8112000,
+                "rx-bps-l2": 8208000,
+                "rx-bps-l3": 8000000,
+                "tx-mbps-l2": 8.112,
+                "rx-mbps-l2": 8.208,
+                "rx-mbps-l3": 8.0
+            },
+            {
+                "name": "Voice",
+                "direction": "downstream",
+                "flow-id": 3,
+                "rx-first-seq": 37,
+                "rx-last-seq": 5458,
+                "rx-tos-tc": 128,
+                "rx-outer-vlan-pbit": 0,
+                "rx-inner-vlan-pbit": 0,
+                "rx-len": 1026,
+                "tx-len": 1014,
+                "rx-packets": 5422,
+                "tx-packets": 5458,
+                "rx-loss": 0,
+                "rx-delay-us-min": 41,
+                "rx-delay-us-max": 96548,
+                "rx-pps": 100,
+                "tx-pps": 100,
+                "tx-bps-l2": 811200,
+                "rx-bps-l2": 820800,
+                "rx-bps-l3": 800000,
+                "tx-mbps-l2": 0.8112,
+                "rx-mbps-l2": 0.8208,
+                "rx-mbps-l3": 0.8
+            }
+        ]
+    }
+}
 

The rx-outer-vlan-pbit might be wrong depending on the network interface driver and @@ -454,31 +454,31 @@

Stream Commands
$ sudo bngblaster-cli run.sock session-streams session-id 1 | jq '."session-streams".streams[] | select(.name == "BE" and .direction == "downstream" )'
 

-
{
-    "name": "BE",
-    "direction": "downstream",
-    "flow-id": 2,
-    "rx-first-seq": 33,
-    "rx-last-seq": 27040,
-    "rx-tos-tc": 213,
-    "rx-outer-vlan-pbit": 0,
-    "rx-inner-vlan-pbit": 0,
-    "rx-len": 126,
-    "tx-len": 114,
-    "rx-packets": 27008,
-    "tx-packets": 27040,
-    "rx-loss": 0,
-    "rx-delay-us-min": 50,
-    "rx-delay-us-max": 10561,
-    "rx-pps": 99,
-    "tx-pps": 99,
-    "tx-bps-l2": 90288,
-    "rx-bps-l2": 99792,
-    "rx-bps-l3": 79200,
-    "tx-mbps-l2": 0.090288,
-    "rx-mbps-l2": 0.099792,
-    "rx-mbps-l3": 0.0792
-}
+
{
+    "name": "BE",
+    "direction": "downstream",
+    "flow-id": 2,
+    "rx-first-seq": 33,
+    "rx-last-seq": 27040,
+    "rx-tos-tc": 213,
+    "rx-outer-vlan-pbit": 0,
+    "rx-inner-vlan-pbit": 0,
+    "rx-len": 126,
+    "tx-len": 114,
+    "rx-packets": 27008,
+    "tx-packets": 27040,
+    "rx-loss": 0,
+    "rx-delay-us-min": 50,
+    "rx-delay-us-max": 10561,
+    "rx-pps": 99,
+    "tx-pps": 99,
+    "tx-bps-l2": 90288,
+    "rx-bps-l2": 99792,
+    "rx-bps-l3": 79200,
+    "tx-mbps-l2": 0.090288,
+    "rx-mbps-l2": 0.099792,
+    "rx-mbps-l3": 0.0792
+}
 
@@ -489,20 +489,20 @@

RAW Streams
{
-    "streams": [
-        {
-            "name": "RAW",
-            "type": "ipv4",
-            "direction": "downstream",
-            "priority": 128,
-            "network-ipv4-address": "10.0.0.20",
-            "destination-ipv4-address": "1.1.1.1",
-            "length": 256,
-            "pps": 1
-        }
-    ]
-}
+
{
+    "streams": [
+        {
+            "name": "RAW",
+            "type": "ipv4",
+            "direction": "downstream",
+            "priority": 128,
+            "network-ipv4-address": "10.0.0.20",
+            "destination-ipv4-address": "1.1.1.1",
+            "length": 256,
+            "pps": 1
+        }
+    ]
+}
 

If destination-ipv4-address is set to a multicast IP address (224.0.0.0 - 239.255.255.255), diff --git a/docs/troubleshooting.html b/docs/troubleshooting.html index 4927dc0a..bd62d3ff 100644 --- a/docs/troubleshooting.html +++ b/docs/troubleshooting.html @@ -128,11 +128,11 @@

Troubleshootingcapture-include-streams allows to include or exclude (default behavior) traffic streams from capture.

-
{
-    "interfaces": {
-        "capture-include-streams": true
-    }
-}
+
{
+    "interfaces": {
+        "capture-include-streams": true
+    }
+}
 

Traffic streams send or received on threaded interfaces will be also not captured. diff --git a/docsrc/sources/configuration/isis.rst b/docsrc/sources/configuration/isis.rst index f1b86d2a..470acf63 100644 --- a/docsrc/sources/configuration/isis.rst +++ b/docsrc/sources/configuration/isis.rst @@ -105,7 +105,4 @@ - * - `teardown-time` - ISIS teardown time in seconds - - 5 - * - `external-auto-refresh` - - Automatically refresh external LSP from MRT files - - false \ No newline at end of file + - 5 \ No newline at end of file diff --git a/docsrc/sources/configuration/isis_external.rst b/docsrc/sources/configuration/isis_external.rst index 33d4efd5..11642249 100644 --- a/docsrc/sources/configuration/isis_external.rst +++ b/docsrc/sources/configuration/isis_external.rst @@ -10,6 +10,12 @@ * - Attribute - Description - Default + * - `purge` + - Automatically purge all external LSP during teardown + - true + * - `auto-refresh` + - Automatically refresh all external LSP + - false * - `mrt-file` - ISIS MRT file - \ No newline at end of file diff --git a/docsrc/sources/configuration/ospf_external.rst b/docsrc/sources/configuration/ospf_external.rst index 6ea0786f..48804481 100644 --- a/docsrc/sources/configuration/ospf_external.rst +++ b/docsrc/sources/configuration/ospf_external.rst @@ -10,6 +10,9 @@ * - Attribute - Description - Default + * - `purge` + - Automatically purge all external LSA during teardown + - true * - `mrt-file` - OSPF MRT file - \ No newline at end of file diff --git a/docsrc/sources/install.rst b/docsrc/sources/install.rst index 7a23a3ba..404658cf 100644 --- a/docsrc/sources/install.rst +++ b/docsrc/sources/install.rst @@ -39,14 +39,21 @@ and the following standard dependencies: .. code-block:: none + # install libdict for Ubuntu 18.04 LTS + wget https://github.com/rtbrick/libdict/releases/download/v1.0.1/libdict-debian.zip + unzip libdict-debian.zip + sudo dpkg -i libdict_1.0.1_amd64.deb + sudo dpkg -i libdict-dev_1.0.1_amd64.deb + # install libdict for Ubuntu 22.04 LTS wget https://github.com/rtbrick/libdict/releases/download/1.0.3/libdict-ubuntu-22.04.zip unzip libdict-ubuntu-22.04.zip sudo dpkg -i libdict_1.0.3_amd64.deb sudo dpkg -i libdict-dev_1.0.3_amd64.deb - # standard dependencies + # install other dependencies sudo apt install -y cmake \ + libpcap-dev \ libcunit1-dev \ libncurses5-dev \ libssl-dev \ diff --git a/docsrc/sources/routing/lspgen.rst b/docsrc/sources/routing/lspgen.rst index e992ea50..0428d9bb 100644 --- a/docsrc/sources/routing/lspgen.rst +++ b/docsrc/sources/routing/lspgen.rst @@ -53,6 +53,7 @@ The default protocol is ISIS which can be changed using the argument ``-P ospf2` -m --mrt-file -c --node-count -p --pcap-file + -G --purge -f --stream-file -s --seed -q --sequence diff --git a/docsrc/sources/routing/ospf.rst b/docsrc/sources/routing/ospf.rst index 0e473a87..14c96daa 100644 --- a/docsrc/sources/routing/ospf.rst +++ b/docsrc/sources/routing/ospf.rst @@ -174,7 +174,7 @@ request PDU including OSPF common header (``| Version | Type |``). .. code-block:: json { - "command": "ospf-lsa-update", + "command": "ospf-pdu-update", "arguments": { "instance": 1, "pdu": [