In una configurazione di gioco multiplayer, gli acceleratori di routing personalizzati possono essere utilizzati per ottimizzare le connessioni del giocatore instradando il traffico direttamente a specifiche istanze del server di gioco in base alla logica dell'applicazione, come i risultati dei matchmaking. Questo approccio migliora la latenza, riduce il jitter e migliora l'esperienza del giocatore sfruttando la rete privata di AWS Global Accelerator e gli indirizzi IP statici.
Esempio di utilizzo degli acceleratori di routing personalizzati nei giochi multiplayer
1. Setup di server di gioco e sottoreti
Supponiamo di avere una flotta di server di gioco in esecuzione su istanze di Amazon EC2 all'interno di una o più sottoreti VPC. Ogni istanza ospita più sessioni di gioco, ognuna in ascolto su porte diverse. Ad esempio, due istanze EC2 potrebbero essere in esecuzione nella stessa sottorete con IPS privati 10.1.1.1 e 10.1.1.2, ciascuna delle sessioni di gioco di servizio sulle porte TCP 80, 81 e 82.
2. Creare un acceleratore di routing personalizzato
Si crea un acceleratore di routing personalizzato in AWS Global Accelerator e aggiungi le pertinenti sottoreti VPC come endpoint. Definisci un intervallo di porte di ascoltatore (ad es. Da 1001 a 1050) sull'acceleratore e mappali sulla gamma di porte di destinazione (ad esempio, da 80 a 82) nelle istanze EC2. Questa mappatura consente al traffico in arrivo sulle porte 1001-1050 di essere instradate a specifiche combinazioni di porte: sui server di backend.
3. Mappatura delle porte e controllo del traffico
L'acceleratore genera una tabella di mappatura delle porte che mappa staticamente ogni porta dell'acceleratore a un indirizzo IP e porta IP EC2 specifico. Ad esempio, la porta 1001 sulle mappe dell'acceleratore a 10.1.1.1:80, porta da 1002 a 10.1.1.1:81 e così via. È possibile consentire o negare il traffico su istanze o porte specifiche, garantendo che solo i server di gioco attivi ricevano traffico.
4. Logica di matchmaking e routing
Quando un giocatore si collega, il servizio di matchmaking determina quale sessione di gioco (e quindi quale istanza e porta EC2) il giocatore dovrebbe unirsi in base a criteri come posizione, livello di abilità o disponibilità di sessione. La logica di matchmaking interroga l'API dell'acceleratore globale per recuperare la porta acceleratore che corrisponde alla sessione selezionata del server di gioco.
5. Connessione giocatore tramite acceleratore
Al giocatore viene assegnato l'indirizzo IP statico dell'acceleratore e la porta mappata (ad es. Porta 1003). Quando il giocatore si collega, l'acceleratore globale instrada il traffico sulla rete globale AWS all'istanza EC2 esatta e alla porta che ospita la sessione di gioco (ad esempio, 10.1.1.1:82). Ciò riduce la latenza evitando Internet pubblico e utilizzando percorsi di rete ottimizzati di AWS.
6. Vantaggi
-Latenza bassa e jitter ridotto: il traffico viene instradato sulla rete ad alta velocità e senza congestione di AWS.
- Scalabilità: puoi gestire migliaia di sessioni di gioco in più regioni con un singolo acceleratore.
- Tolleranza agli errori: se un server di gioco o un'endpoint di sottorete diventa malsano, il traffico può essere reindirizzato senza interruzione del giocatore.
- Flessibilità del protocollo: supporta TCP, UDP o entrambi, accogliere diversi requisiti di reti di gioco.
Riepilogo
Utilizzando il routing personalizzato AWS Global Accelerator, un gioco multiplayer può indirizzare i giocatori a specifiche istanze del server di gioco mappando le porte dell'acceleratore sugli indirizzi IP privati e le porte delle istanze EC2 nelle sottonette VPC. Il servizio di matchmaking controlla quale giocatore collega dove assegnando la porta acceleratore appropriata, consentendo un routing deterministico e a bassa latenza senza richiedere le modifiche al cliente. Questa configurazione è ideale per i giochi multiplayer globali su larga scala che necessitano di controllo a grana fine su incarichi giocatore-server e ottimizzazione delle prestazioni [2] [6] [7] [9].
Citazioni:
[1] https://docs.aws.amazon.com/global-accelerator/latest/dg/about-custom-routing-how-it-works.html
[2] https://aws.amazon.com/blogs/gametech/deploy-game-servers-with-amazon-gamelift-fleetiq-and-integrate-with-custom-routing-aws-global-accelerator/
[3] https://www.youtube.com/watch?v=yxqjyly80pc
[4] https://pages.awscloud.com/rs/112-tzm-766/images/2023_ott-od-0502-ngi_slide-deck.pdf
[5] https://coda.io/@kirtanc25/aws-r53-cf-ga/aws-global-accelerator-14
[6] https://pages.awscloud.com/rs/112-tzm-766/images/ptnr-aws-amd-gamelift-gameservers.pdf
[7] https://www.alibabacloud.com/help/en/ga/user-guide/how-custom-routing-lisners-work
[8] https://www.youtube.com/watch?v=qlaauf_zq4i
[9] https://aws.amazon.com/blogs/networking-and-content-delesy/introducing-aws-global-accelerator-custom-routing-accelerators/
[10] https://mas-bandwidth.com/the-case-for-network-accecheration-for-multiplayer---dhames/
[11] https://aws.amazon.com/blogs/gametech/modernize-game-backend-services-with-aws-global-accuterator/