Internet Small Computer Systems Interface (iSCSI)
Co je Internet Small Computer System Interface
Hlavním obchodním cílem iSCSI je širší využití DAS zařízení ve struktůře IP sítě. Zpřístupnění DAS zařízení přímo z IP sítě umožňuje větší využití, jednodušší vzdálený backup, zotavení a údržbu. Dalším cílem iSCSI je zpřístupnění jiných SAN infrastruktůr, jako je například Fibre Channel, z IP sítě (stejný cíl jako u FCIP a iFCP). iSCSI umožňuje přístup k FC SAN, častěji je však používáno jako IP storage transportní protokol.
![Srovnání protokolu](Images/iscsi-fcip-ifcp-network.png)
Srovnani FCIP, iFCP a iSCSI
iSCSI definuje pravidla a funkce pro přenos a příjem SCSI-3 příkazů přes TCP/IP. Příkazy jsou zabalovány do TCP paketů. Běžně používanou sítí pro iSCSI je Gigabitový Ethernet. iSCSI protkol může běžet softwarově na standardním Gigabit Ethernetovém síťovém rozhraní (NIC) nebo může být použita hardwarová verze v podobě iSCSI host bus adapteru (HBA). Komunikace s Fibre Channel SAN je sprostředkována iSCSI-to-Fibre Channel bránou.
iSCSI SAN jsou určeny pro malé nebo středně velké společnosti nebo pobočky velkých společností kde není výhodné zavádět Fibre Channel SAN. iSCSI SAN může být rychle vytvořena z několika lokálních a vzdálených DAS zařízení (musí se připojovat přes síťová rozhraní). Fibre Channel se pak používá až v datovém centru, do kterého se iSCSI SAN připojuje přes iSCSI-to-FC bránu. Směrování v iSCSI je zajištěno klasickýmí Gigabit Ethernetovými routery. iSCSI může být nasazeno v prostředí LAN, MAN a WAN. Při konstruování SAN je důležité oddělit tuto síť od normální sítě a zpřístupnit jí pouze přes speciální přístupové body.
Jak iSCSI funguje
Architektura SCSI je postavena na klient/server modelu. Klient vytvoří požadavek pro čtení dat ze serveru nebo zápis dat na server. Příkazy které jsou posílány klientem a zpracovávány serverem jsou zabalena do Command Descriptor Block (CDB). Server spustí příkaz, jehož vykonání je signalizováné speciálním signálem. Hlavní funkcí iSCSI je zapouzdření CDB a jeho přenos mezi iniciatorem a cílem přes TCP/IP síť.
Pravidla pro doručování datových jednotek (Protocol Data Unit - PDU) se v IP a SCSI zásadně liší. V IP mohou být datové jednotky doručovány ve špatném pořadí a zpožděně. SCSI je kanálové rozhraní, všechny jeho datové jednotky musejí být doručeny ve správném pořadí bez zpoždění mezi jednotlivými jednotkami. To klade hlavní požadavky na iSCSI. iSCSI potřebuje větší hlavičku paketu, která obsahuje další informace, která urychluje zpracování a skládání přenášených dat.
![iSCSI session](Images/iscsi-stack.png)
Komunikace přes iSCSI
SCSI vrstva vytváří/přijímá SCSI Command Descriptor Bloky (CDB), které posílá/přijímá s dalšími parametry do/z vrstvy iSCSI. iSCSI vytváří/přijímá iSCSI PDU, které předává/získává do/z jedné nebo více TCP spojení z relace mezi iniciátorem a cílem.
Komunikace mezi iniciátorem a cílem může nastat přes jedno nebo více TCP spojení. Přes TCP spojení se přenáší řídící zprávy, SCSI příkazy, parametry a iSCSI PDU. Relace je jednoznačně identifikována jejím session ID (SID), které je složeno z části iniciátora a z části příjemce. Každé TCP spojení v relaci je identifikováno connection ID (CID). I při použití více TCP spojení vidí iniciátor přes tyto spojení stále jen jedenoho příjemce, stejně jako příjemce vidí jen jednoho iniciátora. Pro jednoznačné identifikování elementů se používá Initiator Task Tag, který je globální a jednoznační v rámci celé relace. iSCSI iniciátor i příjemce musí podporovat nejméně jedno TCP spojení na relaci. Kvůli obnově po chybě by iniciátor i příjemce měli podporovat alespoň dvě TCP spojení v jedné relaci.
Pořadí iSCSI PDUiSCSI používá číslování příkazů (požadavků), stavů (odezev) a datové sekvence.
Číslování příkazů se používá pro správné seřazení doručených příkazů při posílání přes více TCP spojení. Číslo příkazu se přenáší v iSCSI PDU jako 32bitové CmdSN (Command-Sequence-Number). Speciální příkazy, které je nutné vykonat hned musejí mít nastaven immediate flag a CmdSN. Kromě příkazů pro okamžité zpracování musí cíl spouštět příkazy podle jejich CmdSN. Počítání příkazů se zahajuje ihned po prvním požadavku na připojení a vytvoření relace. Po každém příkazu který není určen k okamžitému zpracování se CmdSN zvedá o jedna. Příkaz určený k okamžitému zpracování je odeslán a zpracován přednostně, tyto příkazy proto mohou ovlivnit úlohy, které teprve budou vykonávány. U příkazů určených k okamžitému zpracování se CmdSN používá k určení jejich pozice v proudu příkazů. Číslování příkazů může být také použito k řízení toku v rámci relace.
Pro číslování odezev se používá StatSN (Status Sequence Number). StatSN je číslo, které je udržováno spojením. Stejně jako u CmdSN se jedná o 32 bitové číslo. StatSN se začíná počítat při odezvě na Login.. Odezva na login obsahuje i počáteční hodnotu StatSN.
Datové sekvence se probíhají v rámci každého příkazu nebo části příkazu. Používají se k zjištění ztráty dat. Pro číslování částí příkazu se používá DataSN.
Adresy a jmenné konverzeiSCSI zařízení jsou součástí IP sítě, takže mají síťovou entitu. Síťová entita může obsahovat jeden nebo více iSCSI uzlů. iSCSI uzel je identifikátor iSCSI zařízení přístupný ze sítě. Každý iSCSI uzel má unikátní iSCSI jméno (až 255 bytů), které je vytvářeno podle IP uzlů. Například iqn.2001-04.com.example:storage.disk2.sys1.xyz. Toto jméno může být zpracováváno DNS. iSCSI jméno poskytuje identifikaci iSCSI zařízení nezávisle na jeho fyzickém umístění. Pro řízení přenosu dat je potřeba používat kombinaci IP adres a TCP portů. iSCSI spolu s iSCSI jmény poskytuje podporu pro vytváření aliasů.
Session ManagementiSCSI relace se skládá z fáze přihlášení a Full Feature fáze, která je ukončena speciálním příkazem. Fáze přihlášení je shodná s Fibre Channel Port Loginem, používá se pro zprostředkování TCP spojení pro potřeby iSCSI. Pokud se login nepovede nebo iniciátor dostane od cíle jiné PDU než odezvu na login, je TCP spojení okamžitě ukončeno. Po úspěšném dokončení loginu nastává Full Feature fáze. Pokud je vytvořeno více než jedno TCP spojení, iSCSI požaduje, aby byla každá dvojice příkaz/odezva posílána přes stejné TCP spojení. Pokud při této transakci nastane chyba na TCP spojení, může být transakce provedena na jiném TCP spojení. Různé transakce v jedné relaci tak mohou být posílány přes různá TCP spojení. Na konci transakce pošle iniciátor spojení příjemci poslední data a ten mu potvrdí, že byly doručeny správně. K ukončení relace se používá iSCSI odhlášení. Odhlášení sebou nese informace o důvodu ukončení relace, což umožňuje uzavření problémových TCP spojení.
Při transakci mohou být posílány vyžádaná nebo nevyžádaná data. Vyžádaná data mohou být poslána pouze po odezvě Ready to Transfer (R2T). Nevyžádaná data mohou být poslána jako část iSCSI příkazu (příkaz k okamžitému zpracování) nebo jako samostatné iSCSI PDU.
Error HandlingPředevším při doručování dat přes WAN síť může často docházet k jejich chybnému přenosu. Proto musí protokol obsahovat systém pro jejich nápravu. Aby bylo možné opravovat chyby, musí iniciátor i cíl umožňovat bufferování nepotvrzených příkazů. Každý terminál musí být schopen znovu odeslat ztracené nebo poškozené Pratocol Data Unit (PDU). Hiearchie zpracování chyby :
- Identifikace problému a obnova dat na úrovni SCSI.
- Problém na TCP úrovni, může být problém se spojením, které je pak nutné obnovit.
- Problém s iSCSI relací. Pokud je obnova zajištěna na ostatních úrovních, není nutné obnovovat relaci, v opačném případě je však nutné přerušit všechny transakce, ukončit všechna TCP spojení a pak i relaci. Poté může být relace spuštěna znova od začátku.
Pro zajištění bezpečnosti na IP síti je nutné implementovat některé ochranné mechanismy autentizace. Používá se například Kerberos, Výměna privátních klíčů a iSNS.