martedì 18 settembre 2012

QFABRIC DIETRO LE QUINTE: ERO SPOT-ON


Pochi giorni fa Balle Kurt e Cooper Lees mi ha dato accesso ad un ambiente di prova QFabric. Ho sempre voluto sapere cosa stava realmente accadendo dietro le quinte QFabric e il momento in cui Kurt era in grado di vedere alcuni di questi dettagli, ero completamente agganciato.
Breve riassunto: QFabric funziona esattamente come avevo previsto tre mesi prima che l'utente-documentale si rivolta al pubblico (il dietro le quinte vista descritto in questo post del blog è probabilmente ancora difficile da trovare).
Questo post non è affatto una critica di QFabric. Se non altro, io sono contento ci sia ancora un fornitore di rete in grado di creare soluzioni innovative senza lacrime unicorno, basandosi invece su testate sul campo le tecnologie ... che potrebbe, tra le altre cose, rendono la soluzione più stabile.

Sembra come un interruttore gigante

Quando si accede l'indirizzo IP di gestione QFabric (VIP), appare esattamente come un interruttore gigante - singola configurazione, unico insieme di interfacce, comandi show ecc Tutti i componenti familiari di configurazione Junos sono lì: gruppo di sistema, interfacce VLAN e protocolli . L'unico componente veramente nuovo è il tessuto oggetto con il nodo del gruppo definizioni ( più informazioni su gruppi di nodi QFabric ).
Tuttavia, ogni interruttore gigante ha bisogno di risoluzione dei problemi, che normalmente richiede l'accesso ai singoli componenti, nel caso QFabric, la componente richiesta di accesso di comando che svela il mondo davvero interessante dietro la tenda.
ip @ test> Entra componente richiesta?
Completamenti possibili:
  <node-name> nome Inventario per il nodo remoto
  DRE-0 di diagnostica del motore di routing
  IC-Left/RE0 Interconnect dispositivo di scheda di controllo
  IC-Left/RE1 Interconnect dispositivo di scheda di controllo
  IC-Right/RE0 Interconnect dispositivo di scheda di controllo
  IC-Right/RE1 Interconnect dispositivo di scheda di controllo
  FC-0 Tessuto di controllo
  FC-1 tessuto di controllo
  FM-0 Fabric Manager
  NW-NG-0 Nodo gruppo
  R2-19-Node0 nodo del dispositivo
  R2-19-nodo 1 nodo del dispositivo
  R2-7-Node4 nodo del dispositivo
  R2-7-Node5 nodo del dispositivo
  R3-12-Node6 nodo del dispositivo
  R3-12-Node7 nodo del dispositivo
  R3-19-nodo 2 nodo del dispositivo
  R3-19-Node3 nodo del dispositivo
  RSNG01 Nodo gruppo
  RSNG02 Nodo gruppo
I nomi delle persone fisiche (QF / Nodi, QF / Collegamenti) potrebbe essere o il loro numero di serie (impostazione predefinita) o configurabili dall'utente nomi (consigliato).
Come si può vedere, è possibile accedere ai singoli dispositivi fisici, gruppi di nodi e componenti virtuali come i controlli in tessuto e Fabric Manager. Questi componenti virtuali eseguiti su QF / Amministrazione - caselle di CentOS in esecuzione KVM (è possibile accedere al QF / Direttore shell di Linux e vedere le macchine virtuali con ps-elf).
Ogni QF / Director è in esecuzione una serie di servizi comuni, tra cui database (MySQL), DHCP, FTP, NTP, SSH, GFS, DLM (distribuito gestore di blocco), NFS e server Syslog:
ip @ QFabric> mostra tessuto amministrazione inventario direttore del gruppo di stato 
Stato gruppo Direttore sab 25 ago 2012 09:52:08 PDT

 Membri di stato Ruolo Mgmt Indirizzo CPU virtuali di memoria liberare tempo
 -------------------------------------------------- ---------------
 DG0 on line maestro xxxxxxxxxxxx 10% 17642780k 4 3 giorni, ore 16:23
 DG1 backup online xxxxxxxxxxxx 6% 20509268k 3 3 giorni, ore 16:13

 Iscritto ID dispositivo / Stato Alias ​​Ruolo
 --------------------------------------
 DG0 xxxxxxxxxxxxxxxx on line maestro   

  Master Service
  ---------------
  Database Server on line    
  Load Balancer Direttore on-line    
  QFabric partizione online Indirizzo    

  Direttore Gruppo Managed Services
  -------------------------------
  Il file condiviso in linea di sistema    
  Network File System on-line    
  Virtual Machine Server on line    
  Load Balancer / DHCP on-line    

  Stato unità rigido
  ----------------
  Volume ID: ottimale 4    
  Fisica ID: 1 on-line     
  Fisico ID: 0 on-line     
  SCSI ID: 1 100%       
  SCSI ID: 0 100%       

  % Disponibilità Dimensione Usato Usato Montato su 
  ----------------------------
  395g 6.3g 423G 2% /          
  99M 20M 75M 21% / boot      
  91 octies 93g 2.0G 3% / pbData    

  Direttore del Gruppo Processi
  ------------------------
  Direttore responsabile del gruppo on-line    
  Partition Manager on-line    
  Mirroring software on-line    
  Shared File System master on line    
  Secure Shell di processo on-line    
  Network File System on-line    
  DHCP Server master on line Master                           
  FTP Server on line    
  Syslog on-line    
  Gestione on-line Distributed    
  Trap SNMP in linea Forwarder    
  SNMP di processo on-line    
  Management Platform on-line    
