Создание единого устройства обработки пакетов - маршрутизатор (или коммутатор уровня 3, который теперь обычно называют просто коммутатором), являющийся наиболее распространенным примером, был до этого момента в центре внимания. Пришло время соединить маршрутизаторы вместе. Рассмотрим сеть на рисунке 1.
Приложение, работающее на хосте A, должно получить некоторую информацию от процесса, запущенного на F. Устройства B, C, D и E, конечно же, являются обработчиками пакетов (маршрутизаторами). Для пересылки пакетов между хостами A и F маршрутизатор B будет вызван для пересылки пакетов на F, даже если он не подключен к F. аналогично маршрутизаторам C и D потребуется пересылать пакеты как A, так и F, даже если они не подключены ни к одному из этих хостов.
В том разделе рассматривается следующий вопрос:
Как сетевые устройства создают таблицы, необходимые для пересылки пакетов по свободным от петель путям в сети?
Ответ гораздо сложнее, чем может показаться на первый взгляд, поскольку на самом деле в нем содержится несколько проблем:
- Как устройства узнают о топологии сети, какие каналы связи подключены к каким устройствам и назначениям.
- Как плоскости управления принимают эту информацию и создают в сети пути без петель?
- Как плоскости управления обнаруживают изменения в сети и реагируют на них?
- Каким образом уровни управления масштабируются для удовлетворения потребностей крупномасштабных сетей?
- Какие политики реализованы на уровне управления и как?
Все эти проблемы будут рассмотрены далее.
Обнаружение топологии
Сетевые диаграммы обычно показывают всего несколько типов устройств, включая маршрутизаторы, коммутаторы, системы, подключенные к сети (различные типы хостов) и различные типы устройств (например, межсетевые экраны). Они часто связаны между собой каналами, представленными в виде линий. Пример представлен на рисунке 2.
Сетевые диаграммы, как и многие другие формы абстракции, скрывают много информации, чтобы сделать встроенную информацию более доступной. Во-первых, сетевые диаграммы обычно находятся где-то между логическим и физическим представлением сети. Такие диаграммы обычно не показывают каждое физическое соединение в сети. Например, сетевая диаграмма может показывать связку каналов как одну линию связи или один физический провод, который был мультиплексирован как несколько логических каналов (например, Ethernet или какой-либо другой канал широковещательной передачи, который представляет собой один физический канал, используемый несколькими устройства для связи).
Примечание В сетевой инженерии часто возникает некоторая путаница с термином мультиплексирование. Многие инженеры склонны рассматривать совместное использование двух виртуальных каналов как единственную форму сетевого мультиплексирования. Однако всякий раз, когда есть несколько устройств, совместно использующих одну линию связи, ситуация, в конечном счете требующая некоторой формы адресации, временного разделения трафика или частотного разделения трафика, используется мультиплексирование. Виртуализацию можно рассматривать как второй уровень мультиплексирования или мультиплексирование поверх мультиплексирования.
Во-вторых, сетевые схемы часто не учитывают логическую сложность сервисов. Однако плоскость управления не маскирует такого рода сложности.
Вместо этого плоскость управления должна собирать информацию о сети локально и с других плоскостей управления, объявлять ее другим устройствам, на которых работает плоскость управления, и создавать набор таблиц, которые плоскость данных может использовать для пересылки трафика через каждое устройство в сети от источника к месту назначения. В этой статье мы рассмотрим проблему:
Как плоскость управления узнает о сети?
Этот вопрос можно разбить на несколько частей:
- О чем пытается узнать плоскость управления? Или, возможно, каковы компоненты топологии сети?
- Как плоскость управления узнает об устройствах, подключенных к сети?
- Какие основные классификации используются при описании объявления информации о сети?
Узлы сети, границы и достижимый пункт назначения.
Первая проблема, которую необходимо решить, на самом деле является мета-вопросом: какие виды информации должна изучать и распространять плоскость управления, чтобы строить пути без петель в сети? Однако небольшое предупреждение по поводу следующего материала статьи: сетевые термины трудно однозначно определить, поскольку отдельные термины часто используются для описания множества "вещей" в сети, в зависимости от контекста, в котором они используются.
Узел
Узел либо обрабатывает пакеты (включая пересылку пакетов), либо отправляет пакеты, либо принимает пакеты в сети. Термин взят из теории графов, где их также можно назвать вершинами, хотя этот термин более широко применяется в сетевой инженерии. В сети есть несколько типов узлов, в том числе:
- Транзитный узел: любое устройство, предназначенное для приема пакетов на одном интерфейсе, их обработки и отправки на другом интерфейсе. Примерами транзитных узлов являются маршрутизаторы и коммутаторы. Их часто просто называют узлами, так они будут именоваться здесь в статье, а не транзитными узлами.
- Конечный узел: также называется конечной системой или хостом: любое устройство, предназначенное для запуска приложений, которые генерируют и/или принимают пакеты от одного или нескольких интерфейсов. Это сетевые источники и приемники, чаще всего эти узлы на самом деле называются хостами, а не конечными узлами, чтобы отличать их от shorthand узлов, что обычно означает транзитный узел.
В этих двух определениях есть много очевидных дыр. Как должно называться устройство, которое принимает пакет на одном интерфейсе, завершает соединение в локальном процессе или приложении, генерирует новый пакет, а затем передает этот новый пакет из другого интерфейса? Проблема усложняется, если информация, содержащаяся в двух пакетах, примерно одинакова, как в случае с прокси-сервером или каким-либо другим подобным устройством. В этих случаях полезно классифицировать устройство как конечное или узел в определенном контексте, в зависимости от роли, которую оно играет по отношению к другим устройствам в контексте. Например, с точки зрения хоста прокси-сервер действует как устройство сетевой переадресации, поскольку работа прокси-сервера (в некоторой степени) прозрачна для хоста. Однако с точки зрения соседнего узла прокси-серверы являются хостами, поскольку они завершают потоки трафика и (как правило) участвуют в плоскости управления так же, как и хост.
Граница (край)
Граница - это любое соединение между двумя сетевыми устройствами, через которое пересылаются пакеты. Номинальный случай - соединение точка-точка (point-to-point), соединяющее два маршрутизатора, но это не единственный случай. В теории графов ребро соединяет ровно два узла. В сетевой инженерии существуют понятия мультиплексированных, многоточечных и других типов мультиплексированных каналов. Чаще всего они моделируются как набор соединений point-to-point, особенно при построении набора маршрутов без петель в сети. Однако на сетевых диаграммах мультиплексированные каналы часто изображаются как одна линия с несколькими присоединенными узлами.
Достижимый пункт назначения
Достижимый пункт назначения может описывать один узел или службу, или набор узлов или служб, доступных через сеть. Номинальным примером достижимого пункта назначения является либо хост, либо набор хостов в подсети, но важно помнить, что этот термин может также описывать службу в некоторых контекстах, таких как конкретный процесс, запущенный на одном устройстве, или множество вариантов службы, доступных на нескольких устройствах. Рисунок 3 иллюстрирует это.
В сети, показанной на рисунке 3, достижимые пункты назначения могут включать:
- Любой из отдельных хостов, например A, D, F, G и H
- Любой из отдельных узлов, например B, C или E
- Служба или процесс, работающий на одном хосте, например S2.
- Служба или процесс, работающий на нескольких хостах, например S1.
- Набор устройств, подключенных к одному физическому каналу или границе, например F, G и H
Этот последний достижимый пункт назначения также представлен как интерфейс на конкретном канале или на границе сети. Следовательно, маршрутизатор E может иметь несколько достижимых пунктов назначения, включая:
- Интерфейс на линии, соединяющей маршрутизатор E с C
- Интерфейс на линии, соединяющей маршрутизатор E с B
- Интерфейс на линии, соединяющей маршрутизатор E с хостами F, G и H
- Сеть, представляющая достижимость для хостов F, G и H
- Любое количество внутренних служб, которые могут быть объявлены как отдельные адреса, порты или номера протоколов
- Любое количество внутренних адресов, присоединенных к виртуальным каналам связи, которые не существуют в физической сети, но могут использоваться для представления внутреннего состояния устройства (не показано на рисунке3)
Таким образом, концепция достижимого пункта назначения может означать множество разных вещей в зависимости от контекста. В большинстве сетей достижимый пункт назначения - это либо одиночный хост, одиночный канал (и хосты, подключенные к нему), либо набор каналов (и хосты, прикрепленные к этим каналам), объединенные в один достижимый пункт назначения.
Теперь, почитайте материал про топологию сетей.