SO_PORT_SCALABILITY

L'opzione SO_PORT_SCALABILITY socket consente la scalabilità delle porte locali per un socket.

SO_PORT_SCALABILITY

0x3006

L'opzione socket SO_PORT_SCALABILITY consente la scalabilità delle porte locali consentendo l'allocazione della porta ingrandita assegnando più volte porte jolly per coppie di porte indirizzi locali diverse in un computer locale.

Commenti

Nota: nelle piattaforme in cui sono supportati sia SO_PORT_SCALABILITY che SO_REUSE_UNICASTPORT, preferiscono usare SO_REUSE_UNICASTPORT.

Gli ambienti del server proxy hanno problemi di scalabilità a causa della disponibilità limitata della porta locale. Un modo per risolvere questo problema consiste nell'aggiungere altri indirizzi IP al computer. Tuttavia, per impostazione predefinita, le porte jolly usate con la funzione di associazione sono limitate alle dimensioni dell'intervallo di porte dinamiche nel computer locale (fino a 64K, ma in genere meno) indipendentemente dal numero di indirizzi IP nel computer locale. L'uso di questa operazione richiede all'applicazione di mantenere il proprio pool di porte con prenotazione della porta o usando heuristics.

Per evitare di avere ogni applicazione che richiede la scalabilità gestire il proprio pool di porte e consentire una maggiore scalabilità mantenendo la compatibilità delle applicazioni, Windows Server 2008 ha introdotto l'opzione socket SO_PORT_SCALABILITY per ottimizzare l'allocazione delle porte jolly. L'allocazione delle porte è ingrandita consentendo a un'applicazione di allocare porte jolly per ogni coppia di indirizzi e porte locali univoci. Quindi, se un computer locale ha quattro indirizzi IP, fino a 256 K porte jolly (64 porte K × 4 indirizzi IP) possono essere allocati da richieste di funzione di associazione con caratteri jolly.

Quando l'opzione socket SO_PORT_SCALABILITY viene impostata su un socket e viene eseguita una chiamata alla funzione di associazione per un indirizzo e una porta jolly specificata(il parametro name è impostato con un indirizzo specifico e una porta 0), Winsock allocherà una porta per l'indirizzo specificato. Questa allocazione sarà basata su tutti gli indirizzi IP e le porte possibili/per indirizzo nel computer locale. Se una porta con caratteri jolly viene acquisita usando l'opzione SO_PORT_SCALABILITY , tale porta non può essere allocata da un altro socket senza l'opzione SO_PORT_SCALABILITY . Questa restrizione è usata per evitare problemi di compatibilità con le versioni precedenti con applicazioni che presuppongono che non sia possibile riutilizzare una porta locale con caratteri jolly. Si noti che le applicazioni che acquisiscono un numero elevato di porte usando SO_PORT_SCALABILITY possono modificare le applicazioni legacy delle porte. Se tutte le porte temporanee disponibili sono state acquisite per almeno un indirizzo con SO_PORT_SCALABILITY , non sono possibili allocazioni di porte con caratteri jolly senza l'opzione socket.

Per avere alcun effetto, l'opzione SO_PORT_SCALABILITY deve essere impostata prima che venga chiamata la funzione di associazione . Un esempio di come verrà usato in un computer con due indirizzi è descritto di seguito:

  • La funzione socket viene chiamata da un processo per creare un socket.
  • La funzione setockopt viene chiamata per abilitare l'opzione socket SO_PORT_SCALABILITY nel socket appena creato.
  • La funzione di associazione viene chiamata per eseguire un'associazione su uno degli indirizzi IP del computer locale e sulla porta 0.
  • La funzione di connessione viene quindi chiamata per connettersi a un indirizzo IP remoto. Il socket viene usato dall'applicazione in base alle esigenze.
  • Una funzione socket viene chiamata dallo stesso processo (possibilmente un thread diverso) per creare un secondo socket.
  • La funzione setockopt viene chiamata per abilitare l'opzione socket SO_PORT_SCALABILITY nel secondo socket appena creato.
  • La funzione di associazione viene chiamata con il secondo indirizzo IP del computer locale e la porta 0. Anche se tutte le porte sono state allocate in precedenza, questa chiamata ha esito positivo perché nel computer locale sono disponibili più indirizzi IP e l'opzione socket SO_PORT_SCALABILITY è stata impostata su entrambi i socket nello stesso processo.
  • La funzione di connessione viene quindi chiamata per connettersi a un indirizzo IP remoto. Il secondo socket viene usato dall'applicazione in base alle esigenze.

Requisiti

Requisito Valore
Client minimo supportato
Nessuno supportato
Server minimo supportato
Windows Server 2008 [solo app desktop]
Intestazione
Ws2def.h

Vedi anche

getsockopt

Setsockopt

opzioni socket SOL_SOCKET

Opzioni socket