Priorità di rete nel sistema operativo quando si supera la capacità della LAN


0

Sto cercando di sviluppare un'applicazione desktop che richiede una rete in tempo reale. Ora ho alcune domande quando molte applicazioni condividono una NIC e superano l'intera capacità LAN della NIC nei sistemi operativi.

1) Cosa succede quando il traffico supera il limite della capacità della scheda di rete? In Windows, la velocità di ogni applicazione è ridotta in modo uguale? O l'applicazione avviata in precedenza ha una priorità maggiore? Che ne dici di Mac o Linux?

2) Quando si scaricano dati da Internet, penso che i browser li scarichino il più velocemente possibile. In che misura questa azione influenza il networking delle applicazioni in tempo reale?

3) In Windows è possibile configurare la priorità dei processi. Non è possibile impostare la priorità della rete in modo simile? Di nuovo, che ne dici di Mac o Linux? (Conosco un'applicazione di terze parti per impostare la priorità di rete in Windows, ma il sistema operativo non supporta?)

4) Ogni intestazione IP ha il campo TOS inclusa l'impostazione di priorità. Ho sentito che la maggior parte dei sistemi operativi e router ignorano questo campo. È vero?

Grazie in anticipo.

(questo post è stato spostato da StackTranslate.it perché non rientra nell'ambito)


Un po 'più di informazioni sull'applicazione potrebbero aiutare. Certamente puoi applicare le regole di qualità del servizio (QoS) al traffico, ma non sei sicuro che sia quello che stai chiedendo.
Dave M,

L'applicazione ideale e più vicina alle mie domande sono i giochi online che richiedono la minima latenza e non è possibile porre alcuna configurazione e limitazione al sistema di rete di ciascun utente. Quindi devo garantire la massima velocità possibile per elaborare la mia logica di rete dell'applicazione.
user3288408,

Risposte:


0

In primo luogo, la real timerete semplicemente non esiste per il fatto fondamentale che in qualsiasi situazione di rete non è possibile garantire la consegna delle informazioni in un maniero "tempestivo"; il calcolo in tempo reale è spesso confuso high performance computing. In secondo luogo, non si può "superare la capacità della scheda NIC" poiché una scheda NIC non è come una tubatura dell'acqua che potrebbe scoppiare se si spingono troppe punte; la "capacità" (o larghezza di banda) della scheda NIC è un limite fisico della velocità con cui un'interfaccia connessa può "trasmettere" fisicamente i bit (su / giù) e viene misurata in mega bit al secondo (non mega BYTES come è un termine comune .. solo per chiarezza).

1) Cosa succede quando il traffico supera il limite della capacità della scheda di rete? In Windows, la velocità di ogni applicazione è ridotta in modo uguale? O l'applicazione avviata in precedenza ha una priorità maggiore? Che ne dici di Mac o Linux?

Ogni applicazione che si esegue che richiede una "risorsa di rete" (o quella che gli ingegneri del software chiamano "socket") è in grado di scaricare / caricare alla massima velocità dell'interfaccia a cui l'applicazione è "vincolata" (in ascolto), mantenere si noti che questo tipo di "funzionalità" è più o meno indipendente dal sistema operativo (ovvero un socket in Windows ha gli stessi limiti / concetti di base di quelli in Linux / Mac). Quindi, se un'applicazione (diciamo un server Web) è in esecuzione, può teoricamente "servire" le pagine Web alla massima velocità dell'interfaccia su cui è in ascolto (ad esempio "nic 1" a 1 Gb / s), il che significa che (in teoria) potrebbe ricevere 125 MB di file / richiesta in 1 secondo e inviare contemporaneamente 125 MB di file / risposta (se full duplex). In realtà, sebbene le velocità siano molto più basse per molte ragioni ...

Detto questo, supponiamo che il nostro server Web "perfetto" ora debba gestire anche le richieste FTP e quindi cariciamo un server FTP sulla stessa macchina che ascolterà sulla stessa NIC ("nic 1" nel nostro esempio). Quando viene avviata l'applicazione del server FTP, anche questa sarà in grado di ricevere e inviare fino al massimo teorico della scheda NIC (125 MB / s nel nostro esempio). Questo vale per QUALSIASI applicazione eseguita (browser Web, videogioco, Netflix / Hulu, ecc. Ecc.). Il punto cruciale è ora che ho 2 o più applicazioni (web e ftp nel nostro esempio) che sono in grado di utilizzare la larghezza di banda massima della NIC, quindi cosa succede a ciascuno e chi ottiene cosa? È qui che entra in gioco l'implementazione generale della rete e del sistema operativo.

