Fibre Channel over Ethernet (FCoE) è uno standard sviluppato dal gruppo di lavoro FC-BB-5 del T11, pubblicato il 4 giugno 2009[1] e inviato all'INCITS per la pubblicazione e la ratificazione come standard ANSI.
FCoE permette di mappare i frame Fibre Channel su una rete IEEE 802.3 full-duplex. In questo modo è possibile utilizzare le connessioni 10 gigabit Ethernet per il trasporto dei pacchetti Fibre Channel senza modificare il protocollo e le funzionalità Fibre Channel. Per operare, FCoE ha bisogno di una rete lossless ethernet che garantisca un trasporto senza perdita di pacchetti indispensabile al trasporto del traffico SCSI che è incapsulato all'interno dei pacchetti Fibre Channel.
FCoE permette di consolidare il traffico Fibre Channel sulla connessione Ethernet utilizzata per i dati permettendo così una più semplice connettività dei server all'infrastruttura garantendo allo stesso tempo la piena compatibilità con tutto il software sviluppato per Fibre Channel in quanto il trasporto dei pacchetti fibre Channel è trasparente e sono garantite tutte le funzionalità native incluso lo zoning. Sono necessarie apposite schede di rete, chiamate CNA (Converged Network Adapter), e switch ethernet per il trasporto e l'instradamento di FCoE mentre tutte le altre componenti della server farm, incluso i sistemi operativi, rimangono invariate rispetto ad una soluzione nativa Fibre Channel.
Ethernet è di gran lunga il protocollo più diffuso per le connessioni dati fra host. In un centro elaborazione dati alle connessioni ethernet si aggiungono molto spesso anche le connessioni Fibre Channel oltre ad alcune connessioni proprietarie in ambito HPC. In un server tradizionale le connessioni ethernet sono utilizzate per la trasmissione di dati da e verso altri server e/o client, mentre le connessioni Fibre Channel sono utilizzate per lo scambio di dati con la Storage Area Network. Un server può quindi presentare sia interfacce di rete ethernet per il trasporto del traffico IP che interfacce Fibre Channel per il trasporto del traffico dati verso la SAN. Le connessioni ethernet sono gestite da uno switch ethernet con connessioni solitamente a 1 Gb/s, mentre quelle Fibre Channel a un Fibre Channel switch con connessioni a 2 o 4 Gb/s (sono disponibili anche connessioni a 8/16Gb/s su alcuni nuovi apparati ma probabilmente l'introduzione di FCoE contrasterà/affiancherà il decollo di questa tecnologia anche se la Fibre Channel Industry Association (FCIA) nelle sue presentazioni propone entrambe le tecnologie[2]).
All'interno di un CED si possono trovare essenzialmente tre tipologie di traffico dati:
Vi è, però, una sentita necessità di consolidamento in un'unica infrastruttura sia per semplificare il cablaggio sia per ottimizzare i costi dell'hardware e i costi di gestione pur garantendo le specificità e peculiarità delle attuali tecnologie[3][4][5].
L'avvento delle tecnologie di trasmissione a 10 gigabit Ethernet permettono di disporre di una banda sufficiente per trasportare contemporaneamente su un'unica connessione ridondata sia il traffico IP che quello Fibre Channel. Sfortunatamente, però, ethernet ed IP sono protocolli lossy ossia tollerano una perdita di un pacchetto e prevedono dei meccanismi rapidi di ritrasmissione mentre il protocollo SCSI trasportato dai pacchetti Fibre Channel non permette il recupero di un singolo pacchetto e richiede una completa rinegoziazione della connessione, operazione che, oltre ad essere molto onerosa in termini di tempo, può comportare anche degli errori a livello applicativo. SCSI, infatti, è stato pensato come un protocollo adatto ad operare su brevissime distanze (pochi metri) e su connessioni sicure[6].
Per garantire una connessione lossless, Fibre Channel utilizza un sistema a credit Buffer-to-Buffer (B2B) in cui, in fase di inizializzazione, le due estremità di un collegamento si scambiano le informazioni relative alla configurazione dei buffer. Uno scambio di dati avviene solo se è disponibile almeno un buffer libero. In questo modo si può garantire un livello di sicurezza di trasmissione adatto a trasmettere pacchetti SCSI[6].
Ethernet non è stato pensato come protocollo lossless e prevede lo scarto di un pacchetto in questi casi:
Il frame PAUSE è utilizzato per richiedere la sospensione della trasmissione di pacchetti permettendo, così, l'implementazione di un controllo di flusso che può evitare la congestione. Il frame PAUSE è un frame standard ethernet senza tag ossia non appartenente ad alcuna VLAN. Il frame opera, quindi, sul collegamento sospendendo il traffico di tutte le VLan[6].
Il frame (come si può vedere nell'illustrazione qui a fianco) è così composto
Per rendere più efficiente il controllo di flusso, invece del frame PAUSE, Cisco ha proposto l'utilizzo del frame Priority Flow Control (PFC) che definisce un Pause Quanta per ciascuna delle 8 code definite dal protocollo IEEE 802.1Q tramite il campo user priority definito dal protocollo IEEE 802.1p[6].
Il frame (come si può vedere nell'illustrazione qui a fianco) è così composto[7]:
Non è molto diffusa l'implementazione del frame PAUSE, ne tanto meno la sua evoluzione (PFC) proposta da Cisco, poiché gli standard IEEE definiscono il meccanismo di base ma non, in modo particolareggiato, l'intero meccanismo e lasciano la strada aperta a diverse implementazioni con la conseguente difficoltà di standardizzazione fra diversi produttori[3][6].
L'adozione su una rete ampia che vada oltre quella specifica e dedicata del CED creerebbe, inoltre, delle grandi problematiche di gestione e causerebbero un notevole aumento di delay di trasmissione che creerebbero notevoli problemi a molti protocolli. Si potrebbe arrivare anche a situazioni limite di blocco di una rete dovuto ad una richiesta circolare di buffer deadlock.
Per poter trasportare in modo nativo il traffico di storage, ossia il protocollo SCSI, come si è detto è indispensabile evitare la perdita di pacchetti dovuta a problemi di congestione, inoltre protocolli come NFS potrebbero trarne vantaggio mentre più in generale il protocollo TCP ha un meccanismo di recupero dei pacchetti persi molto efficiente e a sua volta utilizza lo scarto (drop) dei pacchetti per controllare a livello più alto la congestione.
Per armonizzare queste differenze fra diversi produttori e gestire in modo efficiente la congestione è stato proposto il protocollo 802.1Qau[8]. Il protocollo CN permetterà funzionalità aggiuntive su una infrastruttura che implementa il controllo di flusso basato sulle classi IEEE 802.1p Class Based Flow Control (CBFC).
In passato ci si è concentrati molto sul trasporto di IP sull'infrastruttura Fibre Channel ma la diffusione della rete ethernet e le considerazioni sopra riportate hanno decretato l'abbandono, almeno commerciale, di queste tecnologie. Queste sono le principali RFC proposte per il trasporto del traffico IP su Fibre Channel:
FCoE è un nuovo standard che è stato proposto nell'aprile 2007 dal gruppo di lavoro FC-BB-5 dell'INCITS T11[9].
L'idea alla base di questa proposta è molto semplice: realizzare una convergenze delle connessioni dati trasportando ciascun pacchetto Fibre Channel all'interno di un pacchetto ethernet[10].
Entrambi i termini sono corretti. FCoCEE è l'acronimo di Fibre Channel over Convergence Enhanced Ethernet ossia Fibre Channel sulla rete ethernet evoluta con le tecnologie abilitanti necessarie per il protocollo FCoE[11].
Per ethernet FCoE è semplicemente un altro protocollo di livello superiore da trasportare alla stessa stregua di IPv4, IPv6 e IPX.
Per Fibre channel è una modalità di collegamento tramite un nuovo tipo di cavo: la rete ethernet[12].
Nell'immagine qui a fianco si può notare come i server siano collegati, per ridondanza, a due switch in grado di gestire il protocollo FCoE su una singola connessione lossless ehternet. Gli switch sono a loro volta collegati alla rete LAN e all'infrastruttura SAN. Ciascuno switch FCoE è connesso solo ad una SAN tramite collegamenti Fibre Channel, questo per garantire la separazione del traffico fra le due SAN garantendo così la massima continuità di servizio anche in caso di collasso di uno dei due sistemi.
Il protocollo SCSI continua ad essere incapsulato all'interno dei pacchetti Fibre Channel mentre questi sono incapsulati a loro volta frame per frame in pacchetti ethernet consentendo così al FCoE layer di essere assolutamente privo di stato e di non richiedere frammentazione o riassemblaggio dei pacchetti.
Nell'immagine qui a fianco si può vedere come il protocollo FCoE si pone nei confronti di ethernet, a basso livello, e di Fibre Channel ad alto livello. FCoE si posiziona allo stesso livello di IP ma è assai più semplice essendo senza stato.
Un server che utilizza una connessione FCoE è semplicemente uno SCSI initiator come un server connesso tramite Fibre Channel in modo nativo mentre uno storage connesso tramite FCoE è uno SCSI target.
Per gestire la SAN possono, quindi, essere utilizzati i tool sviluppati per Fibre Channel in modo del tutto trasparente in quanto a livello applicativo non è possibile sapere se la connessione è FCoE o Fibre Channel nativa.
In realtà per poter operare su una nuvola ethernet FCoE si avvale di due protocolli[5]:
I due protocolli hanno due diversi ethertype.
Nel diagramma a lato è illustrato l'incapsulamento dei frame FCoE[12]:
Come si è già detto ciascun frame Fibre Channel viene incluso in un frame ethernet la cui dimensione può variare da 64 byte a 2180 byte. Il Maximum Transmission Unit su ethernet normalmente è di 1518 quindi non è sufficiente per FCoE. È indispensabile l'adozione di un'infrastruttura che supporti jumbo frame di 2,5 KB. I frame di questa lunghezza generalmente sono chiamati baby jumbo frame per differenziarli da quelli di più grosse dimensioni che normalmente sono di 9 KB.
Un frame FCoE ha il seguente formato[12]:
Il FCoE Initialization Protocol (FIP) è un protocollo di controllo che permette di individuare dispositivi in grado di operare tramite FCoE in una rete ethernet. FIP, inoltre, permette di negoziare le modalità di comunicazione e il MAC address da utilizzare.
Il funzionamento tipico prevede una Discovery Phase in cui all'invio di un messaggio multicast di richiesta sia le CNA che gli Switch FCoE rispondono identificandosi.
Successivamente il FIP gestisce il login all'infrastruttura Fibre Channel tramite i comandi Fibre Channel FLOGI/FDISC. L'accettazione di questi comandi da parte dello switch FCoE permette lo scambio di dati tramite frame FCoE.
Un frame FIP ha il seguente formato[12]:
FcoE è strutturato in modo molto simile a FCIP come descritto nella FC-BB-4 in quanto FCoE è incluso nella FC-BB-5 che è la sua evoluzione. Tre sono i tipi di porte presenti[11]:
Un ENode (FCoE Node), invece, è un adattatore Fibre Channel implementato all'interno di una CNA. Le CNA possono avere più di una porta ethernet, in questo caso, ciascuna di queste sarà una VN_Port dell'ENode.
Le Converged Network Adapter (CNA) sono delle schede di rete in grado di garantire una connessione, normalmente a 10 Gb/s, su lossless ethernet supportando il protocollo FCoE.
Le CNA in realtà sono composte da due sistemi differenti[5]:
Anche a livello di sistema operativo vengono viste come due componenti separate. Se, ad esempio, una scheda CNA fosse installata in un ambiente windows, troveremo una scheda Fibre Channel nella sezione Controller SCSI e RAID e una scheda ethernet nella sezione Schede di rete[12].
Di conseguenza queste schede richiedono due driver, uno per la sezione Fibre Channel e uno per quella di LAN. Una delle principali caratteristiche che rendono così promettente questa tecnologia è proprio la presenza di queste due unità. Se si considera, infatti, lo schema qui a fianco, si può notare che, rispetto ad un sistema tradizionale con connessioni separate per LAN e Storage, cambia solamente la parte evidenziata in giallo, tutte le altre rimangono invariate. FCoE non richiede, per essere implementato, nessuna modifica agli attuali sistemi operativi ne tanto meno all'infrastruttura di LAN o SAN. Gli unici due attori coinvolti sono la CNA e lo switch con supporto FCoE a cui sono attestate le varie CNA[13].
In una CNA sono presenti uno o più controller Fibre Channel con le stesse funzionalità dei normali controller su schede Fibre Channel, l'unica differenza e che questi controller incapsulano i pacchetti in un frame ethernet e li passano quindi al controller ethernet per la trasmissione, il controller ethernet li riceve e semplicemente li inoltra sulla connessione lossless ethernet. In ricezione il controller ethernet passa i pacchetti FCoE direttamente al controller Fibre Channel. La componente del sistema operativo che gestisce le comunicazioni SCSI, quindi, non sarà in grado di capire se i pacchetti SCSI provengano da una connessione Fibre Channel dedicata o da FCoE[12].
La componente Fibre Channel è sicuramente molto più complessa della componente ethernet in una CNA, quindi i primi esempi di CNA sono giunti da QLogic[14] e da Emulex[15].
Molte implementazioni oggi sono basate sulla virtualizzazione dei sistemi operativi, quindi i sistemi ospiti hanno la necessità di accedere alle risorse esterne condivise del sistema operativo ospitante. Per velocizzare queste operazioni Cisco ha introdotto una CNA con la peculiarità di poter rendere disponibili 128 interfacce virtuali[16]. In questo modo queste interfacce virtuali possono essere liberamente configurate come schede ethernet o Fibre Channel e rese disponibili ai vari sistemi operativi presenti nel sistema scaricando così i compiti di virtualizzazione delle comunicazioni ethernet e Fibre Channel dal processore principale e trasferendo il lavoro di instradamento allo switch esterno[5] anche per le comunicazione fra un'interfaccia virtuale e l'altra.
Anche i dispositivi di storage possono essere dotati di CNA, nell'esempio qui a fianco si vede che i due sistemi di storage fanno uso di connessioni lossless ethernet per connettersi agli switch. In questo caso la semplificazione del cablaggio non è così importante perché gli storage sono sempre in numero molto inferiore rispetto ai server. Si aprono però degli scenari decisamente interessanti.
La completa eliminazione di connessioni Fibre Channel permette di rendere il sistema più omogeneo, e consente la concentrazione di tutte le configurazioni, sia ethernet sia Fibre Channel, in un unico dispositivo, lo switch ehternet con funzionalità FCoE.
L'aspetto più interessante è però la flessibilità che la struttura ethernet porta in dote a questa configurazione. Sarà, infatti, assai più semplice la dislocazione dello storage in ambienti separati superando anche distanze importanti e senza la necessità della realizzazione di un'infrastruttura ad hoc. Tutto questo permette una decisiva semplificazione dei sistemi di ridondanza e disaster recovery, unita ad un migliore utilizzo delle connessioni in fibra fra edifici diversi che vedrebbero automaticamente i link ottimizzati, in quanto sullo stesso collegamento transiterebbero tutti i vari protocolli. Un potenziamento della connessione con l'aggiunta, ad esempio, di un link parallelo permetterebbe automaticamente di aggiungere banda a tutti i protocolli[17].
Sullo stesso collegamento si potranno gestire più servizi:
Alcuni produttori di storage fra cui NetApp[18] hanno annunciato sistemi di storage con supporto nativo per FCoE mentre altri, fra cui EMC²[19], hanno preferito concentrare gli sforzi sullo sviluppo di switch FCoE.
In sistemi di piccole dimensioni che non hanno la necessità di avere delle alte prestazioni di I/O, si può anche utilizzare una soluzione interamente software[12]. Una soluzione completa di pubblico dominio basata su linux è il progetto open source Open-FCoE[20]. Questo sviluppo è stato incluso in diverse distribuzioni linux fra cui SUSE[21] e Red Hat. Microsoft, invece, non intende supportare per il momento FCoE come implementazione software[22].
Il software per analisi di protocollo Wireshark (precedentemente chiamato Ethereal) ha il supporto per la cattura e decodifica dei pacchetti FCoE[23].
Uno switch FCoE contiene all'interno sia uno switch ethernet (ethernet bridge) sia uno switch Fibre Channel con il supporto dello zoning o un Fibre Channel Forwarder (FCF).
Uno switch FCoE potrebbe anche non avere porte Fibre Channel native e quindi non avere un FCF, ma deve essere comunque in grado di supportare tutte le estensioni ethernet sopra evidenziate e possedere le funzionalità di switch Fibre Channel operando solo su frame FCoE in una situazione come quella descritta in storage con CNA.
Qui a lato è evidenziato lo schema a blocchi di uno switch FCoE con FCF. Il sottosistema FCoE incluso nel modulo FCF si fa carico di incapsulare i frame Fibre Channel all'interno di frame FCoE e viceversa[12]. In questo modo dei dispositivi con porte Fibre Channel possono essere connessi alle porte FC mentre le CNA possono essere connesse alla porte ethernet e tramite lo switch FCoE operare come in una normale SAN Fibre Channel.
Questa architettura è coerente con quella di un router multiprotocollo, quindi la funzionalità FCF può essere aggiunta ad un router multiprotocollo come quello esistente all'interno di molti switch layer 3.
A primo avviso FCoE può essere visto come un sostituto totale di iSCSI vista la completa compatibilità con Fibre Channel. In realtà i due protocolli, molto probabilmente, continueranno a coesistere[12][24][25][26] e alcuni produttori implementano sulla stessa CNA entrambi i protocolli[27].
Sicuramente il ruolo di iSCSI verrà ridimensionato dall'introduzione di FCoE ma non scomparirà. Qui di seguito si possono vedere i punti di forza delle due soluzioni: