Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przełącznik Windows Sockets używa protokołu sesji do transferu danych za pośrednictwem połączenia SIECI SAN. Jeśli przełącznik przesyła niewielką ilość danych, przesyła te dane w komunikacie kontrolnym. Każdy komunikat kontrolny składa się z nagłówka i opcjonalnego ładunku danych aplikacji. Jeśli przełącznik przesyła dużą ilość danych, transferuje te dane przy użyciu operacji RDMA.
W tej sekcji opisano sposób konfigurowania i przeprowadzania transferu danych.
Uwaga W zależności od zachowania aplikacji korzystających z przełącznika, przełącznik optymalizuje swój protokół sesji, aby zmniejszyć obciążenie związane z przesyłaniem danych aplikacji.
W tej sekcji przedstawiono również przykłady sposobu, w jaki protokół sesji przełącznika wykonuje transfery danych. Jednak te przykłady nie zawierają ostatecznych opisów tych operacji.
Konfigurowanie transferu danych
Przełącznik przydziela pulę komunikatów sterujących dla każdego podłączonego gniazda. Następnie przełącznik wykonuje wywołania funkcji WSPRegisterMemory dostawcy usług SAN w celu zarejestrowania tych buforów komunikatów w regionach pamięci fizycznej. Przełącznik używa części puli bufora do wysyłania informacji sterowania przepływem do zdalnego odpowiednika podczas wywoływania funkcji WSPSend dostawcy usług sieci SAN. Przełącznik używa innej części puli do umieszczania buforów komunikatów w celu odbierania informacji o sterowaniu przepływem od zdalnego węzła równorzędnego podczas wywoływania funkcji WSPRecv dostawcy usług SAN. Po odebraniu komunikatów sterujących przełącznik natychmiast je przetwarza. Po przetworzeniu komunikatów sterujących przełącznik wywołuje funkcję WSPRecv dostawcy usług SAN i przekazuje bufory odbiorcze, aby ponownie je umieścić, co pozwala na odbieranie dodatkowych komunikatów sterujących od zdalnego równorzędnego węzła.
Przesyłanie danych aplikacji
Rozmiar transferu danych wpływa na sposób obsługi operacji transferu danych przez przełącznik.
Jeśli aplikacja żąda wysłania niewielkiej ilości danych, przełącznik przesyła te dane zgodnie z opisem w temacie Wysyłanie pilnych danych w sieci SAN.
Jeśli aplikacja żąda wysłania dużej ilości danych, przełącznik kopiuje początkową część danych do buforu komunikatu sterującego używanego do wysyłania. Nagłówek tego komunikatu sterującego zawiera informacje określające ilość danych aplikacji. Następnie przełącznik wywołuje funkcję WSPSend od dostawcy usług sieci SAN w celu wysłania tego komunikatu sterującego do zdalnego węzła gniazda sieci SAN.
Sposób ukończenia transferu danych aplikacji zależy od tego, czy dostawca usług obsługuje funkcję WSPRdmaRead .
Transfer danych do dostawcy obsługującego funkcję WSPRdmaRead
Na poniższej ilustracji przedstawiono przegląd sposobu ukończenia transferu danych aplikacji przez przełącznik, jeśli dostawca usług SAN u zdalnego partnera obsługuje funkcjonalność WSPRdmaRead. W poniższej sekwencji opisano bardziej szczegółowo przesyłanie danych aplikacji.
Aby przesyłać dane, gdy zdalny równorzędny uczestnik obsługuje WSPRdmaRead
- Przełącznik lokalny musi wywołać funkcję WSPRegisterRdmaMemory dostawcy usług SIECI SAN w celu zarejestrowania pamięci RDMA w celu uzyskania dostępu do odczytu. W takim przypadku nagłówek kontrolki buforu komunikatów identyfikuje również deskryptor pamięci RDMA, który przechowuje pozostałe dane aplikacji.
- Przełącznik w zdalnym równorzędnym następnie wywołuje WSPRdmaRead w celu przetransferowania danych aplikacji z pamięci RDMA do buforów odbiorczych, które przełącznik ten wcześniej zarejestrował, wywołując WSPRegisterMemory. Dostawca usług SIECI SAN przesyła buforowane dane w tle. Dzięki temu aplikacje, które nie inicjują więcej niż jednego żądania wysyłania w danym momencie, mogą wysłać kolejne żądanie, w czasie gdy dostawca usług sieci SAN przesyła buforowane dane.
- Przełącznik u zdalnego węzła wywołuje WSPSend, aby wysłać komunikat kontrolny do lokalnego przełącznika, informując, że transfer został zakończony.
- Przełącznik lokalny wywołuje funkcję WSPDeregisterRdmaMemory w celu zwolnienia pamięci RDMA.
- Przełącznik lokalny kończy żądanie wysyłania aplikacji. Jeśli przełącznik nie może zarejestrować pamięci dla buforów danych aplikacji lub jeśli nie można w pełni przydzielić pamięci tymczasowej, realizuje żądanie wysłania aplikacji z kodem błędu WSAENOBUFS.
Transfer danych do dostawcy, który nie obsługuje funkcji WSPRdmaRead
Na poniższej ilustracji przedstawiono przegląd sposobu, w jaki przełącznik kończy transfer danych aplikacyjnych, jeśli dostawca usług SAN u zdalnego elementu równorzędnego nie obsługuje funkcji WSPRdmaRead. W poniższej sekwencji opisano bardziej szczegółowo przesyłanie danych aplikacji.
Aby przesyłać dane, gdy zdalny element równorzędny nie obsługuje WSPRdmaRead
- Przełącznik po stronie zdalnego węzła wywołuje funkcję WSPRegisterRdmaMemory, aby zarejestrować pamięć RDMA na potrzeby dostępu do zapisu.
- Przełącznik w zdalnym węźle równorzędnym następnie wywołuje WSPSend, aby wysłać komunikat kontrolny do lokalnego przełącznika, który wskazuje lokalizację pamięci RDMA, do której lokalny przełącznik może zapisać.
- Przełącznik lokalny wywołuje funkcję WSPRdmaWrite w celu transferu danych aplikacji do pamięci RDMA. Dostawca usług SIECI SAN przesyła buforowane dane w tle. Dzięki temu aplikacje, które nie wykonują więcej niż jednej wysyłki naraz, mogą wykonać kolejne żądanie wysyłania, podczas gdy dostawca usług SAN wysyła buforowane dane.
- Przełącznik lokalny wywołuje funkcję WSPGetOverlappedResult w celu uzyskania wyników transferu. Aby uzyskać więcej informacji, zobacz Kończenie żądań transferu danych.
- Przełącznik lokalny wywołuje funkcję WSPSend w celu wysłania wiadomości sterującej do zdalnego węzła, aby wskazać, że transfer został ukończony.
- Przełącznik w zdalnym węźle wywołuje funkcję WSPDeregisterRdmaMemory w celu zwolnienia pamięci RDMA.
- Przełącznik lokalny kończy żądanie wysyłania aplikacji. Jeśli przełącznik nie może zarejestrować pamięci dla buforów danych aplikacji lub nie można przydzielić pamięci tymczasowej, zakończy żądanie wysyłania aplikacji kodem błędu WSAENOBUFS.