OpenFlow este un protocol pentru gestionarea procesului de procesare a datelor transmise printr- o rețea de transmisie a datelor de către routere și comutatoare care implementează tehnologia de rețea definită de software .
Protocolul este utilizat pentru a gestiona comutatoarele și routerele de rețea de la un dispozitiv central - un controler de rețea (de exemplu, de la un server sau chiar de la un computer personal ). Acest control înlocuiește sau completează programul încorporat care rulează pe comutatorul (routerul) care construiește o rută, creează o hartă de comutare etc. Controlerul este utilizat pentru a gestiona tabelele de flux ale comutatorului, pe baza cărora se ia decizia de a transfera pachetul primit la un anumit port al comutatorului. Astfel, în rețea se formează conexiuni directe de rețea cu întârzieri minime de transfer de date și parametrii necesari.
Versiunile de firmware care acceptă Openflow au fost dezvoltate pentru dispozitive de la mulți producători, inclusiv Extreme Networks , Juniper , Cisco , HP , IBM , NEC , MikroTik . [unu]
Calea datelor ( datapath ) constă dintr-un tabel de flux și acțiuni atribuite fiecărei intrări din tabel. Tabelele în sine se pot referi atât la Ethernet (sau la alte protocoale de nivel de legătură), cât și la protocoale de nivel superior (IP, TCP). Lista exactă de acțiuni poate varia, dar cele principale sunt: redirecționarea (redirecționarea unui fragment de date - un pachet, un cadru - către un port dat), trimiterea unui fragment de date către controlor printr-un canal securizat pentru cercetări ulterioare, eliminarea unui fragment de date (scădere). Pentru dispozitivele care combină fluxul deschis și procesarea normală a pachetelor prin intermediul firmware-ului dispozitivului, se adaugă un al patrulea tip de acțiune: procesarea unui fragment de date prin mijloace convenționale. Hardware-ul care acceptă aceste patru acțiuni sunt dispozitivele de tip 0 .
Un dispozitiv OpenFlow este format din cel puțin trei componente:
Fiecare intrare din tabelul de flux are trei câmpuri: un antet PDU (fragment de date), care vă permite să determinați corespondența PDU-ului cu fluxul, acțiunea și câmpul cu statistici (numărul de octeți și PDU corespunzător fluxului). , timpul de tranzit al ultimului PDU corespunzător fluxului).
Antetul poate consta din mai multe câmpuri de niveluri diferite (de exemplu, adrese MAC sursă și destinație, câmpuri din antetul pachetului IP, câmpuri din antetul segmentului TCP). Trebuie remarcat faptul că versiunea curentă a protocolului [2] nu acceptă verificarea, de exemplu, a steagului SYN din antetul segmentului TCP. Fiecare câmp poate avea o valoare specială ( asterisc ) care se potrivește cu orice valoare a câmpului corespunzător din PDU. [3]
Sunt planificate dispozitive de tip 1 , care vor oferi traducerea adreselor de rețea , suport pentru clase și priorități, dar specificațiile lor nu au fost încă determinate.
Controlerele asigură completarea tabelului de flux, primirea pachetelor printr-un canal securizat de la dispozitiv. Ele pot fi implementate ca un algoritm simplu care seamănă cu comportamentul unui comutator care separă pachetele prin rețele logice ( VLAN ), sau pot implementa o logică dinamică complexă care afectează fluxul de pachete pe baza unor motive externe (drepturi de acces, încărcare server, priorități de servicii). etc.).