17.12.05

 

Los puertos TCP y UDP de algunos programas P2P

En este post vamos a intentar comentar qué puertos utilizan algunos de los programas más conocidos de P2P TV.

SopCast
Este programa utiliza los puertos TCP 3900 al 3920. No los utiliza todos simultaneamente. En principio usa el 3900, pero si por algún motivo este puerto estuviese siendo utilizado por algún otro programa, SopCast utilizará el siguiente que esté disponible.

TVAnts
La hormiga televisiva permite configurar el puerto que deseamos utilizar para compartir, accediendo al menú Tools - Settings... - Sharing y allí en el cuadro de texto etiquetado como Listen Port Base podemos indicar el puerto que deseamos utilizar. Por defecto viene aplicado el 16800. TVAnts utiliza este puerto tanto en TCP como en UDP.

PPLive
También podemos configurar los puertos que utiliza a través de Option-Network-Port. Por defecto viene aplicado el 4644 TCP y el 2545 UDP. En el post Configurando PPLive tenéis más información al respecto.

PPStream
También podemos configurarlos. Utiliza un mismo número de puerto tanto para TCP como para UDP. Para configurarlo accedemos al menú marcado como (T) y posteriormente al marcado como (O) tal y como se ve en la imagen.



Veremos que nos aparece una pantalla como esta:




Indicamos el puerto que deseemos (en mi caso el 16800) y activo la casilla que hay debajo para fijar el puerto. De no hacerlo, PPStream utilizará hasta 10 puertos consecutivos a este, es decir, que irá utilizando 16800, 16801, 16802,... hasta 16810. Al activar la casilla, fijamos a un sólo puerto el utilizado tanto para TCP como UDP.

TVKOO!
Este programa es muy curioso y raro. Igual estoy diciendo una burrada, pero yo diría que no utiliza ningún puerto para conexiones entrantes. No entiendo muy bien como funciona desde el momento que ellos mismos dicen que se trata de un programa P2P, pero sin embargo todas las pruebas que he realizado se restringen a una sola conexión activa que va cambiando de IP continuamente. Parece como si un servidor se encargara de realizar todo el trabajo de poner en contacto unos ordenadores con otros. O esto, o es que tienen algún tipo de restricción de IPs occidentales. No se, de momento poco más puedo decir de este programa.

14.12.05

 

Crear un tracker en TVAnts

Lo primero, para que lo vayais entendiendo, un tracker es un intermediario, cuya misión es poner en contacto a los diferentes usuarios que desean ver un canal. Habitualmente usamos el tracker central de TVAnts que es www.tvants.com.

Cuando abrimos TVAnts para ver un canal, nuestro programa se pone en contacto con este tracker. Posteriormente el tracker nos comunica donde se encuentra la fuente principal que se desea visualizar y posteriormente, si hay otros usuarios viendo ese canal, el tracker los comunica entre si, para que, desde ese momento, todos esos usuarios compartan la emisión. Este es el fundamento de los programa P2P como Bittorrent, y por lo tanto de TVAnts.

En el tracker no se encuentra la fuente ni tan siquiera se realiza la emisión, por lo que, cuando un canal no se ve bien, el que menos culpa tiene es el tracker. Posibles problemas en la emisión o en los propios usuarios que lo están visualizando puede hacer que el canal de televisión no se vea bien. Por lo tanto, el tracker solo actua de intermediario.

Pues bien, TVAnts, a partir de la versión 1.0.0.35, puede configurarse como un tracker. Vamos a ver como se hace:

Lo primero que tenemos que saber es nuestra IP pública ya que de otra forma, dificilmente los usuarios van a poder conectarse a nuestro tracker. Si no lo sabemos podemos dirigirnos a cualquier página que realice esta función, por ejemplo www.whatismyip.com

Una vez que conocemos nuestra IP, abrimos TVAnts y entramos en el menú Tools. Dentro de Tools elegimos Settings...

A continuación nos vamos a la pestaña Track Server.

Activamos la casilla Enable Track Server. Le ponemos un nombre (Server name) y nuestra IP la ponemos en Domain Name. Si tenemos un dominio o subdominio propio, por ejemplo, del tipo http://www.no-ip.com/ gratuito, podiamos usarlo.

Fijaos que hay una casilla llamada Listen Port y aparece el número 16600. Este es el puerto por el que nuestro tracker va a recibir las peticiones de los usuarios, por lo que si os conectais a través de un router configurado en multipuesto, tendriamos que mapearlos. Igualmente si tenemos un firewall.

Y haciendo esto, aunque parezca mentira, ya tenemos nuestro tracker.

Ahora lo que necesitamos es añadir canales a nuestro track server para que los usuarios que se conecten a él tengan algo que ver :-)

Para poder añadir canales a nuestro track server es necesario que lo añadamos en la pestaña Servers de nuestro TVAnts. Debemos introducir nuestra IP (o el dominio si lo tenemos) en Address una vez que hemos pulsado el botón Add (añadir).

Con esto conseguimos además que en la opción de búsqueda aparezcan los canales de nuestro tracker. Esto es importante. Cualquier usuario que desee buscar en los canales que tenemos en nuestro track server es preciso que añada nuestro servidor en esa misma pestaña indicada. TVAnts busca en los trackers que aparezcan indicados en la pestaña Servers.