[... resto soppresso ...]

Ed ecco - è effettivamente in esecuzione BGP interno

Dopo l'accesso in una delle macchine di controllo del tessuto virtuali, è possibile eseguire la mostra tessuto bgp sintesi di comando, che indica chiaramente il controllo piano protocollo di dietro le quinte, è multi-protocollo BGP esegue numerose famiglie di indirizzi.Ogni VM controllo tessuto scorre BGP con tutti i server o nodi di rete (non QF individuale / nodi) e con tutti i QF / Collegamenti.
QFabric-admin @ FC-0> show bgp tessuto Riassunto | no-more 
Gruppi: 2 Peers: 6 peers di Down: 0
Coetanei non configurati: 5
Tabella Percorsi Tot. Act Percorsi soppresso Stato Damp Storia attesa
bgp.l3vpn.0          
                      42 18 0 0 0 0
Peer AS InPkt OutPkt Flaps OUTQ Ultima Up / Stato Dwn | # Attiva / ricevute / Accettato / smorzato ...
128.0.128.4 100 10517 10602 0 0 3d 06:43:58 Establ
  bgp.l3vpn.0: 17/17/17/0
  bgp.rtarget.0: 28/31/31/0
  bgp.fabricvpn.0: 28/28/28/0
  bgp.bridgevpn.0: 8/8/8/0
  default.inet.0: 17/17/17/0
  default.fabric.0: 19/19/19/0
128.0.128.8 100 10594 10593 0 0 3d 06:44:06 Establ
  bgp.l3vpn.0: 0/18/18/0
  bgp.rtarget.0: 1/32/32/0
  bgp.fabricvpn.0: 0/103/103/0
  bgp.bridgevpn.0: 0/9/9/0
  default.inet.0: 0/18/18/0
  default.fabric.0: 0/91/91/0
128.0.130.4 100 10466 10552 0 0 3d 06:35:42 Establ
  bgp.rtarget.0: 0/4/4/0
  bgp.fabricvpn.0: 34/34/34/0
  bgp.bridgevpn.0: 0/0/0/0
  default.fabric.0: 34/34/34/0
128.0.130.10 100 9751 9636 0 0 3d 01:04:34 Establ
  bgp.rtarget.0: 0/4/4/0
  bgp.fabricvpn.0: 34/34/34/0
  bgp.bridgevpn.0: 0/0/0/0
  default.fabric.0: 34/34/34/0
128.0.130.24 100 10432 10547 0 0 3d 06:18:09 Establ
  bgp.l3vpn.0: 1/7/7/0
  bgp.rtarget.0: 0/7/7/0
  bgp.fabricvpn.0: 7/7/7/0
  bgp.bridgevpn.0: 1/1/1/0
  default.inet.0: 1/7/7/0
  default.fabric.0: 4/4/4/0
128.0.130.26 100 10410 10545 0 0 3d 06:19:11 Establ
  bgp.l3vpn.0: 0/0/0/0
  bgp.rtarget.0: 0/4/4/0
  bgp.fabricvpn.0: 0/0/0/0
  bgp.bridgevpn.0: 0/0/0/0
