<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es"><generator uri="https://jekyllrb.com/" version="4.3.3">Jekyll</generator><link href="https://luissequeira.github.io/feed.xml" rel="self" type="application/atom+xml"/><link href="https://luissequeira.github.io/" rel="alternate" type="text/html" hreflang="es"/><updated>2024-09-05T21:06:20+00:00</updated><id>https://luissequeira.github.io/feed.xml</id><title type="html">Luis Sequeira</title><entry><title type="html">Internet táctil: El papel de la QoS en sistemas de teleoperación</title><link href="https://luissequeira.github.io/blog/2024/tactile-internet-the-role-of-qos/" rel="alternate" type="text/html" title="Internet táctil: El papel de la QoS en sistemas de teleoperación"/><published>2024-09-05T20:30:00+00:00</published><updated>2024-09-05T20:30:00+00:00</updated><id>https://luissequeira.github.io/blog/2024/tactile-internet-the-role-of-qos</id><content type="html" xml:base="https://luissequeira.github.io/blog/2024/tactile-internet-the-role-of-qos/"><![CDATA[<div class="row mt-3" style="text-align: center"> <div class="col-sm mt-3 mt-md-0"> <figure> <picture> <source class="responsive-img-srcset" media="(max-width: 480px)" srcset="/assets/img/Research/tactile-internet-the-role-of-qos/fig1-480.webp"/> <source class="responsive-img-srcset" media="(max-width: 800px)" srcset="/assets/img/Research/tactile-internet-the-role-of-qos/fig1-800.webp"/> <source class="responsive-img-srcset" media="(max-width: 1400px)" srcset="/assets/img/Research/tactile-internet-the-role-of-qos/fig1-1400.webp"/> <img src="/assets/img/Research/tactile-internet-the-role-of-qos/fig1.jpg" class="img-fluid rounded z-depth-1" width="auto" height="auto" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> <p><strong>El sentido del tacto</strong> se percibe actualmente como la modalidad que complementará la audición y la visión, convirtiéndose en una tercera vía de transmisión de datos a través de Internet en una variedad de aplicaciones hápticas del futuro. Estas aplicaciones permitirán una inmersión total y, en muchos aspectos, tendrán un impacto significativo en la sociedad. Sin embargo, los altos requerimientos técnicos de estas aplicaciones exigen redes que soporten comunicaciones ultra confiables y de baja latencia (URLLC), con el fin de garantizar la calidad de servicio (QoS) necesaria para mantener una experiencia óptima del usuario (QoE).</p> <h2 id="internet-táctil">Internet táctil</h2> <p>En los <strong>sistemas de teleoperación para la telemanipulación háptica</strong>, también conocidos como sistemas telehápticos, generalmente un operador humano usa una interfaz háptica (dispositivo maestro) en un extremo del canal de comunicación para controlar un dispositivo teleoperador (actuador esclavo) en el otro extremo. Las aplicaciones de teleoperación pueden ser de corta distancia, donde el canal de comunicación puede ser cableado o inalámbrico sin necesidad de infraestructura de red, o de larga distancia, aprovechando infraestructuras de redes conmutadas por paquetes para transmitir los datos. El alcance del canal de comunicación para la teleoperación a larga distancia puede variar desde redes de área local (LAN) hasta el propio Internet.</p> <p>El objetivo de los sistemas de teleoperación es proporcionar al usuario la sensación de presencia en el entorno remoto donde se encuentra el teleoperador. Esto se logra mediante la mejora continua del hardware y software relacionados, permitiendo que los usuarios humanos reciban retroalimentación multimodal (visual, auditiva y háptica). Para alcanzar este objetivo, es necesario cumplir con los requisitos adecuados de QoS, lo cual maximiza la experiencia del usuario (QoE).</p> <h2 id="requisitos-de-calidad-de-servicio">Requisitos de calidad de servicio</h2> <p>Los sistemas de Telepresencia y Teleacción (TPTA) basados en Internet implementan esquemas de control en bucle cerrado sobre una infraestructura de comunicación en tiempo real, permitiendo la interacción entre un operador humano y un entorno remoto mediante sensores y actuadores. Este tipo de sistema se conoce como Sistema de Control Basado en Redes (NBCS).</p> <p>Dado que uno de los componentes centrales de estos sistemas es el canal de comunicación, se han utilizado o creado varios protocolos de red para los diferentes marcos de teleoperación y su implementación en Internet, garantizando un funcionamiento eficiente tanto en aplicaciones de entornos virtuales como en sistemas físicos.</p> <p>Como en cualquier sistema de red, el correcto funcionamiento de los NBCS está sujeto a diversos obstáculos que afectan negativamente su rendimiento. Estos factores también actúan como indicadores de desempeño, permitiendo comparar diferentes protocolos y cuantificar la calidad de servicio que pueden ofrecer, aspecto crítico en aplicaciones como la telecirugía. Dado que los sistemas de teleoperación son NBCS, heredan estos aspectos de rendimiento relacionados con los requisitos de los sistemas TPTA. Entre los parámetros de rendimiento más comunes se incluyen:</p> <ul> <li><strong>Retardo de red</strong>: es el tiempo promedio que tarda un paquete en viajar desde la entrada hasta la salida del canal de comunicación. Una revisión exhaustiva de las principales fuentes de retardo de red y sus soluciones se encuentra en [2].</li> <li><strong>Jitter</strong>: es la variación del retardo en paquetes individuales, también conocida como Variación del Retardo de Paquetes (PDV), que afecta la secuencia de los paquetes. Una forma común de mitigar el jitter es mediante el uso de números de secuencia o marcas de tiempo en los paquetes. Sin embargo, esto implica el uso de búferes, lo que incrementa el retardo total.</li> <li><strong>Pérdida de paquetes</strong>: ocurre debido a la congestión del tráfico en la red, obligando a los sistemas maestro y esclavo de un sistema TPTA a operar con falta de información. Las soluciones incluyen sustituir los valores perdidos por valores nulos, mantener el último valor recibido o usar interpolación (por ejemplo, mediante métodos de predicción).</li> <li><strong>Tasa de datos</strong>: está influenciada por la frecuencia de muestreo, la resolución de las muestras y el overhead del protocolo.</li> </ul> <p>Además, factores como la cuantización de señales y otras fuentes de ruido también pueden afectar el rendimiento del sistema.</p> <p>Los efectos de la pérdida de paquetes, con y sin latencia, en la percepción de eventos visuales y hápticos se han analizado en [3], mostrando que ambos factores se suman entre sí. No obstante, según [4], los efectos de la pérdida de paquetes pueden mitigarse mediante mecanismos que aumentan la fiabilidad de la comunicación, aunque esto incrementa la latencia total. Por lo tanto, es esencial encontrar un equilibrio entre fiabilidad y retardo.</p> <h2 id="references">References</h2> <ol> <li>S.G. Tzafestas.Web-Based Control and Robotics Education. IntelligentSystems, Control and Automation: Science and Engineering. Springer Netherlands, 2009. ISBN 9789048125050.</li> <li>B. Briscoe, A. Brunstrom, A. Petlund, D. Hayes, D. Ros, I. J. Tsang,S. Gjessing, G. Fairhurst, C. Griwodz, and M. Welzl. Reducing internetlatency: A survey of techniques and their merits. IEEE Communications Surveys Tutorials, 18(3):2149–2196, thirdquarter 2016. ISSN 1553-877X.</li> <li>Z. Shi, H. Zou, M. Rank, L. Chen, S. Hirche, and H. J. Muller. Effects ofpacket loss and latency on the temporal discrimination of visual-hapticevents. IEEE Transactions on Haptics, 3(1):28–36, Jan 2010. ISSN 1939-1412.</li> <li>Changhoon Seo, Jong-Phil Kim, Jaeha Kim, Hyo-Sung Ahn, andJeha Ryu.Robustly stable bilateral teleoperation under time-varying delays and data losses: an energy-bounding approach.Journal of Mechanical Science and Technology, 25(8):2089, Sep2011.ISSN 1976-3824.</li> </ol>]]></content><author><name></name></author><category term="Innovation"/><category term="Networks"/><category term="QoS"/><category term="tactile-internet"/><category term="teleoperation"/><category term="haptic"/><category term="urllc"/><summary type="html"><![CDATA[El sentido del tacto se percibe actualmente como la modalidad que complementará la audición y la visión, convirtiéndose en una tercera vía de transmisión de datos a través de Internet en una variedad de aplicaciones hápticas del futuro.]]></summary></entry><entry><title type="html">La computación en nube se une a la 5G</title><link href="https://luissequeira.github.io/blog/2024/cloud-computing-and-5g/" rel="alternate" type="text/html" title="La computación en nube se une a la 5G"/><published>2024-07-11T20:00:00+00:00</published><updated>2024-07-11T20:00:00+00:00</updated><id>https://luissequeira.github.io/blog/2024/cloud-computing-and-5g</id><content type="html" xml:base="https://luissequeira.github.io/blog/2024/cloud-computing-and-5g/"><![CDATA[<p>Hoy en día, muchos componentes 5G pueden virtualizarse y ejecutarse en entornos de nube. En las redes núcleo y de acceso radioeléctrico en 5G, el hardware y el software se están claramente separandos [1]. Esto significa que las funciones de software 5G se virtualizan y se entregan sobre hardware de propósito general, donde se ejecutan como máquinas virtuales o contenedores en entornos de nube privada o pública. Esta disociación es importante, ya que permite a las empresas y a los investigadores innovar de forma independiente y en su respectivo espacio o área. En el pasado, esto ha demostrado ser un enfoque muy exitoso en la industria informática, donde el hardware (ordenador), el middleware (sistema operativo) y el software (aplicaciones) se desarrollan de forma independiente y son impulsados por sus propios objetivos de diseño y desarrollo.</p> <p>La clara separación de las funcionalidades de software permite sustituir potencialmente ciertas características o nueva funcionalidades mucho más rápido por otras más avanzadas. Por lo tanto, las mejoras incrementales de la tecnología pueden producirse ahora más fácilmente y sin tener que cambiar los dispCloud Computing meets 5Gositivos físicos o el firmware. De este modo, los componentes de software pueden virtualizarse mucho más fácilmente, y luego organizarse y desplegarse según las necesidades en diferentes ubicaciones físicas, centros de datos e incluso en diferentes proveedores de nube. De este modo, es posible trasladar o migrar con flexibilidad funcionalidades avanzadas o nuevas características, instanciar recursos en un momento determinado y prestar servicios a escala [2].</p> <p>Un sistema 5G desplegado de extremo a extremo consta de múltiples componentes habilitados para 5G, así como de la integración de arquitecturas de sistemas a los que podríamos llamar heredados. Las funciones de red pueden virtualizarse por completo y ejecutarse en máquinas virtuales y algunas de ellas como contenedores en diferentes infraestructuras en la nube, todas ellas gestionadas y orquestadas mediante un marco de orquestación común.</p> <p>Un sistema 5G requiere de la interacción con redes heredadas, como las redes 4G comerciales, mediante soluciones basadas en la nube para arquitecturas móviles, incluidas las divisiones funcionales de la red de acceso radioeléctrico (RAN) en la nube y la red de núcleo. Un sistema de banco de pruebas habilitado para 5G podría parecerse al sistema que se muestra en la Figura 1.</p> <div class="row mt-3" style="text-align: center"> <div class="col-sm mt-3 mt-md-0"> <figure> <picture> <source class="responsive-img-srcset" media="(max-width: 480px)" srcset="/assets/img/Cloud/cloud-computing-5g/fig1-480.webp"/> <source class="responsive-img-srcset" media="(max-width: 800px)" srcset="/assets/img/Cloud/cloud-computing-5g/fig1-800.webp"/> <source class="responsive-img-srcset" media="(max-width: 1400px)" srcset="/assets/img/Cloud/cloud-computing-5g/fig1-1400.webp"/> <img src="/assets/img/Cloud/cloud-computing-5g/fig1.png" class="img-fluid rounded z-depth-1" width="auto" height="auto" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> <div class="caption"> Figura 1: Ejemplo de banco de pruebas de alto nivel que incluye tecnologías de acceso, redes de acceso, red núcleo y orquestación de servicios. </div> <p>Como cualquier otra tecnología basada en radio, los sistemas 5G consisten de un conjunto de emplazamientos exteriores que transmiten en diferentes bandas, como \(3,5GHz\) y \(28GHz\) en este caso, lo que permite aumentar el rendimiento y reducir la latencia en la red de acceso. Las funciones virtualizadas de RAN y Core Network pueden ejecutarse ahora en entornos de nube separados, incluso a través de diferentes proveedores de nube, que deben interconectarse con un marco de gestión y orquestación.</p> <p>La red de núcleo 5G puede virtualizarse y soportar el denominado “slicing” de red de extremo a extremo, lo que puede utilizarse, por ejemplo, para permitir múltiples instancias de funciones de red virtualizadas (VNF) para satisfacer diferentes niveles de calidad de servicio (QoS), también puede utilizarse para el aislamiento de servicios, lo que abre la flexibilidad para proporcionar redes a medida para clientes o para casos de uso particulares en lugar del enfoque tradicional de “talla única”. La fragmentación de la red también facilita el desmantelamiento o la actualización de toda una sección o servicio cuando sea necesario.</p> <h2 id="references">References</h2> <ol> <li>B. Han, V. Gopalakrishnan, L. Ji and S. Lee, “Network function virtualization: Challenges and opportunities for innovations”, in IEEE Communications Magazine, vol. 53, no. 2, pp. 90-97, Feb. 2015.</li> <li>X. Sun and N. Ansari, “EdgeIoT: Mobile Edge Computing for the Internet of Things,” in IEEE Communications Magazine, vol. 54, no. 12, pp. 22-29, December 2016.</li> </ol>]]></content><author><name></name></author><category term="Cloud"/><category term="cloud"/><category term="5G"/><summary type="html"><![CDATA[Hoy en día, muchos componentes 5G pueden virtualizarse y ejecutarse en entornos de nube. En las redes núcleo y de acceso radioeléctrico en 5G, el hardware y el software se están claramente separandos [1]. Esto significa que las funciones de software 5G se virtualizan y se entregan sobre hardware de propósito general, donde se ejecutan como máquinas virtuales o contenedores en entornos de nube privada o pública.]]></summary></entry><entry><title type="html">Qué es un Light Virtual Access Point (LVAP)?</title><link href="https://luissequeira.github.io/blog/2020/what-is-a-light-virtual-access-point-lvap/" rel="alternate" type="text/html" title="Qué es un Light Virtual Access Point (LVAP)?"/><published>2020-09-14T18:29:24+00:00</published><updated>2020-09-14T18:29:24+00:00</updated><id>https://luissequeira.github.io/blog/2020/what-is-a-light-virtual-access-point-lvap</id><content type="html" xml:base="https://luissequeira.github.io/blog/2020/what-is-a-light-virtual-access-point-lvap/"><![CDATA[<div class="row mt-3" style="text-align: center"> <div class="col-sm mt-3 mt-md-0"> <figure> <picture> <source class="responsive-img-srcset" media="(max-width: 480px)" srcset="/assets/img/Cloud/what-is-lvaps/sticky-client-480.webp"/> <source class="responsive-img-srcset" media="(max-width: 800px)" srcset="/assets/img/Cloud/what-is-lvaps/sticky-client-800.webp"/> <source class="responsive-img-srcset" media="(max-width: 1400px)" srcset="/assets/img/Cloud/what-is-lvaps/sticky-client-1400.webp"/> <img src="/assets/img/Cloud/what-is-lvaps/sticky-client.png" class="img-fluid rounded z-depth-1" width="auto" height="auto" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> <p>Las redes inalámbricas se utilizan ampliamente en áreas como centros de negocios, aeropuertos, campus universitarios o incluso en muchas áreas de la ciudad. Para estos escenarios existen soluciones para <strong>coordinar puntos de acceso Wi-Fi</strong>, generalmente conocidos como Wi-Fi empresarial. Aunque existen soluciones comerciales, estas son propietarias, cerradas y costosas, lo que en la mayoría de los casos las hace inviables para muchas organizaciones.</p> <p>En este contexto, existen algunas propuestas de soluciones de <strong>coordinación entre puntos de acceso que permiten funciones avanzadas</strong> como balanceo de carga, planificación de frecuencias o control de potencia. Algunos trabajos han propuesto la adaptación de ciertas abstracciones y conceptos de <strong>Software Defined Network (SDN)</strong>, para su uso en redes inalámbricas [1, 2].</p> <p>Uno de los problemas que surgen al coordinar una red inalámbrica es que las estaciones (STA) tienen sus propios algoritmos para seleccionar el punto de acceso. Esto significa que cada STA es libre de seleccionar el punto de acceso al que asociarse, sin ser coordinado con el resto de los clientes. Esto complica la gestión del clientes, generando el <em>sticky client</em>, que nunca abandona el punto de acceso al que estaba asociado inicialmente.</p> <p>Una forma de resolver estos problemas es utilizando la abstracción <strong>Light Virtual Access Point (LVAP)</strong> [3]. La idea es que un punto de acceso físico utilice un <strong>LVAP</strong> diferente (que incluye una MAC específica) para comunicarse con cada STA. Por lo tanto, la STA solo “verá” un único punto de acceso, incluso si se está moviendo entre un conjunto de ellos, evitando así la necesidad de volver a asociarlo.</p> <p>El <strong>LVAP</strong> se asigna dinámicamente a un punto de acceso físico cerca de la ubicación actual del terminal. Siempre que la STA sólo “vea” un único punto de acceso, no tomará ninguna decisión de <em>roaming</em>, lo que permitirá que la red ejecute una gestión coordinada de clientes. Esto se logra sin ninguna modificación en la STA que ejecuta el estándar IEEE 802.11.</p> <p>Existen algunas iniciativas en esta área, en [4] se introdujo una solución distribuida utilizando <strong>LVAPs</strong>, proponiendo un protocolo para el intercambio directo de información entre puntos de acceso. La principal limitación es la ausencia de un controlador central, por lo que cada punto de acceso debe crear una lista de puntos de acceso vecinos por sí mismo. En [5], una solución basada en <strong>LVAP</strong>, administrada por un controlador central, combina dos protocolos <em>southbound</em>: OpenFlow y Odin. OpenFlow le dice a los <em>switches</em> internos de los puntos de acceso dónde dirigir el tráfico y el protocolo Odin está a cargo de la gestión inalámbrica. El control central de la red Wi-Fi se ejecuta dentro del controlador <strong>SDN</strong>. El controlador se encarga de crear un <strong>LVAP</strong> para cada terminal que consta de una tupla con cuatro campos: la MAC real de la STA, una MAC falsa para que los puntos de acceso se comuniquen con la STA, la IP de la STA y el SSID que va a ser utilizado en la comunicación.</p> <p>Los <em>handovers</em> rápidos y sin problemas de conexión, son una parte esencial de todas estas soluciones ya que las STA se pueden redistribuir dinámicamente. Por lo tanto, una reasignación del punto de acceso en donde no se pierda la sesión del cliente, puede ser muy conveniente cuando un usuario está caminando o cuando se hace un balanceo de carga.</p> <h2 id="references">References</h2> <ol> <li>R. Riggio, T. Rasheed, and M. K. Marina, “Poster: programming software-defined wireless networks.” in MobiCom, S.-J. Lee, A. Sabharwal, and P. Sinha, Eds. ACM, p. 413416.</li> <li>R. Riggio, T. M. Rasheed, and R. Narayanan, “Virtual network functions orchestration in enterprise WLANs.” in IM, R. Badonnel, J. Xiao, S. Ata, F. D. Turck, V. Groza, and C. R. P. dos Santos, Eds. IEEE, p. 12201225.</li> <li>Y. Grunenberger and F. Rousseau, “Virtual Access Points for Transparent Mobility in Wireless LANs.” in WCNC. IEEE, p. 16.</li> <li>M. E. Berezin, F. Rousseau, and A. Duda, “Multichannel Virtual Access Points for Seamless Handoffs in IEEE 802.11 Wireless Networks.” in VTC Spring. IEEE, p. 15.</li> <li>J. Schulz-Zander, L. Suresh, N. Sarrar, A. Feldmann, T. Hhn, and R. Merz, “Programmatic Orchestration of WiFi Networks,” in 2014 USENIX Annual Technical Conference (USENIX ATC 14). Philadelphia, PA: USENIX Association, Jun., p. 347358.</li> </ol>]]></content><author><name></name></author><category term="Cloud"/><category term="Innovation"/><category term="SDN"/><category term="punto-de-acceso"/><category term="cloud"/><summary type="html"><![CDATA[Las redes inalámbricas se utilizan ampliamente en zonas como centros de negocios, aeropuertos, campus universitarios o incluso en muchas zonas urbanas. Los puntos de Light Virtual Access Point (LVAP) son una solución para coordinar los puntos de acceso Wi-Fi.]]></summary></entry><entry><title type="html">Arquitectura general para Software Defined Networking (SDN)</title><link href="https://luissequeira.github.io/blog/2020/general-architecture-for-software-defined-networking-sdn/" rel="alternate" type="text/html" title="Arquitectura general para Software Defined Networking (SDN)"/><published>2020-08-31T09:00:00+00:00</published><updated>2020-08-31T09:00:00+00:00</updated><id>https://luissequeira.github.io/blog/2020/general-architecture-for-software-defined-networking-sdn</id><content type="html" xml:base="https://luissequeira.github.io/blog/2020/general-architecture-for-software-defined-networking-sdn/"><![CDATA[<div class="row mt-3" style="text-align: center"> <div class="col-sm mt-3 mt-md-0"> <figure> <picture> <source class="responsive-img-srcset" media="(max-width: 480px)" srcset="/assets/img/Cloud/general-architecture-for-sdn/sdn-480.webp"/> <source class="responsive-img-srcset" media="(max-width: 800px)" srcset="/assets/img/Cloud/general-architecture-for-sdn/sdn-800.webp"/> <source class="responsive-img-srcset" media="(max-width: 1400px)" srcset="/assets/img/Cloud/general-architecture-for-sdn/sdn-1400.webp"/> <img src="/assets/img/Cloud/general-architecture-for-sdn/sdn.png" class="img-fluid rounded z-depth-1" width="auto" height="auto" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> <p>La terminología y arquitectura de capas para los sistemas <strong>SDN</strong> ha sido definida por el <strong>Software-Defined Networking Research Group (SDNRG)</strong> del <strong>Internet Research Task Force (IRTF)</strong> en [1]. Aunque no tiene como objetivo estandarizar ninguna capa o interfaz, proporciona una referencia de los enfoques que se pueden seguir al definir arquitecturas <strong>SDN</strong>. La <strong>Open Networking Foundation (ONF)</strong> propuso una arquitectura diferente en [2], que está más orientada a servicios, mientras que la propuesta por el IRTF tiene una visión más funcional [3].</p> <p>La Figura #1 describe la arquitectura propuesta por el IRTF que consta de:</p> <ul> <li><strong>Application Plane</strong>: en ésta capa es donde residen las aplicaciones que definen el comportamiento de la red.</li> <li><strong>Network Services Abstraction Layer (NSAL)</strong>: proporciona acceso a las aplicaciones hacia el plano de control y gestión.</li> <li><strong>Control Plane</strong>: es responsable de las decisiones sobre cómo los paquetes deben ser reenviados por uno o más dispositivos de red y enviar dichas decisiones a los dispositivos de red para su ejecución.</li> <li><strong>Management Plane</strong>: esta capa está a cargo de monitorear, configurar y mantener los dispositivos de red, por ejemplo, generar decisiones con base en el estado de un dispositivo de red.</li> <li><strong>Device and resource Abstraction Layer (DAL)</strong>: abstrae los recursos de los planos operativos y de reenvío del dispositivo a los planos de control y gestión.</li> </ul> <div class="row mt-3" style="text-align: center"> <div class="col-sm mt-3 mt-md-0"> <figure> <picture> <source class="responsive-img-srcset" media="(max-width: 480px)" srcset="/assets/img/Cloud/general-architecture-for-sdn/rfc_architecture-480.webp"/> <source class="responsive-img-srcset" media="(max-width: 800px)" srcset="/assets/img/Cloud/general-architecture-for-sdn/rfc_architecture-800.webp"/> <source class="responsive-img-srcset" media="(max-width: 1400px)" srcset="/assets/img/Cloud/general-architecture-for-sdn/rfc_architecture-1400.webp"/> <img src="/assets/img/Cloud/general-architecture-for-sdn/rfc_architecture.png" class="img-fluid rounded z-depth-1" width="auto" height="auto" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> <div class="caption"> Figura #1: Arquitectura de capas **SDN** según RFC 7426. </div> <p>Siguiendo un enfoque <strong>SDN</strong>, se pueden encontrar algunos ejemplos de propuestas de arquitecturas en la literatura: en [4], se presentó la arquitectura EmPOWER que integra diferentes Radio Access Technologies (RAT) y propone un conjunto de abstracciones de programación para modelar algunos aspectos importantes de redes inalámbricas. Esta arquitectura también se utilizó en [5], donde se propuso un algoritmo para la gestión de la movilidad, el objetivo del algoritmo es la adaptación de la velocidad para las comunicaciones de multidifusión en redes 802.11. Otra arquitectura se presentó en [6], la cual está destinada a minimizar el retardo a nivel de paquetes; en este caso, todas las estaciones base (BS) están configuradas para usar la misma dirección MAC; se crean BS virtuales específicas para gestionar cada servicio. Todas estas propuestas incluyen un controlador central a cargo de la gestión de la red.</p> <h2 id="referencias">Referencias</h2> <ul> <li>E.Haleplidis, K. Pentikousis, S. Denazis, J.H. Salim, D. Meyer, O. Koufopavlou, (2015). Software-defined networking (SDN): Layers and architecture terminology (No. RFC 7426).</li> <li>Open Networking Foundation, “SDN architecture,” vol. 1.0, Jun 2014. <a href="https://www.opennetworking.org/images/stories/downloads/sdn-resources/technical-reports/TRSDN ARCH_1.0_06062014.pdf">https://www.opennetworking.org/ images/stories/downloads/sdn-resources/technical-reports/TRSDN ARCH_1.0_06062014.pdf</a></li> <li>J. Schultz, R. Szczepanski, K. Haensge, M. Maruschke, N. Bayer and H. Einsiedler, “OpenGUFI: An Extensible Graphical User Flow Interface for an SDN-Enabled Wireless Testbed,” 2015 IEEE International Conference on Computer and Information Technology; Ubiquitous Computing and Communications; Dependable, Autonomic and Secure Computing; Pervasive Intelligence and Computing, Liverpool, 2015, pp. 770-776.</li> <li>R. Riggio, M. K. Marina, J. Schulz-Zander, S. Kuklinski, and T. Rasheed, “Programming abstractions for software-defined wireless networks,” IEEE Transactions on Network and Service Management, vol. 12, no. 2, pp. 146–162, 2015.</li> <li>E. Coronado, R. Riggio, J. Villalón and A. Garrido, “Joint Mobility Management and Multicast Rate Adaptation in Software–Defined Enterprise WLANs,” in IEEE Transactions on Network and Service Management. In press. doi: 10.1109/TNSM.2018.2798296</li> <li>K. Nakauchi and Y. Shoji, “WiFi Network Virtualization to Control the Connectivity of a Target Service,” IEEE Transactions on Network and Service Management, vol. 12, no. 2, pp. 308–319, 2015.</li> </ul>]]></content><author><name></name></author><category term="Cloud"/><category term="Networks"/><category term="SDN"/><category term="arquitectura"/><category term="cloud"/><summary type="html"><![CDATA[La terminología y arquitectura de capas para los sistemas SDN ha sido definida por el Software-Defined Networking Research Group (SDNRG) del Internet Research Task Force (IRTF) en [1]. Aunque no tiene como objetivo estandarizar ninguna capa o interfaz, proporciona una referencia de los enfoques que se pueden seguir al definir arquitecturas SDN.]]></summary></entry><entry><title type="html">Cómo configurar un clúster de Kubernetes</title><link href="https://luissequeira.github.io/blog/2018/how-to-setup-a-kubernetes-cluster/" rel="alternate" type="text/html" title="Cómo configurar un clúster de Kubernetes"/><published>2018-11-01T14:34:41+00:00</published><updated>2018-11-01T14:34:41+00:00</updated><id>https://luissequeira.github.io/blog/2018/how-to-setup-a-kubernetes-cluster</id><content type="html" xml:base="https://luissequeira.github.io/blog/2018/how-to-setup-a-kubernetes-cluster/"><![CDATA[<div class="row mt-3" style="text-align: center"> <div class="col-sm mt-3 mt-md-0"> <figure> <picture> <source class="responsive-img-srcset" media="(max-width: 480px)" srcset="/assets/img/Cloud/how-install-kubernetes-cluster/1-480.webp"/> <source class="responsive-img-srcset" media="(max-width: 800px)" srcset="/assets/img/Cloud/how-install-kubernetes-cluster/1-800.webp"/> <source class="responsive-img-srcset" media="(max-width: 1400px)" srcset="/assets/img/Cloud/how-install-kubernetes-cluster/1-1400.webp"/> <img src="/assets/img/Cloud/how-install-kubernetes-cluster/1.png" class="img-fluid rounded z-depth-1" width="auto" height="auto" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> <p>El entorno de laboratorio inicial consiste en un servidor remoto que ejecuta KVM en el que se instalaron tres máquinas virtuales utilizando Ubuntu 16.04. Cada máquina virtual (VM) tiene una interfaz de red unida (<em>bridged</em>) a una interfaz de red física en el servidor remoto, de modo que cada VM utiliza una interfaz diferente del servidor y las direcciones IP se asignan en consecuencia.</p> <p>Al final de este tutorial, se tendrá un clúster kubernetes que consta de un máster Kubernetes y dos nodos Kubernetes.</p> <h2 id="instalación-de-docker">Instalación de Docker</h2> <p>Primero, instalemos actualizaciones, dependencias y docker:</p> <div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>apt update
<span class="nb">sudo </span>apt upgrade
<span class="nb">sudo </span>apt <span class="nb">install </span>apt-transport-https <span class="c"># ya instalado</span>
<span class="nb">sudo </span>apt <span class="nb">install </span>docker.io
</code></pre></div></div> <p>Ahora, se puede iniciar Docker y permitir que se inicie durante el arranque del sistema:</p> <div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>systemctl start docker
<span class="nb">sudo </span>systemctl <span class="nb">enable </span>docker
</code></pre></div></div> <h2 id="instalación-de-kubernetes">Instalación de Kubernetes</h2> <p>Antes de la instalación, necesitamos agregar la clave:</p> <div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>curl <span class="nt">-s</span> https://packages.cloud.google.com/apt/doc/apt-key.gpg | <span class="nb">sudo </span>apt-key add -
</code></pre></div></div> <p>Para crear el repositorio de apt para Kubernetes, abrimos el archivo:</p> <div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>nano /etc/apt/sources.list.d/kubernetes.list
</code></pre></div></div> <p>y se agrega la siguiente línea, luego se puede cerrar el archivo:</p> <div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>deb http://apt.kubernetes.io/ kubernetes-xenial main
</code></pre></div></div> <p>Hora de actualizar e instalar kubernetes:</p> <div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>apt update
<span class="nb">sudo </span>apt <span class="nb">install </span>kubelet kubeadm kubectl kubernetes-cni
</code></pre></div></div> <h2 id="kubernetes-máster">Kubernetes máster</h2> <p>Para inicializar el clúster de Kubernetes para que se ejecute como máster, se ejecuta el siguiente comando:</p> <div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>kubeadm init <span class="nt">--pod-network-cidr</span> 10.244.0.0/16
</code></pre></div></div> <p>Si se obtiene este error:</p> <div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">[</span>preflight] Some fatal errors occurred:
<span class="o">[</span>ERROR Swap]: running with swap on is not supported. Please disable swap
<span class="o">[</span>preflight] If you know what you are doing, you can make a check non-fatal with <span class="sb">`</span><span class="nt">--ignore-preflight-errors</span><span class="o">=</span>...<span class="sb">`</span>
</code></pre></div></div> <p>Se deberá deshabilitar el swap:</p> <div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>nano /etc/fstab <span class="c"># comment swap to disable permanently</span>
<span class="nb">sudo </span>swapoff <span class="nt">-a</span>
</code></pre></div></div> <p>Después de la inicialización, se debe ver algo como esto:</p> <div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Your Kubernetes master has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

