Ядерная маршрутизация

Маршрутизатор может быть реализован либо полностью программным способом (в этом случае он представляет собой модуль операционной системы, установленной на компьютере общего назначения, выполняющемВ функции сервера), либо аппаратно-программным способом (является специализированным вычислительным устройством, в котором часть функций выполняется нестандартной аппаратурой, а часть — программнымиВ модулями, работающими под управлением специализированной операционной системы, называемой монитором).

Основное преимущество программных маршрутизаторов перед аппаратными — гибкость, интеллектуальность и простота модификации алгоритмов. Возможны реализации самых нестандартных сетевых решений па базе программного маршрутизатора.

Большая часть современных программных маршрутизаторов функционирует под управлением ОС Linux, что позволяет обеспечить высокую производительность и гибкость конфигураций при осуществлении маршрутизации, а также предоставляет широкие возможности по обработке сетевого трафика, поступающего на физический интерфейс маршрутизатора.

Основная функциональность Linux-маршрутизатора обеспечивается ядром операционной системы. Любая ОС Linux, начиная с версии ядра 2.2,В содержит обновленную сетевую подсистему, архитектура которой былаВ значительно пересмотрена и перестроена. Как результат — функциональность, превосходящая возможности аппаратно-программных маршрутизаторов, что позволяет реализовывать разнообразное управление сетевымВ трафиком, в частности, накладывать ограничения на транзитный трафикВ и осуществлять маршрутизацию на основе как идентификатора пользователя, адреса назначения, номера порта соединения, типа сервиса и другихВ полей сетевых заголовков, так и непосредственного содержания передаваемых в пакетах данных.

В большинстве случаев настройка системы маршрутизации не представляет особых сложностей, поскольку большинство операций выполняется ядром и специализированными программными пакетами автоматически.В ОС Linux сильна как раз своим сетевым инструментарием, поэтому данную систему можно использовать в качестве связующего звена даже в техВ локальных и глобальных сетях, основную часть которых составляют компьютеры, работающие под управлением Windows, MacOS и др.

Iproute2. Ранее подсистема маршрутизации в Linux, как и большинство операционных систем UNIX, использовала утилиты arp, ifconfig и route.В Но, начиная с ядра 2.2, сетевая подсистема была полностью переписана.В Новый сетевой код дал увеличение производительности и более высокиеВ эксплуатационные характеристики.

Современная реализация маршрутизации в ядре Linux основана на подсистеме iproute2. Управление на прикладном уровне представлено пакетом IProute2, входящим в большинство дистрибутивов Linux[1].

Фактически iproute2 состоит из нескольких утилит управления трафиком:

  • • ip — управление маршрутизацией;
  • • tc — управление очередями маршрутизации;
  • • ss — просмотр текущих соединений и открытых портов.

Утилита «ip» заменяет собой команды route, arp, ifconfig и предназначена для управления таблицами маршрутизации, в частности, правилами, определенными в них, и помогает реализовывать возможности многотабличной маршрутизации, туннелирования, а также многоадресную маршрутизацию.

Кроме того, Linux имеет гибкую систему управления трафиком, называемую Traffic Control. Эта система поддерживает множество методов для классификации, приоритезации, разделения и ограничения как входящего трафика, так и исходящего. Управление этими функциями осуществляет вторая утилита пакета — «tc». Эта утилита также позволяет реализовать QoS в нужном для системы объеме:

  • • разделение разных типов трафика по классам (не только по битамВ ToS в IP-пакете, но и по другим данным из заголовка 1Р-пакета);
  • • назначение дисциплин обработки очередей трафика с разным приоритетом, механизмами прохождения очереди, ограничениями по скоростиВ и т.п.

Обе утилиты интерпретируют выполнение команд, а все функции выполняет ядро.

Принципиальной особенностью iproute2 является использование нескольких таблиц маршрутизации. Когда ядру необходимо выбрать маршрут, оно определяет, в соответствии с какой таблицей это нужно делать.В Простейшим примером использования нескольких таблиц маршрутизацииВ является подключение сети через двух (или более) провайдеров (рис. 5.30).В Такое подключение может требоваться для обеспечения отказоустойчивости или балансировки нагрузки.

