

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# DDoProtection S avec Amazon GameLift Servers
<a name="ddos-protection-intro"></a>

Amazon GameLift ServersPlayer Gateway est un réseau basé sur des relais qui achemine le trafic UDP entre les clients de jeu et les serveurs de jeux hébergés sur. Amazon GameLift Servers La passerelle des joueurs fournit une protection DDo S proactive en validant le trafic avant qu'il n'atteigne les serveurs de jeu, en limitant le débit du trafic des joueurs, en masquant les adresses IP des serveurs de jeu au public et en fournissant des points de terminaison mis à jour lorsque les points de terminaison du relais ne fonctionnent plus correctement. Cette fonctionnalité permet de protéger vos serveurs de jeu contre les attaques volumétriques avec une latence supplémentaire négligeable.

La passerelle des joueurs nécessite que les serveurs de jeu fonctionnent sur des flottes Amazon GameLift Servers gérées EC2 ou des flottes de conteneurs basées sur Linux. Vous devez activer la passerelle pour les joueurs lors de la création de la flotte et mettre à jour votre client de jeu et votre backend de jeu pour utiliser cette fonctionnalité.

## Principaux avantages
<a name="ddos-protection-intro-benefits"></a>

La passerelle Player offre les avantages opérationnels et de sécurité suivants :
+ **Masquer les adresses IP des serveurs** de jeu — Les clients du jeu se connectent via des points de terminaison relais plutôt que directement aux serveurs de jeu, cachant ainsi les adresses de vos serveurs de jeu au public.
+ **Valider le trafic** — Tout le trafic passant par la passerelle des joueurs nécessite un jeton de passerelle des joueurs, permettant uniquement au trafic provenant de joueurs authentifiés d'atteindre vos serveurs de jeu.
+ **Remplacement dynamique des terminaux** : lorsque les points de terminaison du relais deviennent défectueux, remplace Amazon GameLift Servers rapidement les points de terminaison et fournit des points de terminaison sains mis à jour lors du prochain appel pour actualiser les informations de connexion des joueurs.
+ **Répartissez le trafic des joueurs : les points de terminaison du relais varient d'un joueur** à l'autre, ce qui réduit l'impact d'un point de terminaison défaillant sur les autres joueurs au cours de la même session de jeu.

# Comment fonctionne le portail des joueurs
<a name="ddos-protection-howitworks"></a>

La passerelle des joueurs utilise un réseau de relais pour acheminer le trafic UDP entre les clients de jeu et les serveurs de jeu. Cela protège contre les attaques DDo S en validant le trafic avant qu'il n'atteigne les serveurs de jeu, en limitant le débit du trafic des joueurs, en masquant les adresses IP des serveurs de jeu au public et en fournissant des points de terminaison mis à jour lorsque les points de terminaison du relais deviennent infonctionnels.

## Flux de trafic
<a name="ddos-protection-howitworks-traffic-flow"></a>

Lorsqu'un joueur se connecte à une session de jeu, votre backend de jeu récupère les points de terminaison du relais et un jeton de passerelle de joueur depuis l'`GetPlayerConnectionDetails`API et les envoie au client du jeu. Le client du jeu ajoute le jeton de passerelle du joueur aux paquets UDP et envoie les paquets à un point de terminaison du relais. Le réseau relais valide le jeton et achemine le trafic légitime vers le serveur de jeu. Avant la livraison, le réseau de relais supprime le jeton de passerelle du joueur afin que les serveurs de jeu reçoivent la charge utile brute du client de jeu et ne nécessitent pas de modification de code. La communication entre le serveur de jeu et le client de jeu revient via le réseau relais sans modification.

