Выбрать главу

- Но это в основном протоколы уровня приложений?

- Вы глубоко заблуждаетесь. Протоколы TCP/IP не являются стандартами де-юре с точки зрения международного права — это стандарты де-факто.

- Но они являются отраслевыми техническим стандартами де-факто, описанным в RFC.

- Они не являются отраслевыми стандартами. Понятие отраслевого стандарта совсем другое. Они являются стандартами де-факто, выпущенными неким образованным в США society и ставшими международными. Но де-юре это не стандарты.

Мало того, чтобы согласовать протоколы между собою, одного стандарта недостаточно. Он не определяет многих технических параметров и не описывает (да и не должен описывать, чтобы не связывать по рукам и ногам производителей) очень многих деталей. Даже при наличии стандарта могут возникать ситуации нестыковки протоколов между собой. Но самое главное, организация сетей в виде «черных ящиков» блокирует возможности проведения экспериментов с новыми протоколами.

- Один из предлагаемых вариантов решения этих проблем — программно-конфигурируемые сети. В чем суть этой технологии?

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

Кроме того, передача данных идет не через отдельно маршрутизируемые пакеты, как это сделано, скажем, в IP, а в виде потока. Если мы вспомним IPv4 и IPv6, то там есть такое поле — идентификатор потока. Здесь оно существенно используется.

- Но данные одного потока все равно оформлены в виде пакетов?

- Совершенно верно, данные идут по виртуальному соединению, которое маршрутизируется в момент своего создания. И дальше все относящиеся к нему пакеты идут по одному маршруту. Как только появляется пакет, маршрутизатор смотрит, знает ли он поток, к которому тот относится. Если устройство в своих таблицах маршрутизации находит соответствующие правила (то есть знает этот поток), то пакет обрабатывается в соответствии с ними. Если такого правила нет, то устройство обращается к так называемому контроллеру, который принимает решение об открытии нового потока и формирует правила. Они загружаются с помощью протокола Openflow в таблицы маршрутизатора и используются при обработке всех пакетов нового потока.

Таким образом, решается очень серьезная проблема — на ранних этапах развития интернета было принято решение, что каждый пакет может маршрутизироваться самостоятельно. Оно было следствием сформулированной в конце шестидесятых годов в DARPA проблемы: военным были нужны высокоживучие системы передачи данных, чтобы уничтожение отдельного узла не приводило к выходу из строя всей сети. Пока каналы были медленными и потоки данных небольшими — это было приемлемо.

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

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

- Насколько я понимаю, здесь активно используются технологии виртуализации? Живучесть контроллера (на котором очень многое завязано) мы не теряем?

- Естественно, этот подход открывает новые возможности по виртуализации.

- Но разве программно-конфигурируемые сети могут решить проблему с пропускной способностью каналов? Ведь, скажем, 2 Мбита есть 2 Мбита и ничего с этим не сделаешь на программном уровне.