<span class="nb">mkdir</span> <span class="nt">-p</span> <span class="nv">$HOME</span>/.kube
<span class="nb">sudo cp</span> <span class="nt">-i</span> /etc/kubernetes/admin.conf <span class="nv">$HOME</span>/.kube/config
<span class="nb">sudo chown</span> <span class="si">$(</span><span class="nb">id</span> <span class="nt">-u</span><span class="si">)</span>:<span class="si">$(</span><span class="nb">id</span> <span class="nt">-g</span><span class="si">)</span> <span class="nv">$HOME</span>/.kube/config

You should now deploy a pod network to the cluster.

Run &amp;quot<span class="p">;</span>kubectl apply <span class="nt">-f</span> <span class="o">[</span>podnetwork].yaml&amp;quot<span class="p">;</span> with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/

You can now <span class="nb">join </span>any number of machines by running the following on each node
as root:

kubeadm <span class="nb">join </span>10.143.6.161:6443 <span class="nt">--token</span> de5fen.6y2w4x7shlyhnfyf8 <span class="nt">--discovery-token-ca-cert-hash</span> sha256:2a9dfacf654eba7d374b8dfac0028d6a094c550c67bc084f1efcc1f4301ca656
</code></pre></div></div> <p>Para completar la configuración:</p> <div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">mkdir</span> <span class="nt">-p</span> <span class="nv">$HOME</span>/.kube
<span class="nb">sudo cp</span> <span class="nt">-i</span> /etc/kubernetes/admin.conf <span class="nv">$HOME</span>/.kube/config
<span class="nb">sudo chown</span> <span class="si">$(</span><span class="nb">id</span> <span class="nt">-u</span><span class="si">)</span>:<span class="si">$(</span><span class="nb">id</span> <span class="nt">-g</span><span class="si">)</span> <span class="nv">$HOME</span>/.kube/config
</code></pre></div></div> <p>Ejecute los siguientes comandos en el nodo máster para aplicar la configuración de red:</p> <div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>kubectl apply <span class="nt">-f</span> https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
<span class="nb">sudo </span>kubectl apply <span class="nt">-f</span> https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml
</code></pre></div></div> <p>Ahora, verifique todos los pods:</p> <div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>kubectl get pods <span class="nt">--all-namespaces</span>
</code></pre></div></div> <h2 id="nodo-kubernetes">Nodo Kubernetes</h2> <p>En primer lugar, siga la <a href="#instalación-de-docker">instalación de Docker</a> e <a href="#instalación-de-kubernetes">instalación de Kubernetes</a>. Luego:</p> <div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>kubeadm <span class="nb">join </span>10.143.6.161:6443 <span class="nt">--token</span> de5fen.6y2w4x7shlyhnfyf8 <span class="nt">--discovery-token-ca-cert-hash</span> sha256:2a9dfacf654eba7d374b8dfac0028d6a094c550c67bc084f1efcc1f4301ca656
</code></pre></div></div> <p>Regrese al Máster y verifique:</p> <div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>kubectl get nodes

