<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Eduardo Marín</title>
	<atom:link href="http://eduardomarin.es/feed/" rel="self" type="application/rss+xml" />
	<link>http://eduardomarin.es</link>
	<description>Eduardo Marín, website. Html5, CSS3, Dom, WCAG, Mobile, Android, Arduino, Neuronal Control</description>
	<lastBuildDate>Tue, 08 Nov 2011 19:08:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Comunicación con iframe cross-domain bidireccional</title>
		<link>http://eduardomarin.es/2011/11/comunicacion-con-iframe-cross-domain-bidireccional/</link>
		<comments>http://eduardomarin.es/2011/11/comunicacion-con-iframe-cross-domain-bidireccional/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 19:03:02 +0000</pubDate>
		<dc:creator>edu</dc:creator>
				<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[web develop]]></category>

		<guid isPermaLink="false">http://eduardomarin.es/?p=170</guid>
		<description><![CDATA[La idea es, ya que no podemos acceder directamente al iframe desde otro dominio, utilizar un &#8220;controlador&#8221; alojado en el mismo dominio del origen del iframe para que pueda conversar con él. Este controlador, a su vez, monta un iframe &#8230; <a href="http://eduardomarin.es/2011/11/comunicacion-con-iframe-cross-domain-bidireccional/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div>
<p>La idea es, ya que no podemos acceder directamente al iframe desde otro dominio, utilizar un &#8220;controlador&#8221; alojado en el mismo dominio del origen del iframe para que pueda conversar con él. Este controlador, a su vez, monta un iframe con vuelta hacia el dominio padre para que pueda enviarle posibles respuestas desde el dominio hijo.</p>
<p><a href="http://eduardomarin.es/wp-content/uploads/2011/11/cross_domain_iframe.png"><img class="aligncenter size-full wp-image-172" title="cross_domain_iframe" src="http://eduardomarin.es/wp-content/uploads/2011/11/cross_domain_iframe.png" alt="" width="604" height="191" /></a></p>
<p>De esta forma, desde domain_A, podemos utilizar el src de controller_iframe_A para “enviar” instrucciones en el hash de su url. Estas instrucciones son recibidas por controller_iframe_B que utiliza hashchange para detectar cambio de hash. El controlador utiliza esa instrucción hash que es ejecutada mediante eval(). Al encontrarnos ya en domain_B, dicha instrucción puede acceder al contents() de cross_iframe, para afectar, a nivel javascript, a todo su árbol DOM. Hasta aquí, todo el camino es recorrido “hacia abajo” hasta el iframe origen afectado por cross-domain.</p>
<p>Si ahora deseamos poder “afectar” desde dicho iframe a elementos de nuestra working_page, nos volvemos a encontrar con el problema de cross-domain. Para llegar hasta arriba, volvemos a utilizar la misma técnica en dirección contraria. Esta vez, utilizamos un iframe oculto en nuestro controlador, con src en domain_A, y modificable desde el controlador controller_iframe_B. Las instrucciones de respuesta se presentan ejecutables a working_page, que únicamente debe llegar hasta su top, recorriendo el parent del parent.</p>
<p><strong>Caso de uso</strong></p>
<p><a href="http://eduardomarin.es/wp-content/uploads/2011/11/cross_domain_iframe_01.png"><img class="aligncenter size-full wp-image-173" title="cross_domain_iframe_01" src="http://eduardomarin.es/wp-content/uploads/2011/11/cross_domain_iframe_01.png" alt="" width="378" height="218" /></a></p>
<p>Supongamos que las dos líneas que aparecen son simples divs. Queremos hacer la línea del iframe en domain_b un elemento clickable que al ser pulsado, cambie el color de “click_aqui”, situado en domain_a.</p>
<p>Así, utilizando el “src” del iframe en domain_b:</p>
<p><code>document.getElementById("iframeSource").src="sourceOfIframeInB#"+instruction;</code></p>
<p>donde <span style="color: #0000ff;"><code>instruction = “$('#iframeCrossDom').contents().find('div').css({'cursor':'pointer'}).click(function(){exeCrossDom(\"$('#buttonhash', window.parent.parent.document).css({‘color’:’#ff0000’});\");});”</code></span></p>
<p>El controlador está a la escucha del hashchange de ese iframe, ya en domain_b, e implementa una función exeCrossDom que permite enviar instrucciones de vuelta, al return_iframe del dominio A:</p>
<p>Estos controladores, montados en ambos lados, y con pequeñas diferencias, utilizan el hashchange:</p>
<p><span style="color: #0000ff;"><code>$(window).bind("hashchange", function(){<br />
if(location.hash != ""){<br />
eval(location.hash.substring(1));<br />
this.location.hash = "";<br />
}<br />
});</code></span></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://eduardomarin.es/2011/11/comunicacion-con-iframe-cross-domain-bidireccional/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SACAR 11 &#8211; Seguridad en redes VANET bajo protocolo 802.15.4</title>
		<link>http://eduardomarin.es/2011/11/sacar-11-seguridad-en-redes-vanet-bajo-protocolo-802-15-4/</link>
		<comments>http://eduardomarin.es/2011/11/sacar-11-seguridad-en-redes-vanet-bajo-protocolo-802-15-4/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 20:44:20 +0000</pubDate>
		<dc:creator>edu</dc:creator>
				<category><![CDATA[802.15.4]]></category>
		<category><![CDATA[sacar]]></category>
		<category><![CDATA[v2v]]></category>
		<category><![CDATA[vanet]]></category>

		<guid isPermaLink="false">http://eduardomarin.es/?p=158</guid>
		<description><![CDATA[Al trabajar con redes de comunicación inalámbricas nos enfrentamos con problemas de seguridad que pueden comprometer al sistema. Al igual que en una red tradicional de comunicación, los requisitos de seguridad en una VANET son los siguientes: - Conﬁdencialidad: Propiedad &#8230; <a href="http://eduardomarin.es/2011/11/sacar-11-seguridad-en-redes-vanet-bajo-protocolo-802-15-4/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div>
<p>Al trabajar con redes de comunicación inalámbricas nos enfrentamos con problemas de seguridad que pueden comprometer al sistema. Al igual que en una red tradicional de comunicación, los requisitos de seguridad en una VANET son los siguientes:</p>
<p>- <em>Conﬁdencialidad</em>: Propiedad de la información por la que se garantiza que está accesible únicamente a personal autorizado.<br />
- <em>Integridad</em> : Propiedad de la información por la que se garantiza que ésta no se ve alterada o modificada por personal no autorizado.<br />
- <em>Disponibilidad</em>: Propiedad que asegura y garantiza al usuario el uso del sistema en cualquier momento determinado.<br />
- <em>No repudio</em>: No se puede negar la autoría.</p>
<p><a href="http://eduardomarin.es/wp-content/uploads/2011/11/seg_011.png"><img class="aligncenter size-full wp-image-162" title="seg_01" src="http://eduardomarin.es/wp-content/uploads/2011/11/seg_011.png" alt="" width="239" height="217" /></a></p>
</div>
<div><span style="font-size: small;"><span style="line-height: 24px;"><br />
</span></span> No obstante, las características que imponen las redes VANET en cuanto a topología dinámica, falta de procesamiento centralizado, … etc. dificultan el cumplimiento de estos requisitos de seguridad. La política de seguridad a aplicar en un entorno ad-hoc dependerá, en gran media, de la aplicación y del escenario concreto para los que se realiza el despliegue de la red.Las propuestas de seguridad deben adaptarse a las necesidades específicas que surgen en el planteamiento de una u otra red de comunicación. Para nuestro caso, redes VANET definidas sobre la teoría de redes ad-hoc, estas políticas de seguridad deberán cubrir básicamente cuatro requisitos: control de acceso a la red, sistema de detección de intrusos (SDI), seguridad de los protocolos de encaminamiento y servicios de gestión de claves.&nbsp;</p>
<p>Estas políticas de seguridad deberán ser lo suficientemente robustas como para garantizar que un posible atacante sea incapaz de comprometer el sistema, entendiendo el papel de atacante como cualquier individuo o equipo que realice alguno de los siguientes ataques básicos (principalmente)</p>
<p>Ataques básicos :<br />
- <em>Falsiﬁcación de la información</em> : El atacante difunde información falsa o errónea para que afecte al resto de los vehículos.<br />
- <em>Manipulación de la información del sensor</em>: Modiﬁcar su posición, dirección, velocidad, etc. para escapar de ciertas responsabilidades por ejemplo, haber provocado un accidente.<br />
- <em>Denegación de servicio</em>: utilizar un inhibidor de frecuencia para conseguir que un vehículo no reciba ninguna señal de su entorno en una cierta zona.<br />
- <em>Falsificación de identidad</em>.<br />
- <em>Rastreado de vehículos</em>: Seguir la pista de un vehículo infectándolo con algún virus que monitorice el estado de dicho vehículo.</p>
<p>Al igual que ocurre en redes tradicionales, las VANETs no quedan exentas de intrusiones externas y, por lo tanto, es necesario establecer un mecanismo de control de acceso a la red y sus servicios. Ante un ataque en el que un intruso acceda a los servicios de la red puede derivar en consecuencias catastróficas ya que, en las VANETs, los nodos asumen tareas de gestión y encaminamiento, dado que no existe una entidad central que asuma dicha responsabilidad. De esta forma, un intruso puede desviar el tráfico durante el encaminamiento o tener acceso a claves de identificación.</p>
<p>Tanto en la capa de red como en la de aplicación es necesario llevar a cabo un control de acceso que impida que un nodo sin autorización sea capaz de recibir o encaminar información (nivel de red) o que pueda acceder a servicios críticos como sería el de gestión de claves (nivel de aplicación).</p>
<p>Así pues, parece determinante ofrecer una política de control de acceso robusta. Veamos más detenidamente este aspecto.</p>
</div>
<div>
<p><strong>Control de acceso</strong></p>
<p>A través del control de acceso, un usuario puede acceder a la red y sus servicios tras un proceso de identificación y autorización. La forma en que se realiza este tipo de procesos depende en gran medida de las características de la red. Así, existen redes ad-hoc en la que los servicios de autenticación se encuentran centralizados, mientras que en otras redes estos servicios se encuentran distribuidos. Esto supone la aplicación de unos u otros mecanismos de control de acceso. Si elegimos un mecanismo de control de acceso distribuido para la red, será necesario un control de acceso basado en certiﬁcados digitales y autoridades certiﬁcadoras. En otros esquemas con servicios centralizados se requiere una autenticación basada en usuario y contraseña. Es muy útil hacer un estudio previo de las necesidades de seguridad de la red a desplegar, de esta forma, se podrán adecuar los mecanismos de control de acceso a la red.</p>
<p>Como primera línea de defensa, el control de acceso es una buena alternativa, sin embargo, debemos buscar soluciones en caso de que esta barrera se vea comprometida. Así, los sistemas de detección de intrusos (SDI) podrían protegernos en caso de que un individuo no autorizado accediera a la red.</p>
<p>Para las redes VANETs, se presentan varias propuestas SDI, veamos las más interesantes:</p>
</div>
<div>
<p><strong>(SDI) Sistemas de detección de intrusos</strong></p>
<p>Una solución basada en arquitecturas distribuidas y cooperativas para la detección de intrusos, es la que se propone en [YZWL 2000]. En este sistema, un agente de monitorización SDI lanzado en cada nodo monitoriza todas las actividades locales que ocurren a su alrededor. Si el SDI detecta una intrusión a partir de las trazas locales inicia un procedimiento de respuesta. Si se detecta una anomalía pero que no hay evidencias formales de la intrusión se usa un protocolo cooperativo con los vecinos para determinar si la intrusión tuvo lugar o no.</p>
<p>Otra alternativa, contemplada en [OKRG 2002], también presenta un SDI distribuido pero optimizado para las redes VANET. En este caso, cada nodo no ejecuta un agente de monitorización y control, sino que ofrecen el paso y alojamiento de agentes móviles -entidades software autónomas, ligeras y dinámicamente actualizables- que son capaces de desplazarse por la red y ejecutarse en ciertos nodos, de forma que minimizan el uso de los recursos, que en este tipo de redes suele ser limitado (ancho de banda, capacidad de proceso de los nodos&#8230;).</p>
<p>Es por ello que el empleo de técnicas de SDI debe realizarse previo estudio de las características de la aplicación y del escenario en el que ésta vaya a ejecutarse, debido a la sobrecarga que estos mecanismos pueden introducir, en términos de procesamiento, transmisión y almacenamiento en nodos. Si los requisitos de seguridad exigen fuertes técnicas de control y detección, y si los nodos disponen de suficiente capacidad y autonomía para soportar un SDI, entonces la elección y aplicación de este mecanismo de seguridad es justificable.</p>
</div>
<div>
<p><strong>Cifrado y firmas digitales</strong></p>
<p>Si optamos por utilizar técnicas de cifrado y firmas digitales como mecanismo de seguridad, tendremos que hacer uso de claves criptográficas. En esta situación, las claves criptográficas deberán ser compartidas entre los nodos y debe ofrecerse un mecanismo para gestionar dichas claves.<br />
En este sentido, nos encontramos ante dos posibles configuraciones de nuestras redes VANET. Podemos permitir que nuestra propia red gestione de forma autónoma las claves, en cuyo caso nos encontraríamos con VANET auto organizadas; o bien podemos delegar dicha gestión a una entidad externa de confianza para la gestión de estas claves, VANET con gestión de claves externa.<br />
En esquemas de VANETs pura, sin red de respaldo, es m´s apropiado usar un esquema de gestión de clave que no depende de ninguna entidad externa. En cambio, si se dispone de una red de respaldo, se puede optar por esquemas de tipos centralizados.<br />
Las soluciones las mas populares son:</p>
<p>Para una red VANET pura:<br />
- Gestión de claves en cadena de certiﬁcados.<br />
- Gestión de claves basada en movilidad.</p>
<p>Para un red VANET híbrida:<br />
- Autoridades de certiﬁación distribuídas.<br />
- Gestión paralela de claves.</p>
</div>
<div><span style="text-decoration: underline;">Gestión de claves en cadena de certiﬁcados</span>Cada nodo genera su certiﬁcado, se distribuye y se almacena en cada<br />
nodo de la red. Si un nodo deja de ﬁarse de otro nodo, se puede pedir una<br />
renovación del certiﬁcado. Del mismo modo, si un nodo sospecha que su clave privada ha sido comprometida, puede revocar su propio certiﬁcado y generar otra clave privada.<span style="text-decoration: underline;">Gestión de claves basada en la movilidad</span>&nbsp;</p>
<p>Se basa en un esquema de distribución peer-to-peer de las claves de los nodos basada en la movilidad de cada nodo. Se transmite una clave a un nodo según la movilidad que tiene en un momento para que este nodo distribuya las claves a los nodos a su alcance. Se rompe así la necesidad de tener una entidad externa para compartir las claves.</p>
<p><span style="text-decoration: underline;">Autoridades de certiﬁcación distribuidas</span></p>
<p>Se basa en una entidad externa de certiﬁcación que se encarga de distribuir las claves a los nodos de la red. Esta entidad debe ser altamente segura para que ningún atacante pueda tomar el control de ella y comprometer los mecanismos de certiﬁcación. Se puede distribuir los certiﬁcados de forma parcial o total.</p>
<p>En un mecanismo de distribución parcial de los certiﬁcados se elige un subconjunto de nodos llamados servidores a los cuales se transmiten las claves. Esos nodos deben disponer de una clave privada y una clave pública para que la entidad externa les pueda identiﬁcar de forma unívoca. Cada uno de los servidores genera una ﬁrma parcial utilizando su clave privada que es<br />
enviada a un combinador, que puede ser cualquier servidor. El combinador reconstruye así la ﬁrma digital.</p>
<p>En un mecanismo de distribución total de los certiﬁcados, la clave se distribuye a todos los nodos de la red y requiere que un nodo use la entidad externa para contactar con cualquier vecino. No es necesario el concepto de combinador ya que será el propio nodo quién reconstruye la ﬁrma digital del grupo.</p>
<p><span style="text-decoration: underline;">Gestión paralela de claves</span></p>
<p>Esta alternativa descrita en [SYRK 2004] se basa en una distribución parcial de los certiﬁcados por parte de una entidad externa y de un mecanismo de cadenas de certiﬁcados. La propuesta es conocida como Composite Key Management. La entidad externa distribuye el certiﬁcado a nodos servidores y luego tiene lugar el mecanismo de cadenas de certiﬁcados.</p>
<p><strong>SOLUCIÓN ADOPTADA</strong></p>
<p><span style="text-decoration: underline;">Autorización de certificación distribuída</span></p>
<p>Apoyándonos en los trabajos de investigación de Alexandre Viejo, Francesc Sebé, Josep Domingo-Ferrer y Jesus Manjón, de la Universitat Rovira i Virgili (Comunicaciones Privadas en Redes Ad-hoc Vehiculares), optamos por un sistema de gestión de claves distribuído, gasado en agentes externos.</p>
<p>El sistema ofrecerá un mecanismo de seguridad y privacidad en el envío de mensajes siempre que los agentes externos que gestionan los identificadores (señales de tráfico, dispositivos específicos, nodos certificados, &#8230;) sean fiables. Así, estas señales están facultadas para revocar identificadores y alertar a la red sobre nodos de dudosa fiabilidad o cuyas intenciones son entorpecer y comprometer al sistema.</p>
<p>Se propone así un sistema basado en pseudónimos válidos firmados por autoridades de tráfico que permiten identificar a usuarios fiables y distinguirlos de aqueños que pudieran ser dañinos, en cuyo caso, su pseudónimo queda marcado como “rebocado”, y cualquier mensaje que envíe será automáticamente identificado como no seguro. El sistema, además, impone una política de renovación de pseudónimos para ofrecer al usuario un mayor nivel de privacidad, al exponer en menor grado el seguimiento y traceado por terceros.</p>
<p><span style="text-decoration: underline;">Propuesta</span></p>
<p>Distinguimos en nuestra red VANET dos elementos principales:<br />
i) Señales de tráfico o dispositivos específicos.<br />
ii) Vehículos moviéndose por nuestra zona de cobertura.</p>
<p>Las señales de tráfico se consideran nodos estáticos y son gestionados por las autoridades de tráfico (DGT).</p>
<p>Suponemos que las señales de tráfico son nodos fiables, que no guardan información acerca de los nodos de la red ni realizan actividades dañinas en la misma. Estos nodos tienen la capacidad de generar y almacenar una clave privada SKt, gestionada por la autoridad de tráfico. La clave pública asociada es accesible, conocida y aceptada como válida por todos los demás nodos de la red.</p>
<p>Cada vehículo está equipado con un dispositivo no manipulable (similar a una tarjeta inteligente), que no puede ser desinstalado y que impide que el usuario modifique su identificación.</p>
<p><span style="text-decoration: underline;">Transmisión de mensajes</span></p>
<p>Cuando transmitimos mensajes en nuestra red, ya sean mensajes de alerta o informativos, estos serán enviados siguiendo la técnica de difusión uno-a-todos. Así, una señal de tráfico puede indicar a la red la existencia de un nodo no fiable o deshonesto de esta forma. De la misma manera, los vehículos deben indicar cada cierto tiempo si siguen o no activos, a través de mensajes “hello-beacons”, que ayudan a gestionar la propia red VANET.</p>
<p>Los mensajes transmitidos vía broadcast por las señales de tráfico son de confianza, esto es, están correctamente firmados y no utilizan pseudónimo.</p>
<p>En cambio, los vehículos sí necesitan incorporar esta información en el envío de sus mensajes. Este pseudónimo IDnode está formado por la concatenación de cuatro valores, a los cuales se le aplica la firma SKt.</p>
<p>El primer campo es un valor v aleatorio. El segundo es una marca temporal que indica cuándo se generó dicho pseudónimo. Y los otros dos campos son las dos claves públicas del nodo (PKSnode, PKEnode), utilizadas para firmar y cifrar, respectivamente. Mediante el uso del sello temporal, podemos determinar, si ésta es más antigua que un cierto tiempo preestablecido, si es o no un mensaje válido.</p>
<p><a href="http://eduardomarin.es/wp-content/uploads/2011/11/seg_02.png"><img class="aligncenter size-full wp-image-163" title="seg_02" src="http://eduardomarin.es/wp-content/uploads/2011/11/seg_02.png" alt="" width="332" height="86" /></a></p>
<p>La tarjeta inteligente del vehículo contiene su Idnode actual y las claves secretas SKs,node ,<br />
SKe,node .<br />
Gracias a estos datos, cualquier mensaje enviado por un vehículo es válido si su Idnode es un pseudónimo válido, esto es, si IDnode no ha sido marcado como “revocado”. Para los mensajes “hello_beacon”, aparte del pseudónimo, se transmiten las coordenadas GPS actuales del vehículo, así como otros posibles datos, todo ello ﬁrmado con SKs,node :</p>
<p><a href="http://eduardomarin.es/wp-content/uploads/2011/11/seg_03.png"><img class="aligncenter size-full wp-image-164" title="seg_03" src="http://eduardomarin.es/wp-content/uploads/2011/11/seg_03.png" alt="" width="332" height="86" /></a><br />
<span style="text-decoration: underline;">Obtención de un pseudónimo</span></p>
<p>Cuando una señal recibe un mensaje “hello_beacon” que contiene un pseudónimo caducado, es decir, el sello temporal ha expirado, ésta avisa al propietario del mensaje a actualizar su Idnode.</p>
<p>Para ello, el nodo sigue los siguientes pasos:</p>
<p>1. Generación de dos parejas de claves:</p>
</div>
<div>
<p dir="ltr">(SKSnode’ , PKSnode’ ) (SKEnode’, PKEnode’ )</p>
</div>
<div>2. El nodo genera un nuevo pseudónimo</div>
<div><a href="http://eduardomarin.es/wp-content/uploads/2011/11/seg_04.png"><img class="aligncenter size-full wp-image-165" title="seg_04" src="http://eduardomarin.es/wp-content/uploads/2011/11/seg_04.png" alt="" width="332" height="86" /></a></div>
<div>
*vRandom’, timeStamp’, PKSnode’ y PKEnode’ son valores nuevos, y firmados con SKt antigua.</div>
<div>
<p>3. El nodo envía el siguiente mensaje cifrado a la señal de tráﬁco</p>
<p><a href="http://eduardomarin.es/wp-content/uploads/2011/11/seg_05.png"><img class="aligncenter size-full wp-image-166" title="seg_05" src="http://eduardomarin.es/wp-content/uploads/2011/11/seg_05.png" alt="" width="199" height="77" /></a></p>
</div>
<div>4. La señal de tráﬁco descifra el mensaje,veriﬁca su contenido (en particular se ase-<br />
gura que Idnode no ha sido revocado por un mal comportamiento anterior) y genera el mensaje ﬁrmado:</div>
<div></div>
<div><a href="http://eduardomarin.es/wp-content/uploads/2011/11/seg_06.png"><img class="aligncenter size-full wp-image-167" title="seg_06" src="http://eduardomarin.es/wp-content/uploads/2011/11/seg_06.png" alt="" width="332" height="86" /></a></div>
<div>
5. IDnode es enviado al vehículo cifrado bajo PKEnode’.6. El vehículo descifra el mensaje y obtiene su nuevo pseudónimo Idnode .&nbsp;</p>
<p>El sistema descrito trabaja bajo el supuesto de que cada vehículo lleva implantado de fábrica un identificador inicial. Éste identificador es firmado con SKt, pero no es un IDnode válido. Será después, cuando se comunique con una señal, cuando el pseudónimo será actualizado.</p>
<p><span style="text-decoration: underline;">Broadcast de mensajes coche-a-todos</span></p>
<p>Un usuario que quiere enviar una alerta a la red selecciona el mensaje a enviar, concatena el sello temporal y su pseudónimo y ﬁrma el mensaje entero utilizando su clave privada.</p>
<p>Un posible ejemplo de esta situación se daría cuando un coche, atrapado en un atasco, alerta a los coches cercanos sobre esta situación.<br />
Al recibir el mensaje, los otros coches verifican la validez del pseudónimo. El mensaje se considera válido si el pseudónimo no ha sido revocado.<br />
Las señales de tráﬁco tienen dos maneras de decidir si un usuario es deshonesto o no:</p>
<p>1. Se considera que un mensaje es falso si hay al menos i (parámetro de seguridad) mensajes de diferentes usuarios informando que un cierto mensaje es falso.</p>
<p>2. La segunda opción se basa en la posibilidad de que las señales de tráﬁco reciban información directamente de la autoridad de tráﬁco sobre situaciones peligrosas en la carretera. Un usuario que envíe información contradictoria con la fuente oﬁcial será considerado como deshonesto.</p>
<p>Una vez una señal detecta a un usuario deshonesto, notiﬁca a toda la red dicha situación mediante broadcast.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://eduardomarin.es/2011/11/sacar-11-seguridad-en-redes-vanet-bajo-protocolo-802-15-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SACAR 10 &#8211; IEEE 802.15.4 Radio Shadowing in Urban Enviroments &#8211; Obstacles</title>
		<link>http://eduardomarin.es/2011/10/sacar-10-ieee-802-15-4-radio-shadowing-in-urban-enviroments-obstacles/</link>
		<comments>http://eduardomarin.es/2011/10/sacar-10-ieee-802-15-4-radio-shadowing-in-urban-enviroments-obstacles/#comments</comments>
		<pubDate>Wed, 05 Oct 2011 20:59:49 +0000</pubDate>
		<dc:creator>edu</dc:creator>
				<category><![CDATA[Sin categoría]]></category>

		<guid isPermaLink="false">http://eduardomarin.es/?p=149</guid>
		<description><![CDATA[Hasta ahora, las mediciones y estadísticas que habíamos realizado se habían circunscrito a entornos con una visibilidad entre vehículos directa, sin ningún tipo de obstáculo que pudiera interferir en la recepción de los mensajes que se enviaran. No obstante, esta &#8230; <a href="http://eduardomarin.es/2011/10/sacar-10-ieee-802-15-4-radio-shadowing-in-urban-enviroments-obstacles/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div>Hasta ahora, las mediciones y estadísticas que habíamos realizado se habían circunscrito a entornos con una visibilidad entre vehículos directa, sin ningún tipo de obstáculo que pudiera interferir en la recepción de los mensajes que se enviaran. No obstante, esta situación idónea será difícil de encontrar en escenarios urbanos, donde la arquitectura impone barreras físicas que modifican el comportamiento de la señal, afectando en definitiva, a nuestra capacidad de recibir un determinado mensaje.&nbsp;</p>
<p>Así, en primer lugar, deberíamos establecer un parámetro o valor que nos indique en qué medida nuestra capacidad de recibir un mensaje ha sido alterada, en función de la distancia entre emisor y receptor, de la calidad del medio de transmisión, de los elementos que obstaculicen el camino que recorre la señal de transmisión&#8230;</p>
<p>Nos encontramos entonces con un parámetro que, en telecomunicaciones, nos permite determinar ese tipo de variación en la señal frente a pérdidas o interferencias. Este parámetro es el decibelio (db), y representa la relación existente entre la potencia de señal en el emisor y la potencia de señal en el receptor : dB = 10  log10 (Ps/Pe)</p>
<p>Gracias a este parámetro podemos evaluar cuantitativamente en valores relativos la calidad de nuestra señal en el receptor respecto a la del emisor. Sin embargo, el siguiente paso es determinar qué factores y en qué medida influyen sobre dicha relación. Las simulaciones en redes de comunicación se ven influenciadas por pérdida de señal debido a largas distancias, pérdidas determinísticas a pequeñas escalas o atenuaciones por efectos probabilísticos, por lo que el cómputo total es normalmente calculado como la suma independiente de procesos de atenuación Lx.  En este proyecto contemplaremos únicamente dos tipos de factores de atenuación sobre la señal de transmisión:</p>
<p><strong>- Right Two-Ray Model</strong></p>
</div>
<div><img class="aligncenter" src="https://lh4.googleusercontent.com/BPGQcU3lUBd2c_4ClqRVVfUhGhsAhb-u2pZB_-SbTsiFl_7aHLMH_xOS13kKJZ7hKMxyxFEVtuNOk6JYjgoJdrrmzN52TixZS8kxG1HBimobMskTqxk" alt="" width="395px;" height="163px;" />&nbsp;</p>
<p>En términos simplificados, este tipo de pérdida de señal viene dada por la forma en que la onda se propaga, como podemos observan en la imagen. Por un lado, el receptor tiene una visión directa del emisor, a una distancia dlos, desde donde se recibe la señal, pero, por otro lado, la misma señal se ve reflejada sobre la tierra, con un cierto ángulo de reflexión, produciendo un retardo en la señal que origina un tipo de interferencia conocido como Two-Ray Interference, y que viene dado por la siguiente expresión:</p>
</div>
<div>
<p dir="ltr"><a href="http://eduardomarin.es/wp-content/uploads/2011/10/formula_01.jpg"><img class="size-full wp-image-153 alignnone" title="formula_01" src="http://eduardomarin.es/wp-content/uploads/2011/10/formula_01.jpg" alt="" width="192" height="30" /></a></p>
</div>
<div><strong>- Attenuation per wall and attenuation per meter of penetration approaches</strong></div>
<div>
<p>Este tipo de pérdida de señal viene determinado directamente por el entorno en el que nos encontremos, con los obstáculos que se dibujen alrededor de cada vehículo y de su forma y composición. El valor de atenuación que nos impone cada uno de los obstáculos que pudiéramos encontrarnos podría determinarse empleando algoritmos basados en ray-tracing con gran exactitud y granularidad, sin embargo, podemos realizar aproximaciones basadas en medidas empíricas anteriores. En este caso, nos apoyaremos en los estudios realizados por Christoph Sommer &amp; Co. Univ. of Eralngen, Germany [<a href="http://www.google.es/url?sa=t&amp;source=web&amp;cd=4&amp;ved=0CEUQFjAD&amp;url=http%3A%2F%2Fccs.uibk.ac.at%2Fbib%2Fpdf%2Fsommer2011computationally.pdf&amp;ei=KL-MTtfTHbL44QSal6itCQ&amp;usg=AFQjCNFkg9kZrBttZHbD9n7uWe84DpRpqQ&amp;sig2=ClvgOWxOJ6k8y8Zp4josiA">REF</a> ] en el cual determinan que la pérdida de señal al atravesar un determinado obstáculo (un edificio común en un área urbana) tiene en cuenta el número de paredes que se atraviesan multiplicado por un factor de atenuación  (que para un edificio se aproxima a 9.6 dB) y el espacio interno multiplicado por un factor de atenuación  aproximado a 0.45 dB/m.</p>
<p>De esta forma, nos encontramos ante la siguiente expresión:</p>
<p><a href="http://eduardomarin.es/wp-content/uploads/2011/10/formula_02.jpg"><img class="size-full wp-image-154 alignnone" title="formula_02" src="http://eduardomarin.es/wp-content/uploads/2011/10/formula_02.jpg" alt="" width="146" height="30" /></a></p>
<p>Con estos dos parámetros de atenuación a tener en cuenta definimos un entorno de simulación simple donde podamos comprobar dicha influencia en valores relativos dB. Para ello, situamos dos vehículos a una cierta distancia, uno de ellos fijos, y otro en movimiento, donde, en un determinado momento un obstáculo se interpondrá entre ambos, como muestra la siguiente figura:</p>
</div>
<div><a href="http://eduardomarin.es/wp-content/uploads/2011/10/esquema_vehiculos.png"><img class="aligncenter size-full wp-image-152" title="esquema_vehiculos" src="http://eduardomarin.es/wp-content/uploads/2011/10/esquema_vehiculos.png" alt="" width="574" height="157" /></a>&nbsp;</p>
<p>El resultado de las mediciones es el siguiente:</p>
<p style="text-align: left;"><img src="https://lh6.googleusercontent.com/n2FepfO4KakJWq-Dfx3jFcVui84afJHkDkfqhZsOZCNm49WJrUY3sAEemROX89jGLsHIr2SWzqLqtzWigUqZCrQiBuR8mEtFo_Xd3j9kidZeFNiu8fk" alt="" width="600px;" height="371px;" /><br />
Una vez comprobado que el modelo con obstáculos se comporta como esperamos, incluyendo los dos parámetros de atenuación comentados, el siguiente paso es llevar dichos valores al escenario con el que hemos venido trabajando hasta ahora.</p>
<p>En este sentido, podríamos incluirlos tanto en el escenario de grid manhattan como en el escenario real del campus universitario de Alcalá, sin embargo, dado que la definición de la estructura que representa los obstáculos es compleja de elaborar, para el escenario real del campus se hace demasiado laboriosa. No obstante, podemos obtener unos resultados concluyentes con el grid manhattan como observamos en las estadísticas que se presentan a continuación.</p>
<p style="text-align: left;">Para ello, hemos incluido en el grid manhattan una retícula de obstáculos en los espacios existentes entre las vías de circulación como se muestra en la siguiente imagen:</p>
<p style="text-align: center;"><img class="aligncenter" src="https://lh4.googleusercontent.com/7ppR2xwaBczseK1OCYutZMz2bCdP0pYryGvmBfM6pkNcQI2dhAJWC3pHotYbTw4IfcYKrBhqXTsYUBZTCC2vwrHsbVIY6quIvP4EemsIqZbK_xGJ9pk" alt="" width="367px;" height="328px;" /></p>
<p>Estadísticas con obstáculos:</p>
<p>En las siguientes gráficas se muestran los resultados obtenidos con obstáculos, y los que se obtuvieron sin tenerlos en cuenta.<br />
nº vehiculos	tiempos medios<br />
25	0,007209680001107	0,007072685627817<br />
50	0,007617448143321	0,007199787745076<br />
75	0,008395350651071	0,010987959991301<br />
100	0,013129935217123	0,013574591837651<br />
125	0,018938251818686	0,016334174503593<br />
150	0,025972732589758	0,035179274952087<br />
175	0,030080657313761	0,045466363075213<br />
200	0,031529364457014	0,049251359616137<br />
225	0,044340576195803	0,06505717896325<br />
250	0,036982368803253	0,062109701641809<br />
275	0,043089638515126	0,061436680713181<br />
300	0,046655336079543	0,071436680713181<br />
<img class="aligncenter" src="https://lh3.googleusercontent.com/RtE0EWFkZFXXruDHSzJV-bc-58mDOnVmkaL6OoSgVuPHDSkXF_BXaop8CCCUktLo4ZyNHAWp-Q_c10tXib13KsX-9IQa-BsDXCpNy13ewMuEPKUJNds" alt="" width="600px;" height="371px;" /><br />
nº vehiculos	no ciegos<br />
25	2,52	89,92	89,16<br />
50	4,51	90,98	91,84<br />
75	5,45	92,7333333333333	90,02<br />
100	12,62	87,38	86,25<br />
125	19,16	84,672	85,09<br />
150	35,43	76,38	66,42<br />
175	44,33	74,6685714285714	51,04<br />
200	48,03	75,985	35,35<br />
225	99,03	55,9866666666667	14,08<br />
250	104,13	58,348	16,66<br />
275	144,8	47,3454545454545	21,89<br />
300	141,73	52,7566666666667	23,78<br />
<img class="aligncenter" src="https://lh5.googleusercontent.com/9FtW8K_8ovbnmmUd4dM6oi90ogPTUr3ddmSZ7tR6-d4q6yPxx_CkMCM66YFR6tjzSc_SLtenP9BE_sLtTe8dEoPwUFwfTG3aURgHPWEgnEBXml1d04g" alt="" width="697px;" height="357px;" /></p>
<p>velocidad (m/s)	tiempos medios<br />
5	0,048370934391316	0,048343629270837<br />
10	0,055500794271592	0,061024494525718<br />
15	0,063731446790672	0,062833164664556<br />
20	0,05123674211268	0,053831343588155<br />
25	0,052311978312052	0,053874989359417<br />
30	0,042951989775603	0,0426030364312<br />
35	0,044822091702791	0,041898096643327<br />
<img class="aligncenter" src="https://lh3.googleusercontent.com/lhI2gWilb2sc4tWfSoC4skq-bzFps9E5MmE3UyZLC26ZRKa0hy02PcJ1yDfHugSDrs0DLSDWS-nU07mYOw8HaSbzKYDxpJTg-t7nqBuqUM0rsjuK5Oo" alt="" width="600px;" height="371px;" /></p>
<p>Velocidad (m/s)	nº vehiculos	no ciegos<br />
5	225	154,36	31,3955555555555	24,47<br />
10	225	138,4	38,4888888888889	21,35<br />
15	225	174,16	22,5955555555556	16,8<br />
20	225	149,46	33,5733333333333	27,58<br />
25	225	127,83	43,1866666666667	35,57<br />
30	225	112,06	50,1955555555556	46,65<br />
35	225	107,43	52,2533333333333	47,4</p>
<p><img class="aligncenter" src="https://lh4.googleusercontent.com/eaetcy7iaxiIkmMRBg-EMkL3xrRFtcTA7yYklIU18FEFkY_TNeWPOBHU-W9MMdrPsFYHEB6HHKqcf9Azy9clGBsUiPkQ34aX8PnEo-ddyPduEPYAuJU" alt="" width="616px;" height="288px;" /></p>
</div>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://eduardomarin.es/2011/10/sacar-10-ieee-802-15-4-radio-shadowing-in-urban-enviroments-obstacles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SACAR 09 &#8211; Resultados de simulación</title>
		<link>http://eduardomarin.es/2011/09/sacar-09-resultados-de-simulacion/</link>
		<comments>http://eduardomarin.es/2011/09/sacar-09-resultados-de-simulacion/#comments</comments>
		<pubDate>Mon, 05 Sep 2011 20:15:37 +0000</pubDate>
		<dc:creator>edu</dc:creator>
				<category><![CDATA[802.15.4]]></category>
		<category><![CDATA[mixim]]></category>
		<category><![CDATA[omnet]]></category>
		<category><![CDATA[sacar]]></category>
		<category><![CDATA[sommer]]></category>
		<category><![CDATA[sumo]]></category>
		<category><![CDATA[v2v]]></category>
		<category><![CDATA[vanet]]></category>

		<guid isPermaLink="false">http://eduardomarin.es/?p=141</guid>
		<description><![CDATA[ESTADÍSTICAS &#8211; GRID MANHATTAN&#160; Una vez definidos los dos escenarios, el siguiente paso será obtener una serie de medidas en función de unos determinados parámetros que nos permitan obtener ciertas conclusiones. Para ello, en primer lugar, debemos establecer unos parámetros &#8230; <a href="http://eduardomarin.es/2011/09/sacar-09-resultados-de-simulacion/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div><strong>ESTADÍSTICAS &#8211; GRID MANHATTAN</strong>&nbsp;</p>
<p>Una vez definidos los dos escenarios, el siguiente paso será obtener una serie de medidas en función de unos determinados parámetros que nos permitan obtener ciertas conclusiones.</p>
<p>Para ello, en primer lugar, debemos establecer unos parámetros fijos, que no variarán en ninguno de los dos escenarios:</p>
</div>
<table>
<colgroup>
<col width="171"></col>
<col width="274"></col>
</colgroup>
<tbody>
<tr>
<td>Parámetro</td>
<td>Valor</td>
</tr>
<tr>
<td>Wireless Interfaz</td>
<td>802.15.4</td>
</tr>
<tr>
<td>Potencia de transmisión</td>
<td>500 mW</td>
</tr>
<tr>
<td>Modelo de movilidad</td>
<td>Modelo de velocidad variable</td>
</tr>
<tr>
<td>Número de vehículos de alerta</td>
<td>1</td>
</tr>
<tr>
<td>Paquetes enviados por el/los vehículo/s de alerta</td>
<td>1 por segundo</td>
</tr>
<tr>
<td>Algoritmo de control “storm broadcast”</td>
<td>APAL</td>
</tr>
<tr>
<td>Velocidad m/s para pruebas con velocidad fija</td>
<td>15 m/s (54 km/h)</td>
</tr>
<tr>
<td>Dimensiones escenario</td>
<td>2000m x 2000m</td>
</tr>
<tr>
<td>Tiempo total de simulación</td>
<td>3500 segundos</td>
</tr>
<tr>
<td>Tiempo de inicio de envío de mensajes de alerta</td>
<td>1000 segundos</td>
</tr>
</tbody>
</table>
<div>
<p>A continuación se presentan los resultados para diferentes pruebas:</p>
<p><strong>Tiempo medio de recepción de mensaje de alerta (en función del número de vehículos)</strong></p>
<p><strong>nº vehiculos	tiempos medios (segundos)</strong><br />
25		0,007072685627817<br />
50		0,007199787745076<br />
75		0,010987959991301<br />
100		0,013574591837651<br />
125		0,016334174503593<br />
150		0,035179274952087<br />
175		0,045466363075213<br />
200		0,049251359616137<br />
225		0,06505717896325<br />
250		0,062109701641809<br />
275		0,061436680713181<br />
300		0,071436680713181<br />
<img class="aligncenter" src="https://lh5.googleusercontent.com/ahgcCsu5dVGsib8xdkrg58MqHaELE3XLn2nnTzknv8zLf1q2-IsyN4b6Vdfm-c045hl1vxWwyd9VYn21pZrWTYaNBpDeMTBGwwEcQQJNNE52t7zEk_Y" alt="" width="600px;" height="371px;" /><br />
Observamos en estos resultados como, a medida que aumentamos el número de vehículos en circulación, aumenta el tiempo medio de recepción de los paquetes de alerta. Este resultado es lógico pues a mayor número de vehículos, mayor probabilidad de que un paquete deba atravesar más nodos de la red, con el consiguiente retardo que cada uno de ellos suma en el reenvío del mismo. No obstante, aunque pueda esto significar que para un aumento de vehículos el resultado global nos pueda parecer negativo, esto no es así como podremos ver a continuación.</p>
<p><strong>Blind Vehicles &#8211; Número de vehículos ciegos que no reciben el mensaje de alerta (en función del número de vehículos)</strong></p>
<p><strong>nº vehiculos		vehículos no ciegos		% vehículos ciegos</strong><br />
25			2,71				89,16<br />
50			4,08				91,84<br />
75			7,48				90,0266666666667<br />
100			13,75				86,25<br />
125			18,63				85,096<br />
150			50,36				66,4266666666667<br />
175			85,68				51,04<br />
200			129,3				35,35<br />
225			193,31				14,0844444444444<br />
250			208,35				16,66<br />
275			214,8				21,8909090909091<br />
300			228,64				23,7866666666667<img class="aligncenter" src="https://lh4.googleusercontent.com/zsVXhyqr6P5Z53Q9hiDzxlTvBwgZ2PExZo5oWTXQ6VgtqGFcK4w8yFn_JXwNJpSRLXLM5UDu9VSnqmxuMn_G7QcGfsO2xe-z4QocoUmkTyegheXU6Y8" alt="" width="697px;" height="357px;" /><br />
Así, como comentábamos en la gráfica anterior, podría pensarse que un retardo mínimo, como el que se obtiene para un bajo número de vehículos en escena, sería preferible que un retardo algo mayor como el que tenemos si nos aproximamos a la centena de vehículos activos. Sin embargo, fijándonos en esta otra gráfica, donde se muestra el porcentaje de vehículos que no consiguen recibir el mensaje de alerta, la sensación global cambia, y nos damos cuenta de que aunque el retardo aumente, para 225 vehículos activos el número de vehículos ciegos disminuye por debajo del 25%.</p>
<p>Vemos por tanto una tendencia a la baja según aumentamos el número de vehículos en circulación. Esto se debe a que para pocos vehículos, los huecos existentes entre ellos impiden una cobertura amplia en la que difundir los mensajes, y mejora según aumenta la densidad de vehículos.</p>
<p>Pero cabe señalar un punto de inflexión existente en los resultados, a partir de la cifra 225 vehículos en circulación, donde comienza a aumentar lentamente el número de vehículos ciegos. Este hecho pone de manifiesto el problema de “broadcast storming” que se produce con un número grande de vehículos conviviendo en un determinado espacio.</p>
<p><strong>Tiempo medio de recepción de mensaje de alerta (en función de la velocidad)</strong></p>
<p><strong>velocidad (m/s)	tiempos medios</strong><br />
5			0,048343629270837<br />
10			0,061024494525718<br />
15			0,062833164664556<br />
20			0,053831343588155<br />
25			0,053874989359417<br />
30			0,0426030364312<br />
35			0,041898096643327<br />
<img class="aligncenter" src="https://lh6.googleusercontent.com/QDcT-E9OJAcIU-l05sAxmrPLmHgVRPowjHzhSPqCz2zfGUfOksr4EHEr2WbK8S3gQ6YHD50GtAiQyhzmbi6ikP1zHVopdGneVjlpR2NpJPH7ZTo6ISM" alt="" width="600px;" height="371px;" /><br />
El siguiente resultado nos ofrece unos valores de eficacia de entrega, en tiempo medio de entrega, en función de la velocidad a la que se mueven los vehículos. Para realizar esta prueba hemos seleccionado el número de vehículos en circulación que ofrecía menor número de “blind vehicles”, esto es 225 vehículos en escena.</p>
<p>Observamos como para bajas velocidades (5 m/s) el tiempo medio de entrega es bajo, mientras que según aumentamos la velocidad hasta los 15 m/s dicho valor aumenta para volver a disminuir. Estos resultados, lejos de ser concluyentes, podrían darnos una idea de lo que realmente ocurre para diferentes velocidades.</p>
<p>Así, podríamos suponer que para velocidades próximas a 30 m/s (100 km/h aprox.) cada nodo puede estar facilitando la entrega a un nodo próximo que, de no ser por la velocidad a la que se mueve, dependería de un nodo intermedio para realizarla, con el consiguiente aumento de tiempo que esto conlleva. No obstante, estas conclusiones requerirían un estudio más profundo para extraer los motivos reales que originan estos tiempos de entrega.</p>
<p><strong>Blind Vehicles &#8211; Número de vehículos ciegos que no reciben el mensaje de alerta (en función de la velocidad)</strong></p>
<p><strong>Velocidad (m/s)	nº vehiculos	vehículos no ciegos		% vehículos ciegos</strong><br />
5			225		169,93				24,4755555555556<br />
10			225		176,96				21,3511111111111<br />
15			225		187,2				16,8<br />
20			225		162,93				27,5866666666667<br />
25			225		144,96				35,5733333333333<br />
30			225		120,03				46,6533333333333<br />
35			225		118,34				47,4044444444444</p>
<p><img class="aligncenter" src="https://lh6.googleusercontent.com/v9mNHzRpUIvWpSunKsmdb7q_BttP2gtHtcfsB_eDHLmIVhPUuYa7xhPMBP3oDbndyrTCEJqCm6XroQOuCbIDq6RdJfXLiSlNxWtiDhu9j8PasqZ3WBY" alt="" width="616px;" height="288px;" /></p>
<p>Como para las primeras gráficas, vemos cómo el número de vehículos ciegos nos ayuda a comprender mejor los resultados obtenidos sobre tiempos medios de entrega. Aún cuando suponíamos que para velocidades mayores el tiempo medio de entrega disminuía gracias a que esas velocidades favorecían dichos resultados, comparando con estos datos podemos deducir que esa disminución se debe a un número mayor de vehículos que no reciben dichos mensajes, es decir, a altas velocidades, un vehículo tiene mayor dificultad para alcanzar a sus vecinos. Esto es lógico si pensamos que éstos le acompañarán por menos tiempo debido a la rapidez con la que se mueven.</p>
<p>Además, como en la primera gráfica, aquí también podemos ver un punto de inflexión que devuelve un mayor número de vehículos ciegos según nos aproximamos hacia velocidades más lentas, a partir de los 15 m/s. Podría pensarse en esta gráfica como una simetría inversa de la anterior. En este caso, que los vehículos se muevan más lentamente hace que el problema de “broadcast storming” aumente, favoreciendo el incremento de vehículos ciegos.</p>
<p><strong>ESTADÍSTICAS &#8211; MAPA CAMPUS EXTERNO UAH</strong></p>
<p>Repetimos las mismas pruebas, pero esta vez para el escenario basado en el campus externo de la Universidad de Alcalá de Henares.</p>
<p><strong>Tiempo medio de recepción de mensaje de alerta (en función del número de vehículos)</strong></p>
<p><strong>nº vehiculos		tiempos medios</strong><br />
25			0,006970784380327<br />
50			0,015033684924406<br />
75			0,020233480086205<br />
100			0,01832821694987<br />
125			0,019000897152919<br />
150			0,027706380111591<br />
175			0,025834554016553<br />
200			0,027218716558081<br />
225			0,02595455744488<br />
250			0,028664003185155<br />
275			0,030286470339648<br />
300			0,03243668071318<br />
<img class="aligncenter" src="https://lh6.googleusercontent.com/BoA0wum6ctk-y5N1p5NIkwzqtgE3-kCzVB9qamuf_6GGpl57ZfBBuNTZ6PRyJVakEF1aIvh25FXa5sNy73r9TE7oLwVwYetXCNTN3Oldjq7th4FpPsw" alt="" width="600px;" height="371px;" /></p>
<p><strong>Blind Vehicles &#8211; Número de vehículos ciegos que no reciben el mensaje de alerta (en función del número de vehículos)</strong></p>
<p><strong>nº vehiculos		vehículos no ciegos		% Vehículos ciegos</strong><br />
25			6,78				72,88<br />
50			22,8				54,4<br />
75			38,5				48,6666666666667<br />
100			63,3				36,7<br />
125			95,53				23,576<br />
150			113,53				24,3133333333333<br />
175			113,26				35,28<br />
200			145,6				27,2<br />
225			176,36				21,6177777777778<br />
250			188,76				24,496<br />
275			211				23,2727272727273<br />
300			228,64				23,7866666666667</p>
<p><img class="aligncenter" src="https://lh6.googleusercontent.com/Z8RG7t16a8SguhT35d6L11Vr8uRELWdF-NCBsswkxPRmXRqaIZsNqIGl2XC3JLfh3GCr9BR2tgx3o1GCtpK3rnOzuMWFspVZzmZhIu8ktLCanPCRp-Q" alt="" width="697px;" height="357px;" /></p>
<p>Analizando conjuntamente la gráfica de tiempos medios de recepción de mensajes y el porcentaje de vehículos ciegos en escena, y comparándolo con los que obtuvimos en el escenario de “red manhattan”, podemos observar cómo en este caso el número de vehículos ciegos es menor, y que acusa una disminución más temprana de ellos frente a dicho escenario. Este hecho se debe principalmente a que en un escenario real, el número de caminos posibles que puede tomar un vehículo es mucho mayor que el que determina la rejilla manhattan, que obliga a un mayor número de vehículos a ir en una sola dirección (cuatro máximo), repartiendo de una forma más heterogénea a los vehículos y dejando un mayor hueco entre ellos (para manhattan) que para el caso real que se contempla en esta gráfica, en la que los vehícuos se distribuyen aleatoriamente, favoreciendo el alcance cuando hay pocos vehículos, y disminuyendo el problema de “broadcast storming” cuando crece.</p>
<p><strong>Tiempo medio de recepción de mensaje de alerta (en función de la velocidad)</strong></p>
<p><strong>velocidad (m/s)	tiempos medios</strong><br />
5			0,018167114012302<br />
10			0,026948991491393<br />
15			0,018931593578406<br />
20			0,024597942705083<br />
25			0,023744718627626<br />
30			0,020520994142238<br />
35			0,025668026274513</p>
<p><img class="aligncenter" src="https://lh5.googleusercontent.com/_kKE3PdDop4ZnZ010bJ8_w5ct4oOUO_OXMtZmQMWgWgU-oFBLnMRKDv1uyUu74VEzw1SX9hj65ew3TBNX7NDKfU7zcbDhAh_MAQYlQXS0wAA-5nHOf8" alt="" width="600px;" height="371px;" /><br />
Si nos fijamos ahora en los resultados que obtenemos al variar la velocidad de los vehículos, observamos una gráfica poco definida, que no nos indica concreto, a priori, del hecho de aumentar o disminuir la velocidad máxima a la que se mueven los mismos. No obstante, es una gráfica coherente con las condiciones que un escenario aleatorio y heterogéneo como es que se sirve en la simulación impone. Al ofrecer tantas vías, con tantos cruces, la velocidad de los vehículos realmente no va a mantenerse constante y cercana al límite que hemos marcado, y, por tanto, no podemos extraer unos resultados válidos de dicha gráfica.</p>
<p><strong>Blind Vehicles &#8211; Número de vehículos ciegos que no reciben el mensaje de alerta (en función de la velocidad)</strong></p>
<p><strong>Velocidad (m/s)	nº vehiculos	vehículos no ciegos		% vehículos ciegos</strong><br />
5			225		183,33				18,52<br />
10			225		136,93				39,1422222222222<br />
15			225		177,93				20,92<br />
20			225		161,63				28,1644444444444<br />
25			225		168,4				25,1555555555556<br />
30			225		167,3				25,6444444444444<br />
35			225		157,56				29,9733333333333</p>
<p><img class="aligncenter" src="https://lh3.googleusercontent.com/19y6riKED_JouAsiYphDcUQp7vgk4YhNL2gwoXD2Xs0J9ZerJ2dhj-hprPBt0fSb8NeujaOTeeMu67krzGp9EWX7GSrfJS-q9WWlUSbviqpqS3oqa94" alt="" width="616px;" height="288px;" /></p>
<p>De la misma forma, el gráfico que nos indica el número de vehículos ciegos genera valores incoherentes que llevan a confusión, aunque podemos deducir cierto aumento del número de vehículos ciegos a medida que aumentamos la velocidad de los vehículos, de la misma forma que ocurría en el escenario de manhattan.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://eduardomarin.es/2011/09/sacar-09-resultados-de-simulacion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SACAR 08 &#8211; Escenario real. Campus externo UAH</title>
		<link>http://eduardomarin.es/2011/08/sacar-08-escenario-real-campus-externo-uah/</link>
		<comments>http://eduardomarin.es/2011/08/sacar-08-escenario-real-campus-externo-uah/#comments</comments>
		<pubDate>Mon, 29 Aug 2011 16:19:16 +0000</pubDate>
		<dc:creator>edu</dc:creator>
				<category><![CDATA[Sin categoría]]></category>

		<guid isPermaLink="false">http://eduardomarin.es/?p=131</guid>
		<description><![CDATA[Tras la generación del escenario basado en la cuadrícula manhattan, el siguiente paso es recrear un mapa de carreteras real, basado en una zona urbana, con diversidad de intersecciones, rotondas, giros, curvas y demás componentes que podemos encontrar al circular &#8230; <a href="http://eduardomarin.es/2011/08/sacar-08-escenario-real-campus-externo-uah/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Tras la generación del escenario basado en la cuadrícula manhattan, el siguiente paso es recrear un mapa de carreteras real, basado en una zona urbana, con diversidad de intersecciones, rotondas, giros, curvas y demás componentes que podemos encontrar al circular por cualquier ciudad con nuestro vehículo.</p>
<p>Para ello, nos aproximaremos, a vista de satélite, hasta el campus externo de la Universidad de Alcalá, para fijarnos en sus calles, y barrios anexos.<br/></p>
<p><img class="aligncenter" src="https://lh6.googleusercontent.com/VtyINvyQr6ulsQRr9WiXodqD8GJDqu2vizwPNywsXYhBQjaSNYZI4h5WPK0Gw77bcdDCn2gI4PfEyZtp-hnrd2CwkwXjYexmqxaPH-laate34G_ABds" alt="" width="601px;" height="309px;" /></p>
<p>De nuevo, como comentamos a la hora de realizar la definición del archivo de red para la rejilla manhattan, podríamos, armados de tiempo y paciencia, realizar la descripción de la red nodo a nodo, conectándolos entre sí, definiendo cada uno de los carriles, curvas y rotondas.</p>
<p>Y, de nuevo, volvemos a recurrir a una serie de herramientas que nos facilitan este proceso.</p>
<p>Para ello, lo primero que debemos hacer es localizar el escenario que deseamos describir en el navegador de mapas open source por excelencia, Open Street Map.</p>
<p>Open Street Map, (también conocido como OSM), es un proyecto colaborativo para crear mapas libres y editables, un concepto muy próximo a Wikipedia.</p>
<p>Una de las ventajas de Open Street Map es que, libre de derechos, podemos extraer los metadatos asociados a una zona geográfica y trabajar libremente con ellos. Así pues, una vez en el navegador openstreetmap (<a href="http://www.openstreetmap.org/">http://www.openstreetmap.org</a>), en la sección “exportar”, basta con seleccionar la opción “Datos formato OpenStreetMap XML”, “seleccionar a mano otro área” (si no deseamos exportar toda la ventana) y confirmar. Inmediatamente comenzará la descarga del archivo .xml que contiene la descripción de dicha zona.<br/></p>
<p><img class="aligncenter" src="https://lh6.googleusercontent.com/13sK6aAOitZhD_v2vN1SDi5_c2MmBjvEgPg8eIUoNPZmSVrMizr2t8Ct-_s8nvQyUrBjXBkx6To_Pyw9s1cGt2eP2n1T3mpzT57wVm2_RzdahG2mXmI" alt="" width="598px;" height="390px;" /></p>
<p>El siguiente paso es convertir dicho archivo a un archivo de red (*.net.xml) válido para SUMO. Para ello, utilizaremos de nuevo la herramienta NETCONVERT, de la siguiente forma:</p>
<p dir="ltr"><code>netconvert --osm-files alcala.osm.xml -o alcala.net.xml</code></p>
<p>El resultado es el archivo de red que utilizaremos para trabajar con SUMO.</p>
<p>En este punto volvemos a encontrarnos con una descripción de vías compleja, con multitud de intersecciones y carriles, pero sin un archivo de rutas que defina el comportamiento de cada vehículo. Basta con volver unas líneas atrás y comprobar que debemos proceder de la misma forma que con el archivo de red de manhattan.</p>
<p>Definimos un archivo de flujo que defina el número de vehículos que pondremos en escena, y desde un punto de partida (“alcala.flows.xml”):</p>
<p><code>&lt;flowdefs&gt;<br />
&lt;flow id="flow0" from="-50170608#0" begin="0" end="100" no="25" /&gt;<br />
&lt;/flowdefs&gt;</code></p>
<p>Y un archivo de configuración para la herramienta JTRROUTER (“alcala.jtr.cfg”):</p>
<p><code>&lt;configuration&gt;<br />
&lt;input<br />
net-file="alcala.net.xml"<br />
flow-definition="alcala.flows.xml"<br />
/&gt;<br />
&lt;output<br />
output-file="alcala.rou.xml"<br />
/&gt;<br />
&lt;processing<br />
continue-on-unbuild="true"<br />
turn-defaults="25,25,25,25"<br />
sinks="-50170573"<br />
/&gt;<br />
&lt;/configuration&gt;</code></p>
<p>Finalmente, utilizando JTRROUTER, obtendremos el archivo de rutas que necesitamos para generar la simulación sobre este escenario:</p>
<p dir="ltr"><code>jtrrouter -c alcala.jtr.cfg</code></p>
<p><img class="aligncenter" src="https://lh5.googleusercontent.com/K66YR6N7su0tWQ6GJR5gdjn7LI4a7PzlMCErTgdw9s1atU_91qT6y5wuyC9j-_v-kQdZ1ZJCRZXVtu5Tf6Flwv2aPnthR5hko5XgZPE3w0Qahy-dUaE" alt="" width="563px;" height="332px;" /></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://eduardomarin.es/2011/08/sacar-08-escenario-real-campus-externo-uah/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SACAR &#8211; 07 &#8211; Grid Manhattan scenario</title>
		<link>http://eduardomarin.es/2011/08/sacar-07-grid-manhattan-scenario/</link>
		<comments>http://eduardomarin.es/2011/08/sacar-07-grid-manhattan-scenario/#comments</comments>
		<pubDate>Sun, 28 Aug 2011 17:47:04 +0000</pubDate>
		<dc:creator>edu</dc:creator>
				<category><![CDATA[802.15.4]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[mixim]]></category>
		<category><![CDATA[omnet]]></category>
		<category><![CDATA[sacar]]></category>
		<category><![CDATA[sommer]]></category>
		<category><![CDATA[sumo]]></category>
		<category><![CDATA[v2v]]></category>
		<category><![CDATA[vanet]]></category>
		<category><![CDATA[xbee]]></category>
		<category><![CDATA[zigbee]]></category>

		<guid isPermaLink="false">http://eduardomarin.es/?p=119</guid>
		<description><![CDATA[Las pruebas que hemos realizado hasta ahora se han desarrollado bajo un escenario sencillo, una vía cuadrada, sin intersecciones, donde el flujo de vehículos es bastante homogéneo, lineal y previsible. Dado que estas condiciones no serán las que nos encontremos &#8230; <a href="http://eduardomarin.es/2011/08/sacar-07-grid-manhattan-scenario/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Las pruebas que hemos realizado hasta ahora se han desarrollado bajo un escenario sencillo, una vía cuadrada, sin intersecciones, donde el flujo de vehículos es bastante homogéneo, lineal y previsible.<br />
Dado que estas condiciones no serán las que nos encontremos en un escenario real, debemos aproximarnos cuanto podamos a esas condiciones reales. Así, lo ideal sería salir a la calle, con unos cuantos cientos de módulos independientes, que nos reportaran esos resultados reales. Dado que eso es inviable (y por ello realizamos estas simulaciones), acercaremos el entorno de simulación a uno real. Este entorno ideal sería una copia exacta de una pequeña ciudad, población o barrio, con calles, cruces, rotondas y un dibujo de la vía muy irregular. Pero antes de llevar las pruebas a ese escenario, pasemos por uno intermedio, un escenario de tipo “rejilla Manhattan”, cuyo trazado se hizo famoso en 1811 en el plan de desarrollo urbano de la isla de Manhattan (<a href="http://es.wikipedia.org/wiki/Manhattan">Gouverneur Morris, John Rutherfurd y Simeon De Witt</a>).</p>
<div><img class="aligncenter" src="https://lh5.googleusercontent.com/9ziHROwO1-39XZJ3_K4neKfnwFMj22U3Qu9s8yypxrxXBQInEffwwwiKsdCav5vlIivGmtZN_jxlD9akTfZeNPu2EYwza9I3a0QPOogQRkdwhpHC13I" alt="" width="544px;" height="189px;" /><br />
Así, con este tipo de trazado, muy utilizado para diferentes operaciones heurísticas (“<a href="http://en.wiktionary.org/wiki/Manhattan_distance">manhattan distance</a>”), podremos obtener de los vehículos un comportamiento más irregular, aleatorio, variable y caótico. Más real, a fin de cuentas.&nbsp;</p>
<p>Como describimos en un punto anterior, podemos realizar nuestras propias descripciones de caminos y vías de forma manual, mediante la definición de nodos, bordes y carriles. Para un escenario simple como en el que hemos llevado a cabo las simulaciones anteriores, dicha descripción es sencilla y rápida. Sin embargo, para el nuevo escenario que proponemos, el número de nodos aumenta, así como los bordes y carriles asociados, lo que conlleva un trabajo meticuloso y arduo. Para evitar la definición manual y ahorrar tiempo, podemos utilizar una serie de herramientas que automatizan este proceso.</p>
<p><strong>Creación automática del archivo de red &#8211; MOVE</strong></p>
<p>Así, una de las herramientas que permiten generar automáticamente el archivo que define el mapa de carreteras (*.net.xml), es la aplicación MOVE (MObility model generator for VEhicular networks). Podemos descargarla desde la página oficial (<a href="http://lens1.csie.ncku.edu.tw/wiki/doku.php?id=%E2%80%A7realistic_mobility_generator_for_vehicular_networks">http://lens1.csie.ncku.edu.tw/wiki/doku.php?id=%E2%80%A7realistic_mobility_generator_for_vehicular_networks</a>).</p>
<p>En nuestro caso, como habíamos comentado, crearemos un escenario basado en “rejilla manhattan”, en concreto definida por seis calles horizontales y seis calles verticales, con una separación entre ellas de cuatrocientos metros:</p>
</div>
<div>
<p><a href="http://eduardomarin.es/wp-content/uploads/2011/08/grid_manhattan.png"><img class="aligncenter size-full wp-image-123" title="grid_manhattan" src="http://eduardomarin.es/wp-content/uploads/2011/08/grid_manhattan.png" alt="" width="393" height="393" /></a></p>
<p>Para ello, situándonos en el directorio donde hemos descargado MOVE.jar, ejecutaremos MOVE de la siguiente forma:</p>
<p><code>java -jar MOVE.jar</code></p>
<p>Nos encontraremos entonces con la siguiente ventana:</p>
<p><img class="aligncenter" src="https://lh6.googleusercontent.com/jyBnpH-_Tjlul_PK_JmfRm6Me7rJWggb74ACGWi3jkRxF2CCD5yUR_gdLOUGeMwCNLjSI8h1CmHpwDVukBEYO23IwFjsKDa5EEZxU6469F2WKMkvpRw" alt="" width="465px;" height="140px;" /></p>
<p>Tras seleccionar “Mobility Model”, nos encontraremos con las siguientes opciones:</p>
<p><img class="aligncenter" src="https://lh3.googleusercontent.com/QNFucsDgR1redIrU2z8Wxv3qvbVY-UavThx9eaFwDTzs7uz9WHXk0KS3646XxR4uc7TQ49yl1FIDMHc9CFUDzTPaaUTyJyUuotk-LCY3Hw8cwNoNXbc" alt="" width="416px;" height="496px;" /></p>
<p>Tras seleccionar “Random Map” la aplicación nos presenta la opción de definir una serie de parámetros antes de generar el mapa aleatorio. Así, en nuestro caso, seleccionamos el método de generación basado en rejilla (“grid layout”), estableciendo el número de intersecciones vertical y horizontal igual a seis y una separación entre ellas de cuatrocientos metros. Establecemos el nombre de salida de nuestro archivo de red (“manhattan.net.xml”) y confirmamos.</p>
<p><img class="aligncenter" src="https://lh3.googleusercontent.com/b6gxWJd2f6qkNkHjRIUlmIuGmeydWIe41fkLY5iDdbbKZfwBqq2L-9-eBcq1EbYoJXZ_j43iaoIYi4FGft0S9OF_qkcKxIqjSmNDUzyv3Z2OlKnpfzQ" alt="" width="443px;" height="509px;" /></p>
<p>El resultado es un archivo xml que contiene la descripción de dicha red, y que más tarde SUMO podrá interpretar adecuadamente:</p>
<p><img class="aligncenter" src="https://lh4.googleusercontent.com/xA0CMbvkR7vegwONVensUa3hsuajOC88QUAvsYyn6t13hkMsDF90V1fAobdloIf0FUF079Sdd0ZoJlAgFqjgbo9TFWWBNed0Zf0Jf7K8CkAomQDl9Yg" alt="" width="382px;" height="380px;" /></p>
<p>&nbsp;</p>
<p><strong>Creación automática del archivo de rutas &#8211; JTRROUTER</strong></p>
<p>Una vez disponemos del archivo de red con la rejilla manhattan, necesitamos generar el comportamiento de cada uno de los vehículos. De la misma forma que con la definición del mapa, o archivo de red de carreteras, podríamos ir carril por carril, intersección por intersección, para cada uno de los vehículos que vayamos a inyectar en nuestro escenario, realizar la descripción de rutas únicas que permitan concluir en una simulación más o menos aleatoria. Sin embargo, si la definicion manual del mapa era tediosa, la definición de rutas de esta forma lo es mucho más.</p>
<p>Por suerte, de la misma manera que existe una herramienta para generar de forma automática la descripción del archivo de red, existe otra aplicación que facilita y automatiza la generación del archivo de rutas. Se trata de JTRROUTER (<a href="http://sourceforge.net/apps/mediawiki/sumo/index.php?title=JTRROUTER">http://sourceforge.net/apps/mediawiki/sumo/index.php?title=JTRROUTER</a>), una aplicación que, mediante la entrada de diferentes archivos, genera el archivo de rutas que necesitamos.</p>
<p>En concreto, esta aplicación puede tomar como entrada el archivo de red (*.net.xml) que hemos generado anteriormente; un archivo de flujos, que establezca el número de flujos diferentes que podemos tener; un archivo de “giros”, que define las probabilidades de que un determinado vehículo tome una u otra trayectoria en una intersección; o un archivo de configuración global que jtrrouter interpreta y aplica en consecuencia.</p>
<p>Para nuestro caso, basta con el archivo de red (“manhattan.net.xml”), el archivo de flujos (“mahattan.flows.xml”) y el archivo de configuración (“manhattan.jtr.cfg”) que detallamos a continuación:</p>
<p><code>&lt;configuration&gt;<br />
&lt;input<br />
net-file="manhattan.net.xml"<br />
flow-definition="manhattan.flows.xml"<br />
/&gt;<br />
&lt;output<br />
output-file="manhattan.rou.xml"<br />
/&gt;<br />
&lt;processing<br />
continue-on-unbuild="true"<br />
turn-defaults="25,25,25,25"<br />
sinks="4/0to5/0"<br />
/&gt;<br />
&lt;/configuration&gt;</code></p>
<p>Mediante este archivo de configuración, indicamos a jtrrouter que deseamos generar un archivo de rutas para un mapa que se encuentra definido en “manhattan.net.xml” y que, mediante el archivo de flujos “manhattan.flows.xml”, cuyo contenido es el siguiente,</p>
<p><code>&lt;flowdefs&gt;<br />
&lt;flow id="flow0" from="0/5to0/4" begin="0" end="100" no="25" /&gt;<br />
&lt;/flowdefs&gt;</code></p>
<p>tenemos la intención de que las rutas que se generen partan desde el edge “0/5to0/4” y se aplique a un total de 25 vehículos, que serán generados entre el intervalo de tiempo 0 a 100 segundos.</p>
<p>Pero además, y lo que es más importante, y que es lo que otorga a nuestro escenario el carácter aleatorio y caótico, se encuentra en las últimas líneas. En concreto, “turn-defaults”, que indica la probabilidad de que un vehículo gire a la izquierda, a la derecha, al frente, o hacia atrás, y que establecemos en un valor de 25% (el valor “sinks” define el punto final en el que muere un vehículo).</p>
<p>Finalmente, ejecutaremos, en línea de comandos:</p>
</div>
<div>
<p dir="ltr"><code>jtrrouter -c manhattan.jtr.cfg -t manhattan.turns.xml</code></p>
<p>El resultado es un archivo (“manhattan.rou.xml”) que podremos inyectar a SUMO, junto con el archivo de red (“manhattan.net.xml”) para generar la simulación en la rejilla manhattan.</p>
</div>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://eduardomarin.es/2011/08/sacar-07-grid-manhattan-scenario/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SACAR &#8211; 06 &#8211; Estadísticas Blind Vehicles</title>
		<link>http://eduardomarin.es/2011/08/sacar-06-estadisticas-blind-vehicles/</link>
		<comments>http://eduardomarin.es/2011/08/sacar-06-estadisticas-blind-vehicles/#comments</comments>
		<pubDate>Wed, 24 Aug 2011 18:07:01 +0000</pubDate>
		<dc:creator>edu</dc:creator>
				<category><![CDATA[802.15.4]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[mixim]]></category>
		<category><![CDATA[omnet]]></category>
		<category><![CDATA[sacar]]></category>
		<category><![CDATA[sommer]]></category>
		<category><![CDATA[sumo]]></category>
		<category><![CDATA[v2v]]></category>
		<category><![CDATA[vanet]]></category>
		<category><![CDATA[xbee]]></category>
		<category><![CDATA[zigbee]]></category>

		<guid isPermaLink="false">http://eduardomarin.es/?p=96</guid>
		<description><![CDATA[Como se dijo en el punto anterior, entre los valores a estudiar, se encuentra el número de vehículos ciegos (“blind vehicles”), esto es, el número de vehículos que no consiguen recibir un mensaje de alerta concreto en el tiempo de &#8230; <a href="http://eduardomarin.es/2011/08/sacar-06-estadisticas-blind-vehicles/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div>
<p>Como se dijo en el punto anterior, entre los valores a estudiar, se encuentra el número de vehículos ciegos (“blind vehicles”), esto es, el número de vehículos que no consiguen recibir un mensaje de alerta concreto en el tiempo de vida de este último.</p>
<p>Conocer este parámetro nos permite deducir si el algoritmo de reenvío es demasiado agresivo, lo que implica realizar pocos intentos de “rebroadcast” y bajas probabilidades de alcanzar vehículos cercanos al área de cobertura; o demasiado suave, donde el control sobre los reenvíos es menor y el problema de “broadcast storming” aumenta.</p>
<p>Así pues, necesitamos conocer, por cada mensaje que se genere, llevar el control de las veces que un vehículo lo recibe. Para ello, el observador debe ser avisado cada vez que un vehículo recibe un mensaje. El observador entonces anotará en el vector de valores tal suceso, relacionando la recepción de ese mensaje y el número de vehículos que lo han recibido hasta entonces. Al final, obtendremos, por cada mensaje, el total de vehículos que recibieron cada uno de ellos, y podremos promediar entre el total de mensajes.</p>
<p>Esquemáticamente, podemos hacernos una idea del proceso descrito:</p>
<p><a href="http://eduardomarin.es/wp-content/uploads/2011/08/s8ebqy4RjmmvnwQUvGp3XOg.png"><img class="aligncenter size-full wp-image-106" title="s8ebqy4RjmmvnwQUvGp3XOg" src="http://eduardomarin.es/wp-content/uploads/2011/08/s8ebqy4RjmmvnwQUvGp3XOg.png" alt="" width="473" height="466" /></a></p>
<p>Así, como estructura de datos para llevar dicho control, únicamente utilizaremos una tercera fila en nuestro array bidimensional para contabilizar el número de vehículos que han leído un mensaje con uid determinado, como puede verse a continuación.</p>
<p><a href="http://eduardomarin.es/wp-content/uploads/2011/08/sPvVDHhm8_oEQo4xOX7p99w.png"><img class="aligncenter size-full wp-image-107" title="sPvVDHhm8_oEQo4xOX7p99w" src="http://eduardomarin.es/wp-content/uploads/2011/08/sPvVDHhm8_oEQo4xOX7p99w.png" alt="" width="433" height="91" /></a><br />
A continuación podemos ver el muestreo realizado, manteniendo las condiciones de simulación anteriores (vía cuadrangular de 2500 x 2500 metros), en la que variamos, en cada simulación, el número de vehículos en circulación:</p>
<p>Total vehículos / Media Vehículos reciben mensaje / % Vehículos ciegos</p>
<p>20 / 4,76 / 76,2</p>
<p>40 / 4,6 / 88,5</p>
<p>60 / 4,928 / 91,78</p>
<p>80 / 5,3 / 93,37</p>
<p>100 / 48,5 / 51,5</p>
<p>120 / 76,87 / 35,94</p>
<p>140 / 92,26 / 34,1</p>
<p>160 / 129,36 / 19,15</p>
<p>180 / 138,16 / 23,24</p>
<p>200 / 156,7 / 21,65</p>
<p>220	166,23	24,44</p>
<p>240	174,2	27,41</p>
<p>260	180,63	30,52</p>
<p><img src="https://lh4.googleusercontent.com/XDR1ddN7CflEUxNrxPduAgIFd0RiwxBjlAUMA7Uz_Wu2neselH-T5buG9fbyohKBq0x63pQjx-G10iLGlBrmovvKUf2Rw_EMjil2uHPwboxCZPBXGRM" alt="" width="697px;" height="357px;" /></p>
<p>Si observamos el gráfico, vemos como para una baja densidad de vehículos, el número de “blind vehicles” es bastante alto, llegando a cotas cercanas al 95% para 80 vehículos. La razón es que el bajo número de vehículos en proporción a las distancias entre ellos facilita la existencia de zonas en sombra, donde los mensajes no alcanzan a los vecinos más próximos, que se ven incapaces de reenviar hacia los más alejados del punto de alerta. En cambio, mientras aumenta el número de vehículos en el escenario, esas zonas en sombra pueden rellenarse, permitiendo mayores cotas de alcance, próximas al 15 % para 160 vehículos. Sin embargo, es interesante observar cómo, a partir de un cierto número de vehículos en escena, el algoritmo de reenvío pierde fuerza y reaparece el “broadcast storm problem”, donde las colisiones impiden que los mensajes alcancen finalmente su objetivo.</p>
<p>Resumiendo, el número de vehículos ciegos depende fuertemente de la densidad de tráfico existente en nuestro escenario, disminuyendo cuando ésta aumenta, hasta alcanzar un límite de saturación determinado (broadcast storm problem).</p>
<p>Para obtener estos resultados, únicamente hemos modificado la clase “observador”, añadiendo un nuevo vector de estadísticas (podríamos haber utilizado sin problemas un escalar), añadiendo otro método para obtener la media de estos vehículos ciegos, y modificando el método para guardar las estadísticas:</p>
<p><code>double Observador::haz_media_valores(){</code></p>
<p><code>int i;</code></p>
<p><code>double aux, aux1;</p>
<p></code><code>aux = 0;</code></p>
<p><code>for(i=0; i&lt; i_valores_asociados; i++){</code></p>
<p><code>aux = aux + valores_asociados[0][i];</p>
<p>}</p>
<p>aux1 = (aux / i_valores_asociados);</p>
<p>return aux1;</p>
<p></code><code>}</code></p>
<p><code>double Observador::haz_media_bind_vehicles(){</code></p>
<p><code>int i;</code></p>
<p><code>double aux, aux1;</p>
<p></code><code>aux = 0;</code></p>
<p><code>for(i=0; i&lt; i_valores_asociados; i++){</code></p>
<p><code>aux = aux + valores_asociados[2][i];</p>
<p>}</p>
<p>aux1 = (aux / i_valores_asociados);</p>
<p>return aux1;</p>
<p></code><code>}</code></p>
<p><code>void Observador::grabar_estadistica(double valor, double valor1)</code></p>
<p><code>{</p>
<p>st_valor.record(valor);</p>
<p>st_valor_02.record(valor1);</p>
<p></code><code>}</code></p>
<p><code>void Observador::finish()</code></p>
<p><code>{</p>
<p>this-&gt;grabar_estadistica(this-&gt;haz_media_valores(),this-&gt;haz_media_bind_vehicles());</p>
<p></code><code>}</code></p>
</div>
<p><code> </code></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://eduardomarin.es/2011/08/sacar-06-estadisticas-blind-vehicles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SACAR &#8211; 05 &#8211; Extraer estadísticas &#8211; El observador externo</title>
		<link>http://eduardomarin.es/2011/08/sacar-05-extraer-estadisticas-el-observador-externo/</link>
		<comments>http://eduardomarin.es/2011/08/sacar-05-extraer-estadisticas-el-observador-externo/#comments</comments>
		<pubDate>Wed, 10 Aug 2011 18:55:47 +0000</pubDate>
		<dc:creator>edu</dc:creator>
				<category><![CDATA[mixim]]></category>
		<category><![CDATA[omnet]]></category>
		<category><![CDATA[sacar]]></category>
		<category><![CDATA[sommer]]></category>
		<category><![CDATA[sumo]]></category>
		<category><![CDATA[vanet]]></category>

		<guid isPermaLink="false">http://eduardomarin.es/?p=86</guid>
		<description><![CDATA[Uno de los puntos determinantes del proyecto se centra en los resultados. Debemos ofrecer un tipo de resultado, bien un sistema funcional que cumpla con un objetivo determinado, bien una serie de muestras o valores que nos permitan extrapolarlos y &#8230; <a href="http://eduardomarin.es/2011/08/sacar-05-extraer-estadisticas-el-observador-externo/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div>
<p>Uno de los puntos determinantes del proyecto se centra en los resultados. Debemos ofrecer un tipo de resultado, bien un sistema funcional que cumpla con un objetivo determinado, bien una serie de muestras o valores que nos permitan extrapolarlos y obtener ciertas conclusiones. En nuestro caso, dado que estamos contemplando el envío de mensajes en difusión, en un entorno dinámico, en el que influye tanto la forma de la red como del entorno que rodea a la misma, debemos atender a valores relacionados con esos mensajes, tiempo de vida media en escena, en función del número de vehículos, de la velocidad de estos, del escenario y su impacto, el número de vehiculos “ciegos” que no logran recibir los mismos&#8230;</p>
<p>Por otra parte, este tipo de información, en un escenario como en el que estamos trabajando (centrémonos ya en la propia simulación bajo el entorno OMNET), requiere de ciertos ajustes para realizar correctamente las mediciones.</p>
<p>Si observamos nuestro escenario de simulación, desde el nivel más alto de abstracción, nos encontramos con el siguiente panorama:<br />
<img src="https://lh4.googleusercontent.com/Ogk5RKdWPh0BjDhyqLv8YnQQ-RuzFM81So7NLiHlTWiWe_uml-VLtjC8aTmLM6Kp3IeqAUrUQOQmjVfToVvAlj8StbfmdzdQ5RZ2wOpSKyapQLuYo80" alt="" width="288px;" height="106px;" /></p>
<p>Nos encontramos con tres módulos (manager, world y connectionManager). Si estudiáramos un ejemplo simple, en el que no utilizásemos SUMO, veríamos en el escenario algún elemento “host” que es el que realiza, en nuestro caso, las funciones de comunicación dentro de nuestros vehículos. Sin embargo, la particularidad de MIXIM es que un gestor superior (manager) permite comunicarse con SUMO para obtener indicaciones de cómo mover cada uno de nuestros vehículos (nuestros host) dentro de OMNET, ayudándose de los otros dos módulos para manejar la comunicación entre ellos y otro tipo de parámetros. En resumidas cuentas, no veremos directamente en este nivel el módulo que modela el comportamiento de cada host, pues es instanciado de forma interna por el “manager”, pero sí debemos saber que existen. Así, y para ilustrar esta idea veamos el siguiente gráfico:</p>
<p><a href="http://eduardomarin.es/wp-content/uploads/2011/08/sADfBr7OuWgSKzrtKSsJMlg.png"><img class="aligncenter size-full wp-image-110" title="sADfBr7OuWgSKzrtKSsJMlg" src="http://eduardomarin.es/wp-content/uploads/2011/08/sADfBr7OuWgSKzrtKSsJMlg.png" alt="" width="482" height="341" /></a></p>
<p>Vemos entonces cómo “manager” indica a cada host cómo debe comportarse en el escenario en base a las indicaciones que recibe del motor SUMO (que es realmente el simulador de la red de vehículos). Y en este punto, y viendo el gráfico, podemos pensar que cada host es un módulo diferente, y que debemos crearlos todos, sin embargo (como cabría esperar), son instancias de un único módulo, que se muestra a continuación (car.ned):</p>
<p><img src="https://lh5.googleusercontent.com/ob8q3saAG4HeIeFuho9Bn2hpYBYVM7nGZRMzpNUecgmMAtL1hIvZitCQ6PAQMpgOMudRW768x1xmPpXVSkIjIJSaIZZuyxdGXYuRq_0jBZk2_38JDq0" alt="" width="374px;" height="378px;" /></p>
<p>Estamos ya familiarizados con este módulo, que es el que contiene el protocolo 802.15.4 con nuestro propio nivel de aplicación. Es en ese nivel de aplicación donde hemos ido realizando las modificaciones, añadiendo nuestros algoritmos APAL, y donde manejábamos los mensajes que recibíamos y enviábamos. Es en ese módulo (mi_app_layer) donde tenemos acceso a los valores que comentábamos anteriormente y que deben convertirse en los resultados a mostrar. Y es en ese nivel de aplicación donde podemos hacer uso de las herramientas que nos ofrece OMNET para mostrar resultados estadísticos. Sin embargo, no lo haremos así. Veamos por qué.</p>
<p>Si creamos dentro de nuestro módulo “mi_app_layer” las funciones necesarias para almacenar las estadísticas que deseamos, nos encontraremos con un número de estadísticas “paralelas” equivalente al número de host que tengamos en el escenario. Frente a esto, necesitamos un observador, externo al host, que se instancie de forma independiente, y que pueda comunicarse con cada uno de los host.</p>
<p>OMNET y MIXIM utilizan el concepto de “blackboard” para este cometido. Siendo más precisos, se trata de un “tablón de anuncios” en el que un “editor” puede publicar y un “lector” puede suscribirse al tablón y ser avisado cuando el primero publique en el mismo. Podemos decir que es un canal “bidireccional” a través del cual pueden comunicarse módulos independientes y ser alertados cuando suceden cambios. Sin embargo, en nuestro caso, podemos evitar el uso de esta solución (que es algo más compleja), pues no necesitamos comunicación bidireccional para mostar los resultados (se muestran y ya está). Así pues, basta con crear un módulo externo, emplazado en el nivel superior del escenario, accesible a todos los “hosts”, con métodos determinados que permitan el almacenamiento de estadísticas.</p>
<p>Así, el panorama cambia de la siguiente forma:<br />
<img src="https://lh5.googleusercontent.com/bX2kJnu1R5ARLIG7QclaU8dyOGl1JULb_zfwUJRkgEEIzyf1V4bqoaqln1lSDHlOugy9j4Q7SfRbgpmda4PLO0Y27ohrst94wQPM4uVfCrOQUwk5nI8" alt="" width="284px;" height="170px;" /></p>
<p><a href="http://eduardomarin.es/wp-content/uploads/2011/08/sFSUGnoOREnvrEbv3KNoHpA.png"><img class="aligncenter size-full wp-image-111" title="sFSUGnoOREnvrEbv3KNoHpA" src="http://eduardomarin.es/wp-content/uploads/2011/08/sFSUGnoOREnvrEbv3KNoHpA.png" alt="" width="482" height="341" /></a></p>
<p>&nbsp;</p>
<p>Qué valores debemos almacenar?</p>
<p>-Tiempo medio que tarda en llegar un mensaje a los hosts de la red<br />
- en función del número de vehículos<br />
- en función de la velocidad<br />
- en función del entorno (ver implementación de simulación de atenuación)<br />
- Número de vehículos ciegos (no logran recibir mensaje)<br />
- en función del tiempo máximo de vida del mensaje<br />
- en función del número de vehículos<br />
- en función de la velocidad<br />
- en función del escenario (manhattan, ciudad real)</p>
<p>Para comprobar el correcto planteamiento y funcionamiento del observador que nos hace un registro estadístico, vamos a partir de un caso básico. Una vía con forma de cuadrado, en el que inyectamos un tráfico de 10 vehículos que circulan en sentido horario y que el primero es el único que hace de emisor. Obtendremos el tiempo medio en llegar a los vehículos.</p>
</div>
<div>
<p>net.nod.xml:</p>
<p><code>&lt;nodes&gt;<br />
&lt;node id="a" x="0.0" y="300" /&gt;<br />
&lt;node id="b" x="300.0" y="300" /&gt;<br />
&lt;node id="c" x="300.0" y="0" /&gt;<br />
&lt;node id="d" x="0.0" y="0" /&gt;<br />
&lt;/nodes&gt;</code></p>
<p>net.edg.xml:</p>
<p><code>&lt;edges&gt;<br />
&lt;edge id="ed_ab" fromnode="a" tonode="b" priority="1" nolanes="1" speed="11.111" /&gt;<br />
&lt;edge id="ed_bc" fromnode="b" tonode="c" priority="1" nolanes="1" speed="11.111" /&gt;<br />
&lt;edge id="ed_cd" fromnode="c" tonode="d" priority="1" nolanes="1" speed="11.111" /&gt;<br />
&lt;edge id="ed_da" fromnode="d" tonode="a" priority="1" nolanes="1" speed="11.111" /&gt;<br />
&lt;/edges&gt;</code></p>
<p>net.rou.xml:</p>
<p><code>&lt;routes&gt;<br />
&lt;route id="basica" multi_ref="x" edges="ed_ab ed_bc ed_cd ed_da ed_ab ed_bc ed_cd ed_da ed_ab ed_bc ed_cd ed_da ed_ab ed_bc ed_cd ed_da ed_ab ed_bc ed_cd ed_da ed_ab ed_bc ed_cd ed_da ed_ab ed_bc ed_cd ed_da ed_ab ed_bc ed_cd ed_da ed_ab ed_bc ed_cd ed_da"/&gt;<br />
&lt;flow id="flujo_basico" route="basica" begin="50" end="500" no="10"/&gt;<br />
&lt;/routes&gt;</code></p>
<p><img src="https://lh4.googleusercontent.com/zJ9vBhUyq0kJiGD3WJBsxlgV8SNASh-owLPaBW-d-emFpxgwJQQB9JRfOU0r8PBqu9wQ3Zx1Aa77WZNtMjQPk4xIuJ5RzjDFPvu-um6IOqm-RtfYMYw" alt="" width="541px;" height="541px;" /></p>
<p>A continuación, debemos implementar tanto en nuestra capa de aplicación como en el observador, las correspondientes funciones que permitan extraer el tiempo medio que tarda en llegar un mensaje a cada receptor, desde que el primer vehículo lo envía. Debemos tener en cuenta que este emisor realiza broadcast de un mensaje nuevo cada segundo y, por tanto, debemos diferenciar todos y cada uno de los mensajes que coexistan y calcular para cada uno de ellos su tiempo medio de recepción y promediar el total.</p>
<p>Para ello, crearemos un vector que vaya guardando los tiempos medios que van acumulándose para cada uno de esos mensajes, que podremos identificar mediante su campo de identificación único, y gracias al sello “timestamp” de inicio que también se almacena en los mensajes en su respectivo campo.</p>
<p>Así pues, el flujo de trabajo para obtener el tiempo de vida que tarda un mensaje en llegar a un determinado host sería el siguiente:</p>
<p><a href="http://eduardomarin.es/wp-content/uploads/2011/08/s31FKpqwMIn7PXv_Z8gekKA.png"><img class="aligncenter size-full wp-image-112" title="s31FKpqwMIn7PXv_Z8gekKA" src="http://eduardomarin.es/wp-content/uploads/2011/08/s31FKpqwMIn7PXv_Z8gekKA.png" alt="" width="473" height="466" /></a></p>
<p>&nbsp;</p>
<div>
<p>Así, el observador en cuestión, con la funcionalidad simplificada a obtener el tiempo medio que un mensaje tarda en llegar a un receptor, es el siguiente:</p>
<p>observador.h</p>
<p><code>#ifndef __MIXIM_SOMMER_OBSERVADOR_H_<br />
#define __MIXIM_SOMMER_OBSERVADOR_H_</code></p>
<p><code>#include &lt;omnetpp.h&gt;</code></p>
<p><code>/**<br />
* TODO - Generated class<br />
*/</code><br />
<code>{<br />
protected:<br />
virtual void initialize();<br />
virtual void handleMessage(cMessage *msg);<br />
virtual void finish();</code></p>
<p><code>double valores_asociados[4][10000];<br />
int i_valores_asociados;<br />
cOutVector st_valor;</code></p>
<p><code>public:<br />
void grabar_estadistica(double);<br />
void inserta_valor(double,int);//inserta_valor(valor,indice)<br />
void actualiza_valor(double,int);//actualiza_valor(valor,indice)<br />
double consulta_valor(int);//consulta_valor(indice)<br />
double haz_media();<br />
int existe_valor(int);<br />
};</code></p>
<p><code>#endif</code></p>
<p>observador.cc</p>
<p><code>#include "observador.h"</code></p>
<p><code>Define_Module(Observador);</code></p>
<p><code>void Observador::initialize()</code><br />
<code>{<br />
// TODO - Generated method body<br />
st_valor.setName("estadisticas");<br />
}</code></p>
<p><code>void Observador::handleMessage(cMessage *msg)</code><br />
<code>{<br />
// TODO - Generated method body<br />
}</code></p>
<p><code>void Observador::grabar_estadistica(double valor)<br />
{<br />
st_valor.record(valor);</code></p>
<p><code>}</code></p>
<p><code>void Observador::inserta_valor(double valor, int uid){</code></p>
<p><code>int i,encontrado;<br />
i = 0;<br />
encontrado = 0;</code></p>
<p><code>if(!existe_valor(uid) &amp;&amp; (valor &gt; 0.0000001)){<br />
valores_asociados[0][i_valores_asociados]=valor;<br />
valores_asociados[1][i_valores_asociados]=uid;<br />
valores_asociados[2][i_valores_asociados]=1;<br />
EV &lt;&lt; "valor asociado:" &lt;&lt; valor &lt;&lt; endl;<br />
i_valores_asociados ++;<br />
}else{<br />
if(valor &gt; 0.0000001){<br />
while((i&lt; i_valores_asociados)&amp;&amp;(!encontrado)){<br />
if(uid == valores_asociados[1][i]) encontrado = 1; else i++;<br />
}<br />
EV &lt;&lt; "el valor actualizado es:" &lt;&lt; valores_asociados[0][i] &lt;&lt; endl;<br />
//número de actualizaciones de promedio (cuantos vehículos han recibido dicho mensaje)<br />
valores_asociados[2][i]=(valores_asociados[2][i])+1;<br />
//actualizamos promedio para el mensaje que acabamos de recibir<br />
valores_asociados[0][i]=(valores_asociados[0][i] * (((valores_asociados[2][i])-1)/valores_asociados[2][i]))+(valor/valores_asociados[2][i]);</code></p>
<p><code>EV &lt;&lt; "junto con este nuevo:" &lt;&lt; valor &lt;&lt; endl;<br />
EV &lt;&lt; "el número de lecturas es:" &lt;&lt; valores_asociados[2][i] &lt;&lt; endl;<br />
EV &lt;&lt; "y la nueva media es:" &lt;&lt; valores_asociados[0][i] &lt;&lt; endl;<br />
}<br />
}<br />
}</code></p>
<p><code>int Observador::existe_valor(int uid){<br />
int i, encontrado;<br />
i=0;<br />
encontrado = 0;<br />
while((i&lt; i_valores_asociados)&amp;&amp;(!encontrado)){<br />
if(uid == valores_asociados[1][i]) encontrado = 1; else i++;<br />
}<br />
return encontrado;<br />
}</code></p>
<p><code>double Observador::consulta_valor(int uid){</code></p>
<p><code>int i, encontrado;<br />
encontrado = 0;<br />
i = 0;<br />
while((i &lt;= i_valores_asociados) &amp;&amp; (!encontrado)){<br />
if(uid == valores_asociados[1][i]) encontrado = 1; else i++;<br />
}</code></p>
<p><code>if(encontrado) return valores_asociados[0][i]; else return -1;<br />
}</code></p>
<p><code>double Observador::haz_media(){</code></p>
<p><code>int i;<br />
double aux, aux1;<br />
aux = 0;</code></p>
<p><code>for(i=0; i&lt; i_valores_asociados; i++){<br />
aux = aux + valores_asociados[0][i];<br />
EV &lt;&lt; "valores asociados" &lt;&lt; valores_asociados[0][i] &lt;&lt; endl;<br />
}<br />
aux1 = (aux / i_valores_asociados);<br />
return aux1;<br />
}</code></p>
<p><code>/**<br />
* Finalizamos el módulo a través de esta función<br />
**/<br />
void Observador::finish()<br />
{<br />
this-&gt;grabar_estadistica(this-&gt;haz_media());<br />
}</code></p>
<p>Así, con este primer acercamiento a la obtención de estadísticas, definimos el siguiente escenario:</p>
<p>Tiempo de simulación: 3000 segundos.<br />
Dimensiones de la vía: cuadrado 2500 m x 2500 m.</p>
<p>tiempo medio recepción mensajes:</p>
<p>25 vehículos:<br />
0.010148903914739 s = 10 ms</p>
<p>50 vehiculos:<br />
0.0094382959530603 s = 9 ms</p>
<p>100 vehiculos:<br />
0.08707856405782 s = 80 ms</p>
<p>150 vehiculos:<br />
0.11929866066083 s = 119 ms</p>
<p>200 vehiculos:<br />
0.17646911908468 s = 176 ms</p>
<p>250 vehiculos:<br />
0.16912641416451 s = 169 ms</p>
<p>300 vehiculos:<br />
0.19146343009296 s = 191 ms<br />
<img src="https://lh3.googleusercontent.com/lMe3rT3xDONqQsEkt4kzO0rJnnm_XNEgKhMSxBi7fL18EeJnU0QLzRvZmZnOD7pbSErBwTgVcDsJWtaUt2YN1Vcivli_En_vzKjg-bfRUWv2tl5MMkc" alt="" width="600px;" height="371px;" /></p>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://eduardomarin.es/2011/08/sacar-05-extraer-estadisticas-el-observador-externo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SACAR &#8211; 04 &#8211; Creando nuestras propias vías de circulación</title>
		<link>http://eduardomarin.es/2011/07/sacar-04-creando-nuestras-propias-vias-de-circulacion/</link>
		<comments>http://eduardomarin.es/2011/07/sacar-04-creando-nuestras-propias-vias-de-circulacion/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 18:18:26 +0000</pubDate>
		<dc:creator>edu</dc:creator>
				<category><![CDATA[arduino]]></category>
		<category><![CDATA[mixim]]></category>
		<category><![CDATA[omnet]]></category>
		<category><![CDATA[sacar]]></category>
		<category><![CDATA[sommer]]></category>
		<category><![CDATA[sumo]]></category>
		<category><![CDATA[vanet]]></category>

		<guid isPermaLink="false">http://eduardomarin.es/?p=82</guid>
		<description><![CDATA[En la simulación que hemos realizado anteriormente, para comprobar que la comunicación entre OMNET++ y SUMO se establecía correctamente, utilizábamos un ejemplo ya creado en traci al que habíamos añadido nuestro propio host basado en el protocolo 802.15.4 modificado. En &#8230; <a href="http://eduardomarin.es/2011/07/sacar-04-creando-nuestras-propias-vias-de-circulacion/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>En la simulación que hemos realizado anteriormente, para comprobar que la comunicación entre OMNET++ y SUMO se establecía correctamente, utilizábamos un ejemplo ya creado en traci al que habíamos añadido nuestro propio host basado en el protocolo 802.15.4 modificado. En ese ejemplo, se utilizaba una red de vías de circulación ya predeterminada, en la cual un flujo constante de vehículos aparecía en un aparcamiento, y comenzaban a circular hacia un punto determinado de dicha red.</p>
<p>A efectos prácticos, nosotros debemos crear nuestras propias vías de circulación, comenzando con ejemplos sencillos y finalizar con redes más complejas. La sencillez en las primeras nos facilitarán la depuración de los diferentes algoritmos que más tarde crearemos, pudiendo sacar conclusiones más claras y obtener unos resultados más consistentes. A medida que la validez de estos algoritmos aumente, aumentaremos la complejidad de las vías para realizar diferentes test que nos permitan sacar conclusiones en relación a la carga de vehículos y de la estructura de la red.</p>
<div>Partiendo de la configuración del ejemplo que anteriormente hemos modificado (en ella aparece una configuración de una carretera determinada), comprobaremos que el funcionamiento es correcto sobre una red simple como es un cruce en aspa:</div>
<div>
<p>&nbsp;</p>
<p><img src="https://lh3.googleusercontent.com/pqNuQNRb80mjpVpO_gI5QmeEXixYUaHsmw2q84lTd-crWGJCMmFuJOdSYcxyJXC1kC4P0u1GkvtEQo_CQNHcSlNMzskL-6DTSLnEaERBC6jVs_UQtw" alt="" width="370px;" height="258px;" /></p>
<p>Dentro de las simulaciones que llevemos a cabo, tendremos que contemplar tres archivos.</p>
<p>Por un lado, un archivo de definición de la propia red (red de vías), en la cual se definen los elementos que constituyen una determinada topología (vías, cruces, puntos de inicio y fin,&#8230;). Para nuestro caso, este archivo es “net.net.xml” (omitiremos el código por ser algo amplio).</p>
<p>Por otro lado, un archivo que define el comportamiento y la identidad de los propios vehículos. En nuestro ejemplo, “routes.rou.xml”. Este archivo identifica cada vehículo que aparecerá en el escenario, su velocidad, su inicio y su fin, los puntos intermedios por los que pasará, &#8230; Además, dado que trabajamos conjuntamente con el simulador OMNET++, debe existir una relación con el módulo que define un determinado nodo o host en él (en nuestro caso, se trataba del módulo “Car”. Observamos el código del cual se deducen los puntos aquí señalados:</p>
<p><code>&lt;routes&gt;<br />
&lt;vtype id="org.mixim.examples.mi_traci.Car;i=misc/node2;is=vs;r=0,,#707070,1" accel="2.6" decel="4.5" sigma="0.5" length="5" maxspeed="14" color="1,1,0"/&gt;<br />
&lt;vehicle type="org.mixim.examples.mi_traci.Car;i=misc/node2;is=vs;r=0,,#707070,1" id="host[0]" depart="0"&gt;<br />
&lt;route id="always_right" multi_ref="x" edges="1i 4o 4i 2o 2i 3o 3i 1o 1i"/&gt;<br />
&lt;/vehicle&gt;<br />
&lt;vehicle type="org.mixim.examples.mi_traci.Car;i=misc/node2;is=vs;r=0,,#707070,1" id="host[1]" depart="3"&gt;<br />
&lt;route id="always_left" multi_ref="x" edges="3i 2o 2i 4o 4i 1o 1i 3o 3i"/&gt;<br />
&lt;/vehicle&gt;<br />
&lt;vehicle type="org.mixim.examples.mi_traci.Car;i=misc/node2;is=vs;r=0,,#707070,1" id="host[2]" depart="6"&gt;<br />
&lt;route id="horizontal" multi_ref="x" edges="2i 1o 1i 2o 2i"/&gt;<br />
&lt;/vehicle&gt;<br />
&lt;vehicle type="org.mixim.examples.mi_traci.Car;i=misc/node2;is=vs;r=0,,#707070,1" id="host[3]" depart="9"&gt;<br />
&lt;route id="vertical" multi_ref="x" edges="3i 4o 4i 3o 3i"/&gt;<br />
&lt;/vehicle&gt;<br />
&lt;/routes&gt;</code></p>
<p>Finalmente, descripción de red y descripción de comportamiento deben reflejarse en el simulador de redes OMNET++ a través de un tercer archivo de configuración. Este es un archivo de configuración de la propia simulación en el que se indica explícitamente el nombre de esos dos archivos, y los datos de conexión que necesitaría OMNET++ para comunicarse con el servidor SUMO-TRACI. Este archivo, que nosotros llamamos “sumo.sumo.cfg” contiene las siguientes líneas:</p>
<p><code>&lt;configuration&gt;</code></p>
<p><code>&lt;files&gt;<br />
&lt;net-file&gt;net.net.xml&lt;/net-file&gt;<br />
&lt;route-files&gt;routes.rou.xml&lt;/route-files&gt;<br />
&lt;remote-port&gt;8888&lt;/remote-port&gt;<br />
&lt;penetration&gt;1&lt;/penetration&gt;</code></p>
<p><code>&lt;srand&gt;88888&lt;/srand&gt;<br />
&lt;abs-rand&gt;false&lt;/abs-rand&gt;<br />
&lt;/files&gt;</code></p>
<p><code>&lt;simulation&gt;<br />
&lt;route-steps&gt;200&lt;/route-steps&gt;<br />
&lt;begin&gt;0&lt;/begin&gt;<br />
&lt;end&gt;86400&lt;/end&gt;<br />
&lt;/simulation&gt;<br />
&lt;/configuration&gt;</code></p>
</div>
<div>
<p><strong>Construyendo nuestras vías:</strong></p>
<p>El caso anterior aprovechaba uno de las redes de ejemplo existentes dentro del simulador SUMO. A continuación, describiremos la forma de construir nuestras propias redes partiendo de descripciones realizadas mediante archivos xml. La idea es analizar el comportamiento futuro de nuestro sistema en redes complejas, partiendo de situaciones muy particulares y aisladas.</p>
<p>Así, comencemos con el caso básico en el cual necesitamos tener una vía de un único sentido y un único carril unidireccional.</p>
<p>En primer lugar, crearemos el archivo de descripción de nodos. En nuestro caso, lo llamamos “via_recta_ud.node.xml”.</p>
</div>
<div><a href="http://eduardomarin.es/wp-content/uploads/2011/07/sy1HRLne5BL7A3agQHdg5MQ.png"><img class="aligncenter size-full wp-image-116" title="sy1HRLne5BL7A3agQHdg5MQ" src="http://eduardomarin.es/wp-content/uploads/2011/07/sy1HRLne5BL7A3agQHdg5MQ.png" alt="" width="341" height="34" /></a>&nbsp;</p>
<p>La idea esquemática de la vía la mostramos en la anterior figura, y la descripción de este esquema, en términos xml, será la siguiente:</p>
<p><code>&lt;nodes&gt; &lt;!-- The opening tag --&gt;<br />
&lt;node id="0" x="0.0" y="0.0"/&gt; &lt;!-- def. of node "0" --&gt;<br />
&lt;node id="1" x="500.0" y="0.0"/&gt; &lt;!-- def. of node "1" --&gt;<br />
&lt;/nodes&gt; &lt;!-- The closing tag --&gt;</code></p>
<p>Por otro lado, uniremos los dos nodos mediante una configuración de vías determinada, otorgando un número de carriles por sentido, y el inicio y final de dichas vías.</p>
<p><code>&lt;edges&gt;<br />
&lt;edge id="0t1" fromnode="0" tonode="1" priority="1" nolanes="1" speed="11.11"/&gt;<br />
&lt;edge id="1t0" fromnode="1" tonode="0" nolanes="1" speed="11.11"/&gt;<br />
&lt;/edges&gt;</code></p>
<p>A partir de estos dos archivos descriptivos, crearemos el archivo de red propiamente dicho (.ned.xml), mediante la herramienta que toma como entrada ambos archivos y nos devuelve la red:</p>
<p><code>netconvert --xml-node-files=net.nod.xml --xml-edge-files=net.edg.xml --output-file=net.net.xml</code></p>
<p>Finalmente, necesitaremos un archivo de rutas, donde se describe el tipo de vehículo que circulará por las vías, su trayectoria y, opcionalmente, un flujo de vehículos que permite automatizar la creación de vehículos: (incluiremos directamente el tipo de vehículo para utilizarlo en omnetpp como nodo mixim-sommer)</p>
<p><code>&lt;vtype id="org.mixim.examples.mi_traci.Car;i=misc/node2;is=vs;r=0,,#707070,1" accel="2.6" decel="4.5" sigma="0.5" length="5" maxspeed="14" color="1,1,1"/&gt;<br />
&lt;route id="from0" multi_ref="x" edges="0t1 1t0"/&gt;<br />
&lt;flow id="from0" type="org.mixim.examples.mi_traci.Car;i=misc/node2;is=vs;r=0,,#707070,1" route="from0" begin="1" end="5002" period="1"/&gt;<br />
&lt;/routes&gt;</code><br />
<img src="https://lh6.googleusercontent.com/JoAo0p65AixDURA05B0yR0GAOnz8EFh6JeI6YjENc5irFneUc9xMTAETIOxxvnTO4WTlDW0hhI6tBUuN1cI0V6_udhMGnPvtlzeYdQYP_N2extKnqA" alt="" width="406px;" height="170px;" /></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://eduardomarin.es/2011/07/sacar-04-creando-nuestras-propias-vias-de-circulacion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SACAR &#8211; 03 &#8211; Probando nuestro host 802.15.4 personalizado</title>
		<link>http://eduardomarin.es/2011/07/sacar-03-probando-nuestro-host-802-15-4-personalizado/</link>
		<comments>http://eduardomarin.es/2011/07/sacar-03-probando-nuestro-host-802-15-4-personalizado/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 17:44:19 +0000</pubDate>
		<dc:creator>edu</dc:creator>
				<category><![CDATA[arduino]]></category>
		<category><![CDATA[mixim]]></category>
		<category><![CDATA[omnet]]></category>
		<category><![CDATA[sacar]]></category>
		<category><![CDATA[sommer]]></category>
		<category><![CDATA[sumo]]></category>
		<category><![CDATA[vanet]]></category>

		<guid isPermaLink="false">http://eduardomarin.es/?p=79</guid>
		<description><![CDATA[El siguiente paso será aprovechar el host utilizado en la prueba anterior, con soporte para el protocolo IEEE 802.15.4 y con el nivel de aplicación que hemos creado para probar la comunicación con el simulador de tráfico SUMO y adelantar &#8230; <a href="http://eduardomarin.es/2011/07/sacar-03-probando-nuestro-host-802-15-4-personalizado/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div>
<p>El siguiente paso será aprovechar el host utilizado en la prueba anterior, con soporte para el protocolo IEEE 802.15.4 y con el nivel de aplicación que hemos creado para probar la comunicación con el simulador de tráfico SUMO y adelantar el paso final para construir el entorno adecuado para nuestro sistema SACAR.</p>
<p>Para ello, en el framework mixim-sommer, existe un ejemplo de conexión con SUMO (traci), con el nombre “traci_launchd” (mixim-sommer/examples/traci_launchd). Dicho ejemplo ejecuta una comunicación inalámbrica sobre redes IEEE 802.11 sobre nodos que circulan por una determinada red de carreteras previamente definida en SUMO.</p>
<p>Partiendo de este ejemplo, la acción más inmediata será la de modificar la funcionalidad o clase utilizada como nodo y reutilizar la que nosotros hemos implementado en “mi_ieee802154a”.</p>
<p>Para ello, en primer lugar, duplicamos dicho directorio, para no trabajar sobre el original, y lo renombramos (mi_traci). A continuación copiaremos el archivo “mi_Host802154a.ned” que creamos en el ejemplo anterior (localizado en mixim-sommer/modules/nodes) y, directamente, lo copiamos sobre este directorio. Para acercarlo más al entorno de simulación, optamos por renombrar el archivo: “Car.ned”. Al igual que hicimos en la anterior ocasión, debemos modificar internamente el archivo para adaptarlo al nuevo nombre y directorio del paquete, de la misma forma que los archivos que fueron duplicados desde “traci_launchd” a “mi_traci”.</p>
<p>Una vez adaptados estos valores, modificaremos una serie de parámetros necesarios para que la simulación funcione correctamente.</p>
<p>En primer lugar, debemos notificar dicho cambio. Así, en el archivo de configuración “omnetpp.ini” cambiaremos el tipo de nodo a utilizar:<br />
*.manager.moduleType = &#8220;org.mixim.examples.mi_traci.Car&#8221;</p>
<p>Añadiremos, además, datos de configuración de la batería del módulo 802.15.4, pues en “traci_launchd” esos parámetros no eran necesarios:</p>
<p><code>**.battery.nominal = 99999mAh<br />
**.battery.capacity = 99999mAh<br />
**.battery.voltage = 3.3V<br />
**.battery.resolution = 10s<br />
**.battery.publishDelta = 0.1<br />
**.battery.publishTime = 0<br />
**.battery.numDevices = 1  # only the PHY module uses energy from the battery<br />
**.batteryStats.detail = false<br />
**.batteryStats.timeSeries = false</code></p>
<p>Añadiremos también parámetros sobre el número de nodos y de mensajes a enviar:</p>
<p><code>[Config Pruebabroadcast]<br />
**.numHosts = 2<br />
mi_traci.node[*].mi_app_layer.num_mensajes_a_enviar = 4</code></p>
<p>(he agregado config de batería (desde <a href="http://omnetpp.in/">omnetpp.in</a>i de mi_802154a) y archivo Nic802154_TI_CC1100_Decider.xml)</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://eduardomarin.es/2011/07/sacar-03-probando-nuestro-host-802-15-4-personalizado/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