Nel nostro esempio, supponiamo che ci siano 80 persone che scaricano a 10 Mb / s dal nostro server Web (in totale 800 Mb / s), quindi entrano altre 30 persone e iniziano a scaricare dal server FTP a 10 MB / s ciascuna per un totale di 1100 Mb / s ; in teoria ciò che dovrebbe accadere è che ogni applicazione otterrà una quota uguale della larghezza di banda di 1000 Mb che la NIC è in grado di gestire fisicamente (in modo simile al modo in cui il sistema operativo "condividerebbe" la CPU tra le applicazioni in esecuzione fino al 100% del carico della CPU). In realtà ci sono MOLTI fattori variabili che decideranno quale applicazione utilizzarequale quantità di larghezza di banda in un dato istante nel tempo. Questi fattori possono variare dal numero di utenti che richiedono risorse a semplici problemi hardware 3 hop di rete a valle e questi tipi di problemi sono al di fuori del controllo dell'utente e di ciò che la NIC può fare, inoltre si noti che l'applicazione avviata per prima o che si è connessa prima non fanno differenza nell'allocazione della larghezza di banda. In questo scenario di 1100 Mb / s è molto probabile che il server Web stia andando a una velocità effettiva del 60% di larghezza di banda mentre l'FTP sta andando al 40% quando un utente potrebbe cadere o potrebbero verificarsi altri problemi di rete e la larghezza di banda potrebbe cambiare per il server Web utilizza solo il 20% e l'FTP potrebbe continuare al suo tasso del 40%, limitando così gli utenti all'estremità ricevente del server web.

Tieni presente che questi sono tutti scenari generici per una migliore comprensione e che i casi del "mondo reale" sono completamente diversi e richiedono un sacco di lavoro di pianificazione e progettazione per assicurarti di poter soddisfare le esigenze di larghezza di banda della tua base di utenti (almeno prova a soddisfare) .

2) Quando si scaricano dati da Internet, penso che i browser li scarichino il più velocemente possibile. In che misura questa azione influenza la rete di applicazioni in tempo reale?

I browser non eseguono il download più velocemente possibile, eseguono il download più rapidamente di qualsiasi altra applicazione e influiscono sulla larghezza di banda totale del sistema proprio come farebbe qualsiasi altra applicazione (vedere la risposta a 1).

3) In Windows è possibile configurare la priorità dei processi. Non è possibile impostare la priorità della rete in modo simile? Di nuovo, che ne dici di Mac o Linux? (Conosco un'applicazione di terze parti per impostare la priorità di rete in Windows, ma il sistema operativo non supporta?)

L'impostazione della "priorità" della "rete" è possibile, ma non nello stesso contesto dell'impostazione della priorità del processo. L'impostazione di "priorità di rete" può significare un paio di cose, come l'impostazione della priorità di una scheda NIC rispetto a un'altra (può essere eseguita in Win / Mac / Linux ed è anche nota come impostazione della "metrica dell'interfaccia di rete"). Se la tua intenzione è quella di impostare la priorità della rete di uno specifico processo o "tipo di traffico di rete", questo è noto come "Quality of Service (QoS)"e può essere applicato anche su Win / Mac / Linux (sebbene l'installazione e la configurazione di QoS sulla tua piattaforma vadano oltre lo scopo di questa domanda / risposta). QoS ti consente di limitare / valutare la larghezza di banda assegnata a cose specifiche; ad esempio, è possibile configurare QoS per consentire la massima larghezza di banda per il download di torrent quando non si scarica altro, quindi limitarlo automaticamente al 5% di allocazione totale della larghezza di banda quando altre attività di rete iniziano a garantire che i download di torrent non consumino tutta la larghezza di banda mentre provi a controllare la tua email o a guardare YouTube (solo per fare un esempio).

4) Ogni intestazione IP ha il campo TOS inclusa l'impostazione di priorità. Ho sentito che la maggior parte dei sistemi operativi e router ignorano questo campo. È vero?

