El sistema operativo de interconexión de redes [2] ( IOS ) es una familia de sistemas operativos de red propietarios que se utilizan en varios modelos de enrutadores y conmutadores de red fabricados por Cisco Systems . El sistema es un paquete de funciones de enrutamiento, conmutación, interconexión de redes y telecomunicaciones integradas en un sistema operativo multitarea . Aunque la base de código de IOS incluye un núcleo multitarea cooperativo , la mayoría de las características de IOS se han trasladado a otros núcleos, como Linux y QNX , para su uso en productos de Cisco.
No todos los productos de redes de Cisco ejecutan IOS. Las excepciones incluyen algunos conmutadores Cisco Catalyst , que ejecutan IOS XE , y enrutadores Cisco ASR , que ejecutan IOS XE o IOS XR ; ambos son sistemas operativos basados en Linux. Para entornos de centros de datos, los conmutadores Cisco Nexus ( Ethernet ) y los conmutadores Cisco MDS ( Fibre Channel ) ejecutan Cisco NX-OS , también un sistema operativo basado en Linux.
El sistema operativo de red IOS fue creado a partir de código escrito por William Yeager en la Universidad de Stanford , [3] [4] [5] que fue desarrollado en la década de 1980 para enrutadores con 256 kB de memoria y baja potencia de procesamiento de CPU . A través de extensiones modulares, IOS se ha adaptado a capacidades de hardware crecientes y nuevos protocolos de red. [6] Cuando se desarrolló IOS, la línea de productos principal de Cisco Systems eran enrutadores. La empresa adquirió una serie de empresas jóvenes que se centraban en conmutadores de red, como el inventor del primer conmutador Ethernet Kalpana , y como resultado, los conmutadores Cisco inicialmente no ejecutaban IOS. Antes de IOS, la serie Cisco Catalyst ejecutaba CatOS . [7]
La interfaz de línea de comandos (CLI) de IOS proporciona un conjunto fijo de comandos de varias palabras . El conjunto disponible está determinado por el "modo" y el nivel de privilegio del usuario actual. El "modo de configuración global" proporciona comandos para cambiar la configuración del sistema, y el "modo de configuración de interfaz" proporciona comandos para cambiar la configuración de una interfaz específica. A todos los comandos se les asigna un nivel de privilegio , de 0 a 15, y solo pueden acceder a ellos los usuarios con el privilegio necesario. A través de la CLI, se pueden definir los comandos disponibles para cada nivel de privilegio.
La mayoría de las compilaciones de IOS incluyen un intérprete Tcl . Mediante la función de administrador de eventos integrado , se puede programar el intérprete para que reaccione a eventos dentro del entorno de red, como fallas de interfaz o temporizadores periódicos.
Los modos de comando disponibles incluyen: [8]
Y más de 100 modos de configuración y submodos.
Cisco IOS tiene una arquitectura monolítica , debido a los recursos de hardware limitados de los enrutadores y conmutadores en la década de 1980. Esto significa que todos los procesos tienen acceso directo al hardware para conservar el tiempo de procesamiento de la CPU. No hay protección de memoria entre procesos e IOS tiene un planificador de ejecución hasta su finalización , lo que significa que el núcleo no se adelanta a un proceso en ejecución . En cambio, el proceso debe realizar una llamada al núcleo antes de que otros procesos tengan la oportunidad de ejecutarse. IOS considera cada proceso como un solo hilo y le asigna un valor de prioridad, de modo que los procesos de alta prioridad se ejecutan en la CPU antes que los procesos de baja prioridad en cola, pero los procesos de alta prioridad no pueden interrumpir los procesos de baja prioridad en ejecución. [6]
El núcleo monolítico de Cisco IOS no implementa protección de memoria para los datos de diferentes procesos. Toda la memoria física se asigna a un espacio de dirección virtual. El núcleo de Cisco IOS no realiza paginación ni intercambio de memoria. Por lo tanto, la memoria direccionable está limitada a la memoria física del dispositivo de red en el que está instalado el sistema operativo. Sin embargo, IOS admite la creación de alias de contenidos de memoria virtual duplicados en la misma memoria física. Cisco implementó esta arquitectura para garantizar el rendimiento del sistema y minimizar los gastos operativos del sistema operativo. [6]
La desventaja de la arquitectura IOS es que aumenta la complejidad del sistema operativo, es posible la corrupción de datos ya que un proceso puede sobrescribir los datos de otro y un proceso puede desestabilizar todo el sistema operativo o incluso provocar un bloqueo forzado por software . En caso de un bloqueo de IOS, el sistema operativo se reinicia automáticamente y vuelve a cargar la configuración guardada. [6]
En todas las versiones de Cisco IOS, el enrutamiento y el reenvío de paquetes ( conmutación ) son funciones distintas. El enrutamiento y otros protocolos se ejecutan como procesos de Cisco IOS y contribuyen a la Base de información de enrutamiento (RIB). Esto se procesa para generar la tabla de reenvío de IP final (FIB, Forwarding Information Base), que es utilizada por la función de reenvío del enrutador. En plataformas de enrutador con reenvío solo por software (por ejemplo, Cisco 7200), la mayor parte del manejo del tráfico, incluido el filtrado y reenvío de la lista de control de acceso , se realiza a nivel de interrupción mediante Cisco Express Forwarding (CEF) o dCEF (CEF distribuido). Esto significa que IOS no tiene que realizar un cambio de contexto de proceso para reenviar un paquete. Las funciones de enrutamiento como OSPF o BGP se ejecutan a nivel de proceso. En enrutadores con reenvío basado en hardware, como la serie Cisco 12000, IOS calcula la FIB en software y la carga en el hardware de reenvío (como un ASIC o procesador de red), que realiza la función de reenvío de paquetes real.
Un bloque descriptor de interfaz, o simplemente IDB, es una parte de la memoria o la estructura de datos interna de Cisco IOS que contiene información como la dirección IP, el estado de la interfaz y las estadísticas de paquetes para los datos de red. El software IOS de Cisco mantiene un IDB para cada interfaz de hardware en un conmutador o enrutador Cisco en particular y un IDB para cada subinterfaz. La cantidad de IDB presentes en un sistema varía según el tipo de plataforma de hardware de Cisco.
Las interfaces físicas y lógicas del conmutador se referenciarán con nombres de descripción de puerto ampliados o abreviados. Esto, combinado con la numeración de ranuras, módulos e interfaces, crea una referencia única a esa interfaz.
El IOS se entrega como un archivo único que se ha compilado para dispositivos de red Cisco específicos. Por lo tanto, cada imagen del IOS incluye un conjunto de funciones que determina los comandos y las funciones de la interfaz de línea de comandos (CLI) que están disponibles en diferentes dispositivos Cisco. Por lo tanto, la actualización a otro conjunto de funciones implica la instalación de una nueva imagen del IOS en el dispositivo de red y la recarga del sistema operativo del IOS. La información sobre la versión del IOS y el conjunto de funciones que se ejecutan en un dispositivo Cisco se puede obtener con el comando show version . [6]
La mayoría de los productos Cisco que ejecutan IOS también tienen uno o más "conjuntos de funciones" o "paquetes", generalmente ocho paquetes para enrutadores Cisco y cinco paquetes para conmutadores de red Cisco. Por ejemplo, las versiones de Cisco IOS diseñadas para usarse en conmutadores Catalyst están disponibles como versiones "estándar" (que solo brindan enrutamiento IP básico), versiones "mejoradas", que brindan compatibilidad total con enrutamiento IPv4 , y versiones de "servicios IP avanzados", que brindan las funciones mejoradas y también compatibilidad con IPv6 . [9]
A partir de las series 1900, 2900 y 3900 de enrutadores ISR, Cisco revisó el modelo de licencias de IOS. [ cita requerida ] Para simplificar el proceso de ampliación del conjunto de funciones y reducir la necesidad de recargar el sistema operativo de red, Cisco introdujo imágenes IOS universales, que incluyen todas las funciones disponibles para un dispositivo y los clientes pueden desbloquear ciertas funciones comprando una licencia de software adicional . [10] El conjunto de funciones exacto requerido para una función particular se puede determinar utilizando Cisco Feature Navigator. Los enrutadores vienen con IP Base instalado y se pueden instalar licencias de paquetes de funciones adicionales como complementos para ampliar el conjunto de funciones del dispositivo. Los paquetes de funciones disponibles son:
Las imágenes de iOS no se pueden actualizar con correcciones de errores de software . Para corregir una vulnerabilidad en iOS, se debe cargar un archivo binario con el sistema operativo completo. [11]
Cisco IOS está versionado utilizando tres números y algunas letras, en la forma general ab(cd)e , donde:
Rebuilds – A menudo, se compila una reconstrucción para solucionar un problema o vulnerabilidad específicos de una versión de IOS determinada. Por ejemplo, 12.1(8)E14 es una reconstrucción, y el 14 indica la decimocuarta reconstrucción de 12.1(8)E. Las reconstrucciones se producen para reparar rápidamente un defecto o para satisfacer a los clientes que no desean actualizar a una revisión posterior importante porque pueden estar ejecutando infraestructura crítica en sus dispositivos y, por lo tanto, prefieren minimizar los cambios y los riesgos.
Versiones provisionales : suelen producirse semanalmente y forman un resumen de los esfuerzos de desarrollo actuales. El sitio web de asesoramiento de Cisco puede incluir más de una versión provisional posible para solucionar un problema asociado (el público en general desconoce el motivo).
Versiones de mantenimiento : versiones probadas rigurosamente que se ponen a disposición e incluyen mejoras y correcciones de errores. Cisco recomienda actualizar a versiones de mantenimiento siempre que sea posible, en lugar de versiones provisionales y de reconstrucción.
Cisco dice: "Un tren es un vehículo para entregar software de Cisco a un conjunto específico de plataformas y características". [9]
Antes de la versión 15 de Cisco IOS, las versiones se dividían en varios trenes , cada uno de los cuales contenía un conjunto diferente de características. Los trenes se asignaban más o menos a distintos mercados o grupos de clientes a los que Cisco apuntaba. [9]
De vez en cuando había otros trenes diseñados para necesidades específicas; por ejemplo, el tren 12.0AA contenía el nuevo código necesario para el producto AS5800 de Cisco.
A partir de la versión 15 de Cisco IOS, solo hay un tren, el tren M/T . Este tren incluye versiones de mantenimiento extendido y versiones de mantenimiento estándar. Las versiones M son versiones de mantenimiento extendido y Cisco proporcionará correcciones de errores durante 44 meses. Las versiones T son versiones de mantenimiento estándar y Cisco solo proporcionará correcciones de errores durante 18 meses.
Debido a que el IOS necesita conocer la contraseña en texto simple para ciertos usos (por ejemplo, autenticación CHAP ), las contraseñas ingresadas en la CLI de manera predeterminada se cifran débilmente como texto cifrado de "Tipo 7", como " ". Esto está diseñado para evitar ataques de "espionaje" al ver las configuraciones del enrutador y no es seguro: se descifran fácilmente utilizando un software llamado "getpass", disponible desde 1995, o "ios7crypt", [13] una variante moderna, aunque el enrutador puede decodificar las contraseñas utilizando el comando "key chain" e ingresando la contraseña de tipo 7 como clave, y luego emitiendo un comando "show key"; el ejemplo anterior descifra a "stupidpass". [14] Sin embargo, el programa no descifrará las contraseñas de "Tipo 5" o las contraseñas configuradas con el comando, que utiliza hashes MD5 con sal . [15]Router(config)#username jdoe password 7 0832585B1910010713181F
enable secret
Cisco recomienda que todos los dispositivos Cisco IOS implementen el modelo de seguridad de autenticación, autorización y contabilidad (AAA). AAA puede utilizar bases de datos locales, RADIUS y TACACS+ . Sin embargo, generalmente se requiere una cuenta local para situaciones de emergencia. [16]
En la conferencia Black Hat Briefings de julio de 2005, Michael Lynn, que trabajaba en Internet Security Systems en ese momento, presentó información sobre una vulnerabilidad en IOS. [17] Cisco ya había publicado un parche, pero pidió que no se divulgara la falla. [18] Cisco presentó una demanda, pero llegó a un acuerdo después de que se emitiera una orden judicial para evitar más divulgaciones. [19]
Con la eliminación gradual de IOS en los dispositivos, IOS-XE adoptó muchas mejoras, entre ellas, valores predeterminados actualizados. Algunos casos de uso ahora pueden almacenar secretos como hashes unidireccionales.
Para los productos Cisco que requerían una disponibilidad muy alta, como Cisco CRS-1 , las limitaciones de un núcleo monolítico no eran aceptables. Además, los sistemas operativos de enrutadores competitivos que surgieron 10 a 20 años después de IOS, como Junos OS de Juniper , fueron diseñados para no tener estas limitaciones. [20] La respuesta de Cisco fue desarrollar un sistema operativo completamente nuevo que ofreciera modularidad, protección de memoria entre procesos, subprocesos livianos, programación preventiva , capacidad de reiniciar de forma independiente los procesos fallidos y escala masiva para su uso en redes de proveedores de servicios. El tren de desarrollo de IOS XR utilizó inicialmente el microkernel del sistema operativo en tiempo real ( QNX ) y una gran parte del código fuente de IOS se reescribió para aprovechar las características ofrecidas por el núcleo. En 2005, Cisco introdujo el sistema operativo de red Cisco IOS XR en la serie 12000 de enrutadores de red, extendiendo la arquitectura del microkernel de los enrutadores CRS-1 a los enrutadores centrales ampliamente implementados de Cisco . A partir de la versión 6.x de Cisco IOS XR, QNX se abandonó en favor de Linux. Parte del trabajo inicial se centró en la modificación inspirada en la modularidad del IOS monolítico para convertirlo en un IOS modular, que extiende la arquitectura del microkernel al entorno IOS, al tiempo que sigue proporcionando las capacidades de actualización del software. Esa idea solo se probó en Catalyst 6500, tuvo una exposición limitada y se suspendió rápidamente porque los requisitos eran demasiado altos y perjudicaban significativamente el funcionamiento de la plataforma.
En 1984, el exalumno Leonard Bosack y su esposa Sandy Lerner dejaron sus trabajos en el personal de operaciones informáticas en Stanford para fundar una empresa de enrutadores de Internet llamada Cisco, que se ha convertido en la empresa dominante en la industria. Adaptaron el software de enrutador multiprotocolo desarrollado algunos años antes en Stanford por William Yeager.