Em nosso último artigo do SRv6 feito por nossos especialistas, comentamos a respeito dos benefícios do SRv6 quando comparados com o MPLS, se você ainda não viu, clique no link a seguir: https://made4it.com.br/srv6-um-sucessor-do-mpls/


Neste artigo, vamos abordar sobre o funcionamento do SRv6, comparar os protocolos de Control Plane, falar sobre Data Plane e também ver as principais diferenças do SRv6 e MPLS. MPLS é uma tecnologia que ainda é muito utilizado nos dias de hoje, porém suas características de funcionamento se mostram muito diferentes do SRv6, que foi concebido não só como evolução ao MPLS mas também simplificando e muito o funcionamento de redes de transporte e relacionados, adequando-as para as necessidades do futuro enquanto diminuindo a complexidade das redes.



Comparação entre o SRv6 e o MPLS. 
 Antes de falar sobre o funcionamento do SRv6, vamos analisar as principais diferenças entre ele e o consolidado MPLS. Podemos ver na tabela abaixo o antes (before) e o depois (now), mostrando a evolução e simplificação do MPLS para o SRv6: 

Fonte: IP Network eBook Series: SRv6, Huawei, Lanjun Luo 


Vemos no MPLS (before) um “stack” de protocolos e tecnologias. Tudo isso é simplificado no SRv6, onde conseguimos entregar as mesmas funcionalidades do MPLS mas sem dependência de protocolos de sinalização de “labels” (ldp/rsvp-te). Também existe a simplificação dos tipos de serviços que no SRv6 utilizam EVPN e sua ótima escalabilidade para prover acesso e transporte de serviços na rede. Aliado a tudo isso, o SRv6 atende também as necessidades de programabilidade e escalabilidade atuais que antes não eram possíveis no MPLS. 

O SRv6 não se restringe a redes “metro” ou transportes em ambientes “do futuro” (5G/IOT), veja no exemplo abaixo, em “before” precisamos do IP/VXLAN para transporte de informações dentro do DC1 e DC2 enquanto na rede Backbone utilizamos o MPLS com LDP, TE ou SR(MPLS).  
  Depois temos o “After” da implementação do SRv6 com EVPN, mostrando a simplificação do cenário. Com SRv6 e EVPN, conseguimos entregar o que antes era possível apenas com um “stack” de diversos protocolos, onerando processamento e aumentando a complexidade do ambiente. 
 

Fonte: IP Network eBook Series: SRv6, Huawei, Lanjun Luo 


Além desses benefícios, como o SRv6 utiliza componentes nativos do IPv6 isso ajuda e muito em cenários de migração. Hoje praticamente todos os equipamentos suportam encaminhar cabeçalhos IPv6, logo a migração de um ambiente legado (MPLS) para essa nova tecnologia consegue ser orgânica, gradual, protegendo o investimento e assegurando downtimes mínimos no ambiente.  

Fonte: Implantação de Segment Routing IPv6 (SRv6) na VIVO – Nelson J. dos Santos Junior – Fórum Brasileiro de IPv6 2023.  

O SRv6 e sua simplificação é um grande aliado para integrações de grandes domínios de roteamento (como por exemplo, em casos de empresas adquiridas por outras onde tais redes precisam se comunicar e interoperar). Com o SRv6 conseguimos integrar tais redes com sumarizações simples de roteamento enquanto no MPLS exigiam um planejamento extenso e uso de técnicas como InterAS OPTION A,B,C.  



Funcionamento do SRv6: 
Sabemos que no MPLS utilizamos LABELS entre camadas 2 e 3 que determinam como o pacote deve ser encaminhado em uma rede, porém é necessário que todos os equipamentos que façam parte do caminho tenham os protocolos necessários habilitados (IGP/LDP/RSVP).  
Podemos ver na imagem abaixo os MPLS Labels de um pacote capturado: 

Fonte: SINGH, Arshdepp. Fun with Revisiting MPLS basics. Linkedin, 23 de maio de 2020. Disponível em https://www.linkedin.com/pulse/fun-revisiting-mpls-basics-capturing-labels-wireshark-arshdeep-singh
Acesso em: 22 de abril de 2024. 

Já o SRv6 utiliza uma extensão do cabeçalho IPv6 chamada de Segment Routing Header (SRH) para inserir endereços IPv6 chamados de SID (segment identifiers) para identificação do segmento de roteamento IPv6: 

Fonte: DayOne Intro SRv6, Juniper, HEGDE, Shaddha. et al.


O SID representa um segmento específico em um segmento de domínio de roteamento, ele utiliza um endereço IPv6 de 128-bit, também conhecido como SRv6 Segment ou SRv6 SID. Em comparação com o MPLS, podemos dizer que o SID é a “label” que delimita o caminho de transporte ou o serviço, porém aqui no SRv6 transformamos isso em um endereço IPv6 único que pode ser encaminhado nativamente via IPv6 (bem mais simples, não ? 😉)


