La especificación técnica del cliente incluía más de 380 requisitos funcionales, que abarcaban la terminación de abonados, el enrutamiento, QoS, NAT, mecanismos de alta disponibilidad, monitorización y protección del Control Plane.
El objetivo principal de las pruebas era verificar el funcionamiento de una amplia gama de funciones de red dentro de una única plataforma y una arquitectura unificada. Para ello, se desarrollaron escenarios de prueba que reproducían con la mayor precisión posible las condiciones reales de despliegue en una red de un proveedor de servicios.
Plataforma de pruebas
El entorno de pruebas se construyó utilizando un generador de tráfico Ixia XGS.
Ixia XGS es una plataforma modular de pruebas de red diseñada para la validación de funciones de L2 a L7. Admite interfaces de 10G, 40G y 100G y permite crear entornos de prueba de alta densidad.
La arquitectura de la plataforma se basa en una matriz de conmutación interna de alta velocidad, que permite procesar grandes volúmenes de tráfico y compartir recursos entre módulos. Los módulos pueden sustituirse sin interrumpir las pruebas en curso, lo que simplifica el mantenimiento y la operación.
Uno de los principales objetivos del proyecto fue verificar que el conjunto completo de funciones pudiera operar simultáneamente dentro de una única plataforma, sin distribuir funciones entre múltiples soluciones especializadas.
Configuración del banco de pruebas
Las pruebas se realizaron en un servidor equipado con 128 núcleos de CPU.
Especificaciones del servidor:
AMD EPYC 9754 (128 núcleos)
2U Heatsink
12 × 32 GB DDR5 RDIMM 5600 MHz
2 × 960 GB SATA SSD (bahías frontales, PM893)
2 × adaptadores PCIe 4.0 QSFP28 100GbE de doble puerto
1 × SSD NVMe de 1 TB (990 PRO)
2 × interfaces integradas RJ45 de 1Gb
Interfaz dedicada de gestión RJ45 de 1Gb
2 × fuentes de alimentación AC de 1300W
Kit de montaje en rack
Garantía estándar 8x5xNBD+5, 3 años
Se utilizaron dos configuraciones del banco de pruebas.
La primera configuración utilizaba interfaces de 100G: 2 × 100G de entrada y 2 × 100G de salida. Esta configuración se utilizó para validar escenarios de tráfico de alta capacidad y el funcionamiento del BNG con enlaces de 100G.
dpdk_device=10:pci:41:00.0
dpdk_device=11:pci:41:00.1
dpdk_device=20:pci:01:00.0
dpdk_device=21:pci:01:00.1
in_dev=10:20
out_dev=11:21
lag {
name=IN
device=10
device=20
lacp=2
system_id=6c:b3:11:79:81:5e
priority=32768
short_timeout=on
balance_algo=0
}
lag {
name=OUT
device=11
device=21
lacp=2
system_id=6c:b3:11:79:81:5f
priority=32768
short_timeout=on
balance_algo=0
}
dpdk_engine=6
dpdk_rss=10
num_threads=98
dpdk_tx_queue_size=8160
rx_dispatcher=2
support_service_18=1
syslog_level=7
scale_factor=10
mem_slices_ip=32
dpdk_mempool_size=8000000
mem_tracking_flow=130000000
mem_tracking_ip=100000000
mem_ipv6_tracking_flow=40000000
mem_ipv6_tracking_ip=30000000
mem_ssl_parsers=18000000
mem_http_parsers=512000
mem_ip_billdata_recs=500000
mem_preset=1
cloud=0
ctrl_port=29000
ctrl_dev=lo
federal_black_list=0
black_list_redirect=
netflow=12
enable_acct=1
enable_auth=1
auth_servers=127.0.0.1%lo:29002
bras_enable=1
bras_arp_ip=10.1.0.62
bras_arp_mac=6c:b3:11:79:81:5d
bras_ip_filtering=0x0001
bras_terminate_l2=1
bras_dhcp_mode=2
bras_dhcp_ratelimit=17
bras_dhcp_disconnect=0x000B
bras_dhcp_ratelimit_ban=5
bras_dhcp_timeout=17
bras_vlan_terminate=3
bras_qinq_type=0x8100
bras_arp_proxy=0x003
bras_subs_id=qinq+mac,vlan+mac,mac
bras_ip4db_bucket_count=1048576
ipv6=1
bras_ipv6=1
bras_dhcp6_mode=1
bras_ipv6_address=2A0F:1900:2000::31
bras_icmp6_send_rtradv=1
bras_icmp6_min_rtradv_interval=60
bras_icmp6_max_rtradv_interval=80
bras_pppoe_enable=1
bras_pppoe_session=150000
bras_ppp_auth_list=1,2,3
bras_pppoe_restore_on_startup=0
bras_ppp_idle_timeout=30
bras_ppp_restart_timeout=3
bras_ppp_ping_timeout=5
bras_ppp_max_failure=3
netflow_dev=lo
netflow_timeout=10
netflow_full_collector_type=1
netflow_full_collector=127.0.0.1:1500
netflow_passive_timeout=20
netflow_active_timeout=60
ipfix_mtu_limit=1400
ipfix_dev=bond0
ipfix_udp_collectors=10.169.29.173:1602
router=1
router_netns=router
router_kernel_table=101
router_subs_announce=0x100007
router_default_vrf=vrf-grt
bras_vrf_isolation=1
router_max_ip4_route_count=5000000
router_max_ip6_route_count=800000
router_device {
vrf=vrf-grt
device=11
tap=bng
peer=rib
subnet=224.0.0.5/32
subnet=224.0.0.6/32
subnet=10.1.0.1/32
subnet=10.2.0.1/32
subnet=10.3.0.1/32
subnet=10.4.0.1/32
subnet6=2a0f:1900:2000::30/128
subnet6=2a0f:1900:2002::30/128
subnet6=fe80::2898:7ff:fe59:880e/128
subnet6=ff02::5/128
subnet6=ff02::6/128
}
router_vrf {
id=vrf-grt
netns=router
kernel_table=100
neighbor_cache=shared
}
La segunda configuración utilizaba 16 interfaces de 10G y 2 interfaces de salida de 100G. Esta configuración está destinada a despliegues de BNG en los que los lados LAN y WAN utilizan distintos tipos de interfaces.
dpdk_device=10:pci:0000:41:00.0
dpdk_device=20:pci:0000:01:00.0
dpdk_device=30:pci:0000:c2:00.0
dpdk_device=31:pci:0000:c2:00.1
dpdk_device=32:pci:0000:c2:00.2
dpdk_device=33:pci:0000:c2:00.3
dpdk_device=34:pci:0000:c2:00.4
dpdk_device=35:pci:0000:c2:00.5
dpdk_device=36:pci:0000:c2:00.6
dpdk_device=37:pci:0000:c2:00.7
dpdk_device=40:pci:0000:02:00.0
dpdk_device=41:pci:0000:02:00.1
dpdk_device=42:pci:0000:02:00.2
dpdk_device=43:pci:0000:02:00.3
dpdk_device=50:pci:0000:89:00.0
dpdk_device=51:pci:0000:89:00.1
dpdk_device=52:pci:0000:89:00.2
dpdk_device=53:pci:0000:89:00.3
in_dev=30:31:32:33:34:35:36:37:40:41:42:43:50:51:52:53
out_dev=10:10:10:10:10:10:10:10:10:20:20:20:20:20:20:20:20
lag {
name=IN
device=30
device=31
device=32
device=33
device=34
device=35
device=36
device=37
device=40
device=41
device=42
device=43
device=50
device=51
device=52
device=53
lacp=2
system_id=6c:b3:11:79:81:5e
priority=32768
short_timeout=on
balance_algo=0
}
lag {
name=OUT
device=10
device=20
lacp=2
system_id=6c:b3:11:79:81:5f
priority=32768
short_timeout=on
balance_algo=0
}
dpdk_engine=7
dpdk_dispatch=30,31;mempool=main10G
dpdk_dispatch=32,33;mempool=main10G
dpdk_dispatch=34,35;mempool=main10G
dpdk_dispatch=36,37;mempool=main10G
dpdk_dispatch=40,41;mempool=main10G
dpdk_dispatch=42,43;mempool=main10G
dpdk_dispatch=50,51;mempool=main10G
dpdk_dispatch=52,53;mempool=main10G
dpdk_dispatch=10,20;rss=16;mempool=main100G
dpdk_mempool=name=main10G;size=1600000
dpdk_mempool=name=main100G;size=8000000
num_threads=98
dpdk_tx_queue_size=8160
rx_dispatcher=2
support_service_18=1
syslog_level=7
scale_factor=10
mem_slices_ip=32
mem_tracking_flow=130000000
mem_tracking_ip=100000000
mem_ipv6_tracking_flow=40000000
mem_ipv6_tracking_ip=30000000
mem_ssl_parsers=18000000
mem_http_parsers=512000
mem_ip_billdata_recs=500000
mem_preset=1
cloud=0
ctrl_port=29000
ctrl_dev=lo
federal_black_list=0
black_list_redirect=
netflow=12
enable_acct=1
enable_auth=1
auth_servers=127.0.0.1%lo:29002
bras_enable=1
bras_arp_ip=10.1.0.62
bras_arp_mac=6c:b3:11:79:81:5d
bras_ip_filtering=0x0001
bras_terminate_l2=1
bras_dhcp_mode=2
bras_dhcp_ratelimit=17
bras_dhcp_disconnect=0x000B
bras_dhcp_ratelimit_ban=5
bras_dhcp_timeout=17
bras_vlan_terminate=3
bras_qinq_type=0x8100
bras_arp_proxy=0x003
bras_subs_id=qinq+mac,vlan+mac,mac
bras_ip4db_bucket_count=1048576
ipv6=1
bras_ipv6=1
bras_dhcp6_mode=1
bras_ipv6_address=2A0F:1900:2000::31
bras_icmp6_send_rtradv=1
bras_icmp6_min_rtradv_interval=60
bras_icmp6_max_rtradv_interval=80
bras_pppoe_enable=1
bras_pppoe_session=150000
bras_ppp_auth_list=1,2,3
bras_pppoe_restore_on_startup=0
bras_ppp_idle_timeout=30
bras_ppp_restart_timeout=3
bras_ppp_ping_timeout=5
bras_ppp_max_failure=3
netflow_dev=lo
netflow_timeout=10
netflow_full_collector_type=1
netflow_full_collector=127.0.0.1:1500
netflow_passive_timeout=20
netflow_active_timeout=60
ipfix_mtu_limit=1400
ipfix_dev=bond0
ipfix_udp_collectors=10.169.29.173:1602
router=1
router_netns=router
router_kernel_table=101
router_subs_announce=0x100007
router_default_vrf=vrf-grt
bras_vrf_isolation=1
router_max_ip4_route_count=5000000
router_max_ip6_route_count=800000
router_device {
vrf=vrf-grt
device=10
tap=bng
peer=rib
subnet=224.0.0.5/32
subnet=224.0.0.6/32
subnet=10.1.0.1/32
subnet=10.2.0.1/32
subnet=10.3.0.1/32
subnet=10.4.0.1/32
subnet6=2a0f:1900:2000::30/128
subnet6=2a0f:1900:2002::30/128
subnet6=fe80::2898:7ff:fe59:880e/128
subnet6=ff02::5/128
subnet6=ff02::6/128
}
router_vrf {
id=vrf-grt
netns=router
kernel_table=100
neighbor_cache=shared
}
El entorno de pruebas utilizó escenarios dual-stack con soporte simultáneo para IPv4 e IPv6, aislamiento VRF, DHCPv4/v6, PPPoE, QinQ y enrutamiento dinámico mediante BGP y OSPF.
Se prestó especial atención a los escenarios con tablas de enrutamiento de gran tamaño, incluyendo:
- hasta 5 millones de rutas IPv4;
- hasta 800.000 rutas IPv6;
- soporte para BGP y OSPF;
- escenarios con tablas de enrutamiento BGP full-view.
Escenarios de prueba
Los escenarios de prueba se derivaron directamente de los requisitos técnicos del cliente y cubren las funciones clave utilizadas por un BNG en una red de producción.
La primera etapa se centra en la terminación de sesiones de abonado, incluyendo PPPoE e IPoE en múltiples modelos de despliegue: VLAN individuales, rangos de VLAN y QinQ, incluidos escenarios con restricciones de admisión de sesiones.
Para IPoE, también se validaron escenarios a gran escala, incluyendo hasta 128.000 sesiones de abonados en la configuración actual.
La siguiente etapa se centra en la gestión de sesiones. Las pruebas verifican la gestión de temporizadores, la aplicación de atributos RADIUS, el control dinámico de sesiones mediante CoA y la asignación de servicios y políticas de acceso.
A continuación, se valida la funcionalidad de direccionamiento IP, incluyendo DHCP, DHCPv6, pools de direcciones locales y escenarios dual-stack.
También se probaron escenarios con múltiples pools de direcciones y despliegues multiservicio utilizando un servidor DHCP local. La funcionalidad se verificó correctamente en diferentes variantes de configuración.
La siguiente área de validación es el enrutamiento, incluyendo tablas de rutas, escalabilidad de rutas, actualización de rutas y funcionamiento básico de los protocolos OSPF y BGP.
Las pruebas adicionales cubrieron tablas de enrutamiento de gran tamaño y configuraciones BGP a gran escala.
También se prueban los mecanismos de gestión de tráfico, incluidos el rate limiting, los perfiles QoS y el marcado de tráfico.
La validación adicional cubre las funciones fundamentales de red y resiliencia, incluidos los mecanismos de Capa 2, agregación de enlaces, ECMP, protección del Control Plane, tratamiento de tráfico malformado, NAT y funciones de filtrado.
Como parte de la validación de ECMP, se probaron con éxito grupos que contenían hasta 32 next hops, demostrando una distribución correcta del tráfico y un comportamiento de conmutación por error sin pérdida de paquetes.
El bloque final de validación se centra en las herramientas operativas, incluyendo acceso de gestión, monitorización y recopilación de estadísticas, con escenarios específicos que cubren SNMPv3 y comunicaciones cifradas.
También se verificó con éxito el correcto funcionamiento de las tramas jumbo.
Se prestó especial atención a la escalabilidad. Durante las pruebas se validaron configuraciones con un gran número de abonados, tablas de enrutamiento extensas y una alta densidad de conexiones.
Resultados
Como parte del proyecto, se preparó y validó un entorno de pruebas para reproducir escenarios operativos típicos de la red de un proveedor nacional de servicios.
Este enfoque de pruebas proporciona no solo un conjunto de verificaciones aisladas, sino una comprensión integral de cómo se comporta el sistema en condiciones operativas reales. Para proyectos a gran escala, esto significa que la solución pasa por un ciclo completo de validación antes de su despliegue y que su comportamiento en escenarios críticos se conoce de antemano. Durante todo el proceso se utiliza un conjunto unificado de casos de prueba y una metodología de validación consistente.
Los mismos escenarios de prueba utilizados para grandes despliegues también se aplican a proyectos de menor escala. Como resultado, operadores de cualquier tamaño reciben una solución que ha pasado por el mismo nivel de verificación.
En el próximo artículo abordaremos las pruebas de rendimiento y revisaremos métricas reales de throughput. También mostraremos cómo se comporta el BNG bajo carga cuando se prueba con un generador de tráfico y presentaremos los resultados obtenidos en diferentes escenarios de despliegue.














