45
são. As implementações em software do modelo TCP/IP para processadores de propósito
geral em breve não conseguirão lidar com grandes velocidades nos meios físicos de rede.
Para combater esta situação, é proposto um módulo funcional TCP/IP (a exemplo do que
já acontece com processadores que possuem unidade específica para tratamento de ponto
flutuante, por exemplo) dirigido a ganho de desempenho, para acelerar os processamentos
sem sobrecarregar a unidade central.
Neste sentido, a presente dissertação apresenta a arquitetura do iNetCore, uma arquite-
tura da pilha TCP/IP implementada totalmente em hardware, diferenciando-se de outras
arquiteturas devido à configurabilidade de características internas da pilha TCP/IP em re-
lação a certos parâmetros que se tornam essenciais para alcançar os requisitos exigidos
por certas aplicações que venham utilizar a pilha para comunicação com a Internet.
5.1 O Mapeamento para Hardware
O TCP/IP é um modelo elaborado com fins de comunicação. Assim sendo, pressupõe
a existência de pelo menos duas entidades computacionais dentro de um mesmo sistema.
Para fins de construção, no entanto, o módulo pode ser isolado levando-se em conta que
este será capaz de receber dados tanto de um nível superior (aplicações) como de um
nível inferior (meio físico). Em (DUNKELS, 2007), dois esquemas são apresentados:
um chamado de processamento de entrada (pacotes entrantes), onde o dado está vindo
do meio físico (Figura 5.1(a)) e outro designado como processamento de saída, onde os
dados provêm da aplicação (Figura 5.1(b)) (DUNKELS, 2007). Dependendo do esquema,
as entradas e saídas do iNetCore podem ser de uma ou outra natureza.
Para que seja modelado em hardware, uma abstração dessa ambigüidade precisa ser
feita, o que não é muito complexo. Como os protocolos, os quais definem a forma como
os pacotes devem ser montados e processados para serem transmitidos pela rede, apre-
sentam uma característica seqüencial, a implementação desses protocolos em hardware
através da manipulação de máquinas de estados se torna bastante viável. E como cada
protocolo que compõe a pilha TCP/IP tem características bem definidas, a concepção de
uma arquitetura modularizada em hardware em razão dos protocolos que serão processa-
dos também se torna bastante interessante. Pensou-se então em um hardware dedicado,
denominado iNetCore, que recebe dados da camada física e da camada de aplicação, di-
vidido internamente em submódulos definidos pela própria característica modularizada
da pilha TCP/IP, onde cada submódulo seria composto pelos elementos necessários para
realizar o processamento de um dos protocolos da pilha TCP/IP.
Assim, a entrada do iNetCore será uma informação dividida em pacotes, em um for-
mato reconhecido pelo conjunto de protocolos que o compõem. O iNetCore recebe um
desses pacotes, o qual contém a informação sobre seu tipo e propósito, ou seja, se deve
subir ou descer na pilha. Tais características, detectadas com a leitura dos seus cabeçalhos
pelas máquinas de estados, em um nível de abstração mais elevado, determinam como o
pacote deve ser manipulado ou, em um outro nível já mais inferior, o submódulo para o
qual deve ser direcionado.
Com base nesse mecanismo, optou-se pelo uso de um buffer (memória compartilhada)
onde o pacote entrante é armazenado para que os submódulos possam acessá-lo e efetuar
o processamento. O resultado desta manipulação será um novo dado em um formato
específico para outra camada (camada de aplicação, por exemplo), ou uma resposta a uma
solicitação na forma de um novo pacote, o qual será gravado neste buffer, caracterizando
assim a saída do sistema.