Qualsiasi altro nodo (esempio: QF / Interconnect), ha due sessioni BGP con VM tessuto sia di controllo:
QFabric-admin @ IC-sinistra> show bgp sintesi tessuto 
Gruppi: 1 Peers: 2 peers di Down: 0
Peer AS InPkt OutPkt Flaps OUTQ Ultima Up / Stato Dwn | # Attiva / ricevute / Accettato / smorzato ...
128.0.128.6 100 9663 9775 0 0 3d 01:16:27 Establ
  bgp.rtarget.0: 28/32/32/0
  bgp.fabricvpn.0: 61/61/61/0
  bgp.bridgevpn.0: 0/0/0/0
  default.fabric.0: 61/61/61/0
128.0.128.8 100 9667 9773 0 0 3d 01:16:23 Establ
  bgp.rtarget.0: 0/32/32/0
  bgp.fabricvpn.0: 0/61/61/0
  bgp.bridgevpn.0: 0/0/0/0
  default.fabric.0: 0/61/61/0
Nodi di Edge utilizzare sei MP-BGP famiglie di indirizzi (compresi default.inet.0 e default.fabric.0), QF / Collegamenti hanno solo quattro.
Il tessuto di controllo macchine virtuali agiscono come riflettori rotte BGP ( esattamente come avevo previsto ). Si può facilmente verificare che controllando ogni singola voce BGP su uno dei gruppi di nodi - vedrete il Creatore e Cluster Lista attributi BGP:
65534:1:192.168.13.37 / 32 (2 ingressi, 1 annunciato)
        * BGP Preferenze: 170/-101
                Percorso Distinguisher: 65534:1
                Hop successivo Tipo: Indiretta
                Indirizzo: 0x964f49c
                Next-hop conteggio di riferimento: 6
                Fonte: 128.0.128.6
                Hop successivo Tipo: Router, Prossimo Indice hop: 131070
                Prossimo hop: 128.0.130.24 via dcfabric.0, selezionati
                Etichetta operazione: PFE Id 7 Port ID 55
                Etichetta TTL azione: PFE Id 7 Port ID 55
                Session ID: 0x0
                Prossimo hop: 128.0.130.24 via dcfabric.0
                Etichetta operazione: PFE Id Id 8 Port 55
                Etichetta TTL azione: PFE Id Id 8 Port 55
                Session ID: 0x0
                Protocollo successivo hop: 128.0.130.24:49160 (NE_PORT)
                Livello 3 Etichetta tessuto 5
                Composito prossimo hop: 964f440 1738 ID sessione INH: 0x0
                Indiretto prossimo hop: 92c8d00 131.072 ID sessione INH: 0x0
                Stato: <Active Int <esto
                Locali come: 100 Peer AS: 100
                Età: 3d 06:54:40 Metric2: 0 
                Convalida dello Stato: non verificato 
                Compito: BGP_100.128.0.128.6 33035
                Annuncio (1 bit): 0-Risolvere Tree 1 
                AS percorso: lista Cluster I (Originator): 0.0.0.1
                AS percorso: ID Originator: 128.0.130.24
                Comunità: target: 65534:117440513 (L3: 1)
                Importazione Accettato
                Timestamp: 0x116
                Bandiere percorso: arp
                Tipo di percorso: Host
                Percorso protocollo: arp
                L2domain: 5
                SNPA contare: 1, lunghezza SNPA: 8
                SNPA Tipo: Elemento di rete porta SNPA
                NE Port ID: 49160
                Localpref: 100
                Router ID: 128.0.128.6
                Tabelle secondarie: default.inet.0
                Compositi hop successivi: 1
                        Protocollo successivo hop: 128.0.130.24:49160 (NE_PORT)
                        Livello 3 Etichetta tessuto 5
                        Composito prossimo hop: 964f440 1738 ID sessione INH: 0x0
                        Indiretto prossimo hop: 92c8d00 131.072 ID sessione INH: 0x0
                        Indiretti luppolo inoltro prossimi percorso: 2
                                Tipo di salto successivo: Router
                                Prossimo hop: 128.0.130.24 via dcfabric.0
                                Session ID: 0x0
                                Prossimo hop: 128.0.130.24 via dcfabric.0
                                Session ID: 0x0

Indirizzamento

