Przy podłączaniu targetu iSCSI przez inicjator opcjonalnie mamy możliwość wyboru protokołu, który ma za zadanie realizację redundancji połączeń przesyłających I/O między inicjatorem, a targetem. Większość osób ma problem z dokonaniem wyboru między MPIO, a MC/S. W tym wpisie postaram się opisać jaka jest różnica między tymi protokołami i kiedy należy je stosować.

MPIO jest wykorzystywany przez system Microsoft Windows Serwer, sterownik Microsoft MPIO umożliwia inicjatorowi zalogowanie kilku sesji do tego samego targetu i agregację duplikowanych urządzeń w jedno urządzenie. Sesje z targetem mogą być nawiązana z różnych kart sieciowych. Gdy jedna sesja zostanie rozłączona to nic się nie dzieje bo pozostałe sesje kontynuują proces przesyłania I/O wszystko to odbywa się bardzo szybko bez przerywania działania aplikacji.

MC/S (Multiple Connections per Session) to standard wprowadzony przez protokół iSCSI, który umożliwia łączenie kilku połączeń w obrębie jednej sesji w celu zwiększenia osiągów i wdrożenia funkcji „failover”.  W ten sposób I/O mogą być przesyłane przez każde połączenie TCP/IP do targetu. Gdy jedna sesja zostanie rozłączona to nic się nie dzieje bo pozostałe sesje kontynuują proces przesyłania I/O wszystko to odbywa się bardzo szybko bez przerywania działania aplikacji.

Różnica

MC/S jest zaimplementowany na poziomie iSCSI, podczas gdy MPIO jest zaimplementowany na wyższym poziomie. Dlatego , infrastruktura MPIO jest współdzielona przez pochodne SCSI włącznie z Fiber Channel, SAS, itp. MPIO jest najczęściej stosowany przez producentów systemów operacyjnych. Podstawowa różnica między nimi polega na tym, jaki poziom redundancji jest utrzymywany. MPIO tworzy kilka sesji iSCSI do jednego targetu. Między poszczególnymi sesjami jest skonfigurowana funkcjonalność „load balance” i „failover”. MC/S tworzy kilka połączeń w obrębie jednej sesji iSCSI, także wspiera funkcjonalność „load balance” i „failover”. Należy zwrócić uwagę, że połączenia iSCSI i sesje iSCSI są totalnie różne od sesji i połączeń TCP/IP. Powyższe diagramy pokazują dokładnie na czym polega różnica między MPIO i MC/S.

Poniżej cztery przykłady pokazujące kiedy wybrać MC/S, a kiedy MPIO.

1. Jeżeli wykorzystuje sprzętowy „iSCSI off-load HBA”, to jedyną opcją jest MPIO.
2. Jeżeli chcesz zastosować różne polityki „load balance” dla różnych LUN-ów, wtedy także MPIO jest najlepszym rozwiązaniem.
3. Jeżeli używasz do połączenia z targetem Windows XP, Windows Vista czy Windows 7 to MC/S jest jedyną opcją bo Microsoft obsługuje MPIO tylko w systemach Windows Serwer.
4. MC/S dostarcza lepsze osiągi w systemach Windows, ale zużywa więcej zasobów procesora niż MPIO.

Na rynku jest kilku producentów serwerów, które potrafią udostępnić target iSCSI wykorzystując oba protokoły. Przykładowo rozwiązania z kontrolerem programowym to QNAP, Synology, CTERA czy Buffalo, natomiast jak zależy nam na kontrolerze sprzętowym i natywnej obsłudze iSCSI to polecam QSAN oraz Proware.