Операционная система межсетевого взаимодействия [2] ( 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 была создана на основе кода, написанного Уильямом Йегером в Стэнфордском университете , [3] [4] [5], который был разработан в 1980-х годах для маршрутизаторов с 256 КБ памяти и низкой вычислительной мощностью ЦП . Благодаря модульным расширениям IOS была адаптирована к растущим возможностям оборудования и новым сетевым протоколам. [6] Когда была разработана IOS, основной линейкой продуктов Cisco Systems были маршрутизаторы. Компания приобрела ряд молодых компаний, которые сосредоточились на сетевых коммутаторах, таких как изобретатель первого коммутатора Ethernet Kalpana , и в результате коммутаторы Cisco изначально не работали под управлением IOS. До IOS серия Cisco Catalyst работала под управлением CatOS . [7]
Интерфейс командной строки IOS (CLI) предоставляет фиксированный набор многословных команд . Доступный набор определяется «режимом» и уровнем привилегий текущего пользователя. «Глобальный режим конфигурации» предоставляет команды для изменения конфигурации системы, а «режим конфигурации интерфейса» предоставляет команды для изменения конфигурации определенного интерфейса. Всем командам назначается уровень привилегий от 0 до 15, и доступ к ним могут получить только пользователи с необходимыми привилегиями. С помощью CLI можно определить команды, доступные для каждого уровня привилегий.
Большинство сборок IOS включают интерпретатор Tcl . Используя встроенную функцию менеджера событий , интерпретатор может быть написан для реагирования на события в сетевой среде, такие как сбой интерфейса или периодические таймеры.
Доступные режимы команд включают: [8]
И более 100 режимов и подрежимов конфигурации.
Cisco IOS имеет монолитную архитектуру из-за ограниченных аппаратных ресурсов маршрутизаторов и коммутаторов в 1980-х годах. Это означает, что все процессы имеют прямой аппаратный доступ для экономии времени обработки ЦП. Между процессами нет защиты памяти, и в IOS есть планировщик выполнения до завершения , что означает, что ядро не вытесняет работающий процесс . Вместо этого процесс должен сделать вызов ядра, прежде чем другие процессы получат возможность запуститься. IOS рассматривает каждый процесс как отдельный поток и назначает ему значение приоритета, так что высокоприоритетные процессы выполняются на ЦП до того, как будут поставлены в очередь низкоприоритетные процессы, но высокоприоритетные процессы не могут прерывать работающие низкоприоритетные процессы. [6]
Монолитное ядро Cisco IOS не реализует защиту памяти для данных различных процессов. Вся физическая память отображается в одно виртуальное адресное пространство. Ядро Cisco IOS не выполняет подкачку или свопинг памяти. Поэтому адресуемая память ограничена физической памятью сетевого устройства, на котором установлена операционная система. Однако IOS поддерживает совмещение дублированного содержимого виртуальной памяти с той же физической памятью. Эта архитектура была реализована Cisco для обеспечения производительности системы и минимизации эксплуатационных расходов операционной системы. [6]
Недостатком архитектуры IOS является то, что она увеличивает сложность операционной системы, возможно повреждение данных, так как один процесс может записать данные поверх другого, и один процесс может дестабилизировать всю операционную систему или даже вызвать программный сбой . В случае сбоя IOS операционная система автоматически перезагружается и повторно загружает сохраненную конфигурацию. [6]
Во всех версиях Cisco IOS маршрутизация и пересылка пакетов ( коммутация ) являются отдельными функциями. Маршрутизация и другие протоколы работают как процессы Cisco IOS и вносят вклад в базу маршрутной информации (RIB). Она обрабатывается для создания окончательной таблицы пересылки IP (FIB, Forwarding Information Base), которая используется функцией пересылки маршрутизатора. На платформах маршрутизаторов с программной пересылкой (например, Cisco 7200) большая часть обработки трафика, включая фильтрацию и пересылку списков управления доступом , выполняется на уровне прерываний с использованием Cisco Express Forwarding (CEF) или dCEF (Distributed CEF). Это означает, что IOS не нужно выполнять переключение контекста процесса для пересылки пакета. Функции маршрутизации, такие как OSPF или BGP, работают на уровне процесса. В маршрутизаторах с аппаратной пересылкой, таких как серия Cisco 12000, IOS вычисляет FIB в программном обеспечении и загружает ее в аппаратное обеспечение пересылки (например, ASIC или сетевой процессор), которое выполняет фактическую функцию пересылки пакетов.
Блок дескриптора интерфейса, или просто IDB, представляет собой часть памяти или внутреннюю структуру данных Cisco IOS, содержащую такую информацию, как IP-адрес, состояние интерфейса и статистика пакетов для сетевых данных. Программное обеспечение Cisco IOS поддерживает один IDB для каждого аппаратного интерфейса в конкретном коммутаторе или маршрутизаторе Cisco и один IDB для каждого подинтерфейса. Количество IDB, присутствующих в системе, зависит от типа аппаратной платформы Cisco.
Физические и логические интерфейсы на коммутаторе будут ссылаться либо на расширенные, либо на сокращенные имена описаний портов. Это в сочетании с нумерацией слотов, модулей и интерфейсов создает уникальную ссылку на этот интерфейс.
IOS поставляется как уникальный файл, который был скомпилирован для определенных сетевых устройств Cisco. Поэтому каждый образ IOS включает набор функций, который определяет команды интерфейса командной строки (CLI) и функции, доступные на различных устройствах Cisco. Таким образом, обновление до другого набора функций влечет за собой установку нового образа IOS на сетевом устройстве и перезагрузку операционной системы IOS. Информацию о версии IOS и наборе функций, работающих на устройстве Cisco, можно получить с помощью команды show version . [6]
Большинство продуктов Cisco, работающих под управлением IOS, также имеют один или несколько «наборов функций» или «пакетов», обычно восемь пакетов для маршрутизаторов Cisco и пять пакетов для сетевых коммутаторов Cisco. Например, выпуски Cisco IOS, предназначенные для использования на коммутаторах Catalyst , доступны в виде «стандартных» версий (предоставляющих только базовую IP-маршрутизацию), «расширенных» версий, которые обеспечивают полную поддержку маршрутизации IPv4 , и версий «расширенных IP-сервисов», которые обеспечивают расширенные функции, а также поддержку IPv6 . [9]
Начиная с серий маршрутизаторов ISR 1900, 2900 и 3900, Cisco пересмотрела модель лицензирования IOS. [ требуется ссылка ] Чтобы упростить процесс расширения набора функций и уменьшить необходимость в перезагрузках сетевой операционной системы, Cisco представила универсальные образы IOS, которые включают все функции, доступные для устройства, и клиенты могут разблокировать определенные функции, купив дополнительную лицензию на программное обеспечение . [10] Точный набор функций, требуемый для конкретной функции, можно определить с помощью Cisco Feature Navigator. Маршрутизаторы поставляются с установленным IP Base, а дополнительные лицензии на пакеты функций могут быть установлены в качестве дополнительных дополнений для расширения набора функций устройства. Доступны следующие пакеты функций:
Образы IOS не могут быть обновлены с помощью исправлений ошибок программного обеспечения . Чтобы исправить уязвимость в IOS, необходимо загрузить двоичный файл со всей операционной системой. [11]
Версия Cisco IOS обозначается тремя цифрами и несколькими буквами в общем виде ab(cd)e , где:
Пересборки – часто пересборка компилируется для исправления одной конкретной проблемы или уязвимости для данной версии IOS. Например, 12.1(8)E14 – это пересборка, 14 обозначает 14-ю пересборку 12.1(8)E. Пересборки производятся либо для быстрого исправления дефекта, либо для удовлетворения клиентов, которые не хотят обновляться до более поздней основной версии, поскольку они могут использовать на своих устройствах критическую инфраструктуру, и поэтому предпочитают минимизировать изменения и риск.
Промежуточные релизы – обычно выпускаются еженедельно и формируют сводку текущих усилий по разработке. На консультативном веб-сайте Cisco может быть указано более одного возможного промежуточного релиза для исправления связанной проблемы (причина этого неизвестна широкой публике).
Релизы обслуживания – строго протестированные релизы, которые становятся доступными и включают улучшения и исправления ошибок. Cisco рекомендует обновляться до релизов обслуживания, где это возможно, вместо промежуточных и пересборочных релизов.
Cisco утверждает: «Поезд — это транспортное средство для доставки программного обеспечения Cisco на определенный набор платформ и функций». [9]
До Cisco IOS release 15 релизы были разделены на несколько поездов , каждый из которых содержал разный набор функций. Поезда более или менее соответствуют различным рынкам или группам клиентов, на которых ориентировалась Cisco. [9]
Время от времени появлялись и другие поезда, предназначенные для особых нужд — например, поезд 12.0AA содержал новый код, необходимый для продукта Cisco AS5800.
Начиная с Cisco IOS версии 15, есть только один поезд, поезд M/T . Этот поезд включает как расширенные релизы обслуживания, так и стандартные релизы обслуживания. Релизы M являются расширенными релизами обслуживания, и Cisco будет предоставлять исправления ошибок в течение 44 месяцев. Релизы T являются стандартными релизами обслуживания, и Cisco будет предоставлять исправления ошибок только в течение 18 месяцев.
Поскольку IOS необходимо знать пароль в открытом виде для определенных целей (например, аутентификация CHAP ), пароли, вводимые в CLI, по умолчанию слабо зашифрованы как зашифрованный текст «Type 7», например « ». Это разработано для предотвращения атак «shoulder-surfing» при просмотре конфигураций маршрутизатора и не является безопасным — их легко расшифровать с помощью программного обеспечения под названием «getpass», доступного с 1995 года, или «ios7crypt», [13] современный вариант, хотя пароли могут быть расшифрованы маршрутизатором с помощью команды «key chain» и ввода пароля типа 7 в качестве ключа, а затем выдачи команды «show key»; приведенный выше пример расшифровывает в «stupidpass». [14] Однако программа не расшифрует пароли «Type 5» или пароли, установленные с помощью команды, которая использует соленые хэши MD5 . [15]Router(config)#username jdoe password 7 0832585B1910010713181F
enable secret
Cisco рекомендует, чтобы все устройства Cisco IOS реализовали модель безопасности аутентификации, авторизации и учета (AAA). AAA может использовать локальные базы данных, RADIUS и TACACS+ . Однако локальная учетная запись обычно все еще требуется для экстренных ситуаций. [16]
На конференции Black Hat Briefings в июле 2005 года Майкл Линн, работавший в то время в Internet Security Systems , представил информацию об уязвимости в IOS. [17] Cisco уже выпустила исправление, но попросила не разглашать информацию об уязвимости. [18] Cisco подала иск в суд, но урегулировала дело после того, как был выдан запрет, предотвращающий дальнейшее разглашение. [19]
С выводом IOS из эксплуатации на устройствах, IOS-XE приняла множество улучшений, включая обновленные значения по умолчанию. Некоторые варианты использования теперь могут хранить секреты как односторонние хэши.
Для продуктов Cisco, требующих очень высокой доступности, таких как Cisco CRS-1 , ограничения монолитного ядра были неприемлемы. Кроме того, конкурирующие операционные системы маршрутизаторов, которые появились через 10–20 лет после IOS, такие как Junos OS от Juniper , были разработаны так, чтобы не иметь этих ограничений. [20] Ответом Cisco стала разработка совершенно новой операционной системы, которая предлагала модульность, защиту памяти между процессами, легкие потоки, упреждающее планирование , возможность независимого перезапуска неудавшихся процессов и массовую масштабируемость для использования в сетях поставщиков услуг. Поезд разработки IOS XR изначально использовал микроядро операционной системы реального времени ( QNX ), и большая часть исходного кода IOS была переписана, чтобы воспользоваться функциями, предлагаемыми ядром. В 2005 году Cisco представила сетевую операционную систему Cisco IOS XR на сетевых маршрутизаторах серии 12000 , расширив архитектуру микроядра с маршрутизаторов CRS-1 на широко распространенные основные маршрутизаторы Cisco . Начиная с версии 6.x Cisco IOS XR, QNX был заменен Linux. Часть первоначальной работы была сосредоточена на модульности, вдохновленной модификацией монолитной IOS в модульную IOS, которая расширяет архитектуру микроядра в среду IOS, при этом по-прежнему предоставляя возможности обновления программного обеспечения. Эта идея была протестирована только на Catalyst 6500, получила ограниченное распространение и была быстро прекращена, поскольку требования были слишком высоки и существенно ухудшили работу платформы.
В 1984 году выпускник Леонард Босак и его жена Сэнди Лернер оставили работу в Стэнфорде в качестве сотрудников по компьютерным операциям, чтобы основать компанию по производству интернет-маршрутизаторов под названием Cisco, которая стала доминирующей компанией в отрасли. Они адаптировали программное обеспечение многопротокольного маршрутизатора, разработанное несколькими годами ранее в Стэнфорде Уильямом Йегером.