Ahora solo nos queda dirigirnos a la opción Channels y añadimos cualquier dirección mms que tengamos, como cuando lo hacemos en TVAnts, sólo que en el apartado Tracker, desplegamos la lista que aparece y veremos que aparece www.tvants.com y el nuestro (los dos que tenemos en la opción Server). Seleccionamos nuestro tracker y cuando empiece a verse el canal una vez añadido, podremos comprobar como al pulsar el boton Detail, TVAnts le ha dado una dirección a dicho canal de la forma:

tvants://nuestroIP/tvants/?k=e1447243b95a0f1

Ya tenemos un canal en nuestro tracker. Si proporcionamos la dirección anterior a cualquier usuario de TVAnts, estando nuestro TVAnts encendido, podrá acceder a dicho canal a través de nuestro tracker.

Si queremos que cualquier usuario pueda buscar entre los canales de nuestro tracker, deben añadir en Servers nuestro IP o dominio. Una vez que hagan esto, incluso podrán añadir canales a nuestro tracker siguiendo el proceso indicado arriba (no solo vale para nosotros, sino a cualquier usuario que se conecte a nosotros).

El único inconveniente que tiene esto es que la base de datos que utiliza TVAnts para ir guardando la información de los canales es el Registro de Windows. Es posible, o al menos eso creo, que se sustituya por una base de datos con interface ODBC. Este tema lo he estado investigando un tiempo pero me he quedado estancado en un punto debido a la falta de información sobre la estructura de dicha base de datos, así que de momento lo tengo aparcado.

4.12.05

 

Ver un canal P2P TV en varios ordenadores a la vez

Hoy en dia es muy común que en casa tengamos una pequeña red local montada gracias a los routers ADSL. Algunas veces se nos puede plantear la idea de poder ver un canal P2PTV a la vez en varios ordenadores, o simplemente, en cualquier ordenador de casa. Pero como hemos visto en los post anteriores, es bastante trabajoso el que un programa P2P TV esté bien configurado, pues hay que mapear puertos, proxies, etc... Incluso al ser programas que evolucionan muy rápido, salen nuevas versiones cada poco que hay que ir instalando en todos los ordenadores donde los queremos utilizar.

Existe un problema añadido a todo esto, y es que como intentemos usar varios programas de este tipo al mismo tiempo, aunque sea en ordenadores diferentes y el mismo programa, o tenemos una superconexión a Internet y un router a prueba de bombas, o aquello no va a funcionar ni a la de tres pues las necesidades de ancho de banda se van a multiplicar por dos.

Pero como todo problema tiene solución, en este pequeño artículo vamos a intentar darla.

Ya hemos visto como funcionan los programas P2P TV. Basicamente su función es la de ir recogiendo trozos de stream, unirlos para que tenga sentido y mostrar el resultado en cualquier reproductor de video. Y para que un reproductor de estos, como Windows Media Player, pueda reproducir el video, es necesario que este le llegue como si de una emisión de stream normal se tratase. Por eso, la mayoría de estos programas P2P TV (si no todos), realizan también la función de pequeños servidores locales de stream, de forma que el reproductor en cuestión sólo tiene que conectarse a ese servidor y trabajar como si de una emisión online normal se tratase. Gracias a esta característica servidora, vamos a poder solucionar nuestro pequeño problema planteado.

Vamos a suponer que tenemos tres ordenadores conectados entre si en nuestra pequeña red local. Las direcciones IP de cada uno de ellos son 172.16.1.5, 172.16.2.5 y 172.16.3.5.

Elijo uno cualquiera de ellos, por ejemplo el más potente, e instalo en él cualquier programa P2P TV (aconsejo PPLive). Mapeo puertos en el router y todo lo que ya sabemos, hasta conseguir que ese programa funcione correctamente.

Como he comentado anteriormente, muchos programas P2P trabajan como servidor del stream que recompone. Y como sabemos también de anteriores posts, todo servidor escucha por un puerto específico. Para saber toda la información que necesito, me basta poner en funcionamiento el programa en cuestión, cargar algún canal y cuando aparezca el reproductor, por ejemplo Windows Media, me voy al menú Archivo-Propiedades y veo la url que allí aparece, por ejemplo http://127.0.0.1:8888/59.asf. Esta es toda la información que necesitamos. Vemos que WM está conectado mediante protocolo http a un servidor cuya dirección es 127.0.0.1. Esta dirección es la dirección local de nuestro ordenador y se utiliza cuando una aplicación cliente de nuestro ordenador hace referencia a una aplicación servidora también de mi ordenador. Por otra parte vemos que el puerto que utiliza el servidor es el 8888 y 59.asf el nombre del archivo contenedor del stream.

