17.06.2015 Views

Monografia - UFF

Monografia - UFF

Monografia - UFF

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!