In termini TCP / IP, come funziona un limitatore di velocità di download in un ufficio?

Assumere un ufficio di persone, vogliono limitare i download HTTP ad una width di banda del 40% della loro velocità di connessione a Internet in modo che non blocchi il traffico.

Diciamo che "non è supportto nel tuo firewall", e dicono la linea inevitabile "siamo riusciti a farlo con il nostro Netgear / DLink / DrayTek".

  • Devo essere su diversi canali per questa networking WiFi?
  • Perché l'avvio di Windows 7 con le unità mappate è disconnesso?
  • Un router e due interruttori
  • Come ottengo l'utilizzo della networking di un server per-IP?
  • Come verificare la velocità di connessione a Internet tramite un terminal Microsoft Windows?
  • È il nome di marca NAS overpriced?
  • Pensandoci ad un download è così:

    HTTP GET request Server sends file data as TCP packets Client acknowledges receipt of TCP packets Repeat until download finished. 

    La velocità è determinata da quanto velocemente il server invia i dati a voi e quanto velocemente lo riconosci.

    Quindi, per limitare la velocità di download, hai due possibilità:

    1) Indica al server di submit dati più lentamente e non credo che ci sia alcuna funzionalità di protocollo per richiedere in TCP o HTTP.

    2) Confermi i pacchetti più lentamente limitando la velocità di caricamento e rovinando anche la velocità di caricamento.

    Come i dispositivi lo limitano? C'è un modo standard?

  • Come configurare teaming, teamed VLAN e hyper-v?
  • Firewall Hardware vs. Firewall software (tavole IP, RHEL)
  • Sisthemes di storage di oggetti compatibili S3
  • Condivisione / gestione dei file basati su Web per piccoli uffici?
  • il pubblico ip risolve esternamente ma non internamente
  • Aggiunta permanente delle regole di routing delle policy di origine
  • 5 Solutions collect form web for “In termini TCP / IP, come funziona un limitatore di velocità di download in un ufficio?”

    TCP implementa il controllo della congestione.

    Questi limitatori di velocità semplicemente butteranno i pacchetti oltre il limite. TCP gestisce questo, assicurando che i pacchetti arrivino e tutti arrivino in ordine; il client non ACK per i pacchetti lasciati e sono risentiti dal server.

    Lo stack TCP del server restituirà i pacchetti e verrà anche richiamato un po 'sulla velocità di invio, in quanto cifre ci sono congestioni tra il client e il client. Riprenderà la velocità fino a quando il limitatore di tasso non riesce a scomparire i pacchetti e così via.

    La migliore descrizione che abbia mai sentito che abbia avuto senso del metodo di strozzatura intrinseca di TCP era fuori da un recente podcast di Security Now . Per citare Steve Gibson:

    Quindi, per accordo universale, TCP è questo protocollo molto intelligente, fa qualcosa chiamato "lento avvio". Generalmente è dato il permesso di submit un certo numero di pacchetti senza alcun riconoscimento. Quindi l'idea di essere, facciamo solo andare le cose in movimento qui. E in genere il numero è due. E così quando inizia TCP, può spegnere due pacchetti, uno dopo l'altro. Senza aver riconosciuto il primo, invierà il secondo. Ma poi aspetta. E poi la regola per la strozzatura è permettere che il numero di pacchetti non riconosciuti aumenti di uno per each riconoscimento che riceviamo.

    Quindi pensiamo a questo. Consentiamo che il numero di pacchetti non riconosciuti sia aumentato di uno per each riconoscimento che riceviamo. Quindi, prima di submit due pacchetti come il nostro accordo concordato. Riconoscono. Quindi abbiamo il nostro primo riconoscimento. Ci permettevamo di submit due. Ora, con la ricezione di questo primo riconoscimento, aumentiamo quello da uno a tre. Quindi possiamo ora spedire altri tre pacchetti senza alcun ulteriore riconoscimento. Quando un riconoscimento torna per quello che abbiamo inviato prima, aumentiamo quello a quattro. Questo è conosciuto come la "window di congestione". Non è una window mai inviata sulla row, cioè non è come la window di ricezione, che è 16 bit dell'intestazione TCP che ci dice quanti dati possiamo submit in anticipo. Questo è – è una window. È fondamentalmente un contatore gestito dalla stack TCP allo scopo di evitare la connessione, l'idea che a un certo punto questo sta per rompersi.

    Se continuiamo ad aumentare il numero di pacchetti non riconosciuti ci è permesso di submit da una volta each volta che riceviamo un riconoscimento, a un certo punto raggiungeremo un limite. E la bellezza di questo sistema è che, quando cominciamo a provare a submit pacchetti più velocemente del collegamento più debole, letteralmente, tra i router, a un certo punto troviamo il punto in cui il legame più debole si rompe. Getta i pacchetti che stiamo cercando di submit perché stiamo cercando di inviarli troppo velocemente. Quindi riconoscimenti dall'altra estremità perché i dati non stanno più passando.

    E ciò che TCP fa è, se non è riuscito a ricevere – e questo varia nelle strategie. Nel tempo, la strategia, l'effettiva strategia di evitare la congestione ha variato molto. Ci sono nomi come Tahoe e Reno, e un sacco di altri che vedrai se fai un po 'di Googling e di Wikipedia, che esattamente esattamente ciò che il comportmento è. Ma l'idea è che, quando il mittente si rende conto che i suoi dati non sono più in grado di passare attraverso perché mancano riconoscimenti, riduce rapidamente il tasso di invio. In genere, la divide in metà. Così lo riduce drammaticamente e poi torna ad aumentarlo.

    Quindi, in sostanza, ciò significa che la perdita di pacchetti è la function di segnalazione per "Non possiamo submit i dati più velocemente" e che i mittenti TCP ad each estremità di una connessione, su Internet, sono sempre una sorta di – cercare di andare più veloce della velocità massima disponibile tra i due punti finali, ovvero quella connessione più debole ovunque sia e lo spingono sempre al limite. Quindi, dato che c'è un punto da qualche parte che è più debole della loro capacità di submit pacchetti, lo troveranno perché pompano i pacchetti. Finché ci sono dati da submit e hanno una connessione ad alta width di banda, il mittente aumenterà il tasso di invio, cioè il numero di pacchetti eccezionali, i pacchetti che possono essere là fuori in volo come riconoscimenti tornare indietro, aggressivamente continua a spostare quel numero verso l'alto finché non lo spinge troppo a lungo. Poi si sbatte molto e poi si sposta di nuovo.

    Quindi questo è quello che sta succedendo tra le connessioni TCP che, come, probabilmente, non so quale percentuale, ma la percentuale notevolmente più grande del traffico su Internet è su connessioni TCP. Tutti i nostri sisthemes operativi nel kernel, nel cosiddetto stack TCP, dispongono di questi contatori. E quando stiamo inviando un file, quando carichiamo un file big o stiamo ricevendo una pagina web, il server all'altro lato sta facendo la stessa cosa. Spinge, su una base di connessione individuale, tanti pacchetti che non sono ancora stati riconosciuti, aumentando la velocità del pacchetto fino a quando non colpisce il punto in cui inizia a fallire o a muoversi. Poi si spegne, per permettere alle cose di recuperare e poi riprende a lavorare nuovamente.

    E così finisce per essere una sorta di sistema di auto-strozzamento che, a causa dei vincoli, intendo, sembra davvero un po 'funky e crudo ".

    Quindi, per limitare la velocità di download, hai due possibilità:

    1) Indica al server di submit dati più lentamente e non credo che ci sia alcuna funzionalità di protocollo per richiedere in TCP o HTTP.

    2) Confermi i pacchetti più lentamente limitando la velocità di caricamento e rovinando anche la velocità di caricamento.

    3) Il dispositivo di router / firewall mette i dati in ingresso in un secchio QoS e solo scarica quel secchio alla velocità richiesta. I dati in entrata si adatteranno a quella velocità, in quanto i computer all'interno vedranno solo la conferma della ricezione a quella velocità. Inoltre, il pacchetto occasionalmente (deliberatamente) ha funzionato molto bene per rallentare una connessione.

    Quando si cerca di trovare un dispositivo che gestisce questo, cercare QoS (Quality of Service) nella configuration / documentazione. Le scatole Linux (o BSD) sono utili anche per questo.

    Si utilizza un firewall o un dispositivo che support QoS (qualità del servizio) che limita.

    Potresti build un sistema Linux per agire come gateway per l'ufficio e utilizzarlo per formattare il traffico per raggiungere questo objective. Basta bisogno di più NIC installate e poi each macchina punta è come un gateway.

    Come bonus, puoi configurare un server proxy su di esso per facilitare il traffico troppo. Qualcosa come Squid. Ci possono essere distribuzioni di apparecchiature di routing chiavi in ​​mano che possono anche farlo.

    Il protocollo HTTP non fornisce gli strumenti per limitare la width di banda utilizzata, e anche se lo fosse, sarebbe un'impostazione sul lato client, su cui gli amministratori di networking non potevano avere alcun controllo.

    La limitazione della width di banda (nota anche come "Qualità del servizio") è di solito gestita su router / firewall, che gestiscono tutto il traffico in entrata e in output da una networking; quelli che supportno questo consentono di configurare politiche come "lasciare che each singolo computer client utilizzi al massimo il 10% di tutta la width di banda disponibile" o "dare priorità SMTP su FTP in modo che le e-mail possano scorrere anche quando qualcuno sta facendo un download pesante ".

    Quanto esattamente questo è fatto dipende dal router / firewall utilizzato, ma il modo più semplice è quello di buttare via i pacchetti che superano i limiti configurati; TCP assicurerà di ritrasmettere e sarà in grado di passare attraverso il collo di bottiglia.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.