NAME STATUS ROLES AGE VERSION
k8-master Ready master 17h v1.11.0
k8-node1 Ready 37s v1.11.0
k8-node2 Ready 29s v1.11.0
</code></pre></div></div>]]></content><author><name></name></author><category term="Cloud"/><category term="Linux"/><category term="kubernetes"/><category term="docker"/><category term="linux"/><summary type="html"><![CDATA[Un tutorial para configurar un clúster kubernetes. Al final de este tutorial, se tendrá un clúster kubernetes que consta de un máster Kubernetes y dos nodos Kubernetes.]]></summary></entry><entry><title type="html">El funcionamiento del protocolo Kerberos</title><link href="https://luissequeira.github.io/blog/2014/el-funcionamiento-del-protocolo-kerberos/" rel="alternate" type="text/html" title="El funcionamiento del protocolo Kerberos"/><published>2014-06-16T05:00:00+00:00</published><updated>2014-06-16T05:00:00+00:00</updated><id>https://luissequeira.github.io/blog/2014/el-funcionamiento-del-protocolo-kerberos</id><content type="html" xml:base="https://luissequeira.github.io/blog/2014/el-funcionamiento-del-protocolo-kerberos/"><![CDATA[<p><strong>El protocolo de autenticación Kerberos permite a una serie de ordenadores demostrar su identidad entre ellos</strong> de una manera segura en una red insegura. El funcionamiento de dicho protocolo está basado en el protocolo Needham-Schroeder, el cual define un “tercero de confianza” denominado Centro de Distribución de Claves (KDC). William Stallings en su libro Fundamentos de Seguridad de Redes: Aplicaciones y Estándares, Segunda Edición (pag. 394), define un KDC de la siguiente manera:</p> <blockquote> <p>Sistema autorizado para transmitir claves de sesión temporales a usuarios. Cada clave de sesión se transmite cifrada, usando una clave maestra que el centro de distribución de claves comparte con el usuario destino. <em>William Stallings</em></p> </blockquote> <p><strong>El KDC se puede ver como el conjunto de dos etapas lógicas compuesta por un servidor de autenticación (AS) y un servidor emisor de <em>tickets</em> (TGS)</strong>. El AS tiene como función identificar a cada usuario, validar su identidad y entregar al cliente una clave que le permite comunicarse con el TGS. Por otro lado, el TGS es el servidor encargado de comprobar que el cliente posea el <em>ticket</em> de autenticación y entrega una clave al usuario que le permite acceder a los servicios que ha solicitado. Este escenario se muestra en la Figura #1.</p> <div class="row mt-3" style="text-align: center"> <div class="col-sm mt-3 mt-md-0"> <figure> <picture> <source class="responsive-img-srcset" media="(max-width: 480px)" srcset="/assets/img/TICs/funcionamiento-protocolo-kerberos/1-480.webp"/> <source class="responsive-img-srcset" media="(max-width: 800px)" srcset="/assets/img/TICs/funcionamiento-protocolo-kerberos/1-800.webp"/> <source class="responsive-img-srcset" media="(max-width: 1400px)" srcset="/assets/img/TICs/funcionamiento-protocolo-kerberos/1-1400.webp"/> <img src="/assets/img/TICs/funcionamiento-protocolo-kerberos/1.png" class="img-fluid rounded z-depth-1" width="auto" height="auto" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> <div class="caption"> Figura #1: Componentes y flujo de comunicación del protocolo Kerberos. </div> <p>Kerberos realiza una gestión de <em>tickets</em> que le permite a los usuarios demostrar su identidad y obtener las claves se sesión para un determinado servicio, estas claves le permite a dos entidades interaccionar de manera segura. Para ello es necesario que dicho protocolo realice una gestión adecuada de diferentes bases de datos con el fin de identificar a los usuarios, y a la vez, mantener otra base de datos de claves secretas para poder asignar a cada entidad, ya sea cliente o servidor.</p> <p>La Figura #2 muestra el flujo de mensajes producidos por el protocolo Kerberos, donde claramente se ve la información que contiene cada uno de los mensajes enviados entre las diferente entidades que participan en el intercambio de claves. Se debe aclarar que no se muestra la comunicación previa que debe establecer el cliente con el AS, donde le brinda el nombre de usuario y contraseña que ha introducido el usuario en el cliente. Sin embargo, la gestión de los <strong>tickets</strong> es bastante claro.</p> <p>Cuando el cliente realiza una solicitud al AS, el AS contesta con dos mensajes: <strong>en el primero envía la clave cifrada que va a compartir el cliente con el TGS, y en el segundo paquete debe ser reenviado al TGS</strong>, dicho paquete no puede ser descifrado por el cliente y contiene información acerca de la validación hecha por el AS.</p> <p>Luego, el cliente envía dos mensajes al TGS: <strong>en el primer mensaje reenvía el paquete que le dió el AS agregando el tipo de servicio solicitado y el segundo mensaje es un autenticador</strong> cifrado con la clave generada por el AS para la comunicación entre cliente y TGS.</p> <p>Ahora el TGS responde al cliente con la clave que va a compartir con el servidor del servicio solicitado y un <strong>ticket</strong> que solamente el servidor de servicio puede descifrar y que el cliente debe reenviar. <strong>El cliente reenvía el <em>ticket</em>; hacia el servidor del servicio y además un autenticador</strong> cifrado con la clave entregada por el TGS para dicha comunicación, de modo que la comunicación entre cliente y servicio ya puede ser realizada de manera cifrada con dicha clave.</p> <div class="row mt-3" style="text-align: center"> <div class="col-sm mt-3 mt-md-0"> <figure> <picture> <source class="responsive-img-srcset" media="(max-width: 480px)" srcset="/assets/img/TICs/funcionamiento-protocolo-kerberos/2-480.webp"/> <source class="responsive-img-srcset" media="(max-width: 800px)" srcset="/assets/img/TICs/funcionamiento-protocolo-kerberos/2-800.webp"/> <source class="responsive-img-srcset" media="(max-width: 1400px)" srcset="/assets/img/TICs/funcionamiento-protocolo-kerberos/2-1400.webp"/> <img src="/assets/img/TICs/funcionamiento-protocolo-kerberos/2.png" class="img-fluid rounded z-depth-1" width="auto" height="auto" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> <div class="caption"> Figura #2: Intercambio de mensajes del protocolo Kerberos. </div> <h2 id="references">References</h2> <ol> <li>William Stallings. Fundamentals of Network Security: Applications and Standards, Second Edition. Pearson Education. 2004.</li> </ol>]]></content><author><name></name></author><category term="Networks"/><category term="seguridad"/><category term="kerberos"/><category term="criptografía"/><summary type="html"><![CDATA[El protocolo de autenticación Kerberos permite a una serie de ordenadores demostrar su identidad entre ellos de una manera segura en una red insegura. El funcionamiento de dicho protocolo está basado en el protocolo Needham-Schroeder, el cual define un 'tercero de confianza.]]></summary></entry><entry><title type="html">¿Cómo modificar ficheros con SED?</title><link href="https://luissequeira.github.io/blog/2014/how-to-modify-files-with-sed/" rel="alternate" type="text/html" title="¿Cómo modificar ficheros con SED?"/><published>2014-05-15T05:00:00+00:00</published><updated>2014-05-15T05:00:00+00:00</updated><id>https://luissequeira.github.io/blog/2014/how-to-modify-files-with-sed</id><content type="html" xml:base="https://luissequeira.github.io/blog/2014/how-to-modify-files-with-sed/"><![CDATA[<div class="row mt-3" style="text-align: center"> <div class="col-sm mt-3 mt-md-0"> <figure> <picture> <source class="responsive-img-srcset" media="(max-width: 480px)" srcset="/assets/img/Linux/como-modificar-ficheros-con-sed/1-480.webp"/> <source class="responsive-img-srcset" media="(max-width: 800px)" srcset="/assets/img/Linux/como-modificar-ficheros-con-sed/1-800.webp"/> <source class="responsive-img-srcset" media="(max-width: 1400px)" srcset="/assets/img/Linux/como-modificar-ficheros-con-sed/1-1400.webp"/> <img src="/assets/img/Linux/como-modificar-ficheros-con-sed/1.jpg" class="img-fluid rounded z-depth-1" width="auto" height="auto" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> <h2 id="qué-es-sed">¿Qué es sed?</h2> <p><code class="language-plaintext highlighter-rouge">sed</code> es un editor de flujo que se utiliza para realizar transformaciones básicas de texto en un flujo de entrada (un fichero o la entrada de una tubería) o filtrar cadenas de caracteres. Permite <strong>modificar el contenido de diferentes líneas de un fichero basándose en una serie de parámetros</strong>.</p> <p>Para los ejemplos que se muestran en este artículo, se ha utilizado la versión 4.2.1 de <code class="language-plaintext highlighter-rouge">sed</code> como se muestra a continuación:</p> <div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sed</span> <span class="nt">--version</span>

