(M)  s i s t e m a   o p e r a c i o n a l   m a g n u x   l i n u x ~/ · documentação · suporte · sobre

  Página seguinte Página anterior Índice

582. O Filtro do Pacote de Berkeley (BPF)

A idéia geral dos desenvolvedores é que a funcionalidade do BPF não deve ser fornecido pelo kernel, mas deve estar numa biblioteca compatível (e tomara que pouco usada).

Para aqueles que não tem o conhecimento, o BPF (o Filtro do Pacote de Berkeley) é um mecanismo para especificar às camadas de rede do kernel quais pacotes você está interessado. É implementado como um intérprete de linguagem de uma pilha especializada montada dentro do nível baixo do código de rede. Uma aplicação passa um programa escrito nesta linguagem para o kernel, e o kernel executa o programa em cada pacote que entra. Se o kernel tem aplicações do BPF múltiplas, cada programa roda em cada pacote.

O problema é que é difícil deduzir que tipo de pacotes a aplicação está realmente interessada a partir do pacote de programa de filtro, assim a solução geral é sempre executar o filtro. Imagine um programa que registra um programa BPF para melhorar uma corrente baixa de índice de dados enviados a um endereço multicast. A maioria das placas da ethernet tem um filtro de endereço multicast de hardware implementado como uma entrada 64 de tabela hash que ignora a maioria dos pacotes multicast não desejados, assim a capacidade existe para fazer desta, uma operação barata. Mas com o BFP o kernel deve mudar a interface para o modo indiscriminado, recebe _todos_ pacotes, e roda-os através deste filtro. Este é um trabalho, BTW, que é muito difícil de levar novamente ao processo pedido nos pacotes.


Página seguinte Página anterior Índice