Monografia - UFF
Monografia - UFF
Monografia - UFF
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
4.2 A Implementação Real 63<br />
Como uma alternativa, foi utilizada uma estratégia envolvendo a ferramenta iptables<br />
[53] e a capacidade do Linux de operar com múltiplas tabelas de roteamento [31].<br />
A partir da versão 2.4 do seu kernel, o Linux implementa a funcionalidade de múltiplas<br />
tabelas de rotas. Em geral, apenas a tabela padrão é utilizada. No entanto, o sistema<br />
mantém uma tabela de regras, na qual é possível definir a tabela de roteamento a ser<br />
utilizada, com base em determinadas características de cada pacote.<br />
A manipulação da tabela de regras pode ser realizada através do utilitário ip, do<br />
pacote iproute2 [33]. Idealmente, seria possível criar regras que associassem o tamanho<br />
dos pacotes a uma tabela de roteamento. Desta forma, bastaria à implementação do<br />
MARA-RP preencher uma tabela de roteamento diferente para cada classe de tamanho<br />
de pacote e, então, adicionar as regras que redirecionassem o pacote para a sua tabela<br />
correspondente, baseadas no tamanho do mesmo.<br />
No entanto, a tabela de regras não é capaz de descrever condições com base no tamanho<br />
dos pacotes. As únicas características de um pacote avaliadas nas regras são a<br />
origem, o destino, o valor do campo TOS (Type Of Service) do cabeçalho IP, a interface<br />
de entrada e a marcação. Esta última característica, a marcação, se refere a um marcador<br />
interno ao kernel atribuído a todo pacote. Este marcador não está presente em nenhuma<br />
parte do pacote. Ele existe apenas de forma abstrata, na estrutura de dados que guarda<br />
as informações de cada pacote no kernel.<br />
Uma solução, portanto, seria utilizar esta marcação lógica para identificar a qual<br />
classe de tamanho um pacote pertence, antes que a tabela de roteamento utilizada seja<br />
decidida. Neste caso, o protocolo poderia popular a tabela de regras com associações<br />
entre as marcações e as tabelas respectivas.<br />
Uma maneira de atribuir uma marcação a um pacote é através do target MARK da<br />
ferramenta iptables. O iptables é capaz de utilizar regras que referenciam o tamanho do<br />
pacote, possibilitando a atribuição da marcação correta. Uma vez marcados, os pacotes<br />
continuam percorrendo as rotinas de roteamento do kernel, até que a tabela de regras seja<br />
consultada. Ao encontrar a regra correspondente à marcação feita pelo iptables, o kernel<br />
seleciona a tabela de roteamento relativa à classe de tamanho do pacote. A partir deste<br />
ponto, o encaminhamento do pacote segue seu fluxo normal.