GNU <span class="nb">sed </span>version 4.2.1
Copyright <span class="o">(</span>C<span class="o">)</span> 2009 Free Software Foundation, Inc.
This is free software<span class="p">;</span> see the <span class="nb">source </span><span class="k">for </span>copying conditions. There is NO
warranty<span class="p">;</span> not even <span class="k">for </span>MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.
</code></pre></div></div> <p><code class="language-plaintext highlighter-rouge">sed</code> tiene una sintaxis de la siguiente manera:</p> <div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sed</span> <span class="o">[</span><span class="nt">-opciones</span><span class="o">]</span> <span class="o">[</span>comando] <span class="o">[</span>&lt;fichero<span class="o">(</span>s<span class="o">)&gt;]</span>
</code></pre></div></div> <h2 id="visualización">Visualización</h2> <p>Para los casos en los que se necesita visualizar el contenido de un fichero o parte de éste, podemos utilizar alguno de los siguientes comandos:</p> <div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sed </span>5q fichero1                                  <span class="c"># ver las primeras 5 líneas del fichero1</span>
<span class="nb">cat</span> <span class="nt">-n</span> fichero1 | <span class="nb">sed</span> <span class="nt">-n</span> <span class="s1">'5,6 p'</span>                 <span class="c"># ver las líneas 5 y 6 del fichero1</span>
<span class="nb">sed</span> <span class="nt">-n</span> <span class="s1">'1p'</span> fichero1 <span class="o">&gt;</span> fichero2                  <span class="c"># copiar la primera linea de fichero1 a fichero2</span>
<span class="nb">sed</span> <span class="nt">-n</span> <span class="s1">'$p'</span> fichero1                             <span class="c"># mostrar la última línea de fichero1</span>
</code></pre></div></div> <h2 id="sustitución-de-cadenas-y-caracteres">Sustitución de cadenas y caracteres</h2> <p>En estos casos siempre es recomendable almacenar el resultado de una sustitución en otro fichero, dejando el fichero original sin modificar. Algunos ejemplos son los siguientes:</p> <div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># reemplazar cadenas en todas las lineas que contentan dicha cadena del fichero1 y almacenar el resultado en fichero2</span>
<span class="nb">sed</span> <span class="s1">'s/cadena_vieja/cadena_nueva/g'</span> fichero1 <span class="o">&gt;</span> fichero2

