Resumo

  • A revisão 13 organiza filtro, ordenação, localidade, direção, posicionamento e limites, além de permitir declarações por nó para listas operacionais restritas.
  • Esses recibos descrevem como cada página foi pedida. Não provam ordem total, visão NACM constante, instante comum entre fontes nem completude das coleções internas.

É possível receber duas páginas perfeitamente válidas e, ainda assim, montar uma lista que nunca existiu. Entre a primeira resposta e a segunda, uma rota muda de métrica, uma interface some, uma política de acesso altera o universo visível ou um dos armazenamentos federados avança antes dos demais. O servidor pode responder corretamente às duas consultas. O erro surge quando o consumidor atribui às duas um momento que o mecanismo nunca registrou.

draft-ietf-netconf-list-pagination-13 fornece uma estrutura particularmente clara para a pergunta. O servidor processa where, depois sort-by; locale dá contexto à ordenação. Em seguida aplica direction com offset ou cursor, que são alternativas mutuamente exclusivas, e por fim limit. sublist-limit tem outra função: limita listas e leaf-lists descendentes dentro de cada item devolvido.

A revisão 13 foi publicada em 6 de julho de 2026. O Datatracker da IETF a mostra como Internet-Draft ativo do grupo NETCONF, com destino Standards Track, estado In WG Last Call, marca Revised I-D Needed - Issue raised by WGLC e estado IESG I-D Exists. O painel atual de validação YANG soma três erros; as saídas visíveis de pyang e yanglint apontam para a mesma região de escape de quebra de linha. Isso é estado do texto e das ferramentas, não evidência de falha em implementação, operação ou dados reais.

O cursor conserva o enunciado

A navegação por cursor começa com cursor=first. Nessa inicialização entram where, sort-by e locale. Os links next e previous carregam o contexto original, e pedidos posteriores só podem variar limit e sublist-limit. Assim, um cliente não pode mudar silenciosamente o filtro no meio da sequência e chamar o resultado de uma consulta só.

Essa garantia é sobre a identidade do enunciado. A revisão não define identificador de instantâneo, horário comum de leitura, transação, vetor de versões ou barreira entre fontes. O mesmo enunciado pode ser executado outra vez sobre um estado diferente.

Com offset, uma inserção antes da fronteira muda o significado de “pular cinquenta”; uma remoção pode fazer a leitura saltar um item. O cursor opaco representa uma chave ou índice do sistema subjacente e entrega ao servidor a interpretação da posição. É uma fronteira mais expressiva, mas não impede que outros objetos entrem, saiam ou mudem sua chave de ordenação.

O documento RESTCONF complementar registra que o servidor não guarda estado sobre a próxima ou a página anterior. O link de continuação não aponta para um conjunto reservado. Ele contém instruções que serão avaliadas novamente. Essa característica é boa para escala, mas não pode ser convertida em prova de snapshot.

Uma chave de ordenação pode deixar empates invisíveis

Sem sort-by, vale a ordenação própria da lista YANG. Com o parâmetro, entradas sem valor no filho escolhido ficam depois das que possuem valor. locale só pode existir junto com sort-by; quando o cliente não a envia, o servidor escolhe e informa a opção por metadado YANG.

Registrar a localidade evita depender de uma configuração silenciosa. Contudo, a etiqueta BCP 47 não identifica a versão Unicode, o mecanismo de colação, a normalização ou o desempate. Duas fontes podem aceitar a mesma locale e discordar sobre acentos, maiúsculas e sequências equivalentes.

A revisão também não prevê ordenação por uma segunda chave. Objetos com o mesmo valor principal formam um empate cuja ordem real pode depender de um identificador interno. Se a página termina dentro desse grupo, reinício, troca de nó ou atualização de índice pode reorganizá-lo sem contrariar o sort-by. Uma trilha séria precisa guardar o critério real de desempate ou declarar que a ordem não era total.

Declarar capacidade não demonstra uso

Listas config false podem ser grandes, mutáveis e caras de consultar. A revisão 13 amplia o modelo system-capabilities da RFC 9196 para declarar nós constrained, filhos indexed e suporte a cursor. Em listas restritas, filtro e ordenação podem ser limitados aos nós indexados, e expressões não atravessam sublistas.

Essa informação ajuda o cliente a escolher uma consulta executável. Não demonstra que o índice anunciado foi utilizado, estava atualizado ou incluía todas as fontes. As capacidades RFC 9196 podem variar com hardware, licença ou condição de execução. Por isso, a identidade do conjunto de capacidades observado deve acompanhar cada página.

O content-id da YANG Library, definido pela RFC 8525, identifica o conteúdo de módulos e esquemas. Ele permite interpretar a resposta sob o contrato correto, mas não é uma versão dos objetos descritos. Versão do esquema e instante dos dados são recibos diferentes.

A autorização redefine a população

A RFC 8341 permite que NACM limite operações e conteúdo por principal. O mesmo where é aplicado à visão permitida para aquele usuário. Se grupo, regra ou permissão de objeto mudar entre páginas, a população também muda, mesmo que o cursor continue válido.

O artigo BTW sobre RFC 9865 e SCIM trata do limite de autorização: possuir um cursor não deve prolongar acesso revogado. Este caso YANG examina outra consequência. Mesmo com nova autorização correta em cada pedido, páginas obtidas sob visões diferentes podem não formar uma lista coerente. O registro precisa vincular principal, versão de política e visão efetiva a cada resposta.

Dados operacionais não aguardam a paginação

A RFC 8342 separa configuração pretendida e dados operacionais. O datastore operacional combina configuração aplicada e estado do sistema, por vezes de origens diferentes. Rotas convergem, contadores avançam, interfaces mudam e recursos expiram enquanto o cliente lê.

Se a primeira página termina na chave m, um objeto que estava antes dela pode mudar para z e aparecer de novo. Outro que estava depois pode mudar para a e não aparecer. O cursor reduz algumas fragilidades do offset, mas não congela os demais objetos nem sincroniza fontes federadas.

Quando existe snapshot comum ou vetor de versão, ele deve ser ligado a todas as páginas. Quando não existe, é preciso guardar horários por página e por origem, verificar chaves repetidas, lacunas e regressão de fronteira, e descrever o conjunto como observação feita durante um intervalo. A honestidade temporal é parte da integridade.

Completar o topo não completa os descendentes

limit limita a lista alvo. sublist-limit limita as coleções descendentes. remaining pode informar um número positivo ou unknown. Assim, uma página pode conter todos os equipamentos solicitados e apenas uma fração das interfaces ou rotas de cada equipamento.

Cada sublista truncada exige uma ramificação própria: identidade do pai, contexto, cursor, hash da resposta e contagem ou incerteza. Marcar apenas a página superior como completa confunde o recipiente com o conteúdo.

Dois registros, duas afirmações

O registro por página deve guardar principal e política NACM, datastore, identidades da YANG Library e das capacidades, parâmetros exatos, hashes, linhagem do cursor, chaves e valores de ordenação, anotações remaining, horário e revisões das fontes.

O registro de montagem deve procurar duplicações, lacunas e inversões; comparar o último item de uma página com o primeiro da seguinte; apontar mudanças de política, capacidade, locale ou origem; e classificar o resultado como snapshot, leitura com inconsistência limitada ou percurso de observações mutáveis. Essa é uma recomendação operacional, não uma obrigação já imposta pela revisão 13.

O cursor tem valor justamente quando sua afirmação permanece estreita. Ele sabe a posição que o servidor ofereceu sob um contexto preservado. Não sabe se todo o sistema permaneceu no mesmo momento.

Fontes primárias

O conjunto fechado inclui o texto atual, arquivo, estado, histórico, diferença de versões, dois documentos complementares, três revisões antigas usadas apenas como contexto histórico e os RFCs fundamentais: https://datatracker.ietf.org/doc/html/draft-ietf-netconf-list-pagination-13; https://www.ietf.org/archive/id/draft-ietf-netconf-list-pagination-13.txt; https://datatracker.ietf.org/doc/draft-ietf-netconf-list-pagination/; https://datatracker.ietf.org/doc/draft-ietf-netconf-list-pagination/history/; https://author-tools.ietf.org/iddiff?url1=draft-ietf-netconf-list-pagination-12&url2=draft-ietf-netconf-list-pagination-13; https://datatracker.ietf.org/doc/html/draft-ietf-netconf-list-pagination-nc-12; https://datatracker.ietf.org/doc/draft-ietf-netconf-list-pagination-nc/; https://datatracker.ietf.org/doc/html/draft-ietf-netconf-list-pagination-rc-11; https://datatracker.ietf.org/doc/draft-ietf-netconf-list-pagination-rc/; https://datatracker.ietf.org/doc/review-ietf-netconf-list-pagination-07-opsdir-early-linkova-2025-05-10/; https://datatracker.ietf.org/doc/review-ietf-netconf-list-pagination-07-yangdoctors-early-lhotka-2025-04-28/; https://datatracker.ietf.org/doc/review-ietf-netconf-list-pagination-03-yangdoctors-lc-lhotka-2024-05-01/; https://www.rfc-editor.org/rfc/rfc6241.html; https://www.rfc-editor.org/rfc/rfc6242.html; https://www.rfc-editor.org/rfc/rfc5646.html; https://www.rfc-editor.org/rfc/rfc7950.html; https://www.rfc-editor.org/rfc/rfc7951.html; https://www.rfc-editor.org/rfc/rfc7952.html; https://www.rfc-editor.org/rfc/rfc8040.html; https://www.rfc-editor.org/rfc/rfc8341.html; https://www.rfc-editor.org/rfc/rfc8342.html; https://www.rfc-editor.org/rfc/rfc8407.html; https://www.rfc-editor.org/rfc/rfc8525.html; https://www.rfc-editor.org/rfc/rfc9196.html; https://www.rfc-editor.org/rfc/rfc9911.html.