{"id":14891,"date":"2026-10-05T09:00:38","date_gmt":"2026-10-05T06:00:38","guid":{"rendered":"https:\/\/vasexperts.com\/?p=14891"},"modified":"2026-10-02T21:09:07","modified_gmt":"2026-10-02T18:09:07","slug":"scaling-in-a-cups-architecture-how-to-grow-without-disrupting-subscribers","status":"publish","type":"post","link":"https:\/\/vasexperts.com\/br\/blog\/mobile-networks\/scaling-in-a-cups-architecture-how-to-grow-without-disrupting-subscribers\/","title":{"rendered":"Escalonamento em uma arquitetura CUPS: como crescer sem afetar os assinantes"},"content":{"rendered":"<h2>Arquitetura do cluster: Control Plane e User Plane<\/h2>\r\nDentro do cluster, os componentes s\u00e3o divididos entre o Control Plane e o User Plane.\r\n\r\nO User Plane executa as fun\u00e7\u00f5es de processamento de tr\u00e1fego: recebimento, processamento e encaminhamento do tr\u00e1fego dos assinantes.\r\n\r\n[product id=\u201d19\u2033 type=\u201ddark\u201d]\r\n\r\nUma das principais fun\u00e7\u00f5es do User Plane \u00e9 o DPI \u2014 um sistema de classifica\u00e7\u00e3o de tr\u00e1fego por sess\u00f5es e aplica\u00e7\u00f5es. Os n\u00f3s DPI recebem pacotes, processam conex\u00f5es, aplicam as pol\u00edticas necess\u00e1rias e coletam estat\u00edsticas de consumo dos assinantes. S\u00e3o esses n\u00f3s que s\u00e3o adicionados quando \u00e9 necess\u00e1rio aumentar a capacidade ou retirados de opera\u00e7\u00e3o para manuten\u00e7\u00e3o.\r\n\r\n<a href=\"\/wp-content\/uploads\/2026\/10\/cluster-architecture.svg\"><noscript><img loading=\"lazy\" decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/10\/cluster-architecture.svg\" alt=\"Arquitetura do cluster da VAS Experts com Control Plane e User Plane\" width=\"806\" height=\"305\" class=\"alignnone size-full wp-image-14892\"><\/noscript><img loading=\"lazy\" decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/10\/cluster-architecture.svg\" alt=\"Arquitetura do cluster da VAS Experts com Control Plane e User Plane\" width=\"806\" height=\"305\" class=\"alignnone size-full wp-image-14892 lazyload\" data-src=\"\/wp-content\/uploads\/2026\/10\/cluster-architecture.svg\"><\/a>\r\n\r\nFigura 1 \u2014 Arquitetura do cluster\r\n\r\nO Control Plane armazena o estado das sess\u00f5es dos assinantes e atribui o User Plane. Com base no n\u00famero de n\u00f3s ativos, ele determina qual n\u00f3 atende um determinado assinante, quais par\u00e2metros e servi\u00e7os est\u00e3o associados a esse assinante e realiza a migra\u00e7\u00e3o da sess\u00e3o quando essa atribui\u00e7\u00e3o muda.\r\n<h2>O requisito do qual todo o resto decorre<\/h2>\r\nVamos come\u00e7ar n\u00e3o pelo escalonamento em si, mas pela restri\u00e7\u00e3o que o torna mais complexo.\r\n\r\nA classifica\u00e7\u00e3o de tr\u00e1fego e a contabiliza\u00e7\u00e3o por servi\u00e7o exigem que <strong>as duas dire\u00e7\u00f5es de uma conex\u00e3o sejam processadas pelo mesmo n\u00f3 DPI (User Plane)<\/strong>.\r\n\r\nAl\u00e9m disso, a unidade de servi\u00e7o n\u00e3o \u00e9 um <a href=\"\/br\/resources\/glossary\/ip-address\/\">endere\u00e7o IP<\/a> individual nem mesmo uma \u00fanica conex\u00e3o. Um assinante pode usar v\u00e1rios servi\u00e7os simultaneamente, ter v\u00e1rias conex\u00f5es, usar <a href=\"\/br\/resources\/glossary\/ipv4\/\">IPv4<\/a> e <a href=\"\/br\/resources\/glossary\/ipv6\/\">IPv6<\/a> ou compartilhar o acesso \u00e0 internet com outros dispositivos. Portanto, um assinante pode ter v\u00e1rias conex\u00f5es e endere\u00e7os, mas, do ponto de vista do servi\u00e7o, eles pertencem a uma \u00fanica sess\u00e3o de servi\u00e7o. Essa sess\u00e3o se torna a unidade de escalonamento: todas as conex\u00f5es associadas ao assinante precisam ser processadas em conjunto pelo mesmo n\u00f3 de processamento de tr\u00e1fego e pelo mesmo n\u00f3 de controle.\r\n<div class=\"note\">\r\n\r\n[important]Isso leva \u00e0 regra principal\r\n\r\nA unidade de escalonamento n\u00e3o \u00e9 um fluxo, um endere\u00e7o ou uma conex\u00e3o individual, mas a pr\u00f3pria sess\u00e3o de servi\u00e7o, juntamente com todos os seus par\u00e2metros: conex\u00f5es, endere\u00e7os IPv4 e IPv6, plano tarif\u00e1rio, franquia e dados de contabiliza\u00e7\u00e3o. Essa \u00e9 a unidade de distribui\u00e7\u00e3o e ela n\u00e3o pode ser dividida entre n\u00f3s.[\/important]\r\n\r\n<a href=\"\/wp-content\/uploads\/2026\/10\/diagram_en.svg\"><noscript><img loading=\"lazy\" decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/10\/diagram_en.svg\" alt=\"Diagrama de uma sess\u00e3o de servi\u00e7o\" width=\"355\" height=\"356\" class=\"alignnone size-full wp-image-14893\"><\/noscript><img loading=\"lazy\" decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/10\/diagram_en.svg\" alt=\"Diagrama de uma sess\u00e3o de servi\u00e7o\" width=\"355\" height=\"356\" class=\"alignnone size-full wp-image-14893 lazyload\" data-src=\"\/wp-content\/uploads\/2026\/10\/diagram_en.svg\"><\/a>\r\n\r\n<\/div>\r\nFigura 2 \u2014 Sess\u00e3o de servi\u00e7o: todas as conex\u00f5es e endere\u00e7os de um assinante formam uma \u00fanica unidade de servi\u00e7o\r\n\r\nSe os pacotes pertencentes \u00e0 mesma <a href=\"\/br\/resources\/glossary\/tcp\/\">conex\u00e3o TCP<\/a> chegarem a n\u00f3s diferentes, isso pode causar a interrup\u00e7\u00e3o da conex\u00e3o, a perda do contexto de classifica\u00e7\u00e3o e a divis\u00e3o de uma \u00fanica sess\u00e3o entre v\u00e1rios n\u00f3s para a contabiliza\u00e7\u00e3o do tr\u00e1fego.\r\n\r\nIsso fica especialmente claro no caso do <a href=\"\/br\/resources\/glossary\/nat\/\">NAT<\/a>. Se a tradu\u00e7\u00e3o de endere\u00e7o e porta estiver armazenada no n\u00f3 antigo enquanto o pr\u00f3ximo pacote chegar a um novo n\u00f3, o novo n\u00f3 n\u00e3o encontrar\u00e1 a entrada correspondente e o tr\u00e1fego ser\u00e1 descartado. Para uma conex\u00e3o estabelecida, isso resultar\u00e1 em uma interrup\u00e7\u00e3o.\r\n<h2>Duas formas de distribuir assinantes entre os n\u00f3s e as diferen\u00e7as entre elas<\/h2>\r\nComo distribuir novas sess\u00f5es entre os n\u00f3s de modo que os pacotes de cada sess\u00e3o espec\u00edfica sempre cheguem ao mesmo n\u00f3?\r\n<h3>Hashing por identificador do assinante<\/h3>\r\nUma abordagem comum e eficaz \u00e9 calcular um hash com base no par IMSI\/APN da sess\u00e3o PDN do assinante. Pegamos o identificador do assinante, IMSI+APN, calculamos seu hash, comparamos o resultado com a lista de n\u00f3s ativos e obtemos o n\u00famero do n\u00f3 para o qual a sess\u00e3o deve ser enviada. Como um assinante possui um \u00fanico IMSI, todas as suas sess\u00f5es dentro do mesmo APN, independentemente do endere\u00e7o IP utilizado (IPv4 ou IPv6), s\u00e3o direcionadas ao mesmo n\u00f3 de processamento. Essa abordagem n\u00e3o exige sincroniza\u00e7\u00e3o de estado entre os n\u00f3s: desde que cada n\u00f3 tenha as mesmas informa\u00e7\u00f5es sobre a composi\u00e7\u00e3o do cluster, cada um calcula de forma independente o mesmo hash e o mesmo n\u00famero de n\u00f3.\r\n\r\nQuando um novo n\u00f3 \u00e9 adicionado, um algoritmo como Maglev ou Randevu reconstr\u00f3i a distribui\u00e7\u00e3o para que o roteamento mude apenas para uma parcela m\u00ednima dos assinantes \u2014 aproximadamente 1\/(N+1) do total quando o cluster cresce de N para N+1 n\u00f3s. Os demais continuam sendo atendidos pelos mesmos n\u00f3s.\r\n\r\nMas h\u00e1 tamb\u00e9m uma limita\u00e7\u00e3o fundamental: o algoritmo n\u00e3o leva em considera\u00e7\u00e3o o estado atual de uma sess\u00e3o no n\u00f3.\r\n\r\nAssim que um novo n\u00f3 \u00e9 adicionado ao cluster, o resultado do hash muda para alguns assinantes. O algoritmo direciona suas novas conex\u00f5es para outro n\u00f3. Ao mesmo tempo, o n\u00f3 anterior ainda pode conter o contexto de servi\u00e7o desses assinantes: informa\u00e7\u00f5es sobre conex\u00f5es, contadores de consumo e outros dados necess\u00e1rios para processar as sess\u00f5es atuais. O novo n\u00f3 ainda n\u00e3o possui esse estado. Se a nova distribui\u00e7\u00e3o for aplicada imediatamente, as sess\u00f5es ativas acabar\u00e3o em n\u00f3s que n\u00e3o possuem seu contexto. Portanto, n\u00e3o basta garantir que cada conex\u00e3o individual chegue ao n\u00f3 correto. <strong>O contexto associado ao assinante tamb\u00e9m precisa permanecer \u00edntegro.<\/strong>\r\n<h2>Posicionamento inicial e migra\u00e7\u00e3o controlada<\/h2>\r\nO hashing resolve apenas uma parte do problema: a distribui\u00e7\u00e3o inicial. A pr\u00f3xima pergunta \u00e9: \u201cO que fazer com as sess\u00f5es que j\u00e1 est\u00e3o ativas?\u201d Para resolver esse problema, \u00e9 \u00fatil separar dois processos: o posicionamento inicial das novas sess\u00f5es e a migra\u00e7\u00e3o controlada das sess\u00f5es existentes.\r\n<h3>Migra\u00e7\u00e3o controlada<\/h3>\r\nO hashing continua sendo usado para novas sess\u00f5es \u2014 ele distribui a carga de forma r\u00e1pida e uniforme e tamb\u00e9m funciona como mecanismo de fallback caso o Control Plane fique temporariamente indispon\u00edvel. J\u00e1 as sess\u00f5es ativas precisam de um mecanismo separado que permita redistribu\u00ed-las gradualmente.\r\n\r\nIsso \u00e9 feito pelo <a href=\"\/br\/resources\/glossary\/pcef\/\">PCEF<\/a>, um componente do Control Plane. Quando o n\u00famero de n\u00f3s DPI muda, o PCEF percorre todas as suas sess\u00f5es. Para cada uma delas, compara a atribui\u00e7\u00e3o atual ao n\u00f3 com a atribui\u00e7\u00e3o de destino calculada usando hashing consistente com base no novo n\u00famero de n\u00f3s. Se forem diferentes, o PCEF direciona a sess\u00e3o para o n\u00f3 de destino. \u00c9 assim que uma migra\u00e7\u00e3o gradual do User Plane \u00e9 implementada.\r\n\r\n[product id=\u201d10980\u2033 type=\u201ddark\u201d]\r\n\r\nPortanto, quando um novo n\u00f3 de processamento de tr\u00e1fego \u00e9 adicionado, o Control Plane n\u00e3o precisa recalcular todo o sistema do zero. Em vez disso, pode selecionar sess\u00f5es espec\u00edficas para migra\u00e7\u00e3o.\r\n\r\nO escalonamento do pr\u00f3prio Control Plane \u2014 ou seja, das inst\u00e2ncias do PCEF \u2014 funciona de maneira semelhante. Quando o n\u00famero de inst\u00e2ncias aumenta, cada PCEF ativo percorre as sess\u00f5es que atende atualmente e libera aquelas que, de acordo com o novo hash, devem pertencer \u00e0 inst\u00e2ncia rec\u00e9m-adicionada. Se o n\u00famero de inst\u00e2ncias do PCEF diminuir \u2014 por exemplo, porque uma inst\u00e2ncia falhou \u2014, as inst\u00e2ncias restantes percorrem n\u00e3o apenas suas pr\u00f3prias sess\u00f5es, mas todas as sess\u00f5es no armazenamento compartilhado. Elas identificam as sess\u00f5es que ficaram sem propriet\u00e1rio e assumem aquelas que, de acordo com o hash atual, agora pertencem a elas.\r\n\r\n<a href=\"\/wp-content\/uploads\/2026\/10\/two-methods-for-distributing-subscriber-sessions-across-nodes.svg\"><noscript><img loading=\"lazy\" decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/10\/two-methods-for-distributing-subscriber-sessions-across-nodes.svg\" alt=\"Compara\u00e7\u00e3o de dois m\u00e9todos para distribuir sess\u00f5es de assinantes entre os n\u00f3s\" width=\"547\" height=\"418\" class=\"alignnone size-full wp-image-14894\"><\/noscript><img loading=\"lazy\" decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/10\/two-methods-for-distributing-subscriber-sessions-across-nodes.svg\" alt=\"Compara\u00e7\u00e3o de dois m\u00e9todos para distribuir sess\u00f5es de assinantes entre os n\u00f3s\" width=\"547\" height=\"418\" class=\"alignnone size-full wp-image-14894 lazyload\" data-src=\"\/wp-content\/uploads\/2026\/10\/two-methods-for-distributing-subscriber-sessions-across-nodes.svg\"><\/a>\r\n\r\nFigura 3 \u2014 Duas formas de distribuir sess\u00f5es de assinantes entre os n\u00f3s\r\n\r\nPor exemplo, um operador adiciona um novo n\u00f3 DPI. As novas conex\u00f5es come\u00e7am imediatamente a ser atribu\u00eddas a ele. Em seguida, o Control Plane seleciona gradualmente algumas sess\u00f5es ativas e as transfere dos n\u00f3s sobrecarregados. Depois que o estado \u00e9 preparado, a atribui\u00e7\u00e3o \u00e9 alterada e o tr\u00e1fego subsequente segue a nova rota.\r\n\r\nPara o assinante, nada muda fundamentalmente: a chamada de v\u00eddeo continua, o download de um arquivo n\u00e3o precisa come\u00e7ar novamente e os dados de contabiliza\u00e7\u00e3o acumulados s\u00e3o preservados.\r\n\r\nO pr\u00f3prio balanceador de carga do UP n\u00e3o toma a decis\u00e3o de redistribui\u00e7\u00e3o. Ele recebe o comando, prepara o estado da sess\u00e3o e continua o processamento ap\u00f3s a mudan\u00e7a. Essa \u00e9 uma diferen\u00e7a fundamental em rela\u00e7\u00e3o a uma arquitetura na qual cada n\u00f3 calcula sua atribui\u00e7\u00e3o de forma independente usando um hash.\r\n\r\nIsso cria uma separa\u00e7\u00e3o clara de fun\u00e7\u00f5es: o Control Plane calcula a atribui\u00e7\u00e3o de destino e realiza a migra\u00e7\u00e3o, enquanto o User Plane processa o tr\u00e1fego de acordo com essa atribui\u00e7\u00e3o.\r\n\r\nMais informa\u00e7\u00f5es sobre o Control Plane e o User Plane est\u00e3o dispon\u00edveis no artigo \u2014 <a href=\"\/br\/blog\/mobile-networks\/cups-for-pcef-pgw-why-separate-the-control-plane-and-user-plane-in-the-mobile-core\/\">CUPS para PCEF\/PGW: por que separar o Control Plane e o User Plane no n\u00facleo m\u00f3vel<\/a>.\r\n<h2>O custo do controle<\/h2>\r\nPara que a migra\u00e7\u00e3o controlada funcione corretamente, \u00e9 necess\u00e1rio garantir a consist\u00eancia dos dados usados pelo PCEF para tomar decis\u00f5es, controlar a velocidade da migra\u00e7\u00e3o e lidar com sess\u00f5es cujo estado n\u00e3o pode ser migrado com seguran\u00e7a, como no caso do NAT.\r\n<h3>Consist\u00eancia das informa\u00e7\u00f5es sobre os n\u00f3s<\/h3>\r\nOs n\u00f3s do User Plane n\u00e3o calculam as atribui\u00e7\u00f5es por conta pr\u00f3pria \u2014 eles as recebem do Control Plane e as aplicam durante o processamento do tr\u00e1fego. Portanto, \u00e9 importante garantir que cada n\u00f3 esteja realmente trabalhando com a vers\u00e3o atualizada.\r\n\r\nSempre que o n\u00famero de n\u00f3s muda, o PCEF calcula o n\u00f3 de destino para cada sess\u00e3o com base no novo n\u00famero de n\u00f3s DPI, obtido do Consul. Se houver v\u00e1rias inst\u00e2ncias do PCEF no cluster, \u00e9 importante que todas vejam o mesmo n\u00famero de n\u00f3s ao mesmo tempo. Caso contr\u00e1rio, diferentes inst\u00e2ncias do PCEF podem calcular n\u00f3s de destino diferentes para a mesma sess\u00e3o, e a distribui\u00e7\u00e3o deixar\u00e1 de ser consistente.\r\n<h3>A migra\u00e7\u00e3o leva tempo<\/h3>\r\nA migra\u00e7\u00e3o de uma \u00fanica sess\u00e3o leva uma fra\u00e7\u00e3o de segundo, mas pode haver milh\u00f5es de sess\u00f5es, e elas precisam ser migradas sequencialmente, e n\u00e3o todas de uma vez. A migra\u00e7\u00e3o leva tempo, mas as sess\u00f5es ativas n\u00e3o s\u00e3o interrompidas.\r\n<h3>Nem tudo pode ser migrado<\/h3>\r\nPor fim, nem todas as sess\u00f5es podem ser migradas da mesma forma. Algumas partes de seu estado podem ser copiadas com seguran\u00e7a para outro n\u00f3, enquanto outras est\u00e3o fortemente vinculadas ao hardware espec\u00edfico no qual a sess\u00e3o foi criada. O NAT \u00e9 um desses casos: a entrada de tradu\u00e7\u00e3o de endere\u00e7o e porta existe apenas na mem\u00f3ria de um n\u00f3 espec\u00edfico e n\u00e3o pode ser simplesmente recriada em outro n\u00f3 sem o risco de perder conex\u00f5es j\u00e1 estabelecidas.\r\n\r\nEssas sess\u00f5es s\u00e3o tratadas de outra forma \u2014 n\u00e3o por meio de migra\u00e7\u00e3o, mas por encerramento natural: o n\u00f3 deixa de aceitar novas sess\u00f5es, enquanto as existentes continuam sendo atendidas nele at\u00e9 seu encerramento natural.\r\n<h2>Como verificar se funciona: tr\u00eas crit\u00e9rios mensur\u00e1veis<\/h2>\r\nTudo o que foi descrito acima \u2014 hashing baseado em IMSI e migra\u00e7\u00e3o controlada \u2014 existe para garantir tr\u00eas propriedades espec\u00edficas que podem ser medidas no tr\u00e1fego real, em vez de simplesmente declaradas.\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td><strong>Propriedade<\/strong><\/td>\r\n<td><strong>Como verificar<\/strong><\/td>\r\n<td><strong>Se a propriedade for violada<\/strong><\/td>\r\n<\/tr>\r\n<tr>\r\n<td>As duas dire\u00e7\u00f5es da sess\u00e3o no mesmo n\u00f3<\/td>\r\n<td>Verificar se o tr\u00e1fego de entrada e sa\u00edda da mesma sess\u00e3o \u00e9 processado no mesmo n\u00f3<\/td>\r\n<td>A contabiliza\u00e7\u00e3o e a classifica\u00e7\u00e3o por servi\u00e7o podem ficar incompletas<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>Migra\u00e7\u00e3o sem perda de pacotes<\/td>\r\n<td>Verificar se o tr\u00e1fego continua sem interrup\u00e7\u00e3o enquanto a sess\u00e3o \u00e9 migrada<\/td>\r\n<td>O assinante pode perceber uma interrup\u00e7\u00e3o na conex\u00e3o<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>Migra\u00e7\u00e3o sem perda de contabiliza\u00e7\u00e3o<\/td>\r\n<td>Verificar se o volume total contabilizado no n\u00f3 original e no novo n\u00f3 corresponde ao consumo real<\/td>\r\n<td>Um erro de contabiliza\u00e7\u00e3o pode ser detectado apenas quando o relat\u00f3rio final \u00e9 gerado<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\nA terceira propriedade merece aten\u00e7\u00e3o especial. Durante a migra\u00e7\u00e3o controlada, o n\u00f3 original envia os dados finais de consumo antes que a sess\u00e3o seja conclu\u00edda. O Control Plane combina esses dados com os dados do novo n\u00f3 e ajusta o limite de consumo. Dessa forma, os dados n\u00e3o s\u00e3o perdidos nem contabilizados duas vezes.\r\n\r\nAo mesmo tempo, n\u00e3o \u00e9 necess\u00e1rio fechar e reabrir a sess\u00e3o de cobran\u00e7a. O assinante continua usando o servi\u00e7o sem interrup\u00e7\u00e3o, enquanto a contabiliza\u00e7\u00e3o do consumo continua considerando os dados dos dois n\u00f3s.\r\n<h2>O que essa abordagem de escalonamento proporciona<\/h2>\r\nA principal vantagem dessa abordagem \u00e9 que o operador pode alterar a composi\u00e7\u00e3o da infraestrutura sem uma redistribui\u00e7\u00e3o massiva das sess\u00f5es ativas. Um novo n\u00f3 pode ser usado imediatamente para novas conex\u00f5es, enquanto as sess\u00f5es existentes podem ser migradas gradualmente conforme necess\u00e1rio.\r\n\r\nIsso gera v\u00e1rios efeitos pr\u00e1ticos:\r\n<ul>\r\n \t<li>A capacidade pode ser aumentada sem colocar a rede offline. O novo n\u00f3 come\u00e7a a aceitar conex\u00f5es imediatamente, enquanto as sess\u00f5es ativas s\u00e3o migradas em segundo plano.<\/li>\r\n \t<li>A carga \u00e9 redistribu\u00edda de forma seletiva. Um n\u00f3 sobrecarregado \u00e9 aliviado exatamente na medida necess\u00e1ria, em vez de passar por um rec\u00e1lculo completo das conex\u00f5es.<\/li>\r\n \t<li>O estado do assinante permanece \u00edntegro. Conex\u00f5es, endere\u00e7os, plano tarif\u00e1rio, franquia e contabiliza\u00e7\u00e3o por servi\u00e7o permanecem associados ao assinante, em vez de serem divididos entre v\u00e1rios n\u00f3s.<\/li>\r\n \t<li>A manuten\u00e7\u00e3o planejada n\u00e3o se transforma em uma comuta\u00e7\u00e3o de emerg\u00eancia. Quando um n\u00f3 \u00e9 retirado de opera\u00e7\u00e3o, suas sess\u00f5es podem ser migradas previamente para outros n\u00f3s, em vez de interromper todas as conex\u00f5es ao mesmo tempo.<\/li>\r\n<\/ul>\r\nO crescimento da rede \u00e9 medido em terabits, enquanto o resultado do escalonamento \u00e9 percebido no n\u00edvel de uma conex\u00e3o individual. Uma arquitetura na qual a unidade de distribui\u00e7\u00e3o n\u00e3o \u00e9 um fluxo nem mesmo uma sess\u00e3o individual, mas o assinante junto com tudo o que est\u00e1 associado a ele, simplesmente n\u00e3o permite ignorar esse requisito na etapa de projeto.\r\n\r\n[product id=\u201d14175\u2033 type=\u201dlight\u201d]","protected":false},"excerpt":{"rendered":"<p>Ao escalar horizontalmente o User Plane, novos n\u00f3s de processamento de tr\u00e1fego s\u00e3o adicionados ao cluster. Mas n\u00e3o \u00e9 poss\u00edvel simplesmente redistribuir todo o tr\u00e1fego do zero. As sess\u00f5es ativas precisam manter seu estado e continuar sendo processadas no mesmo n\u00f3. Por isso, novas conex\u00f5es e sess\u00f5es existentes s\u00e3o distribu\u00eddas de acordo com regras diferentes, enquanto as sess\u00f5es ativas s\u00e3o migradas gradualmente.<\/p>\n<p>Neste artigo, explicamos por que ocorrem interrup\u00e7\u00f5es e como funciona o escalonamento do User Plane quando o aumento de capacidade n\u00e3o resulta em transtornos para assinantes individuais.<\/p>\n","protected":false},"author":24,"featured_media":14898,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[102],"tags":[],"class_list":["post-14891","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mobile-networks"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>VAS Experts<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vasexperts.com\/blog\/mobile-networks\/scaling-in-a-cups-architecture-how-to-grow-without-disrupting-subscribers\/\",\"url\":\"https:\/\/vasexperts.com\/blog\/mobile-networks\/scaling-in-a-cups-architecture-how-to-grow-without-disrupting-subscribers\/\",\"name\":\"Scaling in a CUPS Architecture: How to Grow Without Disrupting Subscribers\",\"isPartOf\":{\"@id\":\"https:\/\/vasexperts.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vasexperts.com\/blog\/mobile-networks\/scaling-in-a-cups-architecture-how-to-grow-without-disrupting-subscribers\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vasexperts.com\/blog\/mobile-networks\/scaling-in-a-cups-architecture-how-to-grow-without-disrupting-subscribers\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2026\/10\/cups-banner.jpg\",\"datePublished\":\"2026-10-05T06:00:38+00:00\",\"dateModified\":\"2026-10-02T18:09:07+00:00\",\"author\":{\"@id\":\"https:\/\/vasexperts.com\/#\/schema\/person\/3c1682319461407059bf9279091a9116\"},\"description\":\"How can you scale the User Plane in CUPS without disrupting sessions? We explain hashing, DPI node distribution, controlled migration, and accounting preservation.\",\"breadcrumb\":{\"@id\":\"https:\/\/vasexperts.com\/blog\/mobile-networks\/scaling-in-a-cups-architecture-how-to-grow-without-disrupting-subscribers\/#breadcrumb\"},\"inLanguage\":\"br-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vasexperts.com\/blog\/mobile-networks\/scaling-in-a-cups-architecture-how-to-grow-without-disrupting-subscribers\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"br-PT\",\"@id\":\"https:\/\/vasexperts.com\/blog\/mobile-networks\/scaling-in-a-cups-architecture-how-to-grow-without-disrupting-subscribers\/#primaryimage\",\"url\":\"\/wp-content\/uploads\/2026\/10\/cups-banner.jpg\",\"contentUrl\":\"\/wp-content\/uploads\/2026\/10\/cups-banner.jpg\",\"width\":850,\"height\":354},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vasexperts.com\/blog\/mobile-networks\/scaling-in-a-cups-architecture-how-to-grow-without-disrupting-subscribers\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\",\"item\":\"https:\/\/vasexperts.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Scaling in a CUPS Architecture: How to Grow Without Disrupting Subscribers\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/vasexperts.com\/#website\",\"url\":\"https:\/\/vasexperts.com\/\",\"name\":\"VAS Experts\",\"description\":\"VAS Experts\",\"inLanguage\":\"br-PT\",\"publisher\":{\"@id\":\"https:\/\/vasexperts.com\/#organization\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/vasexperts.com\/#\/schema\/person\/3c1682319461407059bf9279091a9116\",\"name\":\"Darya Aulova\",\"url\":\"https:\/\/vasexperts.com\/br\/blog\/author\/darya-aulova\/\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/vasexperts.com\/#organization\",\"name\":\"VAS Experts\",\"url\":\"https:\/\/vasexperts.com\/\",\"logo\":\"https:\/\/vasexperts.com\/assets\/img\/svg\/logo.svg\",\"sameAs\":[\"https:\/\/www.linkedin.com\/company\/vas-experts\",\"https:\/\/www.youtube.com\/channel\/UCGYfhhZvmE2XbrCyerzRbGA\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"VAS Experts","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vasexperts.com\/blog\/mobile-networks\/scaling-in-a-cups-architecture-how-to-grow-without-disrupting-subscribers\/","url":"https:\/\/vasexperts.com\/blog\/mobile-networks\/scaling-in-a-cups-architecture-how-to-grow-without-disrupting-subscribers\/","name":"Scaling in a CUPS Architecture: How to Grow Without Disrupting Subscribers","isPartOf":{"@id":"https:\/\/vasexperts.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vasexperts.com\/blog\/mobile-networks\/scaling-in-a-cups-architecture-how-to-grow-without-disrupting-subscribers\/#primaryimage"},"image":{"@id":"https:\/\/vasexperts.com\/blog\/mobile-networks\/scaling-in-a-cups-architecture-how-to-grow-without-disrupting-subscribers\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2026\/10\/cups-banner.jpg","datePublished":"2026-10-05T06:00:38+00:00","dateModified":"2026-10-02T18:09:07+00:00","author":{"@id":"https:\/\/vasexperts.com\/#\/schema\/person\/3c1682319461407059bf9279091a9116"},"description":"How can you scale the User Plane in CUPS without disrupting sessions? We explain hashing, DPI node distribution, controlled migration, and accounting preservation.","breadcrumb":{"@id":"https:\/\/vasexperts.com\/blog\/mobile-networks\/scaling-in-a-cups-architecture-how-to-grow-without-disrupting-subscribers\/#breadcrumb"},"inLanguage":"br-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vasexperts.com\/blog\/mobile-networks\/scaling-in-a-cups-architecture-how-to-grow-without-disrupting-subscribers\/"]}]},{"@type":"ImageObject","inLanguage":"br-PT","@id":"https:\/\/vasexperts.com\/blog\/mobile-networks\/scaling-in-a-cups-architecture-how-to-grow-without-disrupting-subscribers\/#primaryimage","url":"\/wp-content\/uploads\/2026\/10\/cups-banner.jpg","contentUrl":"\/wp-content\/uploads\/2026\/10\/cups-banner.jpg","width":850,"height":354},{"@type":"BreadcrumbList","@id":"https:\/\/vasexperts.com\/blog\/mobile-networks\/scaling-in-a-cups-architecture-how-to-grow-without-disrupting-subscribers\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/vasexperts.com\/"},{"@type":"ListItem","position":2,"name":"Scaling in a CUPS Architecture: How to Grow Without Disrupting Subscribers"}]},{"@type":"WebSite","@id":"https:\/\/vasexperts.com\/#website","url":"https:\/\/vasexperts.com\/","name":"VAS Experts","description":"VAS Experts","inLanguage":"br-PT","publisher":{"@id":"https:\/\/vasexperts.com\/#organization"}},{"@type":"Person","@id":"https:\/\/vasexperts.com\/#\/schema\/person\/3c1682319461407059bf9279091a9116","name":"Darya Aulova","url":"https:\/\/vasexperts.com\/br\/blog\/author\/darya-aulova\/"},{"@type":"Organization","@id":"https:\/\/vasexperts.com\/#organization","name":"VAS Experts","url":"https:\/\/vasexperts.com\/","logo":"https:\/\/vasexperts.com\/assets\/img\/svg\/logo.svg","sameAs":["https:\/\/www.linkedin.com\/company\/vas-experts","https:\/\/www.youtube.com\/channel\/UCGYfhhZvmE2XbrCyerzRbGA"]}]}},"_links":{"self":[{"href":"https:\/\/vasexperts.com\/br\/wp-json\/wp\/v2\/posts\/14891"}],"collection":[{"href":"https:\/\/vasexperts.com\/br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vasexperts.com\/br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vasexperts.com\/br\/wp-json\/wp\/v2\/users\/24"}],"replies":[{"embeddable":true,"href":"https:\/\/vasexperts.com\/br\/wp-json\/wp\/v2\/comments?post=14891"}],"version-history":[{"count":5,"href":"https:\/\/vasexperts.com\/br\/wp-json\/wp\/v2\/posts\/14891\/revisions"}],"predecessor-version":[{"id":14911,"href":"https:\/\/vasexperts.com\/br\/wp-json\/wp\/v2\/posts\/14891\/revisions\/14911"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vasexperts.com\/br\/wp-json\/wp\/v2\/media\/14898"}],"wp:attachment":[{"href":"https:\/\/vasexperts.com\/br\/wp-json\/wp\/v2\/media?parent=14891"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vasexperts.com\/br\/wp-json\/wp\/v2\/categories?post=14891"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vasexperts.com\/br\/wp-json\/wp\/v2\/tags?post=14891"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}