<span class="c"># reemplazar cadenas sólo en las líneas 200 y 201</span>
<span class="nb">sed</span> <span class="s1">'200,201 s/cadena_vieja/cadena_nueva/g'</span> fichero1 <span class="o">&gt;</span> fichero2

<span class="c"># reemplazar multiples cadenas por una nueva</span>
<span class="nb">sed</span> <span class="s1">'s/cadena_vieja_1\|cadena_vieja_2/cadena_nueva/g'</span> fichero1 <span class="o">&gt;</span> fichero2

<span class="c"># remplazar todas las minúsculas por mayúsculas</span>
<span class="nb">sed</span> <span class="s1">'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'</span> fichero1 <span class="o">&gt;</span> fichero2
</code></pre></div></div> <h2 id="insertar-cadenas">Insertar cadenas</h2> <p>Al igual que en el caso anterior, se dejará el fichero inicial sin modificar mientras que el segundo contendrá los cambios realizados.</p> <div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># insertar una cadena al principio de cada línea</span>
<span class="nb">sed</span> <span class="s1">'s/^/cadena_al_inicio/'</span> fichero1 <span class="o">&gt;</span> fichero2 

<span class="c"># añadir una línea al final de un fichero</span>
<span class="nb">sed</span> <span class="nt">-e</span> <span class="s1">'$ cadena_al_final'</span> fichero <span class="o">&gt;</span> fichero2

