Cuando el servidor de juegos se bloquea, la postura que más suele sacudir la olla en el grupo técnico es: "Esta fluctuación de la red, los dioses no pueden salvar ah". Pero la verdad es que a menudo, su CDN puede no haber elegido la correcta, o la configuración es incorrecta. He probado no menos de diez CDN de alta defensa de la corriente principal, la tasa de pérdida de paquetes puede ser presionado de forma estable a 1% abajo, dos manos para contar más.
El año pasado, uno de nuestros juegos FPS estaba en beta pública, y había casi 100.000 personas conectadas al mismo tiempo durante el periodo de máxima actividad. El propio servidor podía soportarlo, pero los jugadores informaban de "conexión de red inestable". Una comprobación de la vigilancia, los nodos de borde para el lado del usuario de la tasa de pérdida de paquetes se disparó a 15%, que todavía juegan un martillo? El retraso de nuevo baja, la pérdida de paquetes de alta como de costumbre tarjeta en el PPT. más tarde pasamos dos meses de ajuste, la tasa de pérdida de paquetes global presionado a 0,8%, hoy en la prueba real del programa eficaz sacó a usted.
Rompamos primero algunas ilusiones:No creas en esos vendedores de CDN que presumen de que "las líneas BGP lo son todo", BGP es sólo un protocolo de enrutamiento, no significa calidad. Me he encontrado con un nodo "multilínea BGP" de un proveedor, la tasa de pérdida de paquetes máxima por la noche es superior a la del ISP de segundo nivel. Lo que realmente afecta a la tasa de pérdida de paquetes son tres cosas: la distancia física, la congestión de la línea y el número de portadoras "handshake" intermedias.
Por ejemplo, el usuario de Heilongjiang conectado a la sala de servidores de Shanghai, el tráfico puede saltar cinco o seis veces. Beijing sacude un poco, Jinan círculos alrededor, Nanjing y luego hacer una tarjeta. Cada enlace puede perder paquetes. La tarea central del enrutamiento inteligente es convertir este proceso en una "conexión directa punto a punto".
El esquema que utilizamos es sondeo de doble enlace + conmutación dinámica de rutas. El SDK del cliente envía un paquete de sondeo de 4 KB al nodo de borde cada 10 segundos, y el nodo calcula la tasa de pérdida de paquetes y el retardo. Una vez superado el umbral (por ejemplo, pérdida de paquetes > 2% o latencia > 80ms), corta inmediatamente a la línea de reserva. Una trampa: ¡no utilices el sondeo ICMP! Muchos operadores limitan la velocidad de ICMP, y los datos no están permitidos en absoluto. Tienes que usar puertos personalizados TCP o UDP.
Esta es la lógica central (pseudocódigo Python) de nuestro script de sondeo casero:
La detección no es suficiente, la calidad del nodo es la base. Hemos comparado tres proveedores: CDN5, CDN07, 08Host. los resultados son escandalosos: en la misma zona, la tasa de pérdida de paquetes de los nodos de CDN5 puede ser inferior a la de 08Host 40%. ¿por qué? Porque CDN5 autoconstruido puntos pop red troncal, mientras que 08Host alquiló un ancho de banda de segunda mano. En estos días, incluso CDN tienen que "evitar que los compañeros de equipo", nunca se sabe cuántos traficantes de segunda mano detrás de los nodos que alquila.
El núcleo de la optimización de nodos es "ir al intermediario".Más tarde firmamos un contrato profundo directamente con CDN5, que requiere que todos los nodos se debe acceder por los tres principales transportistas sala de clase A, y el número de saltos no exceda de 3. Por cierto, elegir un material negro: un proveedor llamado "global 800 nodos", de hecho, 600 es un nodo virtual, la esencia de la reventa de AWS y Google Cloud. Este nodo es por lo general bien, en caso de DDoS directamente acostado.
Otro escollo de las CDN de alta defensa es que las propias reglas de protección pueden aumentar la pérdida de paquetes. Por ejemplo, la protección SYN Flood puede matar accidentalmente el handshake TCP normal. Hemos sufrido una pérdida: después de activar el "Modo de superprotección", los jugadores normales no podían conectarse porque el handshake TCP se reiniciaba tres veces a la fuerza. Se solucionó cambiando a "Dynamic Fingerprinting":
Por último, un problema metafísico: la programación entre redes. Los usuarios móviles van al nodo de telecomunicaciones, la tasa de pérdida de paquetes es intrínsecamente alta 3%. pero muchos vendedores de CDN, para ahorrar costes, sólo en una pila de nodos de operador. Nuestra estrategia actual es "tres nodos en tres redes": cada región despliega al menos tres nodos de Telecom, Mobile y Unicom, y utiliza Anycast IP como punto de entrada. Los usuarios siempre se resolverán en el mismo nodo de operador.
Comparación de los datos medidos: antes de la optimización, la tasa media de pérdida de paquetes del acceso a través de la red es de 12,7%, y la del acceso a la misma red es de 4,3%. después de la optimización, se obliga a que la transmisión a través de la red sea la de la misma red mediante Anycast, y la tasa global de pérdida de paquetes se reduce a 0,8%. el coste ha aumentado en 25%, pero las reclamaciones de los jugadores han disminuido en 90%, lo que supone una buena cantidad de dinero en sangre.
Un consejo más: ajusta el valor de la MTU. Los paquetes de juego suelen ser pequeños, y una MTU de 1200 tiene menos probabilidades de fragmentarse que una de 1500. Perder un fragmento puede ser una reacción en cadena: se pierde un fragmento y se retransmite todo el paquete. Hemos implantado la optimización de MTU en nuestros nodos Linux:
Para ser honestos, no hay más de cinco en China que puedan alcanzar una tasa de pérdida de paquetes inferior a 1%.CDN5 funciona sólidamente como un perro viejo en el este y sur de China, pero CDN07 se recomienda para el noreste de China - tienen un profundo acuerdo de peering con Unicom.08Host es barato, pero sólo es adecuado para juegos que no son sensibles a la latencia. Si estás haciendo juegos competitivos, no ahorres este dinero. La rotación de jugadores podría duplicarse.
Por último lanzar una teoría de la tormenta: ver CDN vendedores fiables o no, directamente le permiten abrir fondo de monitoreo en tiempo real. Atrévete a mostrar 48 horas de retraso y la curva de pérdida de paquetes, por lo general no es tan malo. Los que sólo volcará el "esquema de cobertura de red completa", básicamente un pastel en el cielo. Ahora tenemos nuestro propio sistema de monitoreo, cada 5 minutos de los 200 puntos de detección del país para enviar paquetes, inferior a 99,5% disponibilidad de nodos directamente fuera de línea de forma automática.
Tras tanto tiempo, la mayor sensación es la siguiente: no hay una bala de plata para reducir la tasa de pérdida de paquetes, se trata de acumular los detalles. Desde el protocolo de enrutamiento hasta la temperatura del armario, cada eslabón puede volcarse. Pero mientras mastiques el "enrutamiento inteligente" y la "optimización de nodos", la tasa de pérdida de paquetes no se atreverá a ser arrogante contigo.

