Udostępnij przez


Obsługa opcji gniazd i kodów sterujących dla sieci SAN

Przełącznik Windows Sockets w połączeniu z dostawcą TCP/IP obsługuje większość WSPGetSockOpt, WSPSetSockOpti WSPIoctl wywołań inicjowanych przez aplikacje. Te żądania zazwyczaj służą do ustawiania i pobierania opcji oraz parametrów operacyjnych skojarzonych z gniazdem aplikacji. Przełącznik zazwyczaj nie przekazuje tych wywołań do dostawcy usług SIECI SAN, z wyjątkiem opisanych w poniższych sekcjach.

Pobieranie opcji gniazda sieci SAN

Przełącznik Windows Sockets wywołuje funkcję WSPGetSockOpt dostawcy usług SAN i przekazuje jedną z następujących opcji gniazda, aby pobrać bieżącą wartość tej opcji, jeśli dostawca usług SAN obsługuje tę opcję.

SO_DEBUG
Dostawcy usług SIECI SAN nie są zobowiązani do obsługi tej opcji. Zachęca się ich, ale nie są zobowiązane do dostarczania informacji debugowania danych wyjściowych, jeśli aplikacje ustawią opcję SO_DEBUG.

SO_MAX_MSG_SIZE
Dostawca usług SAN musi obsługiwać tę opcję, jeśli bazowy transport SAN jest zorientowany na komunikaty, a transport ogranicza ilość danych, które przełącznik może wysłać w wywołaniu do funkcji WSPSend dostawcy usług SAN. Przełącznik nie przekazuje potem żądań wysyłania do dostawcy usług SAN, które przekraczają rozmiar zwracany przez dostawcę usług SAN dla wartości tej opcji.

SO_MAX_RDMA_SIZE
Dostawca usług SAN musi obsługiwać tę opcję, jeśli podstawowy transport SAN ogranicza ilość danych, które przełącznik może przenieść w wywołaniach do dostawcy usług SIECI SAN lub WSPRdmaWrite funkcji. Przełącznik nie przekazuje żądań transferu RDMA, które przekraczają rozmiar zwracany przez dostawcę usług SAN dla wartości tej opcji.

SO_RDMA_THRESHOLD_SIZE
Dostawca usług SAN obsługuje tę opcję, aby wskazać swoją preferencję dotyczącą minimalnej ilości danych, którą przełącznik może przenieść w wywołaniach do funkcji WSPRdmaRead dostawcy usług SAN lub funkcji WSPRdmaWrite . Jednak przełącznik może ustawić rzeczywisty próg na wartość inną niż wartość zwrócona przez dostawcę usług SIECI SAN. Następnie przełącznik wywołuje funkcję WSPRdmaRead lub WSPRdmaWrite do transferu bloków danych (transferów RDMA), które przekraczają rozmiar tego progu i WSPSend lub funkcji WSPRecv do transferu bloków danych (transferów zorientowanych na komunikaty), które są mniejsze lub równe rozmiarowi tego progu.

SO_GROUP_ID, SO_GROUP_PRIORITY
Dostawca usług SIECI SAN musi obsługiwać te opcje, jeśli obsługuje jakość usług (QoS). W przeciwnym razie przełącznik przekazuje te opcje do dostawcy TCP/IP, który utrzymuje wartości domyślne. Dostawca usług SAN wskazuje, że obsługuje funkcję QoS, ustawiając bit XP1_QOS_SUPPORTED w dwServiceFlags składowej struktury WSAPROTOCOL_INFO.

Ustawianie opcji gniazda sieci SAN

Przełącznik Windows Sockets wywołuje funkcję dostawcy usług SAN WSPSetSockOpt i przekazuje jedną z następujących opcji gniazda, aby ustawić wartość dla tej opcji, jeśli dostawca usług SAN obsługuje tę opcję:

SO_DEBUG
Aby uzyskać opis tej opcji gniazda, zobacz poprzednią listę.

SO_GROUP_PRIORITY
Aby uzyskać opis tej opcji gniazda, zobacz poprzednią listę.