Piano di controllo QFabric utilizza localmente amministrati indirizzi MAC e IP 128.0.0.0/16 blocco di indirizzi. Potete vedere tutti gli indirizzi MAC e IP con la show arp comando eseguito su uno qualsiasi dei componenti interni. Le BME interfacce sono le interfacce di controllo aereo, la vlan interfaccia è un utente-interfaccia fronte SVI.
QFabric-admin @ NW-NG-0> show arp 
Indirizzo MAC Indirizzo Nome interfaccia Bandiere
00:13: dc: ff: 72:01 10.73.2.9 10.73.2.9 vlan.501 nessuno
02:00:00:00:40:01 128.0.0.1 128.0.0.1 permanente bme0.2
02:00:00:00:40:02 128.0.0.2 128.0.0.2 permanente bme0.2
02:00:00:00:40:05 128.0.0.4 128.0.0.4 permanente bme0.0
02:00:00:00:40:05 128.0.0.5 128.0.0.5 permanente bme0.1
02:00:00:00:40:05 128.0.0.5 128.0.0.5 permanente bme0.2
02:00:00:00:40:05 128.0.0.6 128.0.0.6 permanente bme0.0
02:00:00:00:40:07 128.0.0.7 128.0.0.7 permanente bme0.1
02:00:00:00:40:07 128.0.0.7 128.0.0.7 permanente bme0.2
02:00:00:00:40:08 128.0.0.8 128.0.0.8 permanente bme0.1
02:00:00:00:40:08 128.0.0.8 128.0.0.8 permanente bme0.2
02:00:00:00:40:09 128.0.0.9 128.0.0.9 permanente bme0.1
02:00:00:00:40:09 128.0.0.9 128.0.0.9 permanente bme0.2
[... resto soppresso ...]

Guarda mamma! Ci sono le etichette!

Nel mio post sul blog avevo previsto QFabric usi MPLS internamente. E 'impossibile capire senza uno sniffer di 40 Gbps se pila etichetta MPLS è il formato di incapsulamento esatto QFabric sta usando, ma sembra sicuro come MPLS dall'esterno.
Il dcfabric interfaccia utilizza MPLS come uno dei protocolli:
QFabric-admin @ RSNG01> show interfaces dcfabric.0 
  Interfaccia logica dcfabric.0 (Indice 64) (SNMP ifIndex 1214251262) 
    Bandiere: SNMP-Traps incapsulamento: ENET2
    Pacchetti di ingresso: 0 
    Pacchetti di uscita: 0
    Protocollo inet, MTU: 1558
      Bandiere: Is-primaria
    Protocollo MPLS, MTU: 1546, etichette massimo: 3
      Bandiere: Is-primaria
    Protocollo eth-switch, MTU: 0
      Bandiere: Is-primaria
È anche possibile vedere MPLS-come le etichette in numerose voci BGP, ad esempio nelbridgevpn famiglia di indirizzi ...
. 65534:1:5 c8: e2: c3: 01:78:8 f/144               
         * [BGP/170] 1w3d 15:28:00, localpref 100
            AS percorso: I, la convalida dello stato: non verificato
            128.0.128.4 per via dcfabric.0, Push 1730, Push 1, Push 55 (in alto)
          > Per 128.0.128.4 via dcfabric.0, Push 1730, spinta 2, push 55 (in alto)
          [BGP/170] 1w3d 15:28:00, localpref 100, da 128.0.128.8
            AS percorso: I, la convalida dello stato: non verificato
            128.0.128.4 per via dcfabric.0, Push 1730, Push 1, Push 55 (in alto)
          > Per 128.0.128.4 via dcfabric.0, Push 1730, spinta 2, push 55 (in alto)
La stessa serie di tre etichette appare in una route di host che punta a un host collegato ad un altro QF / Node:
65534:1:10.73.2.9 / 32                
           * [BGP/170] 3d 12:32:09, localpref 100
              AS percorso: I, la convalida dello stato: non verificato
            > Per 128.0.128.4 via dcfabric.0, Push 5, Push 1, Push 23 (in alto)
            [BGP/170] 3d 12:32:09, localpref 100, da 128.0.128.8
              AS percorso: I, la convalida dello stato: non verificato
            > Per 128.0.128.4 via dcfabric.0, Push 5, Push 1, Push 23 (in alto)
