Delen via


Socketopties en besturingscodes verwerken voor een SAN

De Windows Sockets-switch, in combinatie met de TCP/IP-provider, verwerkt de meeste WSPGetSockOpt, WSPSetSockOpten WSPIoctl aanroepen die door toepassingen worden gestart. Deze aanvragen zijn over het algemeen het instellen en ophalen van opties en operationele parameters die zijn gekoppeld aan de socket van een toepassing. De switch stuurt deze aanroepen over het algemeen niet door naar een SAN-serviceprovider, behalve zoals beschreven in de volgende secties.

SAN-socketopties ophalen

De Windows Sockets-switch roept de WSPGetSockOpt--functie van een SAN-serviceprovider aan en geeft een van de volgende socketopties door om de huidige waarde van die optie op te halen als de SAN-serviceprovider die optie ondersteunt:

SO_DEBUG
SAN-serviceproviders zijn niet vereist om deze optie te ondersteunen. Ze worden aangemoedigd, maar niet vereist, om foutopsporingsgegevens voor uitvoer op te geven als toepassingen de optie SO_DEBUG instellen.

SO_MAX_MSG_SIZE
Een SAN-serviceprovider moet deze optie ondersteunen als het onderliggende SAN-transport berichtengeoriƫnteerd is en het transport de hoeveelheid gegevens beperkt die de switch kan verzenden in een aanroep naar de WSPSend--functie van de SAN-serviceprovider. De switch geeft geen aanvragen door aan de SAN-serviceprovider die de grootte overschrijden die de SAN-serviceprovider retourneert voor de waarde van deze optie.

SO_MAX_RDMA_SIZE
Een SAN-serviceprovider moet deze optie ondersteunen als het onderliggende SAN-transport de hoeveelheid gegevens beperkt die de switch kan overdragen in aanroepen naar de WSPRdmaRead- of WSPRdmaWrite-functie van de SAN-serviceprovider. De switch geeft RDMA-overdrachtsverzoeken die groter zijn dan de grootte die de SAN-serviceprovider retourneert voor de waarde van deze optie niet door aan de SAN-serviceprovider.

SO_RDMA_THRESHOLD_SIZE
Een SAN-serviceprovider ondersteunt deze optie om de voorkeur aan te geven voor de minimale hoeveelheid gegevens die de switch kan overdragen in aanroepen naar de WSPRdmaRead- of WSPRdmaWrite-functie van de SAN-serviceprovider. De schakeloptie kan de werkelijke drempelwaarde echter instellen op een andere waarde dan de waarde die door de SAN-serviceprovider wordt geretourneerd. De schakeloptie roept vervolgens de functie WSPRdmaRead of WSPRdmaWrite functie aan om gegevensblokken (RDMA-overdrachten) over te dragen die de grootte van deze drempelwaarde overschrijden en de WSPSend- of WSPRecv--functie voor het overdragen van gegevensblokken (berichtengeoriƫnteerde overdrachten) die kleiner zijn dan of gelijk zijn aan de grootte van deze drempelwaarde.

SO_GROEP_ID, SO_GROEP_PRIORITEIT
Een SAN-serviceprovider moet deze opties ondersteunen als deze ondersteuning biedt voor quality of service (QoS). Anders worden deze opties doorgestuurd naar de TCP/IP-provider, die standaardwaarden onderhoudt. Een SAN-serviceprovider geeft aan dat deze QoS ondersteunt door de XP1_QOS_SUPPORTED bit in te stellen in de dwServiceFlags lid van de WSAPROTOCOL_INFO-structuur.

Het instellen van SAN-socketopties

De Windows Sockets-switch roept de WSPSetSockOpt--functie van een SAN-serviceprovider aan en geeft een van de volgende socketopties door om een waarde voor die optie in te stellen als de SAN-serviceprovider die optie ondersteunt:

SO_DEBUG
Zie de voorgaande lijst voor een beschrijving van deze socketoptie.

SO_GROUP_PRIORITY
Zie de voorgaande lijst voor een beschrijving van deze socketoptie.

Toegang tot SAN-socketgegevens

De Windows Sockets-switch roept de WSPIoctl--functie van een SAN-serviceprovider aan en geeft een van de volgende besturingscodes door om informatie voor die SAN-serviceprovider in te stellen of op te halen, als de SAN-serviceprovider die controlecode ondersteunt:

SIO_GET_EXTENSION_FUNCTION_POINTER
Hiermee wordt een aanwijzer opgehaald naar een extensiefunctie die een SAN-serviceprovider moet ondersteunen. Zie Windows Sockets SPI-extensies voor SAN'svoor meer informatie over extensiefuncties. De invoerbuffer van de WSPIoctl-aanroep bevat de GUID waarvan de waarde de opgegeven extensiefunctie identificeert. De SAN-serviceprovider retourneert de aanwijzer naar de aangevraagde functie in de WSPIoctluitvoerbuffer. De volgende tabel bevat GUID's voor extensiefuncties die een SAN-serviceprovider kan ondersteunen:

Extensiefunctie GUID

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
Een SAN-serviceprovider moet deze besturingscodes ondersteunen als deze QoS ondersteunt. Anders worden deze opties doorgestuurd naar de TCP/IP-provider, die standaardwaarden onderhoudt. Een provider geeft aan dat QoS wordt ondersteund door de XP1_QOS_SUPPORTED bit in te stellen in de dwServiceFlags lid van de WSAPROTOCOL_INFO-structuur.

SIO_ADDRESS_LIST_QUERY
Haalt de lijst met lokale IP-adressen op die zijn toegewezen aan de netwerkinterfacekaarten (NIC's) die door de SAN-serviceprovider worden beheerd. De SAN-serviceprovider maakt gebruik van een structuur van SOCKET_ADDRESS_LIST, die als volgt is gedefinieerd, om de lijst in de uitvoerbuffer van WSPIoctlte retourneren.

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

De leden van deze structuur bevatten de volgende informatie:

iAddressCount
Hiermee wordt het aantal adresstructuren in de lijst gespecificeerd.

Adres
Matrix van IP-adresstructuren.

De switch gebruikt deze IOCTL-code intern om te bepalen of u een bepaalde SAN-serviceprovider wilt gebruiken om aanvragen van een toepassing uit te voeren om verbindingen te maken of om te luisteren naar binnenkomende verbindingen. De switch stuurt werkelijke toepassingsaanvragen door voor de lijst met lokale IP-adressen naar de TCP/IP-provider. De switch maakt ook gebruik van de TCP/IP-provider om wijzigingen in adreslijsten te detecteren die door alle SAN-serviceproviders worden gebruikt. Nadat TCP/IP een wijziging heeft gerapporteerd, vraagt de switch alle SAN-serviceproviders om hun lijsten te vernieuwen.