

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# DDoProtección S con Amazon GameLift Servers
<a name="ddos-protection-intro"></a>

Amazon GameLift ServersPlayer Gateway es una red basada en retransmisiones que enruta el tráfico UDP entre los clientes del juego y los servidores de juegos alojados en ellos. Amazon GameLift Servers Player Gateway proporciona una protección DDo S proactiva al validar el tráfico antes de que llegue a los servidores del juego, limitar la velocidad del tráfico de los jugadores, ocultar al público las direcciones IP de los servidores de juegos y proporcionar puntos de conexión actualizados cuando los puntos de enlace de retransmisión dejan de funcionar. Esta función ayuda a proteger tus servidores de juegos de los ataques volumétricos con una latencia adicional insignificante.

Player Gateway requiere que los servidores de juegos se ejecuten en flotas EC2 Amazon GameLift Servers gestionadas o flotas de contenedores basadas en Linux. Para poder utilizar esta función, debes activar Player Gateway durante la creación de la flota y actualizar el cliente y el backend del juego.

## Ventajas principales
<a name="ddos-protection-intro-benefits"></a>

Player Gateway ofrece las siguientes ventajas operativas y de seguridad:
+ **Oculta las direcciones IP de los servidores** de juegos: los clientes de juegos se conectan a través de puntos finales de retransmisión en lugar de directamente a los servidores de juegos, lo que oculta las direcciones de tus servidores de juegos al público.
+ **Valida el tráfico**: todo el tráfico que pasa por la pasarela de jugadores requiere un token de pasarela de jugador, lo que permite que solo el tráfico de jugadores autenticados llegue a tus servidores de juegos.
+ **Sustitución dinámica de los terminales**: cuando los terminales de retransmisión no funcionan correctamente, los sustituye Amazon GameLift Servers rápidamente y proporciona los puntos finales en buen estado actualizados en la siguiente llamada para actualizar los detalles de conexión de los jugadores.
+ **Distribuye el tráfico de jugadores: los puntos finales de retransmisión varían de un jugador** a otro, lo que reduce el impacto que puede tener un único punto final de retransmisión en mal estado sobre los demás jugadores de la misma sesión de juego.

# Cómo funciona Player Gateway
<a name="ddos-protection-howitworks"></a>

Player Gateway utiliza una red de retransmisión para enrutar el tráfico UDP entre los clientes y los servidores del juego. Esto protege contra los ataques tipo DDo S validando el tráfico antes de que llegue a los servidores del juego, limitando la velocidad del tráfico de los jugadores, ocultando al público las direcciones IP de los servidores del juego y proporcionando puntos de conexión actualizados cuando los puntos de enlace de retransmisión no funcionen correctamente.

## Flujo de tráfico
<a name="ddos-protection-howitworks-traffic-flow"></a>

Cuando un jugador se conecta a una sesión de juego, el backend del juego recupera los puntos finales de retransmisión y un token de puerta de enlace del jugador de la `GetPlayerConnectionDetails` API y los envía al cliente del juego. El cliente del juego antepone el token de puerta de enlace del jugador a los paquetes UDP y los envía a un punto final de retransmisión. La red de retransmisión valida el token y enruta el tráfico legítimo al servidor del juego. Antes de la entrega, la red de retransmisión elimina el token de puerta de enlace del jugador para que los servidores del juego reciban la carga sin procesar del cliente del juego y no deberían requerir cambios de código. La comunicación entre el servidor del juego y el cliente del juego se devuelve a través de la red de retransmisión sin modificaciones.

