Gestione delle opzioni socket e dei codici di controllo per una SAN
L'opzione Windows Sockets, insieme al provider TCP/IP, gestisce la maggior parte delle chiamate WSPGetSockOpt, WSPSetSockOpt e WSPIoctl avviate dalle applicazioni. Queste richieste in genere consentono di impostare e recuperare opzioni e parametri operativi associati al socket di un'applicazione. L'opzione in genere non inoltra queste chiamate a un provider di servizi SAN, ad eccezione di quanto descritto nelle sezioni seguenti.
Recupero delle opzioni del socket SAN
L'opzione Windows Sockets chiama la funzione WSPGetSockOpt del provider di servizi SAN e passa una delle opzioni socket seguenti per recuperare il valore corrente di tale opzione, se il provider di servizi SAN supporta tale opzione:
SO_DEBUG
I provider di servizi SAN non sono necessari per supportare questa opzione. Sono invitati, ma non necessari, a fornire informazioni di debug di output se le applicazioni impostano l'opzione SO_DEBUG.
SO_MAX_MSG_SIZE
Un provider di servizi SAN deve supportare questa opzione se il trasporto SAN sottostante è orientato ai messaggi e il trasporto limita la quantità di dati che il commutatore può inviare in una chiamata alla funzione WSPSend del provider di servizi SAN. L'opzione non passa successivamente richieste al provider di servizi SAN che superano le dimensioni restituite dal provider di servizi SAN per il valore di questa opzione.
SO_MAX_RDMA_SIZE
Un provider di servizi SAN deve supportare questa opzione se il trasporto SAN sottostante limita la quantità di dati che il commutatore può trasferire nelle chiamate alla funzione WSPRdmaRead o WSPRdmaWrite del provider di servizi SAN. L'opzione non passa successivamente le richieste di trasferimento RDMA al provider di servizi SAN che superano le dimensioni restituite dal provider di servizi SAN per il valore di questa opzione.
SO_RDMA_THRESHOLD_SIZE
Un provider di servizi SAN supporta questa opzione per indicare la preferenza per la quantità minima di dati che il commutatore può trasferire nelle chiamate alla funzione WSPRdmaRead o WSPRdmaWrite del provider di servizi SAN. Tuttavia, l'opzione può impostare la soglia effettiva su un valore diverso dal valore restituito dal provider di servizi SAN. L'opzione chiama successivamente la funzione WSPRdmaRead o WSPRdmaWrite per trasferire blocchi di dati (trasferimenti RDMA) che superano le dimensioni di questa soglia e la funzione WSPSend o WSPRecv per trasferire blocchi di dati (trasferimenti orientati ai messaggi) minori o uguali alle dimensioni di questa soglia.
SO_GROUP_ID, SO_GROUP_PRIORITY
Un provider di servizi SAN deve supportare queste opzioni se supporta la qualità del servizio (QoS). In caso contrario, l'opzione inoltra queste opzioni al provider TCP/IP, che mantiene i valori predefiniti. Un provider di servizi SAN indica che supporta QoS impostando il bit XP1_QOS_SUPPORTED nel membro dwServiceFlags della struttura WSAPROTOCOL_INFO.
Impostazione delle opzioni del socket SAN
L'opzione Windows Sockets chiama la funzione WSPSetSockOpt di un provider di servizi SAN e passa una delle opzioni socket seguenti per impostare un valore per tale opzione, se il provider di servizi SAN supporta tale opzione:
SO_DEBUG
Per una descrizione di questa opzione socket, vedere l'elenco precedente.
SO_GROUP_PRIORITY
Per una descrizione di questa opzione socket, vedere l'elenco precedente.
Accesso alle informazioni sui socket SAN
L'opzione Windows Sockets chiama la funzione WSPIoctl di un provider di servizi SAN e passa uno dei codici di controllo seguenti per impostare o recuperare informazioni per il provider di servizi SAN, se il provider di servizi SAN supporta tale codice di controllo:
SIO_GET_EXTENSION_FUNCTION_POINTER
Recupera un puntatore a una funzione di estensione che un provider di servizi SAN deve supportare. Per altre informazioni sulle funzioni di estensione, vedere Estensioni SPI di Windows Sockets per SAN. Il buffer di input della chiamata WSPIoctl contiene il GUID il cui valore identifica la funzione di estensione specificata. Il provider di servizi SAN restituisce il puntatore alla funzione richiesta nel buffer di output di WSPIoctl. La tabella seguente contiene GUID per le funzioni di estensione che un provider di servizi SAN può supportare:
Funzione di estensione | GUID |
---|---|
{C0B422F5-F58C-11d1-AD6C-00C04FA34A2D} |
|
{C0B422F6-F58C-11d1-AD6C-00C04FA34A2D} |
|
{C0B422F7-F58C-11d1-AD6C-00C04FA34A2D} |
|
{C0B422F8-F58C-11d1-AD6C-00C04FA34A2D} |
|
{C0B422F9-F58C-11d1-AD6C-00C04FA34A2D} |
|
{C0B422FA-F58C-11d1-AD6C-00C04FA34A2D} |
|
{E5DA4AF8-D824-48CD-A799-6337A98ED2AF} |
SIO_GET_QOS, SIO_GET_GROUP_QOS, SIO_SET_QOS, SIO_SET_GROUP_QOS
Un provider di servizi SAN deve supportare questi codici di controllo se supporta QoS. In caso contrario, l'opzione inoltra queste opzioni al provider TCP/IP, che mantiene i valori predefiniti. Un provider indica che supporta QoS impostando il bit XP1_QOS_SUPPORTED nel membro dwServiceFlags della struttura WSAPROTOCOL_INFO.
SIO_ADDRESS_LIST_QUERY
Recupera l'elenco di indirizzi IP locali assegnati alle schede di interfaccia di rete (NIC) che il provider di servizi SAN controlla. Il provider di servizi SAN usa una struttura di SOCKET_ADDRESS_LIST, definita come segue, per restituire l'elenco nel buffer di output di WSPIoctl:
typedef struct _SOCKET_ADDRESS_LIST {
INT iAddressCount;
SOCKET_ADDRESS Address[1];
} SOCKET_ADDRESS_LIST, FAR * LPSOCKET_ADDRESS_LIST;
I membri di questa struttura contengono le informazioni seguenti:
iAddressCount
Specifica il numero di strutture di indirizzi nell'elenco.
Indirizzo
Matrice di strutture di indirizzi IP.
L'opzione usa questo codice IOCTL internamente per decidere se usare un provider di servizi SAN specifico per eseguire le richieste di un'applicazione per stabilire connessioni o per l'ascolto delle connessioni in ingresso. Il commutatore inoltra le richieste effettive dell'applicazione per l'elenco di indirizzi IP locali al provider TCP/IP. L'opzione usa anche il provider TCP/IP per rilevare le modifiche negli elenchi di indirizzi di tutti i provider di servizi SAN. Dopo che TCP/IP segnala una modifica, il commutatore esegue una query su tutti i provider di servizi SAN per aggiornare gli elenchi.