2016-01-26 8 views
10

Sono la creazione di un proof of concept di strozzare il traffico in ingresso al terminale (client):Che cos'è un flusso separato in Linux fq_codel?

eth0 -> ifb0 -> htb -> filter by ip -> htb rate -> fq_codel+ecn 

Ho 2 ips source per programma specifico voglio strozzare. Il programma in questione apre una serie di connessioni TCP (download, quindi ingress throttle) e mi piacerebbe sia limitare la larghezza di banda totale di ingresso che utilizza (fatto) e avere una corretta pianificazione tra le connessioni allo stesso indirizzo IP (questa domanda).

Alla fine c'è 1 secchio con tasso fissato e 1 istanza fq_codel.

devo farlo funzionare, ma ho alcune domande:

  • sicuramente CODEL ha coda separata per protocollo (TCP vs UDP)?
  • codel dispone di code separate per IP di origine?
  • codel dispone di una coda separata per connessione tcp?
  • devo separare/taggare manualmente i flussi?

Per ID di flusso di ricerca su Internet è "hash di 5-tupla", la domanda è, quali elementi di un pacchetto sono parti della tupla da 5? Sono incluse sia le porte di origine che di destinazione?

+0

P.S. Sto cercando una risposta migliore/più autorevole della mia –

risposta

1

Sembra porte sia di origine e destinazione sono inclusi, almeno per impostazione predefinita:

http://lxr.free-electrons.com/source/net/core/flow_dissector.c#L655

655 /** 
656 * __skb_get_hash: calculate a flow hash 
657 * @skb: sk_buff to calculate flow hash from 
658 * 
659 * This function calculates a flow hash based on src/dst addresses 
660 * and src/dst port numbers. Sets hash in skb to non-zero hash value 
661 * on success, zero indicates no valid hash. Also, sets l4_hash in skb 
662 * if hash is a canonical 4-tuple hash over transport ports. 
663 */ 
664 void __skb_get_hash(struct sk_buff *skb) 
Problemi correlati