Vorrei rilevare le connessioni TCP aperte da più di un minuto (o per più di N byte o pacchetti M), in modo da poterle classificare come traffico di massa ("download") e deselezionarle.
Posso rilevare flussi di lunga durata con iptables / netfilter / conntrack e contrassegnarli per la modellazione mediante TC?
Ho pensato di poter usare il "numero sequenza" TCP come misura della lunghezza di un flusso, ma sfortunatamente non inizia da zero! Forse il tracciamento della connessione con netfilter / conntrack potrebbe determinare il numero di sequenza corretto o il numero totale di byte e la durata della connessione e scegliere se contrassegnare il pacchetto.
(Potrei anche menzionare che lo sto facendo su ingress usando un'interfaccia virtuale ifb0. Attualmente sto usando code tbf (con sfq) per limitare i dati a bassa priorità. Indipendentemente da ciò, qualsiasi soluzione potrebbe essere applicata anche a egress , ad esempio per un server web su una connessione limitata che desidera deselezionare le priorità dei download per accelerare le piccole richieste.)
Aggiornamento: Usando conntrackd sono in grado di vedere un elenco di connessioni e da quanto tempo è iniziata ciascuna. Ho iniziato a utilizzare questo elenco per rilevare coppie IP / porte che voglio limitare (dopo 60 secondi). Tuttavia ci sono numerosi problemi:
- conntrack (d) non sembra cancellare prontamente le connessioni dalla lista quando hanno chiuso! Quindi finisco per contrassegnare tutte le connessioni per limitare, anche quelle che hanno terminato.
- L'impostazione dei segni in conntrack non sembra impostare segni nei pacchetti (per quanto tc può vedere). (Questo non è solo perché conntrack vede i pacchetti dopo ifb0: Non riesco nemmeno a vedere alcun segno sui pacchetti di uscita.) Quindi ho appena aggiunto nuovi filtri a tc per la limitazione, che a lungo termine è tutt'altro che ideale.
- conntrack (d) non mi dice quanta larghezza di banda ha usato ogni connessione. Quindi non riesco a distinguere sessioni intermittenti (ad es. Iosocket) da download pesanti. (In ogni caso, questo è un problema difficile: se abbiamo già 5 download e inizia un nuovo download, come possiamo dire che sta cercando di inondare? Non raggiungerà da nessuna parte vicino alla velocità massima.)
Eventuali suggerimenti con quanto sopra sarebbero apprezzati.
(Il lato positivo, anche se non riesco a classificare correttamente i download, semplicemente usando tfb per limitare i dati in entrata all'80% del mio downrate massimo ha impedito il sovraccarico della connessione e ha permesso alle nuove connessioni di stabilire molto più facilmente di prima.)