![\[Diagrama de arquitectura que muestra el cliente del juego conectándose a través de la red de retransmisión al servidor del juego\]](http://docs.aws.amazon.com/es_es/gameliftservers/latest/developerguide/images/player_gateway_architecture.png)


## Conceptos clave
<a name="ddos-protection-howitworks-components"></a>

### Puntos finales de retransmisión
<a name="ddos-protection-howitworks-endpoints"></a>

Los puntos finales de retransmisión son combinaciones de direcciones IP y puertos que los clientes de juegos utilizan para enviar tráfico a través de la puerta de enlace del jugador. Cada jugador recibe varios puntos finales que varían de un jugador a otro para distribuir el tráfico y reducir el impacto de los ataques sobre otros jugadores durante la misma sesión de juego.

![\[Diagrama que muestra a varios jugadores recibiendo diferentes puntos finales de relevo en las mismas sesiones de juego\]](http://docs.aws.amazon.com/es_es/gameliftservers/latest/developerguide/images/player_gateway_relay_endpoints.png)


### Tokens de entrada para jugadores
<a name="ddos-protection-howitworks-tokens"></a>

Los tokens de pasarela de jugador son conjuntos de bytes cifrados que autorizan a un jugador a enviar tráfico a una sesión de juego a través de la pasarela del jugador. La `GetPlayerConnectionDetails` API devuelve los tokens como cadenas codificadas en base64. Los clientes del juego deben anteponer el token de puerta de enlace del jugador a cada paquete UDP. La red de retransmisión valida los tokens y rechaza los paquetes con tokens no válidos o faltantes.

**importante**  
Las fichas de entrada de los jugadores no deben estar cifradas y deben aparecer al principio de cada paquete UDP enviado por el cliente del juego. Si tu juego cifra las cargas útiles, antepone el token de puerta de enlace del jugador que no haya sido modificado después de cifrar los datos del juego.

Los tokens Player Gateway siguen siendo válidos durante al menos 3 minutos. Recomendamos actualizar las fichas cada 60 segundos para garantizar que los jugadores reciban los puntos finales actualizados cuando los puntos finales de los relevos dejen de funcionar.

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

El backend del juego llama a la `GetPlayerConnectionDetails` API para recuperar los detalles de conexión de los jugadores en una sesión de juego. La API devuelve los puntos de conexión de retransmisión y las fichas de acceso de los jugadores, o recurre a la dirección IP y al puerto del servidor del juego para establecer una conexión directa. El cliente del juego debe estar diseñado para gestionar ambos tipos de conexión. Para recibir puntos finales actualizados cuando los puntos finales de retransmisión no funcionen correctamente, llama a esta API periódicamente durante la sesión de juego (se recomienda cada 60 segundos).

Para obtener más información, consulte [GetPlayerConnectionDetails API](ddos-protection-integrate.md#ddos-protection-integrate-backend-api).

## Supervisar la pasarela del jugador
<a name="ddos-protection-howitworks-monitoring"></a>

Player Gateway publica métricas en Amazon para ayudarte CloudWatch a monitorizar los patrones de tráfico de la red, identificar posibles ataques DDo S y realizar un seguimiento del rendimiento de las retransmisiones. Las métricas incluyen la entrada y salida de paquetes y bytes, el tráfico limitado y las sesiones de los jugadores. Para ver la lista completa de las métricas de las pasarelas de jugadores, consulte. [DDoMétricas de protección S (puerta de entrada al jugador)](monitoring-cloudwatch.md#gamelift-metrics-fleet-playergateway)

## IPv4 y IPv6 compatibilidad
<a name="ddos-protection-howitworks-ipv4-ipv6"></a>

Los clientes del juego se comunican mediante IPv4. Player Gateway utiliza IPv6 para comunicarse con los servidores del juego. Amazon GameLift Serversgestiona automáticamente la traducción entre IPv4 y en IPv6 función de la configuración de tu flota.

Para obtener más información sobre cómo configurar Player Gateway en su flota, consulte [CreateFleet](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_CreateFleet.html#gameliftservers-CreateFleet-request-PlayerGatewayMode)o [CreateContainerFleet](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_CreateContainerFleet.html#gameliftservers-CreateContainerFleet-request-PlayerGatewayMode). Para obtener más información IPv4 y IPv6 asistencia, consulte[IPv4 y IPv6 compatibilidad](ddos-protection-enable.md#ddos-protection-enable-ip-protocol).

# Habilitar la puerta de enlace de jugadores en las flotas
<a name="ddos-protection-enable"></a>

Activa la pasarela de jugadores al crear una flota para enrutar el tráfico del juego a través de puntos finales de retransmisión que validan y limitan la velocidad del tráfico UDP entrante a tus servidores de juegos.

## Requisitos previos
<a name="ddos-protection-enable-prerequisites"></a>

Antes de activar Player Gateway, comprueba los siguientes requisitos:
+ **Ubicaciones compatibles**: para ver una lista de AWS ubicaciones compatibles con Player Gateway, consulta[Ubicaciones de servicio de Amazon GameLift Servers](gamelift-regions.md).
+ **Tipo de flota**: Player Gateway es compatible con flotas de EC2 gestionadas basadas en Linux y con flotas de contenedores gestionadas.
+ **SDK de servidor: Player Gateway requiere Amazon GameLift Servers el SDK** de servidor 5.0 o una versión posterior.

## Modos Player Gateway
<a name="ddos-protection-enable-modes"></a>

Configura la compatibilidad de las pasarelas de jugadores para tu flota mediante la siguiente `PlayerGatewayMode` propiedad:

DESACTIVADO (predeterminado)  
Fleet no es compatible con Player Gateway.

ENABLED  
Fleet es compatible con Player Gateway en los lugares en los que sea compatible. Las ubicaciones de la flota que no admitan esta función se pueden añadir a la flota, pero no utilizarán la puerta de enlace del jugador, sino que utilizarán directamente la dirección IP del servidor del juego.

REQUIRED  
Fleet es compatible con Player Gateway. Las ubicaciones de la flota que no admitan esta función no se pueden añadir a la flota.

## IPv4 y IPv6 compatibilidad
<a name="ddos-protection-enable-ip-protocol"></a>

Los clientes del juego deben comunicarse con la pasarela del jugador a través de IPv4. La red de retransmisión de la puerta de enlace del jugador se comunica con los servidores del juego mediante IPv6. Las flotas de contenedores gestionadas traducen automáticamente el tráfico de IPv6 a IPv4. En el caso de las flotas de EC2 gestionadas, configure la forma en que su flota gestiona el IPv6 tráfico mediante la propiedad de: `GameServerIpProtocolSupported` `PlayerGatewayConfiguration`

IPv4 (predeterminado)  
Tu servidor de juegos solo acepta IPv4 tráfico entrante. Se instalará y ejecutará un software ligero de traducción de IP en sus instancias para recibir y transformar el IPv6 tráfico entrante en él IPv4.

DUAL\$1STACK  
Tu servidor de juegos es compatible con el tráfico entrante. IPv6 El software de traducción de IP no se instalará ni ejecutará en sus instancias. Los servidores de juegos compatibles de IPv6 forma nativa pueden tener un rendimiento ligeramente superior.

# Integre la puerta de enlace del jugador en un juego
<a name="ddos-protection-integrate"></a>

Tras crear una flota compatible con Player Gateway, debes actualizar el cliente y el backend del juego para integrarlos con Player Gateway. El backend del juego recupera los puntos finales de retransmisión y las fichas de pasarela de los jugadores y, a continuación, se los proporciona a los clientes del juego. Los clientes del juego envían todo el tráfico UDP a estos puntos finales de retransmisión.

La integración sigue esta ruta de llamadas:

1. El backend del juego llama a la `GetPlayerConnectionDetails` API para recuperar los puntos finales de retransmisión y las fichas de acceso a los jugadores de cada jugador de una sesión de juego.

1. El backend del juego envía los puntos finales de retransmisión y las fichas de entrada de los jugadores al cliente del juego.

1. El cliente del juego antepone el token de puerta de enlace del jugador a todos los paquetes UDP salientes y los envía a los puntos finales de retransmisión.

1. La red de retransmisión valida el token de puerta de enlace del jugador y enruta el tráfico a tu servidor de juegos.

1. El servidor del juego devuelve el tráfico al cliente del juego a través de las mismas rutas de retransmisión.

## Integración de back-end
<a name="ddos-protection-integrate-backend"></a>

El backend del juego debe llamar a la `GetPlayerConnectionDetails` API para recuperar los puntos finales de retransmisión y las fichas de acceso a los jugadores. A continuación, el backend proporciona esta información a los clientes del juego.

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

La `GetPlayerConnectionDetails` API devuelve los detalles de conexión de los jugadores en una sesión de juego:

Retransmita puntos finales y fichas  
Cuando la puerta de enlace del jugador está habilitada y es compatible con la ubicación, devuelve:  
+ **Puntos finales de retransmisión: varios puntos** finales de retransmisión (dirección IP y puerto) que varían de un jugador a otro
+ **Token de puerta de enlace del jugador**: token que el cliente debe anteponer a todos los paquetes UDP (válido durante al menos 3 minutos)
+ **Vencimiento: fecha y hora de caducidad** del token Player Gateway

Conexión directa  
Si la puerta de enlace del jugador no está habilitada o no es compatible con la ubicación, devuelve la dirección IP y el puerto del servidor del juego

El cliente del juego debe estar diseñado para gestionar ambos tipos de conexión.

Ejemplo de llamada a la 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
    }
}
```

Consulte [GetPlayerConnectionDetails](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_GetPlayerConnectionDetails.html)en la *referencia Amazon GameLift Servers de la API*.

### Actualice los puntos finales de retransmisión
<a name="ddos-protection-integrate-backend-refresh"></a>

Llama `GetPlayerConnectionDetails` periódicamente para proporcionar a los jugadores puntos finales actualizados cuando los puntos finales de los relevos no funcionen correctamente. Recomendamos que todos los jugadores de una sesión de juego llamen a la API cada 60 segundos. Para optimizar el uso de la API, agrupa a varios jugadores IDs en una sola llamada a la API.

**importante**  
Las llamadas de actualización periódicas son el mecanismo principal para ofrecer puntos finales actualizados a los jugadores. Si bien las fichas de acceso a los jugadores siguen siendo válidas durante al menos 3 minutos, si se actualizan cada 60 segundos, los jugadores reciben puntos de conexión actualizados con regularidad.

## Integración con el cliente
<a name="ddos-protection-integrate-client"></a>

El cliente del juego debe anteponer los tokens de pasarela del jugador a todos los paquetes UDP salientes y enviarlos a los puntos finales de retransmisión proporcionados. El Amazon GameLift Servers cliente SDK for C\$1\$1 y Unreal Engine proporciona utilidades para simplificar esta integración.

### Requisitos del cliente:
<a name="ddos-protection-integrate-client-requirements"></a>

Para dirigir el tráfico a través de Player Gateway, el cliente del juego debe:
+ **Anteponga los tokens de la puerta de enlace del jugador**: anteponga el token de la puerta de enlace del jugador a todos los paquetes UDP salientes. Los tokens de pasarela de jugador no deben estar cifrados y deben aparecer al principio de cada paquete. Los paquetes que no contengan un token de entrada de jugador válido se eliminarán.
+ **Enviar a los puntos finales de retransmisión**: envíe todos los paquetes UDP a los puntos finales de retransmisión proporcionados.
+ **Mantén la actividad de conexión**: asegúrate de que el cliente del juego envíe un paquete al servidor del juego o que el servidor del juego envíe un paquete al jugador, al menos una vez cada 30 segundos. Esta actividad mantiene la conexión a través de la red de retransmisión.
+ **Gestiona las actualizaciones** de los puntos de conexión: acepta los puntos de enlace de retransmisión y las fichas de acceso de los jugadores actualizados desde tu servidor (se recomienda cada 60 segundos) y cambia a nuevos puntos de enlace sin interrumpir la conexión.

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

El SDK de Amazon GameLift Servers cliente para C\$1\$1 y Unreal Engine proporciona utilidades para simplificar la integración de las pasarelas de reproducción:
+ **Administración de fichas**: coloca las fichas de las pasarelas del jugador en todos los paquetes UDP salientes.
+ **Selección de puntos finales**: enruta el tráfico a los puntos finales de retransmisión mediante un algoritmo configurable.
+ **Actualización de los terminales**: programa llamadas periódicas para recuperar de tu servidor los puntos finales de retransmisión actualizados y las fichas de acceso a los jugadores.

### Algoritmos de selección de
<a name="ddos-protection-integrate-client-algorithms"></a>

El SDK del cliente incluye dos algoritmos integrados para seleccionar el punto final de retransmisión que se va a utilizar:

Algoritmo alternativo  
Utiliza un punto final hasta que deja de funcionar correctamente y, a continuación, cambia a otro punto final. Ideal para menús, vestíbulos y juegos por turnos en los que se aceptan interrupciones breves. Durante la conmutación por error del terminal, es posible que se pierdan paquetes durante el tiempo de espera configurado (predeterminado: 2 segundos).

Algoritmo de rotación predictivo  
Rota continuamente por todos los puntos finales disponibles y predice los fallos antes de que se produzcan. Ideal para juegos en tiempo real, como juegos de disparos en primera persona y juegos de carreras, donde la entrega constante de paquetes es fundamental. Requiere que el servidor del juego envíe mensajes con una frecuencia constante.

También puedes implementar algoritmos personalizados ampliando la clase de algoritmos base del SDK.

### Recursos del SDK del cliente
<a name="ddos-protection-integrate-client-resources"></a>

Para obtener instrucciones de integración completas y códigos de ejemplo, consulte los siguientes recursos:

C\$1\$1  
Hay disponible un SDK de cliente para C\$1\$1 en [Amazon GameLift ServersClient SDK for C\$1\$1](https://github.com/amazon-gamelift/amazon-gamelift-servers-client-sdk-for-cpp).

Unreal Engine  
Hay un complemento para Unreal Engine disponible en el [SDK del Amazon GameLift Servers cliente para Unreal](https://github.com/amazon-gamelift-for-unreal/amazon-gamelift-servers-client-sdk-for-unreal) Engine. El acceso requiere ser miembro de la organización de Epic Games a partir del. GitHub Consulta [Unreal Engine en GitHub](https://www.unrealengine.com/en-US/ue-on-github) para obtener más información.

## Realización de una prueba de integración
<a name="ddos-protection-integrate-testing"></a>

Antes de implementarlo en una flota, prueba la integración de la pasarela de jugadores de forma local con la herramienta de pruebas de la pasarela de jugadores. Esta herramienta simula la infraestructura de proxy UDP de la puerta de enlace del jugador y te ayuda a comprobar si el cliente del juego coloca correctamente los tokens de la puerta de enlace del jugador, dirige el tráfico a través de varios puntos finales y gestiona la degradación de la red.

Para obtener instrucciones de configuración y uso, consulta la aplicación de pruebas de [Player Gateway](https://github.com/amazon-gamelift/amazon-gamelift-toolkit/tree/main/player-gateway-testing-app) en. GitHub

## Prácticas recomendadas
<a name="ddos-protection-integrate-best-practices"></a>

Sigue estas prácticas recomendadas a la hora de integrar Player Gateway:
+ **Actualiza los puntos finales cada 60 segundos**: llama `GetPlayerConnectionDetails` cada 60 segundos para asegurarte de que los jugadores reciban los puntos finales actualizados con regularidad.
+ **Llamadas a la API `GetPlayerConnectionDetails` por lotes**: cuando llames a varios jugadores en la misma sesión de juego, agrupa las llamadas para reducir la sobrecarga de la API.
+ **Mantén la actividad de conexión**: asegúrate de que el tráfico fluya entre el cliente del juego y el servidor del juego al menos una vez cada 30 segundos. Puede ser server-to-client tráfico client-to-server o bien.
+ **Gestiona las actualizaciones de los terminales de forma** adecuada: cuando el cliente del juego reciba los puntos de conexión actualizados del servidor, realiza la transición a los nuevos puntos de conexión sin interrumpir la conexión del jugador.
+ **Elige el algoritmo correcto: selecciona el algoritmo** de selección de puntos finales que mejor se adapte a los requisitos de tu juego. Usa el algoritmo alternativo para las partidas por turnos y el algoritmo de rotación predictiva para las partidas en tiempo real.