![\[Schéma d'architecture montrant le client de jeu se connectant via un réseau relais au serveur de jeu\]](http://docs.aws.amazon.com/fr_fr/gameliftservers/latest/developerguide/images/player_gateway_architecture.png)


## Concepts de base
<a name="ddos-protection-howitworks-components"></a>

### Points de terminaison du relais
<a name="ddos-protection-howitworks-endpoints"></a>

Les points de terminaison du relais sont des combinaisons d'adresses IP et de ports que les clients du jeu utilisent pour envoyer du trafic via la passerelle des joueurs. Chaque joueur reçoit plusieurs points de terminaison qui varient d'un joueur à l'autre afin de répartir le trafic et de réduire l'impact des attaques sur les autres joueurs au cours d'une même session de jeu.

![\[Schéma montrant plusieurs joueurs recevant différents points de terminaison de relais pour les mêmes sessions de jeu\]](http://docs.aws.amazon.com/fr_fr/gameliftservers/latest/developerguide/images/player_gateway_relay_endpoints.png)


### Jetons de passerelle pour les joueurs
<a name="ddos-protection-howitworks-tokens"></a>

Les jetons Player Gateway sont des ensembles d'octets cryptés qui autorisent un joueur à envoyer du trafic vers une session de jeu via Player Gateway. L'`GetPlayerConnectionDetails`API renvoie les jetons sous forme de chaînes codées en base64. Les clients du jeu doivent ajouter le jeton de passerelle du joueur à chaque paquet UDP. Le réseau relais valide les jetons et rejette les paquets contenant des jetons non valides ou manquants.

**Important**  
Les jetons de passerelle pour les joueurs ne doivent pas être chiffrés et doivent apparaître au début de chaque paquet UDP envoyé par le client du jeu. Si votre jeu chiffre les charges utiles, ajoutez le jeton de passerelle non modifié pour les joueurs après avoir chiffré les données du jeu.

Les jetons de passerelle pour les joueurs restent valides pendant au moins 3 minutes. Nous recommandons d'actualiser les jetons toutes les 60 secondes afin de garantir que les joueurs reçoivent des points de terminaison mis à jour lorsque les points de terminaison du relais ne fonctionnent plus correctement.

### GetPlayerConnectionDetails API
<a name="ddos-protection-howitworks-api"></a>

Le backend de votre jeu appelle l'`GetPlayerConnectionDetails`API pour récupérer les informations de connexion des joueurs participant à une session de jeu. L'API renvoie soit les points de terminaison du relais et les jetons de passerelle pour les joueurs, soit renvoie à l'adresse IP et au port du serveur de jeu pour une connexion directe. Votre client de jeu doit être conçu pour gérer les deux types de connexion. Pour recevoir des points de terminaison mis à jour lorsque les points de terminaison du relais ne fonctionnent plus correctement, appelez cette API régulièrement tout au long de la session de jeu (recommandé toutes les 60 secondes).

Pour de plus amples informations, veuillez consulter [GetPlayerConnectionDetails API](ddos-protection-integrate.md#ddos-protection-integrate-backend-api).

## Passerelle de surveillance des joueurs
<a name="ddos-protection-howitworks-monitoring"></a>

Player Gateway publie des statistiques sur Amazon pour vous aider CloudWatch à surveiller les modèles de trafic réseau, à identifier les attaques DDo S potentielles et à suivre les performances des relais. Les indicateurs incluent les paquets et les octets entrées/sortants, le trafic limité et les sessions des joueurs. Pour la liste complète des statistiques relatives à la passerelle des joueurs, consultez[DDoMesures de protection S (passerelle pour les joueurs)](monitoring-cloudwatch.md#gamelift-metrics-fleet-playergateway).

## IPv4 et IPv6 compatibilité
<a name="ddos-protection-howitworks-ipv4-ipv6"></a>

Les clients du jeu communiquent en utilisant IPv4. La passerelle des joueurs est utilisée IPv6 pour communiquer avec les serveurs de jeu. Amazon GameLift Serversgère automatiquement la traduction entre IPv4 et IPv6 en fonction de la configuration de votre flotte.

Pour plus d'informations sur la configuration de la passerelle des joueurs sur votre flotte, consultez [CreateFleet](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_CreateFleet.html#gameliftservers-CreateFleet-request-PlayerGatewayMode)ou [CreateContainerFleet](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_CreateContainerFleet.html#gameliftservers-CreateContainerFleet-request-PlayerGatewayMode). Pour plus d'informations IPv4 et d' IPv6 assistance, consultez[IPv4 et IPv6 compatibilité](ddos-protection-enable.md#ddos-protection-enable-ip-protocol).

# Activer la passerelle pour les joueurs sur les flottes
<a name="ddos-protection-enable"></a>

Lorsque vous créez une flotte, activez la passerelle des joueurs pour acheminer le trafic de jeu via des points de terminaison relais qui valident et limitent le débit du trafic UDP entrant vers vos serveurs de jeu.

## Conditions préalables
<a name="ddos-protection-enable-prerequisites"></a>

Avant d'activer Player Gateway, vérifiez les conditions suivantes :
+ **Sites pris en charge** : pour obtenir la liste des AWS sites compatibles avec Player Gateway, consultez[Amazon GameLift Serverspoints de service](gamelift-regions.md).
+ **Type de flotte** : Player Gateway prend en charge les flottes gérées EC2 basées sur Linux et les flottes de conteneurs gérés.
+ **SDK du serveur** : Player Gateway nécessite le SDK Amazon GameLift Servers du serveur 5.0 ou version ultérieure.

## Modes de passerelle pour les joueurs
<a name="ddos-protection-enable-modes"></a>

Configurez la compatibilité de la passerelle des joueurs pour votre flotte à l'aide de la `PlayerGatewayMode` propriété :

DÉSACTIVÉ (par défaut)  
Fleet n'est pas compatible avec Player Gateway.

ENABLED  
Fleet est compatible avec le portail des joueurs dans les régions où il est pris en charge. Les emplacements de flotte qui ne sont pas compatibles avec cette fonctionnalité peuvent toujours être ajoutés à la flotte, mais ils n'utiliseront pas la passerelle pour les joueurs, en utilisant directement l'adresse IP du serveur de jeu.

REQUIRED  
Fleet est compatible avec Player Gateway. Les emplacements du parc qui ne prennent pas en charge cette fonctionnalité ne peuvent pas être ajoutés au parc.

## IPv4 et IPv6 compatibilité
<a name="ddos-protection-enable-ip-protocol"></a>

Les clients du jeu doivent communiquer avec la passerelle des joueurs via IPv4. Le réseau relais de passerelle des joueurs communique avec les serveurs de jeu via IPv6. Les flottes de conteneurs gérés traduisent automatiquement le trafic IPv6 en IPv4. Pour les flottes EC2 gérées, configurez la manière dont votre flotte gère le IPv6 trafic à l'aide de la `GameServerIpProtocolSupported` propriété dans : `PlayerGatewayConfiguration`

IPv4 (par défaut)  
Votre serveur de jeu n'accepte que IPv4 le trafic entrant. Un logiciel de traduction IP léger sera installé et exécuté sur vos instances pour recevoir et transformer le IPv6 trafic entrant en IPv4.

DUAL\$1STACK  
Votre serveur de jeu est compatible avec le IPv6 trafic entrant. Le logiciel de traduction IP ne sera ni installé ni exécuté sur vos instances. Les serveurs de jeu compatibles IPv6 nativement peuvent avoir des performances légèrement supérieures.

# Intégrer une passerelle pour les joueurs dans un jeu
<a name="ddos-protection-integrate"></a>

Après avoir créé une flotte compatible avec Player Gateway, vous devez mettre à jour votre client de jeu et votre backend de jeu pour les intégrer à Player Gateway. Votre backend de jeu récupère les points de terminaison du relais et les jetons de passerelle pour les joueurs, puis les fournit aux clients du jeu. Les clients du jeu envoient tout le trafic UDP vers ces points de terminaison relais.

L'intégration suit le chemin d'appel suivant :

1. Le backend de votre jeu appelle l'`GetPlayerConnectionDetails`API pour récupérer les points de terminaison du relais et les jetons de passerelle pour chaque joueur participant à une session de jeu.

1. Votre backend de jeu envoie les points de terminaison du relais et les jetons de passerelle des joueurs au client du jeu.

1. Votre client de jeu ajoute le jeton de passerelle du joueur à tous les paquets UDP sortants et envoie les paquets aux points de terminaison du relais.

1. Le réseau de relais valide le jeton de passerelle du joueur et achemine le trafic vers votre serveur de jeu.

1. Votre serveur de jeu renvoie le trafic vers votre client de jeu via les mêmes chemins de relais.

## Intégration du backend
<a name="ddos-protection-integrate-backend"></a>

Votre backend de jeu doit appeler l'`GetPlayerConnectionDetails`API pour récupérer les points de terminaison du relais et les jetons de passerelle pour les joueurs. Le backend fournit ensuite ces informations aux clients du jeu.

### GetPlayerConnectionDetails API
<a name="ddos-protection-integrate-backend-api"></a>

L'`GetPlayerConnectionDetails`API renvoie les informations de connexion pour les joueurs participant à une session de jeu :

Points de terminaison et jetons de relais  
Lorsque la passerelle des joueurs est activée et prise en charge sur le site, renvoie :  
+ **Points de terminaison** de relais : plusieurs points de terminaison de relais (adresse IP et port) qui varient selon les joueurs
+ Jeton de **passerelle entre joueurs : jeton** que le client doit ajouter à tous les paquets UDP (valide pendant au moins 3 minutes)
+ **Expiration** — Horodatage d'expiration du jeton Player Gateway

Connexion directe  
Lorsque la passerelle des joueurs n'est pas activée ou n'est pas prise en charge sur le site, renvoie l'adresse IP et le port du serveur de jeu

Votre client de jeu doit être conçu pour gérer les deux types de connexion.

Exemple d'appel d'API :

```
// C++ example using AWS SDK
Aws::GameLift::GameLiftClient client;
Aws::GameLift::Model::GetPlayerConnectionDetailsRequest request;
request.SetGameSessionId(gameSessionId);
request.SetPlayerIds(playerIds);  // Vector of player IDs

auto outcome = client.GetPlayerConnectionDetails(request);
if (outcome.IsSuccess()) {
    auto result = outcome.GetResult();
    auto connectionDetails = result.GetPlayerConnectionDetails();
    
    // Process each player's connection details
    for (const auto& detail : connectionDetails) {
        std::string playerId = detail.GetPlayerId();
        
        // Get relay endpoints (IP address and port)
        auto endpoints = detail.GetEndpoints();
        for (const auto& endpoint : endpoints) {
            std::string ipAddress = endpoint.GetIpAddress();
            int port = endpoint.GetPort();
        }
        
        // Get player gateway token
        auto token = detail.GetPlayerGatewayToken();
        
        // Get expiration time
        auto expiration = detail.GetExpiration();
        
        // Send endpoints and token to game client
    }
}
```

Voir [GetPlayerConnectionDetails](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_GetPlayerConnectionDetails.html)la *référence de Amazon GameLift Servers l'API*.

### Actualiser les points de terminaison du relais
<a name="ddos-protection-integrate-backend-refresh"></a>

Appelez `GetPlayerConnectionDetails` régulièrement pour fournir aux joueurs des points de terminaison mis à jour lorsque les points de terminaison du relais ne fonctionnent plus correctement. Nous recommandons d'appeler l'API toutes les 60 secondes pour tous les joueurs participant à une session de jeu. Pour optimiser l'utilisation de l'API, regroupez plusieurs joueurs IDs en un seul appel d'API.

**Important**  
Les appels d'actualisation réguliers constituent le principal mécanisme permettant de fournir des points de terminaison mis à jour aux joueurs. Bien que les jetons d'accès aux joueurs restent valides pendant au moins 3 minutes, le rafraîchissement toutes les 60 secondes permet aux joueurs de recevoir régulièrement des points de terminaison mis à jour.

## Intégration du client
<a name="ddos-protection-integrate-client"></a>

Votre client de jeu doit ajouter les jetons de passerelle du joueur à tous les paquets UDP sortants et envoyer les paquets aux points de terminaison du relais fournis. Le SDK Amazon GameLift Servers client pour C\$1\$1 et Unreal Engine fournit des utilitaires pour simplifier cette intégration.

### Exigences du client
<a name="ddos-protection-integrate-client-requirements"></a>

Pour acheminer le trafic via la passerelle des joueurs, votre client de jeu doit :
+ **Ajouter les jetons de passerelle de lecteur** — Ajoutez le jeton de passerelle de joueur à tous les paquets UDP sortants. Les jetons de passerelle des joueurs ne doivent pas être chiffrés et doivent apparaître au début de chaque paquet. Les paquets sans jeton de passerelle de joueur valide seront supprimés.
+ **Envoyer aux points de terminaison du relais** : envoie tous les paquets UDP aux points de terminaison du relais fournis.
+ **Maintenir l'activité de connexion** : assurez-vous que le client du jeu envoie un paquet au serveur de jeu ou que le serveur de jeu envoie un paquet au joueur, au moins une fois toutes les 30 secondes. Cette activité permet de maintenir la connexion via le réseau relais.
+ **Gérez les mises à jour des terminaux** : acceptez les points de terminaison relais et les jetons de passerelle de joueur mis à jour depuis votre backend (recommandé toutes les 60 secondes) et passez à de nouveaux points de terminaison sans interrompre la connexion.

### SDK du client
<a name="ddos-protection-integrate-client-sdk"></a>

Le SDK Amazon GameLift Servers client pour C\$1\$1 et Unreal Engine fournit des utilitaires destinés à simplifier l'intégration de la passerelle des joueurs :
+ **Gestion des jetons** : ajoute les jetons de passerelle du joueur à tous les paquets UDP sortants.
+ **Sélection du point de terminaison** : achemine le trafic vers les points de terminaison du relais à l'aide d'un algorithme configurable.
+ **Actualisation des points de terminaison** : planifie des rappels périodiques pour récupérer les points de terminaison de relais et les jetons de passerelle des joueurs mis à jour depuis votre backend.

### algorithmes de sélection des terminaux
<a name="ddos-protection-integrate-client-algorithms"></a>

Le SDK client fournit deux algorithmes intégrés permettant de sélectionner le point de terminaison du relais à utiliser :

Algorithme de repli  
Utilise un point de terminaison jusqu'à ce qu'il devienne défectueux, puis passe à un autre point de terminaison. Idéal pour les menus, les lobbies et les jeux au tour par tour où de brèves interruptions sont acceptables. Lors du basculement d'un terminal, des paquets peuvent être perdus pendant le délai d'expiration configuré (par défaut : 2 secondes).

Algorithme de rotation prédictif  
Effectue une rotation continue entre tous les points de terminaison disponibles et prédit les défaillances avant qu'elles ne se produisent. Idéal pour les jeux en temps réel tels que les jeux de tir à la première personne et les jeux de course où la distribution régulière des paquets est essentielle. Nécessite que le serveur de jeu envoie des messages à une fréquence constante.

Vous pouvez également implémenter des algorithmes personnalisés en étendant la classe d'algorithme de base du SDK.

### Ressources du SDK client
<a name="ddos-protection-integrate-client-resources"></a>

Pour obtenir des instructions d'intégration complètes et un exemple de code, consultez les ressources suivantes :

C\$1\$1  
Un SDK client pour C\$1\$1 est disponible sur Amazon GameLift Servers le [SDK client](https://github.com/amazon-gamelift/amazon-gamelift-servers-client-sdk-for-cpp) pour C\$1\$1.

Unreal Engine  
Un plugin pour Unreal Engine est disponible sur le [SDK Amazon GameLift Servers client pour Unreal](https://github.com/amazon-gamelift-for-unreal/amazon-gamelift-servers-client-sdk-for-unreal) Engine. L'accès nécessite l'adhésion à l'organisation Epic Games le GitHub. Consultez [Unreal Engine GitHub pour plus de](https://www.unrealengine.com/en-US/ue-on-github) détails.

## Testez votre intégration
<a name="ddos-protection-integrate-testing"></a>

Avant le déploiement dans une flotte, testez l'intégration de votre passerelle joueur localement à l'aide de l'outil de test de passerelle joueur. Cet outil simule l'infrastructure du proxy UDP de la passerelle des joueurs et vous aide à vérifier que votre client de jeu ajoute correctement les jetons de passerelle des joueurs, achemine le trafic via plusieurs points de terminaison et gère la dégradation du réseau.

Pour les instructions de configuration et d'utilisation, consultez l'[application de test Player Gateway](https://github.com/amazon-gamelift/amazon-gamelift-toolkit/tree/main/player-gateway-testing-app) sur GitHub.

## Bonnes pratiques
<a name="ddos-protection-integrate-best-practices"></a>

Suivez ces bonnes pratiques lors de l'intégration de Player Gateway :
+ **Actualisez les points de terminaison toutes les 60 secondes** : appelez `GetPlayerConnectionDetails` toutes les 60 secondes pour vous assurer que les joueurs reçoivent régulièrement des points de terminaison mis à jour.
+ **Appels d'API par lots** : lorsque vous appelez `GetPlayerConnectionDetails` plusieurs joueurs au cours d'une même session de jeu, regroupez les appels afin de réduire la charge d'API.
+ **Maintenir l'activité de connexion** : assurez-vous que le trafic circule entre le client du jeu et le serveur de jeu au moins une fois toutes les 30 secondes. Il peut s'agir de l'un ou de l'autre client-to-server ou server-to-client du trafic.
+ **Gérez les mises à jour des points de terminaison avec élégance** : lorsque votre client de jeu reçoit des points de terminaison mis à jour depuis le backend, passez aux nouveaux points de terminaison sans interrompre la connexion du joueur.
+ **Choisissez le bon algorithme** : sélectionnez l'algorithme de sélection du point de terminaison qui correspond le mieux aux exigences de votre jeu. Utilisez l'algorithme de repli pour les jeux au tour par tour et l'algorithme de rotation prédictive pour les jeux en temps réel.