Uso de puertos, firewall y requisitos de tamaño de paquete de PlayFab Party
En este tema se proporcionan detalles sobre el uso de puertos, el firewall y los requisitos de tamaño de paquete de PlayFab Party que se necesitan para habilitar la comunicación de chat y datos.Patrones de comunicación
PlayFab Party usa dos patrones de comunicación:- Comunicación HTTPS, que se inicia desde el autor de la llamada a la API hacia varios servicios web en la nube, incluido playfabapi.com.
- Comunicación segura basada en sockets UDP con servidores de retransmisión en la nube transparentes y otros dispositivos del mismo nivel (si se admiten).
PartyRegionsChangedStateChange inicial, notificarán PartyStateChangeResult::InternetConnectivityError.
En el caso de problemas con las solicitudes a servicios web, otras operaciones necesarias de PlayFab y de la plataforma ajenas a Party, como las funciones de inicio de sesión de usuario, probablemente también producirían errores. Estos errores suelen deberse a restricciones del firewall local o a requisitos de proxy para las conexiones HTTPS. La mayoría de los problemas pueden resolverse habilitando la comunicación HTTPS saliente directa a los servicios web en la nube desde el dispositivo o la red local.
Nombres de dominio HTTPS
Microsoft PlayFab Party realiza conexiones UDP y HTTPS a varios servicios en la nube. Para garantizar el funcionamiento correcto, los entornos que filtran el tráfico HTTPS en función del nombre de dominio deben asegurarse de que los siguientes nombres o patrones de nombre sean accesibles: Conectividad HTTPS:- *.playfabapi.com
- *.speech.microsoft.com
- api.cognitive.microsofttranslator.com
MTU y tamaños de paquete
PlayFab Party realiza automáticamente la fragmentación y el reensamblado para ajustar los mensajes de aplicación grandes a los límites de tamaño de paquete del entorno. Algunos entornos de red pueden seguir provocando errores de comunicación a pesar de esta funcionalidad. Actualmente, PlayFab Party espera que los entornos admitan un tamaño de unidad de transmisión máxima (MTU) de al menos 1419 bytes para evitar un rendimiento deficiente o posibles errores de conectividad. Este tamaño de MTU se admite en entornos típicos. Las redes privadas virtuales (VPN), la tunelización IPv4/IPv6 o la configuración administrativa explícita podrían reducir el tamaño de MTU en una o ambas direcciones de la ruta de red entre el cliente de Party, el servicio u otros clientes. Si la MTU admitida de un extremo a otro en un entorno determinado es insuficiente, la operaciónPartyManager::ConnectToNetwork puede producir un error con PartyStateChangeResult::InternetConnectivityError. Como alternativa, la conectividad puede establecerse correctamente, pero el dispositivo puede experimentar latencia innecesaria, pérdida de paquetes o desconexiones inesperadas.
Algunas plataformas proporcionan herramientas para que los usuarios finales, los desarrolladores o los proveedores de servicios de Internet ayuden a solucionar problemas de configuración de MTU en sus entornos, que deben usarse si es posible.
Uso de puertos UDP en el dispositivo local
De forma predeterminada, la biblioteca de PlayFab Party enlaza su socket UDP a un puerto local disponible asignado dinámicamente por el sistema operativo en la mayoría de las plataformas. Una excepción es Microsoft Game Core, donde PlayFab Party de forma predeterminada se enlaza al “puerto multijugador UDP local preferido” de esa plataforma. Los títulos pueden modificar este comportamiento para enlazar a un número de puerto local específico o a un puerto disponible seleccionado por el sistema operativo distinto del “puerto multijugador UDP local preferido” de Microsoft Game Core estableciendo la opciónPartyOption::LocalUdpSocketBindAddress antes de llamar a PartyManager::Initialize(). Si el puerto solicitado ya está en uso en su título o por otra aplicación del dispositivo, o bien PartyManager::Initialize() notificará un error de inmediato, o bien el PartyRegionsChangedStateChange inicial notificará un error PartyStateChangeResult::FailedToBindToLocalUdpSocket y las operaciones asincrónicas de creación de red o conexión producirán errores.
Se recomienda que los títulos usen el comportamiento predeterminado de selección de puerto local para lograr la máxima compatibilidad sin configuración, a menos que el usuario final lo solicite por un motivo específico del entorno. Puede tener más requisitos específicos de la plataforma si su título usa valores no predeterminados. Debe consultar la documentación de cada plataforma para obtener instrucciones sobre el uso de puertos.
La comunicación de PlayFab Party siempre requiere que se permitan los paquetes iniciados de forma saliente y sus respuestas posteriores desde este puerto UDP local seleccionado hacia los destinos remotos descritos en la sección siguiente. Los administradores de red deben seguir los procedimientos recomendados estándar de Internet para firewalls y traducción de direcciones de red (NAT), como los de RFC 4787 - “Network Address Translation (NAT) Behavioral Requirements for Unicast UDP”, para lograr la máxima compatibilidad. Estos procedimientos recomendados son especialmente importantes para los títulos que usan conexiones directas entre pares para una red de Party, ya que los entornos con compatibilidad mínima podrían permitir la conexión a la red pero impedir el establecimiento de esa comunicación directa de un dispositivo a otro.
Direcciones IP remotas y puertos UDP
Microsoft PlayFab Party proporciona servicios escalados dinámicamente en varias regiones para ofrecer la mejor latencia a los usuarios. Esto significa que no hay ningún nombre de host, dirección IP o puerto de destino remoto permanente que puedan referenciar los administradores de red interesados en restricciones de comunicación estrictas. Microsoft proporciona actualizaciones semanales de una lista de intervalos de direcciones IP para Azure que está disponible para descarga. Esta lista puede ser útil si resulta viable una directiva sincronizada continuamente para restringir el tráfico de la red local. En la mayoría de los casos, el mantenimiento continuo de esta lista supone un desafío y es propenso a errores de conectividad sutiles. Además, para las conexiones directas entre pares dentro de una red de Party, las direcciones IP de los clientes remotos también deben conocerse y habilitarse para la conectividad. Por estas razones, recomendamos que los firewalls no restrinjan la conectividad de direcciones IP remotas. El intervalo de puertos remotos admitido que puede usar PlayFab Party puede ser cualquier puerto distinto del intervalo reservado por la Internet Assigned Numbers Authority (IANA) de 0-1023. Actualmente, a los servidores de retransmisión en la nube transparentes solo se les asignarán números de puerto de 30000-65535, pero Microsoft se reserva el derecho de cambiar este comportamiento en el futuro. Como procedimiento recomendado, debe usarse el intervalo de puertos de 1024-65535. Esto es especialmente importante para los títulos que usan conexiones directas entre pares para una red de Party, ya que las implementaciones de NAT normalmente asignan puertos de este intervalo. Bloquear puertos remotos fuera del intervalo completo recomendado también puede impedir la comunicación directa. Para habilitar la conectividad UDP, los entornos que filtran el tráfico UDP en función del nombre de dominio deben asegurarse de que los siguientes nombres o patrones de nombre sean accesibles:- *.cloudapp.azure.com