Prefissi IP collegati direttamente alla QFabric avere una sola etichetta - probabilmente un puntatore ad una voce di tabella di inoltro IP.
65534:1:10.73.2.0 / 29                
           * [BGP/170] 3d 12:31:59, localpref 101, da 128.0.128.4
              AS percorso: I, la convalida dello stato: non verificato
            > Per 128.0.128.4:129 (NE_PORT), Layer 3 Etichetta tessuto 5
            [BGP/170] 3d 12:31:59, localpref 101, da 128.0.128.8
              AS percorso: I, la convalida dello stato: non verificato
            > Per 128.0.128.4:129 (NE_PORT), Layer 3 Etichetta tessuto 5 
D'altra parte, il routing MPLS e tabelle di inoltro sono vuote, indicando che questo non è molto probabilmente il MPLS siamo abituati.

Riassunto

Dietro le quinte, piste QFabric come ogni ben progettata rete del provider: un cluster di server centrali fornisce servizi comuni (tra cui DHCP, NFS, FTP, NTP e Syslog), BGP viene utilizzato nel piano di controllo per distribuire i prefissi dei clienti (indirizzi IP , host / ARP itinerari, indirizzi MAC) e MPLS-come incapsulamento in grado di allegare una etichetta stack ad un telaio L2 o L3 datagramma viene utilizzato nel piano di inoltro.
La vera magia del QFabric è la VM CLI, che presenta l'interno IP MPLS + simile a rete come un singolo switch, senza OpenFlow o SDN magia. Non sarebbe bello avere qualcosa di simile nelle reti del prestatore?


giovedì 6 settembre 2012

CARO VMWARE, FILTRO BPDU! = BPDU GUARD


Qualche tempo fa ho descritto la necessità di BPDU guardia hypervisor interruttori , e non a caso ha un certo numero di "è lì" tweet secondi dopo vSphere 5.1 (che include BPDU guardia ) è stato lanciato. Rickard Nobel anche fatto un magnifico lavoro di replicare il problema mio post sul blog è la descrizione e la verifica vSphere 5,1 fermate un denial-of-service BPDU attacco .
Purtroppo, BPDU filtro non è la caratteristica stessa BPDU guardia. Ecco perché.
Immaginate un felice-running semplice rete con due interruttori, due hypervisor e due VM appartenenti alla stessa VLAN:
Ora, per qualche strana ragione l'amministratore VM decide di configurare una (o GRE) tunnel VPN tra le macchine virtuali e consente di collegamento tra l'interfaccia Ethernet e il tunnel da entrambe le macchine virtuali.
Le azioni di questo tipo sono di solito causati da Monte Carlo approccio alla configurazione del dispositivo: provare ogni combinazione di GUI accessibili le caratteristiche fino a quando uno di loro sembra funzionare. Le proprietà Heisenbergian di questo approccio può essere notevolmente migliorata lanciando risultati casuali di ricerca di Google al problema.
A meno che l'amministratore VM riesce a manipolare tutta l'intelligenza integrata nella pila di protocolli VM (e ci sono sempre modi di fare che - vedi DisableSTA nel registro di Windows ), le macchine virtuali configurate come ponti avviare l'invio BPDU attraverso la loro interfaccia fisica, e qualsiasi configurato correttamente interruttore spegne la porta incriminata, impedendo un loop di inoltro ... getti e l'hypervisor host e tutte le sue macchine virtuali come un danno collaterale.
Un inquilino malintenzionato potrebbe infatti approfittare BPDU guardia per un BPDU a base di denial-of-service attack (dettagli nel post del blog Rickard Nobel ), e VMware ha deciso di evitare che mediante l'attuazione di filtro BPDU (Net.BlockGuestBPDU variabile) nel suo switch virtuale. BPDU filtro impedisce sicuramente attacchi DoS ... ma distrugge anche ogni possibilità di individuare mai un loop di inoltro.
Mentre è possibile impedire il bridging indotti cicli d'inoltro con la combinazione di filtro BPDU e rifiutare trasmette forgiati (descritto più in dettaglio nel mio post originale ), si sta ancora evitando i sintomi, non risolvere il problema. Ogni VM facendo ponte non autorizzato deve essere immediatamente scollegato dalla vSwitch - che solo potrebbe indurre il suo amministratore per correggere le impostazioni errate.
Invece, VMware purtroppo ha deciso di andare in fondo alla familiarità mai e poi mai disturbare la VM, facciamo solo finta tutto va bene via (ed è sicuramente più facile da implementare pacchetti di goccia con il valore SNAP 0x010b codice che spegnere l'interfaccia incriminata e registrare l'evento uno ).
Sommario: vSwitch BPDU filtro è un grande passo nella giusta direzione, ma abbiamo ancora bisogno di una soluzione non (BPDU Guard) un cerotto combo. Oh, e mi ha fatto ricordare che né filtro BPDU né rifiutano trasmette forgiati sono abilitate di default?