Si dejo funcionando PPLive en dicho ordenador y me voy ahora a cualquier otro ordenador de mi red local, abro el Windows Media, entro en Archivo - Abrir dirección URL... y en dicha ventana escribo la dirección http://127.0.0.1:8888/59.asf ¿qué ocurre? Pues simplemente un error; Windows Media me dirá que no puede abrir el archivo especificado porque el servidor no responde. ¡¡¡Totalmente lógico!!! En este último ordenador no tenemos funcionando el PPLive, por lo que no hay servidor arrancado, y si ponemos 127.0.0.1 que hace referencia a él mismo, aquello no chuta. Sin embargo... ¿qué sucederá si sustituyo en la URL el 127.0.0.1 por la dirección IP privada del ordenador que tiene funcionando el PPLive? Si suponemos que el PPLive está funcionando por ejemplo en el ordenador 172.16.1.5 y yo quiero ver el canal desde el ordenador 172.16.3.5, me basta con poner http://172.16.1.5:8888/59.asf en el Windows Media para empezar a disfrutar de la emisión del canal ¡¡en un ordenador en el que no tengo PPLive!! Es más, como la conexión es local, no utilizo para nada el acceso a Internet, por lo que no consumo ancho de banda. Y por la red local no preocuparse que en la actualidad todas tienen un ancho de al menos 100M.

¿Y si a la vez lo quiero ver desde el otro ordenador libre? Sin problemas, volvemos a hacer la operación y podemos ver ese mismo canal en cualquier ordenador de mi pequeña LAN.

¡Ojo!. El puerto 8888 es por el que escucha el servidor local de PPLive. Si lo intentáis con SopCast o cualquier otro, tenéis que volver a hacer la operación indicada anteriormente para saber por qué puerto y con qué URL emite.

Y poner también atención en el hecho de que nuestra red interna esté totalmente protegida del exterior por firewalls, routers y demás, ya que si soy un descuidado y no protejo bien todos mis puertos, por ejemplo el 8888, cualquiera que sepa mi IP, y eso es lo más fácil del mundo simplemente usando el comando NETSTAT -ano como vimos en el post anterior y haga el intento de conectarse por ejemplo a http://miIP:8888 siendo miIP cualquiera de las IPs que he visto que están conectadas a mi PPLive, os aseguro que va a empezar a chupar y va a ver ese canal tan ricamente, y sin PPLive, sin consumir subida propia pero consumiendo mi subida!!! Y os puedo asegurar que se puede hacer, pues en varias ocasiones he probado aleatoriamente y he podido conseguirlo. Este es otro ejemplo más de que no podemos "jugar" tan ricamente con un ordenador conectado a Internet sin saber las consecuencias que esto puede acarrear. Protegeos, no desactivéis el firewall de Windows XP aunque tengáis routers. No basta con una sola muralla de seguridad. Cuantos más problemas pongas, más dificil lo van a tener.

Ah! se me olvidaba... ¿cómo se la dirección IP privada de mi ordenador? Es muy sencillo: Inicio-Ejecutar... , escribimos cmd y en la ventana de comandos que aparece escribo ipconfig Lo que aparece después de dirección IP es, obviamente, mi dirección IP.

2.12.05

 

Configurando PPLive

Pues bien, vamos a ver como puedo configurar PPLive de forma adecuada para evitar los problemas de puertos y otras cuestiones.

Si no hacemos esto es posible que funcione, pero el rendimiento no sería el adecuado, ya que estamos evitando que otras fuentes externas se comuniquen con nosotros. Es posible en estos casos que yo me comunique con ellas, pero si ambos tenemos problemas para recibir datos externos, ninguno de los dos se comunicará con el otro.

Acabo de instalar PPLive, y como me encuentro tras un router multipuesto, supongo que los puertos de mi aplicación no estarán accesibles desde el exterior. Para poder mapearlos, lo primero que necesito saber es qué puertos son, obviamente. Lo más aconsejable es consultar la documentación del programa.

En el caso del PPLive, los puertos los tenemos dentro del menú Option... que aparece al hacer clic derecho sobre el icono del motor del PPLive. Posteriormente dentro de la ficha Network tenemos los dos puertos utilizados en la opción Port, en este caso, son el 5379 y el 7073 como podemos ver en la imagen:



Pero ¿A qué se debe estos dos puertos?. En la mayoría de los programas P2P a través de un puerto se realiza la compartición de datos, mientras que por el otro se intercambian fuentes con otros clientes y otras funciones. Uno habitualmente utiliza el protocolo TCP y el otro el UDP. No vamos a entrar en explicar cada uno de estos protocolos. Simplemente diremos que uno, el TCP, es más confiable (seguro) que el otro. En el caso de mi router no necesito saber quien es quien pues mapea ambos, pero en otros casos, como con ciertos firewalls, si que es necesario indicarlo, por lo que vamos a intentar averiguar de alguna manera cual es el TCP y cual es el UDP. Hay una forma muy sencilla de hacerlo. Veamos.

Cómo determinar qué puerto es el TCP y cual es el UDP
Una vez que hemos cargado el motor del PPLive, ejecutamos el administrador de tareas de Windows pulsando las teclas CTRL+ALT+SUPR. Nos dirigimos a la ficha Procesos y buscamos el nombre del fichero ejecutable de la aplicación que deseamos investigar, en este caso PE.EXE.



En la imagen os he marcado en amarillo lo que buscamos. Fijaos en el número que aparece en la columna PID, el 3412. Esto es importante para lo que viene a continuación. Si no os apareciera esa columna, podéis mostrarla entrando en el menú Ver - Seleccionar columnas... y activamos Identificador de proceso (PID)