Подключение через двух провайдеров

Рис. 5.30. Подключение через двух провайдеров

Другой важной особенностью iproute2 является возможность организации туннелей. В Linux поддерживаются 3 типа туннелирования — IP-b-IP, GRE-туннелирование и туннелирование неядерного уровня (например,В РРТР).

Туннели IP-b-IP являются самыми простыми, однако имеют ряд ограничений. Например, их организация возможна только в сетях на базе протокола IPv4. Кроме того, отсутствует интероперабельность с другимиВ операционными системами. При этом туннели IP-b-IP могут широко применяться, например, при виртуализации.

GRE — стандартный протокол туннелирования, разработанный фирмой Cisco. В отличие от туннелей IP-b-IP, он поддерживает широковещательныеВ сообщения и может работать в сетях на базе протокола IPv6.

Кроме маршрутизации iproute2 может осуществлять управление обработкой пакетов и, в частности, дисциплинами обработки очередей (как бесклассовыми, так и на основе классов). Также iproute2 может проводитьВ маркировку пакетов (т.е. выполнять роль классификатора).

Несмотря на все преимущества, iproute2 имеет несколько недостатков:

  • 1) неполная документированность;
  • 2) маршрутизатор конфигурируется интерактивно, т.е. путем вводаВ команд с клавиатуры;
  • 3) из-за своей монолитной архитектуры iproute2 имеет более высокуюВ сложность, чем, например, Click.

Click. Click Modular Router — специализированное программное обеспечение для создания высокопроизводительных программных маршрутизаторов. Click был разработан в Массачусетском технологическом университете США при поддержке национального агентства DARPA.

Маршрутизатор Click имеет модульную структуру. Отдельные элементы осуществляют простые функции маршрутизатора, такие как классификация пакетов, организация очередей, планирование, установление связи с сетевыми устройствами. Каждый элемент представлен C++ объектом.

Конфигурация программного маршрутизатора может быть представлена в виде направленного графа с различными элементами в качестве вершин (рис. 5.31), в котором пакеты с данными перемещаются вдоль ребер.

Конфигурационный граф стандартного маршрутизатора

Рис. 531. Конфигурационный граф стандартного маршрутизатора

Благодаря архитектуре программного средства и декларативному языку описания конфигурации маршрутизатор является модульным и легко расширяемым. Высокая скорость обработки трафика достигается посредствомВ механизма Device Polling (технологии работы ядра Linux с устройствами),В а также за счет внутреннего механизма аннотаций.

Как было сказано, Click состоит из набора модулей с единой системой конфигурации. Каждый модуль реализует простые функции (классификацию пакетов, управление очередями, функции планировщика и интерфейса с сетевыми устройствами) и представляет собой отдельную частьВ процесса маршрутизации. Модуль может выполнять как простые вычисления (например, уменьшение счетчика жизни IP-пакета), так и более сложные (построение маршрута следования пакета).

Для построения маршрутизатора выбирается набор обработчиков, которые соединяются в ориентированный граф. Обработчик Click представляет собой некий элемент, в котором происходит обработка пакета. Click позволяет создавать новые обработчики, а также модифицировать и комбинировать между собой имеющиеся. Действия маршрутизатора задаютсяВ при помощи набора определенных модулей, а также путем определенияВ связей между ними.

Для каждого элемента маршрутизатора должны быть определены:

  • класс (El?ment Class), задающий действия элемента маршрутизатораВ при приеме пакета;
  • порты (Ports) для создания соединения между элементами;
  • конфигурационная строка ( Configuration String), определяющая состояние обработчика при первом запуске программного комплекса;
  • интерфейсы (Method Interfaces), необходимые для обмена информацией, являющейся результатом действий элемента маршрутизатора.

Модули Click не имеют встроенных буферов для построения очередей на входных и выходных портах. Вместо этого очереди реализуются специальными Queue-обработчиками. Реализация механизма построения очередей дает возможность прямого контроля над параметрами маршрутизатора,В а также возможность создания конфигураций, которые сложно реализоватьВ другими методами.

  • [1] При этом старые команды (ifconfig, route) используют новую подсистему с некоторыми параметрами по умолчанию.
 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >