Condividi tramite


Registrazione della memoria per le operazioni su una SAN

L'opzione Windows Sockets chiama le funzioni di estensione di un provider di servizi SAN per registrare tutti i buffer di dati per l'invio e la ricezione di messaggi e per le operazioni RDMA in una rete dell'area di sistema. Queste funzioni di estensione registrano un buffer in un'area di memoria fisica da usare in un determinato socket SAN connesso a un peer remoto. Per una descrizione di queste funzioni di estensione, vedere Le estensioni SPI di Windows Sockets per san.

Registrazione di buffer di dati

L'opzione chiama la funzione di estensione WSPRegisterMemory di un provider di servizi SAN per conto di un'applicazione eseguita in un processo locale per registrare buffer di dati accessibili solo da tale processo. Gli handle del buffer restituiti da WSPRegisterMemory sono validi solo nel contesto del processo locale che ha eseguito la registrazione. L'opzione chiama WSPRegisterMemory per registrare i buffer che fungono da buffer di ricezione del messaggio in una chiamata alla funzione WSPRecv o al buffer di invio del messaggio in una chiamata alla funzione WSPSend . L'opzione chiama anche WSPRegisterMemory per registrare i buffer che fungono da buffer RDMA ricevente locale in una chiamata alla funzione di estensione WSPRdmaRead o all'origine RDMA locale in una chiamata alla funzione di estensione WSPRdmaWrite . Al termine del processo locale tramite buffer registrati con WSPRegisterMemory, l'opzione chiama la funzione di estensione WSPDeregisterMemory per rilasciare tali buffer.

L'opzione chiama la funzione di estensione WSPRegisterRdmaMemory del provider di servizi SAN per conto di un'applicazione eseguita in un processo locale per registrare buffer RDMA a cui possono accedere processi locali e remoti. I descrittori di buffer restituiti da WSPRegisterRdmaMemory sono validi solo per le operazioni di trasferimento dei dati RDMA avviate da un peer remoto nel contesto della connessione del peer al socket SAN in cui è stata eseguita la registrazione. L'opzione nella connessione peer remota usa questi buffer RDMA come destinazione in una chiamata alla funzione di estensione WSPRdmaWrite o all'origine in una chiamata alla funzione di estensione WSPRdmaRead . Al termine dei processi locali e remoti usando i buffer registrati con WSPRegisterRdmaMemory, l'opzione chiama la funzione di estensione WSPDeregisterRdmaMemory per rilasciare tali buffer.

Gestione dell'accesso alla memoria

Un provider di servizi SAN deve impedire l'accesso non autorizzato alla memoria registrata.

La memoria deve essere registrata e accessibile come segue:

La memoria registrata per l'accesso locale deve essere disponibile solo per il processo in cui l'opzione denominata WSPRegisterMemory.

È possibile accedere alla memoria registrata sia per l'accesso locale che per l'accesso remoto tramite il processo in cui l'opzione denominata WSPRegisterRdmaMemory per registrare la memoria o dal peer remoto connesso al socket SAN a cui è registrata la memoria.

La memoria deve essere accessibile solo durante la registrazione e mentre viene stabilita la connessione. Un provider di servizi SAN deve garantire che non renda inavvertitamente tale memoria accessibile ad altri processi in esecuzione nello stesso computer o in altri computer nella SAN.

La memoria registrata solo per l'accesso in lettura non deve essere disponibile per l'accesso in scrittura. La memoria registrata solo per l'accesso in scrittura non deve essere disponibile per l'accesso in lettura.

Uso della memoria registrata

L'opzione registra due aree di memoria virtualmente contigue per ogni socket TCP connesso da usare per negoziare una sessione di trasferimento dati. L'opzione usa un'area di memoria per fornire buffer di messaggi contenenti dati di invio quando si chiama la funzione WSPSend di un provider di servizi SAN. L'opzione usa l'altra area di memoria per pubblicare i buffer dei messaggi per ricevere i dati quando si chiama la funzione WSPRecv di un provider di servizi SAN.

L'opzione registra in genere i buffer RDMA solo se trasferisce i dati dell'applicazione nelle operazioni RDMA.

Prima che l'opzione chiuda un socket, l'opzione chiama le funzioni WSPDeregisterMemory o WSPDeregisterRdmaMemory di un provider di servizi SAN per rilasciare qualsiasi memoria che un'operazione di trasferimento dati in sospeso non sta attualmente utilizzando. Il provider di servizi SAN deve anche rilasciare la memoria associata alle operazioni di trasferimento dei dati in sospeso.