Principais componentes na arquitetura de redes ICN
As unidades básicas de dados transmitidos por uma rede ICN são denominados NDOs (Named Data Objects). Usualmente, o NDO contém uma nomenclatura única; os bits que representam as informações da aplicação; uma assinatura digital que conecta o nome e os dados; uma chave pública que é usada para gerar essa assinatura.
Em uma rede ICN, ainda possuímos 3 papéis principais de seus componentes, o que influencia diretamente nos principais componentes da arquitetura. Qualquer dispositivo na rede pode estar exercendo, um, dois ou os três diferentes papéis simultaneamente, que são eles:
1) Os produtores: são eles os responsáveis por originar os NDOs. Eles são equipados com chaves público-privada, e devem publicar alguma informação acessível para disponibilizar os dados ao público.
2) Os consumidores: são eles os responsáveis por originar as requisições na rede.
3) Os roteadores: são os equipamentos responsáveis por transmitir os pacotes pela rede.
Nomeação
A nomeação pode ser considerada o principal elemento da arquitetura ICN, já que essa é completamente baseada nos nomes dos NDOs.
Fig 1: Se em redes centradas em Sistemas finais o IP configura-se como entidade central da conectividade, na ICN esse papel encontra-se em blocos de conteúdos nomeados. (extraido de https://named-data.net/project/execsummary/)
Para identificar um dado, independentemente de onde está armazenado, como foi encontrado e o caminho pelo qual ele é transmitido, a nomeação precisa ser feita de forma a garantir que os nomes serão únicos para identificar cada NDO distinto. Também é necessário que eles sejam persistentes e escaláveis, ou seja, preservem esse teor único independente de onde são encontrados e do quando.
Pode-se encontrar diferentes técnicas de nomeação que permitem identificar e requisitar o conteúdo de forma eficiente. A seguir, nos aprofundaremos mais sobre três delas: a nomeação plana, hierárquica e por atributos. A forma escolhida para dar nome aos conteúdos ainda é um ponto chave das diferentes propostas de arquiteturas, que serão discutidas mais à frente.
Fig 2: métodos de nomeação escolhidas por cada arquitetura de ICN (extraído de [3])
Nomeação Plana
A nomeação plana se trata de strings globalmente únicas, ou uma sequência de bits aparentemente aleatórios que dão nome a determinado conteúdo. Há diversas formas de mapear um dado conteúdo em seu identificador plano, sendo o mais comumente encontrado funções criptográficas de hash (uma função aplicada tal que é praticamente impossível recriar o valor de entrada utilizando somente o valor de dispersão), que geram cadeias de bit de comprimento fixos a partir de blocos de dados não arbitrários.
Por não possuírem nenhuma semântica, ou seja, não há nenhuma relação de localização, propriedade ou característica que influenciam na formação do nome, esse pode ser considerado persistente. Funções hash de certa forma também garante a unicidade da nomenclatura, já que há uma baixa probabilidade de colisões em seu mapeamento.
Um ponto positivo na utilização da nomeação plana é a autocertificação dos conteúdos e de seus identificadores. Utilizando-se pares de hashes criptográficos, temos uma chave pública e outra chave que é um rótulo arbitrário escolhido pelo publicador, sendo assim possível verificar a validade do pedido e da resposta.
Um contraponto entretanto é que nomes planos não são amigáveis ao usuário,sendo necessário mecanismos adicionais para esse mapeamento entre nomes e conteúdos. Essa falta de agregação direta ainda traz um grande problema de escalabilidade para o roteamento, podendo ser prejudicial à eficiência da implementação desses protocolos.
Nomeação Hierárquica
A nomeação hierárquica por sua vez, é construída pela concatenação de múltiplos componentes com uma lógica hierárquica, que normalmente podem ser naturalmente lidos pelo usuário. Em contraposição a nomeação plana, a hierárquica segue uma semântica, de tal forma que seus componentes refletem alguma informação a respeito do conteúdo.
Fig 3: Exemplo de nome hierárquico estruturado como URL (extraído de [5])
Um ponto positivo é que nomes hierárquicos podem ser mapeados de forma análoga à agregação de rotas realizadas por protocolos de roteamento IP, assim, a carga sobre o roteamento fica reduzido, sendo inclusive possível adaptar protocolos atuais. Além disso, esses também são uma base para segurança dos dados, já que o usuário final confirma se o conteúdo é o desejado, ou produzido por um produtor confiável, através do contexto do nome.
O contraponto contudo, é que nomes hierárquicos não são persistentes. Como esses devem refletir características dos dados, assim se alguma identidade é mudada, como o publicador do conteúdo, o nome consequentemente também mudará.
Nomeação por atributos
A nomeação por atributos possui uma proposta diferente das demais técnicas apresentadas anteriormente, de forma que não propõe uma identificação estrita a cada conteúdo. São propostos, por sua vez, pares de atributos valor-atributo para a identificação.
Chamamos o conjunto de restrições definidas pelo nome de predicados, que são mapeados para realizar a relação conteúdo-nome. Podemos ainda ter predicados que cobrem outros, quando um reduz o universo definido por um anterior. Isso acarreta em um aliviamento da carga sobre os protocolos de roteamento, que não precisam da ajuda de mecanismos externos para funcionar.
No quesito de problemas, temos a questão da unicidade, já que é difícil definir um conjunto mínimo necessário de restrições para correta identificação do conteúdo. Esse fato implica ainda em outro mais grave, que é a obtenção dos conteúdos em excesso ou falta, uma vez que o usuário pode não conseguir explicitá-lo de forma correta. Isso, além de prejudicar o desempenho das aplicações, ainda no caso de excesso traz uma ineficiência da rede como um todo.
Roteamento
Roteamento Não Hierárquico
Roteamento Hierárquico
Caching
O armazenamento de NDOs é um ponto chave no serviço ICN e é feito através do caching dos dados dentro da própria rede. Todos os nós da rede, incluindo os nós que compõem a infraestrutura da rede, nós domésticos e móveis, potencialmente possuem caches. Requisições de um NDO feita por um consumidor podem ser atendidas por qualquer nó que possua uma cópia do dado em memória.
Tipicamente na internet, uma pequena parcela dos conteúdos contribuem com a maior parte do tráfego na rede. Assim, aumentar a disponibilidade desses conteúdos populares através do caching, trazendo-os mais perto dos consumidores, representa uma potencial diminuição do congestionamento da rede, consequentemente resultando em uma melhora do serviço e eficiência.