Testes funcionais do Stingray BNG utilizando um gerador de tráfego da Ixia

June 23, 2026
BNG/BRAS
Testes funcionais do Stingray BNG utilizando um gerador de tráfego da Ixia
Em projetos relacionados a BNG, não só o desempenho, mas também o comportamento previsível do sistema em diferentes condições é fundamental. Antes de passar para os testes de carga, é importante verificar se o dispositivo implementa corretamente tanto as funções básicas quanto as avançadas, de acordo com os requisitos da RFC. Este artigo explica como foram organizados os testes funcionais de um BNG utilizando um ambiente de teste construído de acordo com os requisitos de uma operadora de telecomunicações de âmbito nacional.

A especificação técnica do cliente incluía mais de 380 requisitos funcionais, abrangendo terminação de assinantes, roteamento, QoS, NAT, mecanismos de alta disponibilidade, monitoramento e proteção do plano de controle.

O objetivo principal dos testes era verificar o funcionamento de uma ampla gama de funções de rede em uma única plataforma e em uma arquitetura unificada. Para isso, foram desenvolvidos cenários de teste para reproduzir de forma fiel as condições reais de implantação em uma rede de provedor de serviços.

Plataforma de Teste

O ambiente de teste foi construído utilizando um gerador de tráfego Ixia XGS.

O Ixia XGS é uma plataforma modular de testes de rede projetada para validação das camadas L2–L7. Ele suporta interfaces de 10G, 40G e 100G e permite a criação de ambientes de teste de alta densidade.

A arquitetura da plataforma é baseada em uma malha interna de comutação de alta velocidade, permitindo o processamento de grandes volumes de tráfego e o compartilhamento de recursos entre módulos. Os módulos podem ser substituídos sem interromper os testes em andamento, simplificando a manutenção e a operação.

Os softwares IxNetwork, IxLoad e IxExplorer foram utilizados para configuração e controle. Essas ferramentas permitem que engenheiros definam padrões de tráfego, configurações de protocolos e parâmetros de teste. O gerador de tráfego foi usado para estabelecer sessões de assinantes e emular condições típicas de rede durante os testes de BNG.

Um dos principais objetivos do projeto foi verificar que todo o conjunto de funções pudesse operar simultaneamente em uma única plataforma, sem distribuir funções entre múltiplas soluções especializadas.

ixia test platform

Configuração do ambiente de teste

Os testes foram realizados em um servidor equipado com 128 núcleos de CPU.

Especificações do servidor:

AMD EPYC 9754 (128 núcleos)
Dissipador 2U
12 × 32 GB DDR5 RDIMM 5600 MHz
2 × SSD SATA 960 GB (slots frontais, PM893)
2 × adaptadores PCIe 4.0 100GbE QSFP28 de porta dupla
1 × SSD NVMe de 1 TB (990 PRO)
2 × interfaces RJ45 1Gb onboard
Interface dedicada de gerenciamento RJ45 1Gb
2 × fontes de alimentação AC 1300W
Kit de montagem em rack
Garantia padrão 8x5xNBD+5, 3 anos

Duas configurações de ambiente de teste foram utilizadas.

A primeira configuração utilizava interfaces 100G: 2 × 100G de entrada e 2 × 100G de saída. Essa configuração foi usada para validar cenários de tráfego de alta vazão e a operação do BNG com links 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
}

A segunda configuração utilizou 16 interfaces de 10G e 2 interfaces de saída de 100G. Essa configuração destina-se a implantações de BNG nas quais os lados LAN e WAN utilizam tipos diferentes de interface.

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
}

O ambiente de testes utilizou cenários dual-stack com suporte simultâneo a IPv4 e IPv6, isolamento de VRF, DHCPv4/v6, PPPoE, QinQ e roteamento dinâmico usando BGP e OSPF.

