Domanda

Per i pacchetti UDP con un carico utile inferiore a 1470, è possibile raggiungere un throughput di 1 Gbit?A causa delle dimensioni ridotte del pacchetto, potrebbero verificarsi alcuni colli di bottiglia nel raggiungimento di tale throughput (I/O, sistema operativo, rete, ecc.).Immagino che i driver e l'hardware potrebbero dover essere sintonizzati su pacchetti piccoli/velocità effettiva elevata.Qualcuno ha tentato di raggiungere con successo un throughput di 1 Gbit con piccoli pacchetti UDP?

È stato utile?

Soluzione

In precedenza ho fatto alcuni esperimenti con il throughput su collegamenti gigabit su hardware di PC relativamente standard, anche se eseguo solo trasmissioni (tramite tcpreplay), anziché udp.

Il collo di bottiglia più grande che ho riscontrato è stato semplicemente il trasferimento dei pacchetti alla scheda NIC stessa.Ciò può essere notevolmente migliorato utilizzando un bus ad alta velocità per interfacciarsi con la scheda NIC (ad es.una scheda di rete PCI Express 4x).Ma anche in questo caso esisteva un limite di pacchetti/secondo molto preciso.Ovviamente aumentare la dimensione del pacchetto ti consentirebbe di utilizzare una maggiore larghezza di banda riducendo il carico del processore.

Sulla stessa linea del commento di Steve Moyer, esiste un limite teorico per l'utilizzo di qualsiasi rete.Nei miei esperimenti (che sono stati condotti su una rete completamente silenziosa) ho visto un massimo di circa (e solo al limite della mia memoria) 900 Mb/s.Questo avveniva con carichi della CPU dal 30 al 40%.

È più probabile che la limitazione venga imposta dall'hardware del sistema (ad es.PC) rispetto all'infrastruttura di rete: qualsiasi switch di rete degno di questo nome dovrebbe essere in grado di sostenere l'accesso alla rete alla massima velocità con pacchetti di piccole dimensioni, certamente a velocità molto più elevate di quelle che la maggior parte dei PC può gestire.

Altri suggerimenti

Che tipo di connessione di rete stai utilizzando?Se utilizzi un collegamento 1000BaseTx/Fx, non aspettarti un throughput superiore all'80% con pacchetti di dimensioni massime.Man mano che la dimensione del pacchetto diminuisce, il sovraccarico per spaziatura, sincronizzazione, intestazioni Ethernet, intestazioni IP e intestazioni UDP aumenta in relazione al carico utile e quindi riduce ulteriormente il throughput massimo.

Controlla la documentazione relativa allo switch che stai utilizzando.Gli switch sono limitati nel numero di pacchetti al secondo (pps) che possono fornire e spesso non possono sostenere 1 GBps se si inviano pacchetti con dimensioni significativamente inferiori alla dimensione massima del payload.

Un'altra cosa da verificare è se la tua scheda di rete sta eseguendo l'interrupt coalescing e qual è il numero massimo di descrittori di invio/ricezione che può supportare.A quel livello di throughput, il tempo del servizio di interruzione e il tempo di cambio del contesto possono diventare un grosso sovraccarico per il sistema host anche con un moderno sistema di CPU e memoria.

Inoltre, se stai utilizzando Gigabit su rame, il frame Ethernet più piccolo che la scheda emetterà è 512 byte, quindi i messaggi più piccoli verranno riempiti a quella dimensione.Ciò è dovuto ai requisiti per il rilevamento della portante/rilevamento delle collisioni.

Ho scoperto che l'hardware ha un limite di pacchetti al secondo significativamente inferiore rispetto alla capacità teorica della rete.Per un Broadcomm BCM5704S ho raggiunto questo valore a 69.000 pps rispetto a 1.488.100 pps di gigabit.

Altri numeri che ho riportato qui, http://code.google.com/p/openpgm/

C'è un buon tutorial su come modificare le impostazioni di rete (in Linux) per ottenere la vera velocità gigabit qui: http://datatag.web.cern.ch/datatag/howto/tcp.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top