<span class="c"># insertar una linea en blanco antes de cada linea que cumpla con una cadena</span>
<span class="nb">sed</span> <span class="s1">'/cadena/{x;p;x;}'</span> fichero1 <span class="o">&gt;</span> fichero2

<span class="c"># insertar una linea en blanco detrás de cada linea que cumpla con una cadena</span>
<span class="nb">sed</span> <span class="s1">'/cadena/G'</span> fichero1 <span class="o">&gt;</span> fichero2 

<span class="c"># insertar una linea en blanco antes y después de cada linea que cumpla con una cadena</span>
<span class="nb">sed</span> <span class="s1">'/cadena/{x;p;x;G;}'</span> fichero1 <span class="o">&gt;</span> fichero2

<span class="c"># insertar una línea en blanco cada 2 líneas</span>
<span class="nb">sed</span> <span class="s1">'n;G;'</span> fichero1 <span class="o">&gt;</span> fichero2
</code></pre></div></div> <h2 id="eliminar-líneas-y-cadenas">Eliminar líneas y cadenas</h2> <p>Para eliminar caracteres o líneas completas, ya sea porque están vacías o bien por ser comentario, podemos utilizar los siguientes comandos:</p> <div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sed</span> <span class="s1">'2,4 d'</span> fichero1 <span class="o">&gt;</span> fichero2             <span class="c"># eliminar las líneas 100 y 105 del fichero1</span>
<span class="nb">sed</span> <span class="s1">'5,20 !d'</span> fichero1 <span class="o">&gt;</span> fichero2           <span class="c"># eliminar todas las líneas excepto las 5 y 20</span>
<span class="nb">sed</span> <span class="s1">'$d'</span> fichero1 <span class="o">&gt;</span> fichero2                <span class="c"># eliminar la última línea del fichero1</span>
<span class="nb">sed</span> <span class="nt">-i</span> <span class="s1">'$d'</span> fichero1                        <span class="c"># eliminar la última línea del fichero1 en el mismo fichero</span>
<span class="nb">sed</span> <span class="s1">'/cadena/ d'</span> fichero1 <span class="o">&gt;</span> fichero2        <span class="c"># eliminar las líneas que contentan una cadena</span>
<span class="nb">sed</span> <span class="s1">'/^$/d'</span> fichero1 <span class="o">&gt;</span> fichero2             <span class="c"># eliminar líneas en blanco</span>
<span class="nb">sed</span> <span class="s1">'/^$/d; / *#/d'</span> fichero1 <span class="o">&gt;</span> fichero2     <span class="c"># eliminar líneas en blanco y comentarios bash</span>
</code></pre></div></div>]]></content><author><name></name></author><category term="Linux"/><category term="linux"/><category term="consola"/><category term="comandos"/><category term="terminal"/><summary type="html"><![CDATA[Sed es un editor de flujo que se utiliza para realizar transformaciones básicas de texto en un flujo de entrada (un fichero o la entrada de una tubería) o filtrar cadenas de caracteres. Permite modificar el contenido de diferentes líneas de un fichero basándose en una serie de parámetros.]]></summary></entry><entry><title type="html">Los métodos de acceso a las femtoceldas</title><link href="https://luissequeira.github.io/blog/2014/femtocell-s-access-methods/" rel="alternate" type="text/html" title="Los métodos de acceso a las femtoceldas"/><published>2014-05-08T05:00:00+00:00</published><updated>2014-05-08T05:00:00+00:00</updated><id>https://luissequeira.github.io/blog/2014/femtocell-s-access-methods</id><content type="html" xml:base="https://luissequeira.github.io/blog/2014/femtocell-s-access-methods/"><![CDATA[<p><strong>Las femtoceldas son estaciones base de baja potencia y bajo costo</strong> que proveen servicios celulares a nivel residencial, ofrecen una cobertura de aproximadamente \(10 m\) [1]. Se integra con el operador móvil mediante una <strong>conexión de banda ancha</strong>, típicamente ADSL. En General, la femtocelda hace que el tráfico del sistema celular proveniente del hogar, se desvíe por la conexión de banda ancha, liberando el consumo de recursos de la macrocelda.</p> <p>El 3GPP ha introducido el concepto de Closed Subscriber Group (CSG), que en esencia identifica a un grupo de suscriptores que tienen <strong>permiso de acceso a una o varias celdas</strong>. Las femtoceldas pueden operar básicamente de tres modos diferentes: <strong>acceso abierto, acceso cerrado y una combinación de los anteriores denominado acceso híbrido</strong> [2] y [3], a continuación se explican cada uno de los modelos de acceso:</p> <ul> <li><strong>Acceso abierto</strong>: En este caso, el UE puede tener acceso a la femtocelda sin ningún tipo de restricción, esto se aprecia en la Figura #1 donde el UE2 tiene acceso sin restricción a la femtocelda en el edificio.</li> <li><strong>Acceso cerrado</strong>: El administrador de la femtocelda define los únicos usuarios (CSG) que pueden tener acceso a la red. Para este modo, se exceptúan las llamadas de emergencia.</li> <li><strong>Acceso híbrido</strong>: En este tipo de acceso, una cantidad limitada de recursos es asignada para permitir acceso a usuarios que no forman parte del CSG.</li> </ul> <div class="row mt-3" style="text-align: center"> <div class="col-sm mt-3 mt-md-0"> <figure> <picture> <source class="responsive-img-srcset" media="(max-width: 480px)" srcset="/assets/img/TICs/metodos-acceso-femtoceldas/1-480.webp"/> <source class="responsive-img-srcset" media="(max-width: 800px)" srcset="/assets/img/TICs/metodos-acceso-femtoceldas/1-800.webp"/> <source class="responsive-img-srcset" media="(max-width: 1400px)" srcset="/assets/img/TICs/metodos-acceso-femtoceldas/1-1400.webp"/> <img src="/assets/img/TICs/metodos-acceso-femtoceldas/1.png" class="img-fluid rounded z-depth-1" width="auto" height="auto" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> <div class="caption"> Figura #1: Ejemplo de diversos métodos de acceso a femto-celdas [2]: acceso abierto, acceso cerrado y acceso híbrido. </div> <p>Figura #1 es un ejemplo de los diversos tipos de acceso a la femtoceldas definidos por el 3GPP. <strong>El acceso cerrado brinda los servicios contratados a los usuarios que forman parte del CSG</strong>, brindando cierto nivel de seguridad y privacidad en el acceso a la femtocelda,además, que todos los recursos de la femtocelda están a disposición del usuario garantizando la QoS (en cierta medida). Sin embargo, los que no forman parte de este grupo de suscriptores no pueden tener acceso a la red, excepto para llamadas de emergencia. Este tipo de acceso genera más interferencia ya que los móviles cercanos tratan de conectarse a una femtocelda, pero el método de acceso los bloquea, por lo que se genera una gran cantidad de señalización implícita en dicha área.</p> <p>Por otro lado, <strong>el acceso abierto presenta una buena ventaja para el proveedor de servicios ya que parte del tráfico se desvía por las femtoceldas, liberando en buena medida, la carga de la macrocelda</strong>. Sin embargo, este tipo de implementación provee un incremento en el handover, debido a que un UE que se desplaza por una localidad donde hay diversas femtoceldas implementadas, realizará traspasos en cada femtocelda donde encuentre mejor calidad de la señal, incrementando así el tráfico de señalización. Desde esta perspectiva <strong>el método híbrido puede presentar ciertas ventajas, pero los recursos compartidos por cada femtocelda deben ser administrados con mucho cuidado</strong> con la finalidad de no degradar la calidad de servicio de los usuarios de la femtocelda.</p> <h2 id="references">References</h2> <ol> <li>D. Calin, H. Claussen, H. Uzunalioglu. On Femto Deployment Architectures and Macrocell Offloading Benefits in Joint Macro-Femto Deployments. Communications Magazine, IEEE, vol. 48, no. 1, pp. 26-32, 2010.</li> <li>Assen, Golaup;Mona, Mustapha;Leo, Boonchin Patanapogpibul, Femtocell Access Control Strategy in UMTS and LTE, 2009.</li> <li>G, de la Roche;A, Valcarce;D, Lopez-Perez;Jie, Zhang, Access control Mechanisms for Femtocells, 2010.</li> <li><a href="http://www.femtoforum.org">http://www.femtoforum.org/</a></li> <li><a href="http://www.3gpp.org/">http://www.3gpp.org/</a></li> </ol>]]></content><author><name></name></author><category term="Networks"/><category term="Innovation"/><category term="4G"/><category term="femtoceldas"/><category term="LTE"/><category term="QoS"/><summary type="html"><![CDATA[Las femtoceldas pueden operar básicamente de tres modos diferentes acceso abierto, acceso cerrado y una combinación de los anteriores denominado acceso híbrido, a continuación se explican cada uno de los modelos de acceso]]></summary></entry><entry><title type="html">¿Qué es LaTeX?</title><link href="https://luissequeira.github.io/blog/2014/what-is-latex/" rel="alternate" type="text/html" title="¿Qué es LaTeX?"/><published>2014-05-01T05:00:00+00:00</published><updated>2014-05-01T05:00:00+00:00</updated><id>https://luissequeira.github.io/blog/2014/what-is-latex</id><content type="html" xml:base="https://luissequeira.github.io/blog/2014/what-is-latex/"><![CDATA[<div class="row mt-3" style="text-align: center"> <div class="col-sm mt-3 mt-md-0"> <figure> <picture> <source class="responsive-img-srcset" media="(max-width: 480px)" srcset="/assets/img/Research/que-es-latex/1-480.webp"/> <source class="responsive-img-srcset" media="(max-width: 800px)" srcset="/assets/img/Research/que-es-latex/1-800.webp"/> <source class="responsive-img-srcset" media="(max-width: 1400px)" srcset="/assets/img/Research/que-es-latex/1-1400.webp"/> <img src="/assets/img/Research/que-es-latex/1.png" class="img-fluid rounded z-depth-1" width="auto" height="auto" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> <p><strong>Latex es un lenguaje de edición de documentos de alta calidad, especialmente orientado a la composición de libros, documentos científicos y técnicos que incluyen fórmulas o imágenes de alta calidad</strong>. Está compuesto por un conjunto de macros Tex (un lenguaje de bajo nivel) y se ha convertido casi en un estándar para publicaciones científicas en áreas como la matemática, física e ingeniería ya que se puede tener un control más fino sobre cualquier aspecto tipográfico del documento.</p> <p><strong>Latex no es un editor de textos</strong>, es un lenguaje para prepara documentos y por lo tanto su apariencia no es no es igual. Los editores latex difieren a los conocidos como WYSIWYG (lo que ves es lo que obtienes), ya que latex permite a los usuarios escribir un documento centrándose exclusivamente en el contenido, <strong>sin tener que preocuparse de los detalles del formato</strong>.</p> <h2 id="ventajas-de-latex">Ventajas de Latex</h2> <ul> <li>Estable y multiplataforma: el formato de los archivos <strong>es más estable que en editores de texto, además, existen implementaciones</strong> para distintas plataformas y en todas el resultado es exactamente el mismo.</li> <li><strong>Alta calidad en la edición de ecuaciones</strong>: ajusta los tamaños de paréntesis, integrales, subíndices y superíndices, alinea los elementos de las matrices, construye cajas, etc.</li> <li><strong>Facilidad en la redacción de documentos estructurados</strong>: posibilita escribir textos dividiéndolos en capítulos, secciones, subsecciones, controlando en todo momento la numeración y las referencias cruzadas. Construye automáticamente índices de contenidos, tablas o figuras.</li> <li><strong>Es gratis</strong>.</li> </ul> <h2 id="desventajas-de-latex">Desventajas de Latex</h2> <ul> <li><strong>Curva de aprendizaje lenta</strong>: requiere un periodo de aprendizaje antes de conseguir los primeros resultados. Incluso cuando ya se es un usuario medio o avanzado, siempre es conveniente tener cerca un manual cerca.</li> <li><strong>No se ven los resultados hasta que se compila el archivo</strong>: no hay una visualización previa del trabajo hasta que se compila. Durante este proceso suelen aparecer errores de compilación, y puede llegar a ser frustrante para los principiantes. La única solución es armarse de paciencia.</li> </ul> <h2 id="uso-de-latex">Uso de Latex</h2> <p>La elaboración de un documento requiere normalmente se divide en <strong>dos etapas</strong>: la primera consiste en <strong>crear un fichero fuente mediante un editor de texto</strong>, el cual incluye los comandos adecuados y el texto que se quiere imprimir. La segunda consiste en <strong>compilar el fichero fuente</strong>; este proceso consiste en interpretar las órdenes escritas en fichero fuente, dejándolo preparado para que pueda ser enviado a la salida correspondiente, ya sea la pantalla o la impresora pdf. Ahora bien, si se quiere añadir o cambiar algo en el documento, se deberá hacer los cambios correspondiente en el fichero fuente y compilarlo de nuevo.</p> <h2 id="distribuciones-latex">Distribuciones Latex</h2> <p>Existen diversas distribuciones latex, por ejemplo: TeXLive que se puede utilizar en Linux, Mac y Windows, MacTex para OS X y MikTex que se utiliza en Windows. Otra de las ventajas de LaTeX es que la salida es siempre la misma, sin importar el dispositivo (impresora, pantalla, etc.) o el sistema operativo y puede ser exportado a una gran cantidad de formatos (Postscript, PDF, SGML, HTML, RTF, etc.).</p> <h2 id="editores-latex">Editores Latex</h2> <p>Existen varias aplicaciones que ayudan a una persona a escribir un documento de una manera más visual como: Texmaker, LyX, TeXmacs, Texstudio, Winshell, Kile y otros. Otra manera fácil de editar ecuaciones y producir el correspondiente código en latex, es utilizar una extensión del navegador Google Chrome llamada Daum Equation Editor.</p> <h2 id="ejemplo-de-documento-en-latex">Ejemplo de documento en Latex</h2> <div class="language-latex highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">\documentclass</span><span class="na">[12pt]</span><span class="p">{</span>article<span class="p">}</span>
<span class="k">\usepackage</span><span class="na">[spanish]</span><span class="p">{</span>babel<span class="p">}</span>
<span class="k">\usepackage</span><span class="p">{</span>amsmath<span class="p">}</span>
<span class="k">\usepackage</span><span class="na">[latin1]</span><span class="p">{</span>inputenc<span class="p">}</span>

