Сети именованных данных — угроза господству IP?

9 октябрь, 2015 - 20:50Леонід Бараш

Named Data Networking (NDN) является полностью новой архитектурой, однако ее идеи основываются на принципах современного Интернета, отражая наше понимание его сильных сторон и ограничений, архитектурой, которая может быть внедрена с помощью инкрементального развертывания поверх сегодняшнего функционирующего Интернета. Данная статья основывается на работе Lixia Zhang, KC Claffy, Patrick Crowly и др., опубликованной в Computer Communication Review, ACM SIGCOMM.

NDN является одним из пяти проектов, основанных U.S. National Science Foundation в рамках ее программы Future Internet Architecture. NDN уходит корнями в более ранний проект — Content-Centric Networking, который Ван Якобсон (Van Jacobson) впервые представил публике в 2006 г. Проект NDN исследует предложенную Якобсоном эволюцию от сегодняшней хост-центрической сетевой архитектуры (IP) к архитектуре, управляемой данными (data-centric). Этот концептуально простой сдвиг окажет далеко идущее влияние на то, как конструируются, разрабатываются, разворачиваются и используются сети и приложения.

Новое узкое место

Архитектура современного Интернета похожа на песочные часы и центрируется вокруг универсального сетевого уровня (IP), который реализует минимальную функциональность, необходимую для глобальной взаимосвязи. Их узкая горловина обеспечила взрывной рост Интернета, позволив нижнему и верхнему технологическим уровням развиваться независимо. Однако IP был разработан для создания сетей для связи, в которых заголовки пакетов содержат только названия конечных сайтов. Непрерывный рост е-коммерции, цифровых медиа, социальных сетей и количества приложений для смартфонов привел к тому, что Интернет в основном начал использоваться как распределительная сеть (distribution network). Распределительные сети являются более общими, чем коммуникационные сети, и решение проблем дистрибуции посредством протокола точка—точка является сложным и подвержено ошибкам.

Проект NDN предложил эволюцию IP-архитектуры, которая основную роль отводит этой узкой горловине, к такой, в которой пакеты могут содержать названия других объектов, а не только конечных точек связи (рис. 1).

Bitcoin — насколько реальна виртуальная валюта?

Рис. 1. Основными строительными блоками архитектуры NDN (справа) являются именованные порции контента в противоположность фундаментальному элементу связи в IP-архитектуре, которым является сквозной канал между двумя конечными точками, идентифицируемыми IP-адресами

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

Архитектура NDN

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

Bitcoin — насколько реальна виртуальная валюта?

Рис. 2. Пакеты в архитектуре NDN

Чтобы выполнить продвижение пакетов Interest и Data, каждый NDN-маршрутизатор управляет тремя структурами данных: Pending Interest Table (PIT), Forwarding Information Base (FIB) и Content Store (CS) (рис. 3), а также модулем Forwarding Strategy (на рис. не показан), который определяет, когда и куда направлять каждый пакет Interest.

Bitcoin — насколько реальна виртуальная валюта?

Рис. 3. Процесс продвижения пакетов на узле NDN

PIT хранит все запросы Interest, которые маршрутизатор продвинул по маршруту, но еще их не удовлетворил. Каждый элемент PIT записывает имя данных, переносимых в Интернете, вместе с их входящими и выходящими интерфейсами. Когда прибывает пакет Interest, NDN-маршрутизатор сначала проверяет Content Store на соответствие данных. Если данные существуют, маршрутизатор возвращает пакет Data на интерфейс, с которого пришел пакет Interest. В противном случае маршрутизатор ищет имя в PIT, и если совпадающий элемент существует, он просто записывает входящий интерфейс этого пакета Interest в элемент PIT. При отсутствии совпадающего элемента PIT маршрутизатор будет продвигать этот пакет Interest по направлению к поставщику данных, основываясь на информации в FIB, а также на адаптивной Forwarding Strategy. Когда маршрутизатор получает пакеты Interest с тем же именем от многих нисходящих узлов, он направляет к поставщику данных только первый пакет. Сама FIB наполняется протоколом маршрутизации, базированным на имени-префиксе, и может иметь много выходных интерфейсов для каждого префикса.