Una vez que sabemos qué identificador de proceso tiene asignado el motor de PPLive, abrimos una ventana de comandos entrando en el menú Inicio, pulsando "Ejecutar..." y escribimos CMD.

En dicha ventana escribimos el comando NETSTAT -ano y pulsamos la tecla de retorno. Obtendremos algo como esto:



Os he resaltado las dos líneas que nos interesan. Fijaos como aparece el PID del motor del PPLive en dos ocasiones. En la primera línea vemos que indica que el protocolo es el TCP en el puerto 7073 y que está escuchando (Listening). La segunda línea marcada indica que el protocolo es UDP para el puerto 5379.

Como vemos, ambos puertos están preparados, pero desde el exterior son inaccesibles debido a que en mi router no están mapeados. Vamos a comprobarlo.

¡Socorro! ¡No escucho!
Para el siguiente experimento vamos a utilizar la misma herramienta, el comando NetStat -ano. Pero en esta ocasión voy a cargar algún canal en el PPLive. Al cabo de un rato, ejecuto el comando NetStat y fijaos lo que obtengo:



Para conservar la "privacidad" de las personas que visualizaban el canal, he ocultado el inicio de las direcciones IP con las que me he conectado. Podemos ver como en todas las conexiones TCP realizadas por mi ordenador (IP privada 172.16.3.5) y con identificador 3412 (el correspondiente al motor de PPLive), ninguna ha sido establecida con el puerto 5379, lo que indica que todas han sido conexiones de salida. Por ejemplo, mi ordenador ha establecido (ESTABLISHED) una conexión con la dirección xxx.xxx.190.24 a través del puerto 8008. Podéis observar como desde mi ordenador se ha utilizado un puerto también, en esta ocasión el 3602. Os preguntaréis este puerto a qué viene ahora. Tranquilos. En toda conexión debe existir un puerto local (de mi ordenador) y un puerto remoto (ordenador externo). Es como una llamada telefónica, siempre deben existir dos teléfonos a ambos extremos. En nuestro caso, para poder establecer la comunicación mi ordenador necesita utilizar un puerto. Pero como es una llamada al exterior (no es una llamada recibida), no hay problema de router ni nada por el estilo. Afortunadamente el puerto 8008 del ordenador destino si que estaba accesible. Lo importante es que observéis como no se ha producido ninguna conexión a los dos puertos establecidos en las opciones del PPLive.

Vale, muy bien, pero por qué todos los puertos a los que nos hemos conectado son distintos también, y ninguno es el supuesto 5379? La respuesta es sencilla y lógica. Es recomendable, muy recomendable, que no se utilicen los puertos por defecto que traen las aplicaciones P2P, por múltiples razones. Una de ellas es que algunas compañias de acceso impiden el tráfico cuando trae un número de puerto concreto para limitar el uso de programas P2P a sus usuarios, que son los que más ancho de banda consumen. Y las personas con las que hemos establecido una conexión, sabían esto y han modificado sus puertos.

¿Qué puertos puedo poner en mi aplicación P2P?
Es recomendable que leais la documentación del programa en cuestión, pues algunos aconsejan ciertos puertos. En el caso del PPLive vamos a elegir dos puertos al azar, siempre y cuando no estén utilizados ya por alguna aplicación de nuestro ordenador. Se deben evitar utilizar los llamados puertos bien conocidos que son todos aquellos que van desde el 0 al 1023. En nuestro caso vamos a usar alguno fácil de recordar o cualquier puerto que ya tenga mapeado de otras aplicaciones P2P que no van a funcionar simultaneamente con PPLive. En mi caso elijo 16800 para UDP y el 3900 para TCP (este es uno de los puertos que utiliza SopCast, así mato dos pájaros de un tiro). Existe un listado en la iana donde podéis comprobar si alguno de los que habéis elegido se encuentra ocupado por alguna aplicación que utilicéis.



Una vez que he modificado los puertos en el PPLive, hacemos la misma comprobación que hemos realizado antes, y observaremos como ahora están a la escucha estos dos puertos, sin embargo, nadie se conecta a ellos (posiblemente sea necesario reiniciar el motor del PPLive para que surta efecto el cambio).

Ahora tengo que mapear estos puertos en mi router. Debido a la gran cantidad de router y procedimientos que existe, te recomiendo que visites alguna página especializada o consultes con el manual de tu router para realizar el mapeado.

Una vez que hemos mapeado los puertos tenemos que poner atención en el firewall. Si el que tenemos es automático, como el que incorpora el Windows XP SP2, sólo tendremos que PERMITIR cuando nos aparezca el mensaje y del resto ya se ocupa él. Si no es automático, debes consultar la documentación al respecto para ver como se actúa.

Probando las conexiones externas
Si ahoras cargamos un canal en PPLive nos llevaremos una grata sorpresa. Cuando antes a duras penas conseguiamos 8 ó 9 fuentes (pares) ahora llegamos a cerca de las 40 o más.



