Filtros de hashing TC - exclusão de regra única

3

Para modelagem de tráfego No momento, estou usando uma configuração que se parece exatamente com a configuração do LARTC, nesta página:

link

Eu tenho um problema simples com isso - toda vez que eu quero modificar algo na tabela de hash (como atribuir um IP ao flowid diferente), eu preciso excluir toda a tabela de filtros e adicioná-la novamente por filtro. (Eu realmente não faço isso manualmente, eu tenho um bom programa que faz isso para mim ... mas ainda assim ...) Há um problema - eu tenho aproximadamente 10k filtros alocados dessa forma e excluindo e preenchendo toda a tabela de filtros pode ficar bastante longo, o que não é exatamente bom para modelagem de tráfego. Meu programa poderia facilmente excluir apenas as regras que precisam ser excluídas (reduzindo assim todo o problema a vários comandos e milissegundos), mas eu simplesmente não sei o comando que exclui apenas a regra de hash.

Meu filtro tc mostra:

filter parent 1: protocol ip pref 1 u32 
filter parent 1: protocol ip pref 1 u32 fh 2: ht divisor 256 
filter parent 1: protocol ip pref 1 u32 fh 2:a:800 order 2048 key ht 2 bkt a flowid 1:101 
  match 0a0a0a0a/ffffffff at 16
filter parent 1: protocol ip pref 1 u32 fh 2:c:800 order 2048 key ht 2 bkt c flowid 1:102 
  match 0a0a0a0c/ffffffff at 16
filter parent 1: protocol ip pref 1 u32 fh 800: ht divisor 1 
filter parent 1: protocol ip pref 1 u32 fh 800::800 order 2048 key ht 800 bkt 0 link 2: 
  match 00000000/00000000 at 16
    hash mask 000000ff at 16 

O comando wish: 'tc filter del ...' remove somente um filtro específico (por exemplo, a correspondência IP 0a0a0a0a (endereço IP 10.10.10.10)). A remoção de algum pequeno subgrupo também seria boa - por exemplo, eu ainda poderia recriar um balde (bkt a) bem rápido.

Minhas tentativas: tentei numerar todos os filtros usando o prio, mas sem ajuda - eles criam algo incomum (mas deletável) abaixo, mas os filtros com intervalos permanecem lá depois que são excluídos.

Alguma idéia?

edit - Estou adicionando uma descrição simplificada do problema:

  1. Eu criei um filtro de hash em alguma interface, exatamente como neste link

  2. Eu quero encontrar um comando que exclua uma regra (por exemplo, 1.2.1.123) da tabela, deixando o restante intocado e funcionando.

por exa 13.11.2011 / 21:09

2 respostas

3

Eu sei que este é um post antigo, mas estou usando isso e parece funcionar bem:

Adicionar filtro:

tc filter add dev eth1 parent 1: handle ::100 prio 1 protocol ip u32 match ip dst 10.10.10.10/32 flowid 1:100

Excluir filtro:

tc filter del dev eth1 parent 1: handle 800::100 prio 1 protocol ip u32

Basta alterar o número "100" para cada filtro necessário

    
por 10.07.2012 / 17:03
0

Eu tentei o seguinte comando e parece estar funcionando:

$ sudo tc filter delete dev eth1 protocol ip parent 1: prio 1 u32 match ip src 10.10.10.10 flowid 1:2

O mesmo comando funcionou com as opções add , replace e delete após a palavra filter .

    
por 14.11.2011 / 11:59