Forwarding Strategy может выбросить пакет Interest в определенной ситуации, например, если все восходящие каналы перегружены или подозревается, что пакет Interest является частью DoS-атаки. Для каждого пакета Interest Forwarding Strategy извлекает самый длинный префикс совпадающего элемента из FIB и решает, когда и куда направить пакет. Content Store является временным кэшем для пакетов Data, которые получил маршрутизатор. Поскольку пакет Data является независимым от того, откуда он приходит и куда направляется, он может быть кэширован для будущих запросов пакетов Interest.

Когда прибывает пакет Data, NDN-маршрутизатор находит соответствующий элемент PIT и направляет данные на все нисходящие интерфейсы, перечисленные в элементе PIT. Затем этот элемент PIT удаляется, и пакет Data кэшируется в Content Store. Пакеты Data всегда передаются по обратному пути пакетов Interest, и, если нет потери пакетов, один пакет Interest вызывает передачу пакета Data в каждый канал, обеспечивая балансировку потока. При выборке объектов с большим контентом, содержащих много пакетов, пакеты Interest играют ту же роль в управлении трафиком, какую пакеты TCP ACK играют в современном Интернете: тонко гранулированную петлю обратной связи, управляемую пользователем данных. Ни пакеты Interest, ни пакеты Data не несут никаких адресов хостов или интерфейсов. Маршрутизаторы продвигают пакеты Interest к поставщику данных, основываясь только на именах, содержащихся в них, и направляют пакеты Data к потребителю, базируясь на информации в PIT, установленной пакетами Interest на каждом транзитном узле. Эта симметрия обмена пакетами Interest/Data порождает контур управления и удаляет необходимость в каких-либо данных об источнике и получателе при доставке данных, в отличие от сквозной модели доставки на базе протокола IP.

Имена

Хотя маршрутизаторы распознают границы между компонентами в имени, они не приписывают значения именам, то есть, NDN-имена являются непрозрачными в сети. Это конструктивное решение позволяет каждому приложению выбрать схему именования, которая наиболее ему подходит, и эта схема может развиваться независимо от сети. NDN предполагает иерархическую структуру имен, например, видео, созданное компанией N, может иметь имя /N/videos/demo.mpg, где ‘/’ разделяет компоненты имени в текстовом представлении подобно тому, как это делается в URL. Эта иерархическая структура позволяет приложениям представлять контекст отношения элементов данных. Например, сегмент 3 версии 1 demo.mpg может быть именован, как /N/videos/demo.mpg/1/3. Это решение также позволяет агрегацию имен, например, /N могло бы соответствовать автономной системе, создающей видео. Плоские имена могут приниматься как специальный случай, удобный в локальной среде, однако иерархическое пространство имен является существенным как для масштабирования системы маршрутизации, так и для обеспечения необходимого контекста для данных.

Данные, которые могут извлекаться глобально, должны иметь глобально уникальные имена, но имена, используемые для локальной связи, могут требовать только локальной маршрутизации для отыскания необходимых данных.

Управление именами не является частью NDN-архитектуры, так же как пространство адресов не является частью IP-архитектуры. Однако именование является наиболее важной частью дизайна NDN-архитектуры. Именование данных позволяет поддерживать такую функциональность, как распределение контента, многоадресные рассылки, мобильность и толерантность к задержкам в сети.

Маршрутизация и продвижение

NDN маршрутизирует и продвигает пакеты, основываясь на имени, что решает три проблемы, связанными с адресами в IP-архитектуре: исчерпание адресного пространства, отслеживание NAT (трансляции сетевых адресов) и управление адресами.

NDN может использовать традиционные алгоритмы маршрутизации, такие как состояние канала и вектор расстояния. Взамен оповещения IP-префиксов маршрутизатор объявляет именные префиксы, предваряющие данные, которые маршрутизатор готов обслужить. Протокол маршрутизации распространяет эти оповещения по сети, информируя в маршрутизаторе его собственную FIB. Традиционные протоколы маршрутизации, такие как OSPF и BGP, могут быть адаптированы для маршрутизации именных префиксов, обрабатывая имена как последовательность непрозрачных компонент и отыскивая покомпонентное совпадение самого длинного префикса имени в пакете Interest с таковым в таблице FIB.