<span class="k">\title</span><span class="p">{</span><span class="k">\LaTeX</span><span class="p">}</span>
<span class="k">\date</span><span class="p">{}</span>

<span class="c">% This is a comment, not be displayed in the final document.</span>

<span class="nt">\begin{document}</span>
<span class="k">\maketitle</span>

<span class="k">\LaTeX</span> es un programa para preparar documentos con el sistema de tipograf<span class="k">\'</span>ias <span class="k">\footnote</span><span class="p">{</span>Seg<span class="k">\'</span>un Wikipedia, la tipograf<span class="k">\'</span>ia es el arte y t<span class="k">\'</span>ecnica del manejo y selecci<span class="k">\'</span>on de tipos, originalmente de plomo, para crear trabajos de impresi<span class="k">\'</span>ion<span class="p">}</span> <span class="k">\TeX</span>. <span class="k">\LaTeX</span> fue desarrollado originalmente por Leslie Lamport en <span class="p">$</span><span class="m">1984</span><span class="p">$</span> y se convirti<span class="k">\'</span>o en el m<span class="k">\'</span>etodo dominante para la manipulaci<span class="k">\'</span>on de <span class="k">\TeX</span>. La versi<span class="k">\'</span>on utilizada para generar este documento es <span class="k">\LaTeXe</span>.

