Introducción detallada a OpenDaylight
OpenDaylight (ODL) es un proyecto de código abierto administrado por la Fundación Linux. Es un controlador desarrollado con JAVA y proporciona un conjunto de soporte modular, escalable, actualizable y multiprotocolo basado en SDN. El marco tiene como objetivo promover la implementación innovadora y la transparencia de la tecnología SDN.
SDN (Software Defined Network) es una red definida por software. Es un concepto de diseño de red, o una idea de diseño que implica reinventar la rueda. El concepto de DN es extraer, separar y programar el plano de control que originalmente estaba cerrado en el hardware de red general en un controlador SDN. Este controlador es como el "cerebro" de la red para controlar todos los dispositivos de la red, mientras que el general original. El hardware de red solo requiere Simplemente siga los comandos del controlador SDN y realice un reenvío "tonto". Su modelo simple se muestra en la figura:
Las tres características técnicas principales de la red SDN:
La arquitectura del proyecto del controlador ODL es aproximadamente la siguiente:
Cuándo El diseño de ODL sigue seis principios arquitectónicos básicos (lo siguiente es del documento oficial de opendaylight):
1. Modularidad y extensibilidad del tiempo de ejecución: admite la instalación de servicios mientras el controlador se está ejecutando, elimina y actualiza.
2. Soporte multiprotocolo hacia el sur: Southbound admite múltiples protocolos.
3. Capa de abstracción de servicios: proporciona una interfaz de servicio unificada en dirección norte para múltiples pares de protocolos en dirección sur. El hidrógeno utiliza AD-SAL en todos los ámbitos, las versiones de helio AD-SAL y MD-SAL se almacenan en almacenamiento, y el litio y el berilio han utilizado básicamente la arquitectura MD-SAL.
4. API abierta extensible hacia el norte: proporciona una API de aplicación escalable a través de REST o llamadas a funciones. Las funciones proporcionadas por ambos deben ser consistentes.
5. Soporte para Multitenancy/Slicing: Permite dividir la red lógica (o físicamente) en diferentes segmentos o inquilinos. Algunas funciones y módulos del controlador pueden gestionar sectores específicos. El controlador presenta diferentes observaciones de control según el fragmento que gestiona.
6. Agrupación consistente: proporciona agregación de replicación detallada y expansión horizontal (escalamiento horizontal) para garantizar la coherencia de la red.
1. Marco OSGi
OSGi (Open Service Gateway Initiative, traducido literalmente como "Open Service Gateway") es una especificación modular dinámica que utiliza Java como plataforma tecnológica. OSGi estipula cómo definir un módulo y cómo interactuar entre módulos. Los módulos Java se denominan paquetes para hacer que los paquetes sean mejor reutilizables. Las aplicaciones basadas en OSGi se componen de paquetes. Estos paquetes se organizan juntos a través de OSGi para formar un sistema.
Capas del marco OSGI:
2. Bundle
Si OSGi es un sistema de desarrollo de módulos Java, Bundle es un módulo. Cada paquete en OSGi tiene su propio cargador de clases, que admite la importación y exportación de clases a nivel de paquete. El paquete puede controlar los paquetes exportados desde el paquete configurando MANIFEST.MF, mientras que los paquetes no exportados son inaccesibles fuera del paquete. Esto completa el aislamiento de paquetes internos y paquetes externos.
3. KARAF es un proyecto de código abierto bajo Apache. También es un entorno operativo basado en OSGI que se puede utilizar para implementar varios componentes y aplicaciones.
4. Maven es la herramienta de construcción y gestión de proyectos más potente de la comunidad Java.
5. Netty: framework de código abierto java. Netty proporciona un marco de aplicaciones de red asíncrono y basado en eventos y herramientas para desarrollar rápidamente programas cliente y de servidor de red de alto rendimiento y confiabilidad. OpenDaylight hacia el sur usa Netty para administrar la IO concurrente subyacente.
6. Jersey: Un marco RESTful de código abierto que implementa la especificación JAX-RS (JSR 311 y JSR 339). OpenDaylight en dirección norte utiliza Jersey para proporcionar una interfaz REST.
Se utilizan muchas otras tecnologías que no presentaré una por una. Los amigos que estén interesados pueden buscar en línea.