Uzyskiwanie dostępu do informacji o gniazdach SIECI SAN

Przełącznik Windows Sockets wywołuje funkcję WSPIoctl dostawcy usługi SAN i przekazuje jeden z następujących kodów kontrolnych w celu ustawienia lub pobrania informacji dla tego dostawcy usługi SAN, jeśli dostawca usługi SAN obsługuje ten kod kontrolny.

SIO_GET_EXTENSION_FUNCTION_POINTER
Pobiera wskaźnik do funkcji rozszerzenia, którą dostawca usług SIECI SAN musi obsługiwać. Aby uzyskać więcej informacji na temat funkcji rozszerzeń, zobacz Rozszerzenia SPI gniazd systemu Windows dla sieci SAN. Bufor wejściowy wywołania WSPIoctl zawiera identyfikator GUID, którego wartość identyfikuje określoną funkcję rozszerzenia. Dostawca usługi SAN zwraca wskaźnik do żądanej funkcji w buforze wyjściowym WSPIoctl . Poniższa tabela zawiera identyfikatory GUID dla funkcji rozszerzenia, które dostawca usług SIECI SAN może obsługiwać:

Funkcja rozszerzenia GUID (Globalnie Unikalny Identyfikator)

WSPRegisterMemory

{C0B422F5-F58C-11d1-AD6C-00C04FA34A2D}

WSPDeregisterMemory

{C0B422F6-F58C-11d1-AD6C-00C04FA34A2D}

WSPRegisterRdmaMemory

{C0B422F7-F58C-11d1-AD6C-00C04FA34A2D}

WSPDeregisterRdmaMemory

{C0B422F8-F58C-11d1-AD6C-00C04FA34A2D}

WSPRdmaWrite

{C0B422F9-F58C-11d1-AD6C-00C04FA34A2D}

WSPRdmaRead

{C0B422FA-F58C-11d1-AD6C-00C04FA34A2D}

WSPMemoryRegistrationCacheCallback

{E5DA4AF8-D824-48CD-A799-6337A98ED2AF}

SIO_GET_QOS, SIO_GET_GROUP_QOS, SIO_SET_QOS, SIO_SET_GROUP_QOS
Dostawca usług SIECI SAN musi obsługiwać te kody kontrolne, jeśli obsługuje funkcję QoS. W przeciwnym razie przełącznik przekazuje te opcje do dostawcy TCP/IP, który utrzymuje wartości domyślne. Dostawca wskazuje, że obsługuje funkcję QoS, ustawiając bit XP1_QOS_SUPPORTED w dwServiceFlags elementu członkowskiego struktury WSAPROTOCOL_INFO.

Zapytanie_lista_adresów_SIO
Pobiera listę lokalnych adresów IP przypisanych do kart interfejsu sieciowego ,które kontroluje dostawca usług SIECI SAN. Dostawca usług SAN używa struktury SOCKET_ADDRESS_LIST zdefiniowanej w sposób następujący, aby zwrócić listę w buforze wyjściowym WSPIoctl:

typedef struct _SOCKET_ADDRESS_LIST {
    INT             iAddressCount; 
    SOCKET_ADDRESS  Address[1]; 
} SOCKET_ADDRESS_LIST, FAR * LPSOCKET_ADDRESS_LIST;

Elementy członkowskie tej struktury zawierają następujące informacje:

iAddressCount
Określa liczbę struktur adresowych na liście.

Adres
Tablica struktur adresów IP.

Przełącznik używa tego kodu IOCTL wewnętrznie, aby zdecydować, czy używać danego dostawcy usług SIECI SAN do wykonywania żądań aplikacji do nawiązywania połączeń lub nasłuchiwania połączeń przychodzących. Przełącznik przekazuje rzeczywiste żądania aplikacji dla listy lokalnych adresów IP do dostawcy TCP/IP. Przełącznik używa również dostawcy TCP/IP do wykrywania zmian na listach adresów wszystkich dostawców usług SIECI SAN. Gdy protokół TCP/IP zgłosi zmianę, przełącznik wysyła zapytanie do wszystkich dostawców usług SIECI SAN w celu odświeżenia list.