<span class="k">\newline</span>

<span class="c">% The following code shows the quality of LaTeX typesetting</span>
<span class="p">$$</span><span class="nb">E</span><span class="o">=</span><span class="nb">mc</span><span class="p">^</span><span class="m">2</span><span class="p">$$</span>
<span class="p">$$</span><span class="nv">\oint</span><span class="nb"> F</span><span class="o">(</span><span class="nb">x</span><span class="o">)</span><span class="nb">dx</span><span class="p">$$</span>
<span class="p">$$</span><span class="nv">\iint</span><span class="nb"> </span><span class="nv">\Phi</span><span class="o">(</span><span class="nb">x, y</span><span class="o">)</span><span class="nb">dxdy</span><span class="p">$$</span>
<span class="p">$$</span><span class="nv">\begin</span><span class="p">{</span><span class="nb">matrix</span><span class="p">}</span><span class="nb">A</span><span class="nv">\xrightarrow</span><span class="p">{</span><span class="nv">\;\;\;</span><span class="nb">f</span><span class="nv">\;\;\;</span><span class="p">}</span><span class="nb">B</span><span class="nv">\\\pi\downarrow</span><span class="p">{</span><span class="nv">\;\;\;\;\;</span><span class="p">}</span><span class="nv">\;\;\;\uparrow</span><span class="p">{}</span><span class="nb"> </span><span class="nv">\phi\\</span><span class="nb">C</span><span class="nv">\xrightarrow</span><span class="p">{</span><span class="nv">\;\;\;</span><span class="nb">g</span><span class="nv">\;\;\;</span><span class="p">}</span><span class="nb">D</span><span class="nv">\end</span><span class="p">{</span><span class="nb">matrix</span><span class="p">}$$</span>

<span class="nt">\end{document}</span>
</code></pre></div></div> <p>Este código producirá un documento como en la Figura #1.</p> <div class="row mt-3" style="text-align: center"> <div class="col-sm mt-3 mt-md-0"> <figure> <picture> <source class="responsive-img-srcset" media="(max-width: 480px)" srcset="/assets/img/Research/que-es-latex/2-480.webp"/> <source class="responsive-img-srcset" media="(max-width: 800px)" srcset="/assets/img/Research/que-es-latex/2-800.webp"/> <source class="responsive-img-srcset" media="(max-width: 1400px)" srcset="/assets/img/Research/que-es-latex/2-1400.webp"/> <img src="/assets/img/Research/que-es-latex/2.png" class="img-fluid rounded z-depth-1" width="auto" height="auto" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> <div class="caption"> Figure #1: Ejemplo de documento en Latex. </div>]]></content><author><name></name></author><category term="Innovation"/><category term="latex"/><category term="herramientas"/><summary type="html"><![CDATA[Latex es un lenguaje de edición de documentos de alta calidad, especialmente orientado a la composición de libros, documentos científicos y técnicos que incluyen fórmulas o imágenes de alta calidad. Está compuesto por un conjunto de macros Tex (un lenguaje de bajo nivel) y se ha convertido casi en un estándar para publicaciones científicas en áreas como la matemática, física e ingeniería ya que se puede tener un control más fino sobre cualquier aspecto tipográfico del documento.]]></summary></entry><entry><title type="html">AES otros ataques</title><link href="https://luissequeira.github.io/blog/2014/aes-other-attacks/" rel="alternate" type="text/html" title="AES otros ataques"/><published>2014-04-24T05:00:00+00:00</published><updated>2014-04-24T05:00:00+00:00</updated><id>https://luissequeira.github.io/blog/2014/aes-other-attacks</id><content type="html" xml:base="https://luissequeira.github.io/blog/2014/aes-other-attacks/"><![CDATA[<div class="row mt-3" style="text-align: center"> <div class="col-sm mt-3 mt-md-0"> <figure> <picture> <source class="responsive-img-srcset" media="(max-width: 480px)" srcset="/assets/img/Research/aes-otros-ataques/1-480.webp"/> <source class="responsive-img-srcset" media="(max-width: 800px)" srcset="/assets/img/Research/aes-otros-ataques/1-800.webp"/> <source class="responsive-img-srcset" media="(max-width: 1400px)" srcset="/assets/img/Research/aes-otros-ataques/1-1400.webp"/> <img src="/assets/img/Research/aes-otros-ataques/1.jpg" class="img-fluid rounded z-depth-1" width="auto" height="auto" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> <p>Es claro que hasta este momento, <strong>ninguno de los ataques realizado a full-AES ha tenido éxito</strong>, los ataques usualmente se concentran en la reducción de rondas. Muchos autores afirman que ninguno de los siguientes tipos de ataques, han podido ser más efectivos que una búsqueda exhaustiva de clave:</p> <ul> <li>Criptoanálisis lineal</li> <li>Criptoanálisis diferencial</li> <li>Truncated diferencials</li> <li>Interpolation attacks</li> <li>Square attack&lt;</li> </ul> <p>Sin embargo, la estructura ordenada y las profundas bases matemáticas que utiliza, lo hacen un objeto de estudio para nuevas propuestas de ataques, como lo son los ataques algebraicos. Dichos ataques consisten en plantear un sistema de ecuaciones y con las incógnitas de dicho sistema deducir la clave; una de las ventajas que presenta este tipo de ataque, es la poca cantidad de textos conocidos que se necesitan.</p> <p>En 2002 Asiacrypt hace una publicación de Nicolas Courtois y Josef Pieprzyk [1] donde proponen un modelo teórico de AES, en el que aseguran se caracteriza como un sistema de ecuaciones cuadráticas, dicho sistema consta de \(8000\) ecuaciones con \(1600\) variables binarias, <strong>sin embargo, dicho ataque falló tratando de romper AES</strong>, como menciona el mismo Courtois en [2]. Además, varios expertos en criptografía han comentado que hay problemas en las matemáticas detrás de dicho ataque, probablemente los autores hayan cometido algún error, a pesar de esto, teniendo en cuenta la forma ordenada y la completa estructura matemática de AES, es posible que este tipo de criptoanálisis pueda llegar a ser uno de los más potentes para romper AES.</p> <p>Otras publicaciones conocidas son:</p> <ul> <li><strong>Impossible Differentials Attack</strong>: existe un ataque de este tipo a \(5\) rondas de AES, requiriendo \(2^{29}\) plaintext elegidos, \(2^{30}\) encripciones, \(2^{42}\) bytes de memoria, \(2^{26}\) pasos de precálculo. Estas condiciones fueron mejoradas en [3] y [4] para alcanzar un ataque a \(6\) rondas de AES.</li> <li><strong>Square Attack</strong>: es un ataque dirigido a un algoritmo del tipo de Rijndael que basa su diseño en estructuras de bytes. Precisamente el primer ataque de este tipo fue hecho al algoritmo predecesor llamado <em>Square</em>. Este ataque puede romper a Rijndael de \(6\) a \(7\) rondas, que puede ser mejorado para atacar a \(9\) rondas de AES-256 con \(2^{77}\) plaintexts, con \(2^{56}\) claves relacionadas, y \(2^{224}\) encripciones [5].</li> <li><strong>Collision Attack</strong>: trata de encontrar dos entradas que producen el mismo valor hash, es decir, una colisión de hash. Este ataque afecta a todas las versiones de AES, \(128\), \(192\) y \(256\) con \(7\) rondas [6].</li> </ul> <p>## References</p> <ol> <li>Nicolas C, Josef P. Cryptanalysis of Block Ciphers with Overdefined Systems of Equations. ASIACRYPT ‘02 Proceedings of the 8th International Conference on the Theory and Application of Cryptology and Information Security: Advances in Cryptology (2002), pp. 267-287.</li> <li><a href="http://www.cryptosystem.net/aes/">http://www.cryptosystem.net/aes/</a></li> <li>J H C, M K, K K, J L, S K. Improved Impossible Differential Cryptanalysis of Rijndael and Crypton. ICISC (2001) LNCS 2288: pp. 39-49.</li> <li>Raphael CP, M U S. Generalised impossible differentials of advanced encryption standard. IEE Electronics Letters (2001) Vol. 37, Issue 14: pp. 896-898.</li> <li>N F, J K, S L, B S, M S, D W, D W, D W. Improved cryptanalysis of Rijndael. FSE 00, LNCS 1978, pp. 213-230.</li> <li>H G, M M. A collision Attack on 7 rounds of Rijndael. AES3papers, pp. 2-11.</li> </ol>]]></content><author><name></name></author><category term="Innovation"/><category term="AES"/><category term="criptografía"/><category term="seguridad"/><category term="criptografía-simétrica"/><category term="ataque"/><summary type="html"><![CDATA[Es claro que hasta este momento, ninguno de los ataques realizado a full-AES ha tenido éxito, los ataques usualmente se concentran en la reducción de rondas. Muchos autores afirman que ninguno de los siguientes tipos de ataques, han podido ser más efectivos que una búsqueda exhaustiva de clave.]]></summary></entry></feed>