Como podemos comprobar en la captura, aunque sólo muestro unas cuantas conexiones por falta de espacio, podemos comprobar como ahora nuestro PPLive (tiene un nuevo PID al haberlo reiniciado, el 3240) tiene una mayoría amplia de conexiones externas que son las establecidas al puerto 3900 (172.16.3.5:3900).

El límite del SP2
Si todo lo hemos hecho correctamente, las conexiones que vienen dirigidas a mi PPLive ya no encuentran ningún obstáculo. Sin embargo, si tenemos instalado en nuestro ordenador el Service Pack 2 de Windows XP, existe una limitación muy importante para algunas conexiones salientes.

Debido a la proliferación de gusanos como Blaster que aprovechan las conexiones permanentes de los usuarios a Internet, Microsoft decidión incluir en el SP2 de su sistema operativo una limitación que impidiera una expansión rápida de estos gusanos. Todo ordenador con Windows XP SP2 tiene limitadas sus conexiones salientes a un mismo puerto en 10 por segundo. Cuando se supera este límite, Windows guarda el resto de conexiones en su pila y las va enviando muy lentamente.

Esta medida, que como vemos, va encaminada a impider un avance rápido de los virus, ha sido muy polémica. Unos afirman y aseguran que de ninguna manera afecta a los programas P2P, y que como mucho, ralentiza la obtención de fuentes, pero que cuando el programa lleva conectado un rato, las descargas no se ven afectadas. Sin embargo, otros opinan que es una excusa de Microsoft para obstaculizar el uso de programas P2P.

El hecho es que la limitación existe, y cuando usamos un programa P2P como puede ser PPLive, es posible que en la búsqueda de fuentes, muchos usuarios hayan dejado los puertos por defecto que trae el programa, por lo que mi PPLive intentará conectarse seguramente con más de 10 usuarios que tienen el mismo puerto en un segundo. Si esto sucede, el sistema me limita las conexiones. Veamos si esto ha ocurrido. Para comprobar si dicho límite se ha sobrepasado, abrimos el Visor de sucesos que podemos encontrar dentro de las herramientas administrativas del Panel de control de nuestro Windows. Si seleccionamos Sistema nos podemos encontrar con algo como esto:



Fijaos en la advertencia que aparece en la primera línea. Si lleva como número de suceso el 4226, indica que efectivamente el sistema ha limitado las conexiones salientes de mi sistema. Si hacéis doble clic sobre él os aparecerá una ventana con el siguiente texto:

TCP/IP alcanzó el límite de seguridad impuesto sobre el número de intentos de conexión TCP simultáneas.

Para obtener más información, vea el Centro de ayuda y soporte técnico en http://go.microsoft.com/fwlink/events.asp.


Los contrarios a esta limitación afirman que esta medida es una tomadura de pelo, pues si mi ordenador se encuentra infectado con un gusano e infecto a 10 ordenadores en menos de un segundo, cada uno de esos ordenadores infecta a otros 10 ordenadores en un segundo, con lo cual, en un dia practicamente estarían infectados todos los ordenadores del mundo.

Cada cual que actue en consecuencia. Si pensáis que estáis suficientemente protegidos por antivirus, antispywares, firewalls, etc.. y tomáis todas las precauciones posibles para que vuestro ordenador no se infecte, podéis plantearos el quitar la limitación. Quien piense que es una buena medida para impedir la rápida infección de virus y gusanos que lo deje.

A continuación voy a explicar cómo se desactiva esta limitación. Lo hago simplemente a título informativo y con sentido pedagógico. De ninguna manera estoy diciendo que lo hagáis. Es más, os recomiendo que si no tenéis el suficiente conocimiento como para saber si vuestro ordenador está suficientemente protegido y desconocéis el funcionamiento de antivirus, firewalls y demás, que no toqueis nada. Actuar con responsabilidad.

El propio PPLive viene preparado para desactivar esta limitación. Se trata de un fichero que podéis encontrar en la carpeta donde se haya instalado el motor de PPLive, habitualmente en C:\Archivos de programa\Archivos comunes\Synacast\SynaLive. Allí podréis ver un archivo llamado EvID4226Patch.exe. Dicho programa lo podeis descargar también de http://www.lvllord.de

Una vez que ejecutamos dicho programa obtenemos una pantalla como esta:



Como podemos ver, nos indica que nuestro sistema está limitado a 10 conexiones y me pregunta si deseo aumentar dicho límite a 50. Puedo contestar Sí, No o incluso, indicarle otro valor diferente a 50 (pulsando la tecla C). Para PPLive considero que con 50 está bien, así que pulso la tecla Y.

Una vez pulsada la tecla "Y" vemos como realiza una copia de seguridad del archivo TCPIP.SYS (que es el que está modificando) por si en algún momento deseamos deshacer la operación y nos informa que Windows dispone de una copia de dicho fichero TCPIP.SYS, y que el sistema podría utilizarlo para sustituir el fichero alterado. Por eso nos pregunta si deseamos renombrar dicho fichero. Le contestamos que sí (Y) ya que de lo contrario abortará la operación.



Pasados unos segundos aparecerá un mensaje de aviso del Windows:



Esto es normal, pues Windows ha detectado que algo extraño ha sucedido y que no puede restaurar el fichero a su estado original, por lo que me emplaza a insertar el CD del sistema para restaurarlo desde allí. Obviamente nosotros no queremos eso, así que pulsamos el botón CANCELAR.