Il campo "Tipo di servizio" , come definito da questi 2 RFC, da allora si è trasformato in quello che è noto come "Punto di codice dei servizi differenziati". E ' non è ignorato tanto quanto si tratta solo di 'non utilizzato'. In altre parole, solo perché un pacchetto HAI i campi impostati non significa che tu (in quanto implementatore del dispositivo di rete) devi effettivamente "fare qualcosa" con esso, ToS fa parte di QoS e quindi il tuo specifico sistema operativo / dispositivo deve supportare i campi ToS / DS. Detto questo, la maggior parte dei dispositivi OS / di rete ha alcune funzionalità che ti consentono di utilizzare questi campi tramite alcuni criteri QoS (almeno non conosco istanze moderne che non hanno una sorta di implementazione QoS).

Per ripetere, non esiste una notazione come "rete in tempo reale", invece si direbbe "bassa latenza" (o addirittura "quasi in tempo reale") in quanto "tempo reale" implica una consegna in tempo garantita di un richiesto / implementato operazione. Non è possibile garantire che qualsiasi operazione eseguita su una rete abbia un tempo di consegna specifico di X, invece si può affermare che un'operazione di rete può avere una latenza superiore / inferiore rispetto a X in un determinato nodo.

Suggerisco anche di leggere su QoS in quanto sembra che potrebbe essere ciò che il tuo dopo il contesto della tua domanda e QoS possono diventare complessi a seconda delle tue esigenze.

Spero che possa essere d'aiuto.


Grazie per la risposta. Apprezzo una risposta molto dettagliata e utile. Ci scusiamo per le mie scarse competenze in inglese e ho ulteriori domande. (1) Ho riassunto la tua risposta come segue: nei casi del mondo reale, poiché ci sono molti fattori variabili per condividere la larghezza di banda di una scheda di rete, nessuno sa quale applicazione potrebbe ottenere molta larghezza di banda e non possiamo controllarla. Quindi dobbiamo ideare design, pianificazione e logica contro il sistema di reti temperamentali. È corretto?
user3288408,

(2) Il networking di ogni applicazione influisce sulla larghezza di banda totale. Ma poiché non possiamo controllare la priorità della rete, l'azione di download potrebbe influenzare il collegamento in rete delle mie applicazioni oppure no. Nessuno sa. È corretto? (4) Sto pensando di applicare QoS alla mia applicazione. Detto semplicemente, quando la mia applicazione dà la massima priorità ai miei pacchetti usando il campo ToS e non faccio altro, il sistema operativo ignora questa impostazione? O i miei pacchetti possono avere la massima priorità? (Dato che non viene eseguita alcuna configurazione QoS nei sistemi operativi)
user3288408,

Nessun problema! Per rispondere alle tue altre domande; 1 è corretto, noi (come ingegneri) dobbiamo tenere conto dell'affidabilità della rete se sviluppiamo applicazioni in rete. Per Q2 hai ragione su ogni app che influisce sulla larghezza di banda totale ma mentre potresti non sapere se altre app influiranno sulla tua larghezza di banda, tornando al Q1, se includi che nel tuo design di "affidabilità della rete" potrebbe "essere" punto controverso. La progettazione di un'app a bassa latenza richiede alcune "ricerche di mercato", quindi puoi fare un'ipotesi sulla quantità di latenza che potresti effettivamente sostenere (o qual è la latenza massima che la tua app può "gestire")
txtechhelp

Come per la domanda 4, penso che avrebbe dovuto essere 3 :) .. Se contrassegni i tuoi pacchetti con i flag ToS specifici, il sistema operativo potrebbe "ignorarlo" a seconda che tu abbia la configurazione QoS sul sistema operativo in questione (solo di base abilitazione di QoS, non di configurazioni pazze), più sconcertante è il fatto che una volta che il pacchetto lascia la NIC, ora è soggetto ai singoli nodi tra i punti finali. I nodi (almeno quelli che non sono sotto il tuo controllo) potrebbero o meno onorare le tue bandiere ToS ed è qui che si pone la preoccupazione principale (che tu non sappia cosa può fare l'attrezzatura tra i nodi).
txtechhelp,

Grazie per la tua risposta e per aver ripreso tempo! Capisco quasi tutto grazie a te!
user3288408,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.