La especificación técnica del cliente incluía más de 380 requisitos funcionales, que abarcaban la terminación de sesiones de abonados, el enrutamiento, la QoS, el NAT, los mecanismos de alta disponibilidad, la monitorización y la protección del plano de control (Control Plane).
El objetivo principal de las pruebas era verificar el funcionamiento de un amplio conjunto de funciones de red dentro de una única plataforma y una arquitectura unificada. Para ello, se desarrollaron escenarios de prueba que reproducían fielmente las condiciones reales de despliegue en la 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 las capas L2–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 se pueden sustituir sin interrumpir las pruebas en curso, lo que simplifica el mantenimiento y la operación.
Uno de los objetivos clave del proyecto era comprobar que todo el conjunto de funciones pudiera operar simultáneamente en una única plataforma, sin distribuir las distintas funciones entre varias soluciones especializadas.

Configuración del entorno 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)
Disipador térmico para chasis 2U
12 × 32 GB DDR5 RDIMM a 5600 MHz
2 × SSD SATA de 960 GB (bahías frontales, PM893)
2 × adaptadores PCIe 4.0 de doble puerto 100GbE QSFP28
1 × SSD NVMe de 1 TB (990 PRO)
2 × interfaces integradas RJ45 de 1Gb
Interfaz de gestión dedicada RJ45 de 1Gb
2 × fuentes de alimentación de CA de 1300 W
Kit de montaje en rack
Garantía estándar de 3 años, 8x5xNBD+5
Se utilizaron dos configuraciones del entorno de pruebas.
La primera configuración utilizaba interfaces de 100G: 2 × 100G de entrada y 2 × 100G de salida. Esta configuración se empleó para validar escenarios de tráfico de alto rendimiento 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 entrada de 10G y 2 interfaces de salida de 100G. Esta configuración está pensada para despliegues de BNG en los que los lados LAN y WAN utilizan distintos tipos de interfaz.
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 de doble pila (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, incluidos los siguientes:
- hasta 5 millones de rutas IPv4;
- hasta 800.000 rutas IPv6;
- soporte para BGP y OSPF;
- escenarios con la tabla completa de rutas BGP (full view).
Escenarios de prueba
Los escenarios de prueba se definieron directamente a partir de los requisitos técnicos del cliente y abarcan las principales funciones que utiliza un BNG en una red de producción.
La primera fase se centra en la terminación de sesiones de abonados, incluidos PPPoE e IPoE en distintos modelos de despliegue: VLAN individuales, rangos de VLAN y QinQ, así como escenarios con restricciones para el establecimiento de sesiones.
En el caso de IPoE, también se validaron escenarios a gran escala, con hasta 128.000 sesiones de abonados en la configuración actual.

La siguiente fase se centra en la gestión de sesiones. Las pruebas verifican el tratamiento de los tiempos de espera, 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, incluidos DHCP, DHCPv6, los pools de direcciones locales y los escenarios de doble pila (dual-stack).
También se probaron configuraciones con múltiples pools de direcciones y despliegues multiservicio que utilizan un servidor DHCP local. La funcionalidad se verificó satisfactoriamente en distintas variantes de configuración.


La siguiente área de validación es el enrutamiento, incluidas las tablas de rutas, la escalabilidad del número de rutas, las actualizaciones de rutas y el funcionamiento básico de los protocolos OSPF y BGP.
Las pruebas adicionales abarcaron tablas de enrutamiento de gran tamaño y configuraciones BGP a gran escala.


También se probaron los mecanismos de gestión del tráfico, incluidos los límites de velocidad, los perfiles QoS y el marcado del tráfico.

La validación adicional abarcó las funciones básicas de red y de resiliencia, incluidos los mecanismos de capa 2, la agregación de enlaces, ECMP, la protección del plano de control, el tratamiento del tráfico malformado, NAT y las funciones de filtrado.
Durante la validación de ECMP, se probaron satisfactoriamente grupos de hasta 32 siguientes saltos (next hops), lo que demostró una distribución correcta del tráfico y una conmutación por fallo sin pérdida de paquetes.


El último bloque de validación se centra en las herramientas operativas, incluidos el acceso de gestión, la monitorización y la recopilación de estadísticas, con escenarios específicos para SNMPv3 y las comunicaciones cifradas.

También se verificó satisfactoriamente el funcionamiento correcto 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 capaz de reproducir escenarios operativos habituales en la red de un proveedor de servicios con cobertura nacional.
Este enfoque de pruebas no se limita a una colección de comprobaciones aisladas, sino que permite comprender de forma integral cómo se comporta el sistema en condiciones operativas reales. En proyectos a gran escala, esto significa que la solución completa un ciclo 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 coherente.
Los mismos escenarios de prueba que se utilizan en despliegues a gran escala también se aplican a proyectos más pequeños. De este modo, los operadores de cualquier tamaño reciben una solución sometida al mismo nivel de verificación.
En el próximo artículo abordaremos las pruebas de rendimiento y analizaremos las métricas reales de throughput. También mostraremos cómo se comporta el BNG bajo carga al realizar pruebas con un generador de tráfico y presentaremos los resultados obtenidos en distintos escenarios de despliegue.