Me vuelve a salir un mensaje de aviso que dice así:

Eligió no restaurar las versiones originales de los archivos y puede afectar a la estabilidad de Windows. ¿Está seguro de que desea guardar estas versiones de archivos desconocidas?


A dicha pregunta contestamos que SI

Tras esto, el programa de parcheo nos informa que todo ha sucedido correctamente y me indica la ruta donde se encuentra la copia de seguridad del archivo original (observa que el nombre termina en .original). Además nos aconseja que reiniciemos el sistema, cosa que haremos después de pulsar una tecla cualquiera.

Una vez reiniciado el ordenador, si volvemos a ejecutar EvID4226Patch.exe nos permitirá cambiar de nuevo el límite a otros valores o simplemente, desinstalar el parche para que todo vuelva como estaba pulsando la tecla U.

OPCIONES EN PPLIVE
Antes de probar PPLive sería recomendable tocar algún valor de su configuración. A partir de aquí ya no hay una receta fija. Cada uno debe probar los diferentes valores que mejor se adapten a su sistema pues afecta mucho la memoria del ordenador, velocidad de conexión y otros factores.

Accediendo a las opciones de PPLive (clic derecho sobre su icono. Elegimos Option...) nos encontramos con la pestaña Peer. Allí vemos dos valores, Max Peer Count y channel max Peer Count. Aunque no he encontrado información al respecto oficial, "channerl max Peer Count" indica el número máximo de pares por canal. En PPLive se entiende un par por las conexiones que en ese momento mantienen un intercambio de información entre nosotros, ya sea de entrada, de salida o de ambas. Vigilad este parámetro pues con valores altos puede provocar saturación en el router y cuando esto ocurre no podréis hacer nada en Internet mientras PPLive esté funcionando, incluso bastante tiempo después. El valor mínimo es 16 aunque yo no he logrado poner menos de 32 y el máximo 128. En mi caso, cuando pongo más de 50 se me bloquea el router y alguna vez hasta he perdido la conexión.

Max Peer Count es un valor algo más confuso para mí. Aún no entiendo bien su función, aunque podría ser un límite similar al que incluye SP2, es decir, conexiones simultáneas por segundo.

Después de varias pruebas tocando estos valores he podido ver que con valores pequeños de Max Peer Count carga más lento el buffer, pero luego se mantiene más estable en el 100%. Sin embargo con valores mayores, carga más rápido, pero no se mantiene tan estable y provoca caidas y trompicones.

En mi caso particular (ya os digo que esto se obtiene probando), he encontrado una carga rápida de buffer y estabilidad sin saltos estableciendo ambos valores a 32 aproximadamente.

En esa misma ventana tenemos una cuadro de chequeo que indica UPNP. Sirve para mapear automaticamente los puertos elegidos en nuestro router. Obviamente, el aparatejo debe ser compatible UPNP para poder usarlo.

Otra categoria de opciones es bandWidth. Aquí podemos elegir entre Default (por defecto) o Custom. Al elegir esta última opción podremos establer el número de canales que queremos tener cargados simultaneamente. Salgo que tengáis muchos megas de ADSL y mucha memoria RAM en el ordenador, no os aconsejo más de uno, pues si elegimos 2 y hemos establecido por ejemplo a 50 el número máximo de pares por canal, tendremos 100 conexiones que en algunos casos pueden ser excesivas y el sistema se me vendrá abajo. Como máximo podremos tener 4 canales simultaneos.

Dentro de la categoría Play tenemos dos opciones; la primera, las opciones del buffer. Tampoco lo tengo muy claro su utilidad, aunque si variamos los valores, podremos perder bastante (o mejorar) el funcionamiento del PPLive. Por las pruebas que he hecho, indica en principio cuando arranca el reproductor. Por ejemplo, si lo ponemos en proporción y elegimos el 80%, el reproductor arrancará cuando el buffer llegue al 80%. Imagino que de forma idéntica, aunque no se tomando qué referencia, cuando indicamos en lugar de porcentaje el temporizador (timer) también arrancará a los 10 segundos (si hemos indicado un 10). Pero ya os digo que no se exactamente sobre qué referencia se toma. Y tampoco se si esto influye una vez que ha arrancado el reproductor. Por las pruebas que he hecho parece que si, y con valores bajos de proporción (50% por ejemplo), tenia muchos parones posteriormente. Sin embargo con valores más altos (80% o más) la estabilidad era mejor. Lo tengo puesto a 10 segundos que es como mejor me ha funcionado.

Player Option es sencillo. Indicaremos la ruta de nuestro reproductor favorito para visualizar stream con contenedores asf (por defecto Windows Media) y rm (Real Media).


Mi recomendación: si os funciona bien, no toquéis nada. Dejadlo como está. Si no os funciona, investigar y seguro que mejorará tomando como base todo esto que os comentado. Suerte ! :-)

1.12.05

 

El lio de los puertos en los programas P2P

Dentro de un mismo ordenador hay muchas aplicaciones funcionando. Según hemos visto en el post anterior algunas pueden ser clientes, otras pueden ser servidores y otras ambas cosas a la vez.