Veja só a estrutura de um SID: 

 

Fonte: IP Network eBook Series: SRv6, Huawei, Lanjun Luo 


Locator: É a primeira parte do SID, utilizando mais bits. Tem a função de localização, representando o endereço de um node SRv6 específico. Depois de configurado em um equipamento, ele é propagado por todo o domínio SRv6 utilizando um IGP, permitindo que outros equipamentos localizem esse node em específico. 

Function: É uma parte do SID que designa uma função SRv6 que é executado localmente em um node específico. Comumente chamamos isto de “programa”. É uma instrução para orientar os pacotes dentro da rede. 
Neste SID, podemos sinalizar por exemplo uma EVPN-VPWS, ou um L3VPN específico deste node.  
Dado o fato de o SID estar dentro do bloco “locator” sendo este propagado pelo IGP (ISIS/OSPF) dentro do domínio SRv6, toda e qualquer comunicação orientada a este SID termina especificamente neste “node”.  
Uma comparação com o MPLS que podemos fazer aqui é em uma “label” usada para delimitar um serviço como L2VPN via targeted-ldp. No SRv6, basta implementarmos no head-end e tail-end instruções SID para o serviço e está feito. Os “nodes” que precisam interpretar os SIDs vão encapsular/desencapsular dados no mesmo, enquanto o restante da rede simplesmente encaminha os pacotes IPv6 com base no IGP.  

Argument (opcional): Usado para definir informações relevantes, como “packet flow” e “service information”, além de ser utilizado para implementar Split Horizon em cenários EVPN VPLS CE Multi-homing. Também vem sendo usado em implementações de sumarizações e simplificação de SID (G-SRv6 e uSID) mas, não vem ao caso falar sobre isso neste artigo, mas provavelmente será abordado em um próximo.  

Como citamos anteriormente, no core da rede SRv6 ocorre o encaminhamento de dados baseado no roteamento IPv6.  
Para os nós que entendem SRv6 e possuem SIDs alocados, ocorre o processamento dos cabeçalhos e instruções ali presentes. Já para os nós que não conhecem o SRv6 (equipamentos antigos e/ou desatualizados), eles fazem um simples encaminhamento de pacotes IPv6 baseando-se no cabeçalho e endereços de destino do pacote aliado ao IGP.  

E o balanceamento de carga? 

O bom e velho ECMP através dos pacotes IPv6. Em tese, qualquer equipamento pode fazer ECMP simplesmente usando seus hashs tradicionais. 

É teoricamente plug-and-play. Quer iniciar a implementação de SRv6? Basta começar com dois PEs enquanto o restante da rede tem somente o IPv6 habilitado. 

E o control plane? 

O control plane do MPLS é realmente carregado. Temos o básico LDP, que estabelece as sessões de discovery e as sessões targeted e é amplamente utilizado nas redes MPLS. Para implementar engenharia de tráfego, temos o intenso protocolo RSVP que foi estendido para suportar a sinalização de labels resultando no RSVP-TE. Para ganhar em escalabilidade, usamos o MP-BGP e sinalizamos labels através dele. E sem contar no IGP ISIS ou OSPF, carregados com as extensões de TEDB. Abaixo uma tabela comparativa entre ambos: 



Já para o SRv6, no plano de controle temos apenas o IGP e quando necessário BGP para todos os serviços e funcionalidades que o MPLS hoje entrega, além das demandas emergentes das redes do futuro.  
 
Para que o SRv6 possa funcionar, tanto o IGP quanto o BGP precisaram de extensões que são usadas para propagar informações sobre Locators e SID. Para cada tipo de serviço do SRv6, existe um TLV específico para ser sinalizado através da rede. 

Já para o BGP, a extensão permitiu que endereços SID fossem transportados em mensagens de update permitindo assim estabelecer serviços de L2VPN e L3VPN sobre a rede SRv6. 

Também no control-plane temos as vantagens do source-routing, onde desde a origem já podemos traçar o caminho até o destino, e sem para isso manter diversas sinalizações e estados na rede. Como o SRv6 nos permite delimitar um SID para um “node” ou “adjacência”, podemos desde o head-end sinalizar todo o caminho de transito desejado de uma informação enquanto a rede simplesmente encaminha os dados. Sim, o pacote sai da “origem” já com todo o caminho escrito no cabeçalho, seja de forma manual (SRv6-TE) ou com apoio de ferramentas externas. Isso, aliado a possibilidade de controladores externos monitorando a rede permite redes inteligentes, orientadas a serviço e extremamente eficazes.  



Para finalizar, o SRv6 traz para nós a definição: simplificação com alto poder de programabilidade. 


Quer saber mais sobre SRv6 ou precisa de apoio para integrar esta tecnologia em seu ambiente ? Entre em contato conosco e fique de olho nos próximos posts em nosso blog!

Até logo!