martedì 4 settembre 2012

MIDOKURA DI MIDONET: UN 2-4 SOLUZIONE DI RETE DI LIVELLO VIRTUALE


Quasi tutti sono d'accordo il modo attuale di implementazione di reti virtuali con muto hypervisor interruttori e top-of-rack trucchi vari (compresi i bordi di raccordo virtuale - EVB o 802.1Qbg - e 802.1BR ) non scala. La maggior parte delle persone che lavorano nel settore (con la notevole eccezione di alcuni fornitori di hardware occupato proteggere i loro tappeti erbosi nel gruppo di lavoro IETF NVO3 ) d'accordo anche reti virtuali in esecuzione le applicazioni sulla parte superiore del tessuto IP sono l' unico modo ragionevole per andare ... ma questo è tutto quello che al momento d'accordo.

Tradizionali reti virtuali VLAN basate attuate negli switch fisici

Le reti virtuali implementate nel hypervisor interruttori sulla parte superiore di un tessuto IP

Una breve panoramica di dove siamo

Cisco, VMware e Microsoft purtroppo ha scelto la più facile via d'uscita: VXLAN e NVGRE sono reti virtuali MAC-over-IP senza piano di controllo. Essi sostengono hanno bisogno di reti di livello 2 virtuali per supportare le applicazioni esistenti (come meraviglie del carico di Microsoft bilanciamento ), e si affidano a inondazioni (emulato con IP multicast) per costruire le remote-MAC-to-remote-IP mapping in hypervisor switch virtuali.

VXLAN architettura
Virtualizzazione Nicira La piattaforma di rete è il modo migliore - ha un piano centrale di controllo che utilizza OpenFlow per distribuire MAC-to-IP informazioni di mappatura a hypervisor individuali. La versione del loro software ho familiarità con attuate semplici strato-2 reti virtuali, che sono stati promettenti layer-3 di sostegno, ma finora non mi hanno aggiornato il loro progresso.

The Missing L3-4 problema

Sappiamo che i team di sviluppo che cercano di distribuire i loro stack applicativi sopra di reti virtuali di solito hanno bisogno di più di una singola rete virtuale (o area di protezione). Un tipico scale-out applicazione dispone di più livelli che devono essere collegati con bilanciamento del carico o firewall.

Semplificata scale-out architettura delle applicazioni
Tutti i fornitori di cui sopra sono a ballare intorno a quel requisito sostenendo si può sempre implementare la L3-7 funzionalità di cui avete bisogno con appliance software in esecuzione come macchine virtuali su di reti virtuali. Un tipico esempio di questo approccio è vShield Edge, una VM con bilanciamento del carico di base, funzionalità NAT e DHCP.

Load Balancer come apparecchio VM
Per mantenere le cose in chiaro: VMware, Cisco, Juniper e un'offerta pochi altri hypervisor a livello di firewall, il traffico passante tra le aree di protezione non deve passare attraverso un apparecchio esterno (anche se va ancora attraverso una VM se si sta utilizzando VMware vShield Zones / App ). Aprire vSwitch utilizzato da NVP Nicira potrebbe essere facilmente configurato per fornire ACL funzionalità simili, ma non so fino a che punto Nicira ottenuto nella sua attuazione.

Midokura di MidoNet: una L2-4 virtuale SDN

Un mese fa Ben Cherian lasciato un commento sul mio blog dicendo: " Il nostro prodotto,MidoNet , supporta BGP, compresi multihoming e ECMP, per l'interfacciamento MidoNet router virtuali con le reti esterne L3. "Non a caso, ho voluto saperne di più e ha rapidamente organizzato un telefonata con Dan Mihai Dimitriu , Midokura CTO. Questa è una delle diapositive hanno condiviso con me ... che mostra esattamente quello che speravo di vedere in una soluzione virtuale reti:

Tipica MidoNet virtuale della topologia di rete
Come previsto, hanno deciso di implementare reti virtuali con un tunnel GRE tra hypervisor padroni di casa. Una topologia tipica rete virtuale mappato su sottostante tessuto trasporto IP sarebbe quindi in questo modo:

MidoNet reti virtuali realizzati con materie prime
nodi di elaborazione su di un tessuto IP
Breve riassunto di quello che stanno facendo:
  • La loro soluzione virtuale reti ha Layer-2 reti virtuali che è possibile collegare insieme con lo strato-3 router virtuali.
  • Ogni porta virtuale (VM tra cui interfaccia virtuale) ha delle regole del firewall di ingresso e uscita e catene (ispirato da Linux iptables ).
  • Router virtuali supportano il bilanciamento del carico di base e funzionalità NAT.
  • Router virtuali non sono implementati come macchine virtuali - sono un concetto astratto utilizzato da hypervisor switch per calcolare il sottofondo IP hop successivo.
  • Come ci si aspetterebbe in una soluzione L3, hypervisor si risponde alle richieste ARP e DHCP locale.
  • I nodi di bordo esegue EBGP con il mondo esterno, che appare come un singolo router BGP di altoparlanti esterni.
È interessante notare, hanno deciso di andare contro corrente religione centralizzato piano di controllo , e attuato la maggior parte l'intelligenza nelle hypervisor. Usano Apri vSwitch (OVS) modulo del kernel come la piattaforma di commutazione (dimostrando la mia affermazione che OVS fornisce tutto il necessario per implementare la funzionalità L2-4), ma sostituire gli agenti OpenFlow e il controller centralizzato con il proprio software distribuito.

MidoNet pacchetto processo di trasmissione

Questo è il modo Dan e Ben spiegato un giorno nella vita di un pacchetto IP che passa attraverso la sovrapposizione MidoNet reti virtuali (non l'ho impostato per vedere come funziona davvero):
I loro spedizionieri (in esecuzione nello spazio utente su tutti gli host hypervisor) intercetta il traffico appartenente ai flussi sconosciuti (molto simile al OVS-vswitchd ), ma elaborare i pacchetti sconosciuti a livello locale invece di farli a controllore centrale OpenFlow.
L'agente di inoltro riceve un pacchetto sconosciuto avrebbe controllato le norme di sicurezza, consultare la configurazione di rete virtuale, calcolare la trasformazione richiesta di flusso (s) e uscita hop successivo, installare il flusso nel locale modulo del kernel OVS, inserire i dati di flusso in un database centrale per stateful firewall filtraggio del traffico di ritorno, e inviare il pacchetto verso il nodo di uscita incapsulato in una busta con la chiave GRE GRE indicando la porta di uscita del nodo di uscita.
Secondo Midokura, gli spedizionieri generare il più generico-specifica del flusso che possono - il bilanciamento del carico, ovviamente, richiede microflussi, semplice inoltro L2 o L3 non lo fa. Mentre il modulo del kernel supporta solo OVS microflusso-Forward, lo spedizioniere non deve ricalcolare la topologia di rete virtuale per ogni nuovo flusso.
L'interruttore di uscita OVS ha pre-installati flussi che mappa le chiavi GRE per le porte di uscita. Il pacchetto viene quindi inoltrato direttamente alla porta di destinazione senza passare attraverso lo spedizioniere sul nodo di uscita. Come in MPLS / VPN o QFabric , il nodo di ingresso esegue tutte le decisioni di inoltro, la differenza "solo" è che MidoNet viene eseguito come un insieme di interruttori software distribuiti su hardware commodity.
Traffico di ritorno asimmetrico non è più un problema, perché MidoNet utilizza database centrale di flusso per funzionalità di firewall stateful - tutti i nodi di bordo agire come un singolo firewall virtuale.
Il risultato finale: MidoNet (overlay Midokura La soluzione di rete virtuale) esegue semplici L2-4 operazioni all'interno del hypervisor, e inoltra pacchetti di flussi stabilito nella OVS kernel.
Midokura sostiene hanno raggiunto linerate (10GE) prestazioni su commodity hardware x86 ... ma naturalmente non si deve ciecamente fiducia in me o loro. Entra in contatto con Ben e test-drive la loro soluzione.