Hemos visto que el cliente pide algo al servidor, pero ¿cómo sabe el cliente a quién tiene que dirigir esa petición?. Pues bien, todo ordenador conectado a la red tiene como una especie de matrícula, de dni, de clave que lo hace único y totalmente identificable entre todos los demás. Esto es lo que se conoce como dirección IP. Está formada por cuatro números del 0 al 255 separados por puntos. Por ejemplo, 123.4.23.43 es una dirección IP. Como veis, el propio nombre (dirección) indica lo que es. Actúa como una dirección postal. Cuando un cliente hace una petición a un servidor, entre otras cosas, debe indicar la dirección IP del servidor para que esa petición llegue a su destino. Estamos hartos de utilizar direcciones de este tipo sin saberlo. Cuando escribimos en nuestro navegador http://www.google.com, realmente estamos indicando una dirección IP. Solo que es más sencillo para nosotros recordar esa dirección que no una serie de números sin sentido. Cuando escribimos la dirección, otro ordenador de la red se encarga de traducir esas palabras a su correspondiente IP. Por lo tanto, realmente nuestro navegador (cliente) manda, aunque indirectamente, una dirección IP.

Ya hemos mandado la "carta" a su destinatario. Como la dirección IP es precisa, llegará sin lugar a duda. Ahora bien, dentro de un ordenador puede haber varios servidores funcionando. ¿Cómo sabe el ordenador a qué servidor debe entregar la petición?. La respuesta es: gracias a los puertos de red. Cada aplicación servidora tiene asignado un número entre el 0 y el 65535, de forma que si a nuestra petición le añadimos dicho número, cuando nuestra "carta" llega al destino sabe a qué "buzón" va dirigida. Nuestro navegador no solo ha mandado la petición de página al sevidor de google, sino que también, de forma oculta, ha mandado un número de puerto, concretamente el 80. Cuando nuestra petición llega al ordenador de Google, gracias a que lleva dicho número se dirige a un servidor de web.

El servidor por tanto está permanentemente escuchando todo lo que viene dirigido con ese número de puerto. En definitiva, es lo que habitualmente se conoce como que el puerto está abierto. Hay algunos puertos que ya están establecidos de antemano.

Pues bien, como hemos dicho que nuestro programa P2P TV (cualquiera de ellos, el sopcast, pplive, tvants...) es cliente y servidor a la vez, por el hecho de ser esto último debe estar atento siempre a un determinado puerto por el que le llega las peticiones. Y ese puerto debe ser accesible desde el exterior. De no ser así, nuestro programa P2P TV perderá su función servidora y por lo tanto, no aprovechará al máximo su capacidad.

En muchas ocasiones ese puerto puede ser que no esté accesible desde el exterior, por motivos de seguridad o por necesidades técnicas. Por ejemplo, en los casos que accedemos a Internet a través de un router configurado en modo multipuesto. Veamos esto más detalladamente.

El problema de los router en multipuesto
Las compañías de acceso a Internet suelen dar en la mayoría de los casos solo una dirección IP de acceso a Internet. Cuando en casa tenemos varios ordenadores y deseamos que todos acceden a la red, habitualmente la solución es conectarse a través de un router. Esta es la configuración en multipuesto.

Si la compañía de acceso me ha dado una sola dirección IP, ¿como van a identificar a cada uno de mis ordenadores en Internet? La respuesta es simple: directamente no se identifican. Desde fuera de Internet se ve mi red como si fuera un único ordenador, una única dirección IP. Sin embargo, de router para dentro, cada ordenador de mi casa tiene una dirección IP única, sólo que en esta ocasión es una dirección que se puede repetir en otras redes internas del mundo. Es lo que se conoce como una dirección privada.

Cuando mi ordenador hace una petición al exterior, el router almacena la información de destino y de origen, de forma que cuando la información solicitada regresa, el router sabe exactamente a qué ordenador de su red interna tiene que enviar esa información. El único que conoce la IP privada de mi ordenador es mi router. Esta situación no ofrece ningún problema.

El problema viene cuando mi ordenador tiene una aplicación servidor funcionando. Hemos visto que esa aplicación debe permanecer a la escucha por un puerto determinado. Desde el momento que arranco la aplicación, el puerto está abierto, está escuchando. Pero esta situación es muy particular, pues yo no realizo peticiones, sino que algún ordenador externo a mi red las realizará, sin yo saber quien o cuando la hará. Cuando esa aplicación externa envía una petición a mi servidor, trae simplemente mi dirección IP pública y un número de puerto. Cuando mi router recibe esa petición, simplemente no sabe a qué ordenador de su red interna debe reenviar la petición, con lo cual, es rechazada y no llega a su destino.

Esto se soluciona con lo que se conoce como mapeo o redireccionamiento de puertos. Popularmente se conoce como abrir puertos, aunque vemos que esto no es correcto, pues los puertos ya están abiertos. Ahora lo comprobaremos de una forma práctica.

