Введение
Семейство сетевых операционных систем Cisco
Internetworking Operating System (IOS) – это семейство проприетарных сетевых операционных систем, используемых в различных моделях маршрутизаторов и сетевых коммутаторов, производимых компанией Cisco Systems. Система представляет собой комплекс функций маршрутизации, коммутации, организации межсетевого взаимодействия и телекоммуникаций, объединенных в многозадачную операционную систему. Хотя кодовая база IOS включает в себя ядро с кооперативной многозадачностью, большинство функций IOS были портированы на другие ядра, такие как Linux и QNX, для использования в продуктах Cisco. Не все сетевые продукты Cisco работают под управлением IOS. Исключения составляют некоторые коммутаторы Cisco Catalyst, работающие на IOS XE, и маршрутизаторы Cisco ASR, работающие либо на IOS XE, либо на IOS XR; обе эти системы основаны на Linux. Для сред центров обработки данных коммутаторы Cisco Nexus (Ethernet) и коммутаторы Cisco MDS (Fibre Channel) работают под управлением Cisco NX OS, также операционной системы на базе Linux.
История
Сетевая операционная система IOS была создана на основе кода, написанного Уильямом Йегером в Стэнфордском университете. Этот код был разработан в 1980-х годах для маршрутизаторов с 256 кБ памяти и ограниченной вычислительной мощностью процессора. Благодаря модульным расширениям IOS была адаптирована к растущим возможностям аппаратного обеспечения и новым сетевым протоколам. Во время разработки IOS основным продуктом Cisco Systems были маршрутизаторы. Компания приобрела несколько молодых компаний, специализирующихся на сетевых коммутаторах, в том числе Kalpana, изобретателя первого Ethernet-коммутатора, и в результате коммутаторы Cisco первоначально не работали под управлением IOS. До IOS серия Cisco Catalyst использовала операционную систему CatOS.
Архитектура
Cisco IOS имеет монолитную архитектуру, обусловленную ограниченными аппаратными ресурсами маршрутизаторов и коммутаторов в 1980-х годах. Это означает, что все процессы имеют прямой доступ к аппаратному обеспечению для экономии времени процессора. Между процессами отсутствует защита памяти, и IOS использует планировщик "выполнить до завершения", что означает, что ядро не прерывает работающий процесс. Вместо этого процесс должен выполнить вызов ядра, прежде чем другим процессам будет предоставлена возможность запуска. IOS рассматривает каждый процесс как отдельный поток и присваивает ему значение приоритета, таким образом процессы с высоким приоритетом выполняются на процессоре перед процессами с низким приоритетом, находящимися в очереди, но процессы с высоким приоритетом не могут прервать выполнение процессов с низким приоритетом. Точный набор функций, необходимых для конкретной задачи, можно определить с помощью Cisco Feature Navigator. Маршрутизаторы поставляются с предустановленным IP Base, а дополнительные лицензии на пакеты функций могут быть установлены как дополнения для расширения функциональности устройства. Доступные пакеты функций: Data добавляет такие функции, как BFD, IP SLA, IPX, L2TPv3, Mobile IP, MPLS, SCTP. Security добавляет такие функции, как VPN, Firewall, IP SLA, NAC. Unified Comms добавляет такие функции, как CallManager Express, Gatekeeper, H.323, IP SLA, MGCP, SIP, VoIP, CUBE (SBC). Обновление IOS с помощью исправлений программных ошибок невозможно. Для устранения уязвимости в IOS необходимо загрузить двоичный файл, содержащий всю операционную систему.
Data adds features like BFD, IP SLAs, IPX, L2TPv3, Mobile IP, MPLS, SCTP. Security adds features like VPN, Firewall, IP SLAs, NAC. Unified Comms adds features like CallManager Express, Gatekeeper, H.323, IP SLAs, MGCP, SIP, VoIP, CUBE(SBC). IOS images can not be updated with software bug fixes. To patch a vulnerability in IOS, a binary file with the entire operating system needs to be loaded.
Версионное управление
Cisco IOS имеет нумерацию, состоящую из трех чисел и некоторых букв, в общем виде a. b(c. d)e, где:
a – основной номер версии. b – дополнительный номер версии. c – номер релиза, который начинается с единицы и увеличивается с каждым новым релизом в рамках одной и той же ветки a. b. "Ветка" (или "train") – это термин Cisco, обозначающий "средство доставки программного обеспечения Cisco для определенного набора платформ и функций". d (отсутствует в общих релизах) – промежуточный номер сборки. e (ноль, одна или две буквы) – идентификатор ветки программного обеспечения, например, none (обозначает основную ветку, см. ниже), T (для технологий), E (для корпоративных клиентов), S (для поставщиков услуг), XA – специальная функциональная ветка, XB – другая специальная функциональная ветка и т.д. Пересборки (Rebuilds) – Часто пересборка компилируется для исправления конкретной проблемы или уязвимости в определенной версии IOS. Например, 12.1(8)E14 – это пересборка, где 14 обозначает 14-ю пересборку версии 12.1(8)E. Пересборки создаются либо для быстрого исправления дефекта, либо для удовлетворения клиентов, которые не хотят обновляться до более поздней основной версии, поскольку на их устройствах может работать критически важная инфраструктура, и они предпочитают минимизировать изменения и риски. Промежуточные релизы (Interim releases) – Обычно выпускаются еженедельно и представляют собой накопительный результат текущей разработки. На веб-сайте рекомендаций Cisco может быть указано несколько промежуточных релизов для исправления одной и той же проблемы (причина этого неизвестна широкой публике). Релизы технического обслуживания (Maintenance releases) – Тщательно протестированные релизы, которые включают улучшения и исправления ошибок. Cisco рекомендует, по возможности, обновляться до релизов технического обслуживания, а не до промежуточных и пересборок.
Поезда
Cisco заявляет: «Поезд — это средство доставки программного обеспечения Cisco на конкретный набор платформ и функций».
До 12.4
До выпуска Cisco IOS 15 релизы были разделены на несколько ветвей, каждый из которых содержал различный набор функций. Ветви в значительной степени соответствовали различным рынкам или группам клиентов, на которые ориентировалась Cisco. Ветвь T (Technology) получает новые функции и исправления ошибок на протяжении всего жизненного цикла и, следовательно, потенциально менее стабильна, чем основная ветвь. (В релизах до Cisco IOS Release 12.0 ветвь P служила ветвью Technology.) Cisco не рекомендует использовать ветвь T в производственной среде, если нет острой необходимости в реализации новой функции IOS из конкретной ветви T. современный вариант, хотя пароли могут быть расшифрованы маршрутизатором с помощью команды "key chain", ввода пароля типа 7 в качестве ключа и последующего выполнения команды "show key"; в приведенном выше примере расшифровка дает "stupidpass". Однако программа не сможет расшифровать пароли "Типа 5" или пароли, установленные командой enable secret, которая использует соленые MD5-хэши. Cisco рекомендует всем устройствам Cisco IOS внедрять модель безопасности аутентификации, авторизации и учёта (AAA). AAA может использовать локальные, RADIUS и TACACS+ базы данных. Однако локальная учётная запись обычно всё ещё требуется для аварийных ситуаций. На конференции Black Hat Briefings в июле 2005 года Майкл Линн, в то время работавший в Internet Security Systems, представил информацию об уязвимости в IOS. Cisco уже выпустила исправление, но попросила не разглашать информацию об этой ошибке. Cisco подала в суд, но урегулировала дело после того, как был выдан судебный запрет на дальнейшее раскрытие информации.
Поезд IOS XR
Для продуктов Cisco, требовавших очень высокой доступности, таких как Cisco CRS 1, ограничения монолитного ядра были неприемлемы. Более того, конкурентные операционные системы маршрутизаторов, появившиеся на 10–20 лет позже IOS, например, Junos OS от Juniper, были разработаны без этих ограничений. Решением Cisco стала разработка ветви Cisco IOS, обеспечивающей модульность и защиту памяти между процессами, легковесные потоки, вытесняющее планирование и возможность независимого перезапуска вышедших из строя процессов. В разработке IOS XR изначально использовалось микроядро операционной системы реального времени (QNX), и значительная часть исходного кода IOS была переписана для использования возможностей, предоставляемых этим ядром. В 2005 году Cisco представила сетевую операционную систему Cisco IOS XR на маршрутизаторах серии 12000, распространив микроядерную архитектуру с маршрутизаторов CRS 1 на широко используемые магистральные маршрутизаторы Cisco. В 2006 году Cisco представила IOS Software Modularity, которая расширяет микроядерную архитектуру в среду IOS, сохраняя при этом возможности обновления программного обеспечения.