Что касается плоскости данных NDN, то PIT записывает все ждущие пакеты Interest и их входные интерфейсы. Каждый элемент (запись) PIT указывает на ожидание и разрешение для пакета Data и удаляется после получения затребованных данных или вследствие тайм-аута. Этот учет состояния каждого пакета является фундаментальным отличием от IP, где состояние плоскости данных не учитывается. Информация о состоянии делает плоскость данных NDN адаптивной для обработки отказов сети и эффективной в утилизации сетевых ресурсов.

Первое, базированный на PIT и возвращающий пакет Data узел NDN может осуществлять мониторинг производительности доставки пакетов от различных интерфейсов и определять потерю пакетов, если таковая случится, в пределах времени, необходимого на передачу и подтверждения приема (round-trip time). Второе, базируясь на PIT и произвольности и одноразовости пакета Interest, последний в случае его прихода на тот же узел, может быть легко идентифицирован и отклонен. Таким образом, ни пакеты Interest, ни пакеты Data не зацикливаются. Индивидуальные NDN-маршрутизаторы с обратной связью и без зацикливания в плоскости данных могут принимать локальные решения относительно продвижения пакетов Interest через множество интерфейсов для выбора сервиса и балансировки нагрузки и могут быстро определять проблемы и выбирать альтернативные пути, чтобы обойти отказы.

Основываясь на информации в FIB и измерении производительности, адаптивный модуль Forwarding Strategy в каждом маршрутизаторе принимает решения о том, какой пакет Interest направить на тот или иной интерфейс, как много неудовлетворенных пакетов Interest может содержать PIT, а также об относительном приоритете разных Interest-пакетов.

PIT служит также и для других важных целей. Первое, поскольку в ней записывается набор интерфейсов, через которые прибыли пакеты Interest для одних и тех же именованных данных, то естественно поддерживается многоадресная доставка данных. Второе, поскольку каждый пакет Interest извлекает, по крайней мере, один пакет Data, маршрутизатор может регулировать объем трафика, управляя количеством ждущих пакетов Interest. Третье, количество записей в таблице PIT является индикатором нагрузки на маршрутизатор, поэтому, ограничивая их количество, можно установить предел эффективности атак DDoS. Наконец, тайм-ауты в записях PIT предоставляют относительно недорогой метод определения атак.

Функция транспорта

Архитектура NDN не имеет отдельного транспортного уровня. Она передает функции сегодняшних транспортных протоколов (демультиплексирование, надежную доставку и управление перегрузкой) приложениям, поддерживающим библиотекам и модулю стратеги в плоскости продвижения. Информация транспортного уровня, такая как порт и последовательные номера не является необходимой. Вся информация, требуемая для транспорта, находится в именах данных. Например, имя /N/videos/demo.mpg/1/3 указывает, куда продвинуть пакеты Interest для имени (/N), какое приложение должно их получить (/videos/) и какую-то специфическую для приложения информацию (version 1, segment 3).

Когда приложение требует надежной доставки, само приложение или поддерживающая его библиотека будет отслеживать статус ожидающих выполнения пакетов Interest и передавать их повторно при необходимости. Балансировка нагрузки вместе со способностью узлов управлять объемом собственного трафика, ограничивая количество ждущих пакетов Interest на каждом транзитном узле, может обеспечить эффективное управление перегрузкой в сети.

Разработка архитектуры NDN

Полный список архитектурных компонент, подлежащих разработке, достаточно длинный и представляет узкопрофессиональный интерес. Здесь в качестве примера приведены краткие требования для трех из них.

Спецификация протокола NDN требует стандартных форматов для двух основных типов пакетов (Interest и Data) и описания функций, поддерживаемых сетевым уровнем, другими словами, новой узкой горловины. Построение работающей сети NDN также требует библиотек программ для поддержки именования, высокопроизводительной маршрутизации и продвижения, стратегии продвижения и доверительного управления. Подобно компонентам поддержки IP (распределение адресов, протоколы маршрутизации, DNS), эти библиотеки не являются частью архитектуры ядра, но, по сути, поддерживают его.

Модуль Forwarding Strategy на каждом узле является ключом к надежности и эффективности NDN. Посредством эффективного использования многопутевой способности NDN адаптивная стратегия продвижения может посылать пользовательский пакет Interest по наиболее производительным путям, избегать перегрузок и отказов, балансировать нагрузку по всему пути следования и определять и реагировать на атаки, такие как DDoS.

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

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