Bueno, el año pasado ya tubimos algunos problemas con la sincronizacion de tiempos de los corredores contra el servidor.
Este año, ya han vueto a aparecer, y la cosa probablemente no van a mejorar.
Necesito un poco de ayuda para encontrar una solucion.
Lo primero voy a explicar el problema, que no es otro si no los sistemas NAT que utilizan las compañias telefonicas actuales (sobre todo movistar).
El F1 challenge es un juego antiguo, tiene soporte para conexiones tipo pppoe (banda ancha) pero hace 11 años no se utilizaban ni los proxies ni los sistemas NAT estrictos. La implementacion de estos 2 sistemas en los router actuales es un problema que el challenge no sabe gestionar.
(las compañias telefonicas en españa los estan actualizando gradualmente desde hace 2 años, por lo que no es un problema del juego, ni del mod, es que las compañias estan cambiando los protocolos)Explicacion resumida y
muy simplificada:
Como todo en internet, el f1 challenge trabaja con paquetes, mete datos dentro de un paquete y lo manda al servidor. Ese paquete tiene 2 metodos para ser entregado, TCP o UDP (que lo habreis oido muchas veces).
El Sistema TCP tiene control de errores, si un paquete no llega, se reenvia. El sistema UDP es mas rapido (menos ping, por eso se utiliza para juegos online) pero cuando un paquete no llega se pierde y nadie lo pide de nuevo.
Ahi ya empezamos a ver por donde viene el problema. El Cliente manda un tiempo al servidor (por ejemplo un parcial, o una vuelta completa). Lo manda dentro de un paquete UDP (Esto es muy simplificado, pero para que me entendais), el paquete llega a un router con un puerto cerrado, y el paquete UDP al no poder pasar por el puerto se pierde, y el servidor des-sincroniza al cliente, dejandole de contar todos los tiempos hasta que entregue el paquete perdido, que no va a llegar nunca por que UDP lo ha tirado.
Aqui empezamos con los parches y las soluciones:
Solucion 1:ABRIR LOS PUERTOS EN EL ROUTER.-Seria la solucion mas rapida y flexible, pero depende de conocimientos minimos en los jugadores. Si alguien se confunde en un puerto, no pone IP FIJA en su ordenador, o se equivoca en algun parametro.... pues el sistema no funciona.
-Para los entendidos y que quieran curarse en salud (David-menda por ejemplo que ayer le fallo puntualmente) los puertos que hay que abrir son:
- 17677 (TCP y UDP)
- 34496 (TCP)
- 34447 (TCP)
- 34397 (TCP y UDP) *Este es el mas importante para los clientes
- 34297 (UDP) * Este es el otro que crea des-sincronizaciones
Los puertos tienen que estar mapeados en el router, a una IP FIJA que se cambia en Windows. Si no se pone una IP fija el mapeo no funciona. Incluso a los que os funcione bien, yo os recomiendo que abrais los puertos, para evitar los problemas puntuales. Los corredores con FIBRA OPTICA teneis un 50% de probabilidades por partida de que os des-sincronize, por que
la Fibra optica utiliza un protocolo NAT mas estricto que las ADSL (debido a su mayor velocidad, a mas velocidad mas probabilidad de desincronizacion, por eso las fibras 100Megas fallan el doble que las fibras 50, y estas fallan el doble que las fibra 25..etc...)
Llegados a este punto es donde necesito vuestra ayuda (ya que yo no tengo fibra Movistar que es donde mas falla el problema).
Si encontramos 2 puertos que esten abiertos por defecto en los routers de movistar, podriamos configurar el challenge para que utilize esos puertos, y no tendriamos que andar mapeando nada, seria como hace unos años, solo tendria que abrir puertos el servidor.
El problema (buscandolo hoy con Ruben) es que Movistar se ha vuelto paranoica y ha cerrado casi todos los puertos, y los pocos que ha dejado abiertos, no son compatibles con el challenge.
El challengue obligatoriamente y por programacion, tiene que utilizar un puerto entre el 1025 y el 65000.
Pues resulta que movistar solo ha dejado abiertos los puertos como el 23 - 21 - 53 - 80.... pero por encima del 1025 no he encontrado ninguno.
A traves de esta pagina se pueden revisar los puertos:
http://www.whatsmyip.org/port-scanner/En la seccion de:
Custom Port Test
Check a single port
Se puede probar un puerto concreto.
Si pone "time-out" es que esta abierto, si pone "closed" es que esta cerrado.
Ahi podeis verificar tambien si habeis mapeado correctamente los puertos del challenge arriba mencionado, si poneis alguno del challenge y os pone "closed"... mal asunto.La cosa es la siguiente, si alguien me pudiera encontrar 2 puertos por encima del 1025 que esten abiertos por defecto en los routers de fibra movistar (se suponen igual para los de ono) pues podriamos solucionar el problema sin necesidad de mapeos de puertos.
Si no encontramos 2 puertos comunes para todos, ir pensando en que tendreis que mapear si o si, cuando antes lo hagais antes podremos ayudaros si fallais en alguno.
Cualquier ayuda al respecto sera bienvenida.
Solucion 2:Utilizar VPN tipo hamachi o similar.
Yo personalmente soy reacio a utilizar este metodo, por que creo que configurar una VPN lleva mas trabajo que abrir los puertos en el router, pero lo dejo como "alternativa" para que opineis al respecto.
El hamachi se utilizo hace años en el F1challenge (pongo hamachi por que es el mas conocido, pero hay mas programas)
Yo incluso tengo dudas que el hamachi pase por los estrictos routers de movistar actuales, pero si alguien lo ha utilizado que ponga informacion al respecto tambien.
Explicado el problema, agradeceria a todos colaboracion al respecto, a nadie nos gusta que el servidor nos joda una calificacion o una carrera, y creo que es importante que lo dejemos solucionado antes de que empieze la temporada.