Interazione tra scheda di rete e calcolatore: hardware e driver

Transcript

Interazione tra scheda di rete e calcolatore: hardware e driver
Interazione tra scheda
di rete e calcolatore:
hardware e driver
Guido Marchetto
Introduzione
• Il driver gestisce tutte le comunicazioni tra
la periferica di rete e l’host
Comunicazioni NIC – Sistema operativo
Comunicazioni NIC – Spazio utente
• Si appoggia sul driver che gestisce il bus
PCI utilizzandone l’API da esso fornita
• Le schede sono Bus-master DMA
Ogni scheda dispone di un DMA controller che
gestisce le comunicazioni sul bus in modo
indipendente dalle altre
Forte riduzione del carico sulla CPU centrale
Lo stack di rete di FreeBSD
process
system calls
socket layer
socket
queues
function call
protocol layer
(TCP,UDP,IP,etc.)
function call
to start output
interface
queues
software interrupt
(caused by interface layer)
protocol queue
(IP input queue)
interface layer
hardware interrupt
(caused by network device)
I descrittori DMA
Indice
di scrittura
Mbuf pointer
…
2
1
N
Mbuf
Mbuf
Indice
di lettura
Trasmissione
• Funzione di output di Ethernet
• Funzione per accodamento e inizio
trasmissione
– E’ la stessa per ogni “livello 2”
• Funzione di trasmissione del driver
– Estrazione dalla coda
– Verifica di disponibilità di descrittori
– Mapping mbuf – descrittore
• Eventualmente ricollocazione in coda
– Berkeley Packet Filter (BPF) tap
– Il tutto avviene per scambio di puntatori
Trasmissione
• Trasferimento sul PCI gestito dal DMA
controller
• Interrupt di avvenuta trasmissione a
trasferimento avvenuto
• Interrupt service routine del driver
– Incremento del numero di descrittori liberi
– free dell’mbuf
– Interrupt mitigation
• I trasferimenti possono coinvolgere più
descrittori (DMA chains)
Ricezione
• Ricezione del pacchetto sulla scheda
• Trasferimento in memoria tramite DMA
• Interrupt service routine del driver
– Creazione dell’mbuf e “casting” sulla zona di
memoria puntata dal descrittore
– Incremento del numero di descrittori liberi
– Interrupt mitigation
• I trasferimenti possono coinvolgere più
descrittori (DMA chains)
Ricezione
• Alcune parti esterne al driver
• Funzione di input di Ethernet
– BPF tap
– Scelta del corretto livello superiore e accodamento
nella relativa coda di ingresso
– Interrupt software
• Permette di uscire dalla ISR ad alta priorità
• Interrupt service routine
– Funzioni relative al livello superiore
– Il pacchetto arriva a livello applicazione o, in caso
di forwarding, alle funzioni di output
Latenze
• Qual è l’efficienza del sistema?
• Quali latenze vengono introdotte?
Dove? Di che entità?
⇒
Misure sul tempo impiegato da un pacchetto
per andare dalle code di uscita di un nodo al
livello IP del successivo
Latenze
Distribuzione del ritardo
Latenze
Componenti del ritardo
Latenze
Possibili cause
• Contese sul bus PCI
– Nel testbed:
• PCI 32bit/33MHz (~1Gb/s)
• 3 interfacce 100Mb/s (600Mb/s sul bus)
• Interrupt mitigation in ricezione
– Disabilitato nel testbed
• Ricezione di burst di pacchetti
– Se gli interrupt sono bloccati i pacchetti si
accumulano
– Problema analogo all’interrupt mitigation
• Architettura monoprocessore
Throughput
• Receive livelock
– Con un alto input rate il sistema rimane sempre
nella ISR ad alta priorità
– Overflow della coda di ingresso del livello superiore
– Throughput → 0
• Funzionamento in polling
– Le ISR ad alta priorità vengono eliminate
• Si interrogano periodicamente le schede in RX
• Si liberano periodicamente in descrittori in TX
– Throughput → 0 senza un limite sul numero di
estrazioni per ciclo
• Il sistema non riesce a liberare i descrittori in TX
– Possibile aumento della latenze
Throughput
(Mogul, Ramakrishnan, “Eliminating Receive Livelock in an Interrupt-driven Kernel”)