El mapeo de puertos consiste en indicarle al router que cuando venga una petición dirigida al puerto 6434 por ejemplo, debe enviarla al ordenador cuya dirección IP es la 172.16.1.5, por ejemplo. Y cuando venga dirigida al puerto 43823 debe enviarla al 172.16.2.5. Si suponemos que mi dirección IP pública es 80.3.53.233, si viene una petición dirigida a dicha IP y al puerto 6434, cuando mi router reciba esa información, la reenviará al ordenador 172.16.1.5 de su red interna.

Por lo tanto, cuando tenemos una configuración de este estilo no podemos tener dos ordenadores mapeados con el mismo número de puerto. De igual forma, si las IP privadas las asigna dinámicamente mi sistema, tampoco podré hacer el mapeo ya que los ordenadores de la red privada tendrán una dirección IP diferente cada vez que se encienden. Todas estas son cuestiones a tener en cuenta.

¿Cuándo se da esta situación? Pues como vemos, cuando el ordenador accede a internet a través de un router configurado en multipuesto. Si accedemos a internet a través de modem o similar, o un router configurado en monopuesto, no existe este problema, aunque como es aconsejable en estas circunstancias tener activado un firewall que proteja mi ordenador, tendremos que abrir los puertos (o mapearlos) en el firewall.

 

Como funcionan los programas P2P TV

La verdad es que al ser una aplicación del P2P relativamente reciente y en su mayor parte realizada en universidades chinas, la dificultad de entender este idioma hace que la información haya que tomarla muchas veces por similitudes con otros programas de este tipo, habitualmente los de intercambio de ficheros.

ARQUITECTURA TRADICIONAL
La arquitectura tradicional de Internet ha sido la Cliente-Servidor. El correo electrónico, las newsgroups, el IRC, la Web y practicamente todos y cada uno de los servicios disponibles en la red utilizan esta arquitectura.

Su funcionamiento es simple: un programa (el servidor) es el encargado de dar (por eso el nombre) todo lo que otro programa (el cliente) le pide. Cuando utilizamos algún navegador para ver una página web, está entrando en funcionamiento esta tecnología. El navegador le pide al servidor una página cualquiera. El servidor recibe esa petición, busca la página y se la envía. El cliente la recibe y la muestra.

Aunque he simplificado bastante el funcionamiento, la base es esta y no necesitamos complicarnos de momento más.


ARQUITECTURA PEER TO PEER (P2P)
La arquitectura tradicional tiene un problema, y es que el servidor tiene que soportar una carga de trabajo muy importante. Si la información que tiene que enviar es mucha, se hace también un consumo muy importante de ancho de banda. Es como un gran depósito de agua que tuviera que ofrecer este líquido a una población. Cuantos más grifos hay, más caudal (más ancho de banda) requiere ese depósito. Y cuanto más grande es la tubería de un usuario, más agua necesita (por ejemplo un campo de golf).

Este problema viene a solucionarlo el P2P. La información no procede solo de una única fuente, sino que los propios usuarios que están pidiendo esa información se convierten en pequeños servidores que la ofrecen a otros usuarios. Se comparte la distribución de la información, aliviando al servidor de una gran parte del trabajo. Es decir, en este tipo de arquitectura, no hay un programa cliente y otro servidor claramente diferenciados, sino que un mismo programa hace las funciones de cliente cuando pide y de servidor cuando ofrece lo que ya tiene.

Entonces, ¿cómo funciona exactamente un programa P2P TV?
Sabiendo lo anterior, la explicación es mucho más sencilla. Cuando estamos viendo un canal de televisión que está distribuido de esta manera, además de recibir la información (descarga) la estamos enviando a otros usuarios que están viendo ese mismo canal (subida). La idea es sencilla. Es decir, nuestro programa funciona a la vez como cliente y como servidor.

Existe aún la función de servidor, tal y como lo conocemos, aunque en esta ocasión se conoce como tracker. La misión del tracker es la de poner en contacto entre sí a todos los usuarios que desean ver un mismo canal, de forma que se conozcan entre ellos para poder compartir el canal.

Esto parece que es sencillo entonces. Y lógico. Resumiendo:

Deseo ver un canal, por ejemplo con el PPLive. Mi PPLive se pone en contacto con el servidor principal (que estará en China) y le dice que quiere ver el canal X. El servidor principal (tracker a partir de ahora) guarda la información de este cliente y le manda información de los otros usuarios que están viendo ese canal. De esa forma mi PPLive sabe con quien tiene que comunicarse para empezar a compartir el canal. Imaginemos que otro PPLive realiza el mismo proceso. El tracker le enviará información de qué otros usuarios (yo incluido) están viendo (y compartiendo) ese canal.

Entonces, vemos que mi PPLive tiene la función de cliente, pues pide información al tracker y pide trozos del canal para visualizar a otros PPLive. Ahora bien, desde el momento que mi PPLive debe recibir peticiones de otros y compartir trocitos de canal, mi PPLive se ha convertido también en un servidor. Pequeño, pero servidor al fin y al cabo. ¿Entendido?

This page is powered by Blogger. Isn't yours?

Creative Commons License
El contenido de este weblog tiene licencia Creative Commons Atribución-NoComercial-CompartirIgual 2.5. Puede reproducirlo sin fines comerciales indicando como fuente nuestra dirección http://tvxp2p.blogspot.com