Foi dada atenção especial a cenários de grandes tabelas de roteamento, incluindo:

  • até 5 milhões de rotas IPv4;
  • até 800.000 rotas IPv6;
  • suporte a BGP e OSPF;
  • cenários de tabela completa (full-view) de roteamento BGP.

Test Scenarios

Os cenários de teste foram derivados diretamente dos requisitos técnicos do cliente e cobrem as principais funções utilizadas por um BNG em uma rede de produção.

A primeira etapa foca na terminação de sessões de assinantes, incluindo PPPoE e IPoE em múltiplos modelos de implantação: VLANs individuais, intervalos de VLAN e QinQ, incluindo cenários com restrições de admissão de sessão.

Para IPoE, também foram validados cenários em larga escala, incluindo até 128.000 sessões de assinantes na configuração atual.

ixia scenarios

A próxima etapa foca no gerenciamento de sessões. Os testes verificam o tratamento de timeouts, aplicação de atributos RADIUS, controle dinâmico de sessão via CoA e atribuição de serviços e políticas de acesso.

cli ppoe-sessions-1

cli ppoe-sessions-2

Funcionalidade de endereçamento IP é então validada, incluindo DHCP, DHCPv6, pools de endereços locais e cenários dual-stack.

Também foram testados o endereçamento multi-pool e implantações multi-serviço usando um servidor DHCP local. A funcionalidade foi verificada com sucesso em diferentes variantes de configuração.

IP-addressing-1

IP-addressing-2

A próxima área de validação é o roteamento, incluindo tabelas de rotas, escalabilidade de rotas, atualizações de rotas e operação básica dos protocolos OSPF e BGP.

Testes adicionais cobriram grandes tabelas de roteamento e configurações BGP em larga escala.

routing_1

routing_2

Mecanismos de gerenciamento de tráfego também são testados, incluindo limitação de taxa, perfis de QoS e marcação de tráfego.

traffic managing

A validação adicional cobre funções de base de rede e resiliência, incluindo mecanismos de Camada 2, agregação de links, ECMP, proteção de plano de controle, tratamento de tráfego malformado, NAT e funções de filtragem.

Como parte da validação de ECMP, grupos contendo até 32 próximos saltos foram testados com sucesso, demonstrando distribuição correta de tráfego e comportamento de failover sem perda.

Network Foundation and Resilience Functions_1

Network Foundation and Resilience Functions_2

O bloco final de validação foca em ferramentas operacionais, incluindo acesso de gerenciamento, monitoramento e coleta de estatísticas, com cenários específicos cobrindo SNMPv3 e comunicação criptografada.

Inspection of maintenance tools

A operação correta de quadros jumbo (jumbo frames) também foi verificada com sucesso.

jumbo frames-1

Foi dada atenção especial à escalabilidade. Durante os testes, foram validadas configurações com grande número de assinantes, extensas tabelas de roteamento e alta densidade de conexões.

scalability

Results

Como parte do projeto, foi preparado e validado um ambiente de testes para reproduzir cenários operacionais típicos de uma rede de provedor de serviços em nível nacional.

Essa abordagem de testes fornece não apenas um conjunto de verificações isoladas, mas uma compreensão abrangente de como o sistema se comporta em condições operacionais reais. Para projetos de grande escala, isso significa que a solução passa por um ciclo completo de validação antes da implantação, e seu comportamento em cenários críticos é conhecido antecipadamente. Um conjunto unificado de casos de teste e uma metodologia de validação consistente são usados durante todo o processo.

Os mesmos cenários de teste usados para grandes implantações também são aplicados a projetos menores. Como resultado, operadores de qualquer porte recebem uma solução que passou pelo mesmo nível de verificação.

No próximo artigo, avançaremos para testes de desempenho e analisaremos métricas reais de throughput. Também demonstraremos como o BNG se comporta sob carga quando testado com um gerador de tráfego e apresentaremos os resultados obtidos em diferentes cenários de implantação.