Цифровой журнал «Компьютерра» 2012 № 45 (145) | страница 3



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

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

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

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

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

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

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