ТЕХНОЛОГИИ
TCAM — от Ipv4 к IPv6
Статья посвящена проблемам современной маршрутизации сети Интернет. Рассматриваются проблемы выборки маршрутов сетей, использования политик безопасности и качества обслуживания передаваемой информации. Отдельный раздел посвящен примерам использования свойств маски сетей для сокращения размеров таблиц маршрутизации. Рассмотрены различные возможные Клю4евые слова. варианты компоновки адресной памяти, проведено сравнение между маршрутизацией по протоколу
TCAM, lpv4, lpv6, маска, CAM, Ipv4 и Ipv6, а так же рассмотрены варианты программных и аппаратных средств маршрутизации.
lookup, маршрутизатор. Приводятся преимущества и проблемы внедрения протокола IPv6.
Багинян А.С.,
инженер-электронщик 1 -й категории baginyan@tmpk.net
Долбилов А.Г.,
инженер-программист 1 -й категории, dolbilov@jinr.ru
Лаборатория Информационных Технологий,
Объединенный институт ядерных исследований, г. Дубна
Введение
В современных роутерах наибольшую проблему вызывает возможность осуществления быстрого поиска (lookup) по таблице маршрутизации. Число записей в таблице маршрутизации растет экспоненциально. На данный момент таблица маршрутизации Интернета насчитывает более 340 000 записей. Поиск можно осуществлять как программными, так и аппаратными средствами. В литературе по данному вопросу описываются и предлагаются различные алгоритмы оптимизации программных решений. Однако, программные методы требуют больших ресурсов свободной памяти и не позволяют производить поиск на больших скоростях. С принятием стандарта IEEE Std 802.3ba-2010 необходимо обеспечивать удовлетворительную скорость поиска при пропускной способности 40-100 Гбит/с, в то время как программные методы способны обеспечивать удовлетворительную скорость поиска при пропускной способности до 10 Гбит/с (стандарт IEEE 802.3an-2006). Аппаратными средствами осуществляется поиск на основе CAM (content-addressable memory). Основная задача разработчиков в уменьшении количества записей в таблицах маршрутизации, для ускорения операции чтения и выдачи результата.
Что такое TCAM?
CAM — особый тип памяти, позволяющий обеспечить высокую скорость поиска. CAM также называют "ассоциативная память", "ас-
социативное хранилище" и "ассоциативный массив". "Ассоциативный массив" самый популярный термин в среде программистов [1].
В отличие от стандартной компьютерной памяти (ОЗУ или RAM), в которой пользователь указывает адрес памяти, а процессор считывает данные по этому адресу, CAM построен так, что пользователь вводит данные, а CAM ищет их в памяти. Если происходит совпадение с какой-либо строчкой памяти, то CAM выводит данные, соответствующие этой записи. Из-за этого CAM и называют "ассоциативный массив". Чтобы было понятнее, поясним на примере. В таблице маршрутизации записаны 100 маршрутов. В пакете, принятом на входном интерфейсе, считывается адрес назначения. Далее происходит поиск маршрута для этого адреса назначения. После обнаружения данного маршрута считывается адрес следующего узла (next hop), соответствующего этому адресу и в исходном пакете перезаписывается адрес назначения. Адрес следующего хопа и есть ассоциативные данные, соответствующее данному маршруту.
Несмотря на высокую стоимость, CAM быстро завоевали популярность, так как поиск записей осуществляется одноразовым просмотром таблицы маршрутизации. Однако, двоичные CAM могли поддерживать только 128000 записей, поэтому на смену им пришли TCAM. Двоичные CAM вели запись в таблице маршрутизации с помощью 0 и 1. TCAM (Ternary CAM) вводит еще одно дополнительное число X ("don't care" — не важно). X-ом заменяется как один бит, так и большее количество бит, что сильно сокращает размеры таблицы маршрутизации. Например, запись числа 10XX101 может соответствовать числам:
1000101
1001101
1010101
1011101
Соответственно, для четырех адресов, имеющих одинаковый следующий хоп, запись в таблице будет в единственном числе, что сокращает размер таблицы на 75%. CAM применя-
ется как на третьем, так и на втором уровне модели OSI. На третьем уровне CAM используется для просмотра таблиц маршрутизации, таблиц фильтрации пакетов, а на втором для поиска в таблице mac-address. TCAM получили огромное распространение и используются производителями как коммутаторов, так и маршрутизаторов.
Безусловное преимущество использования TCAM перед другими вариантами памяти это то, что поиск записей происходит за одну операцию, причем дополнительные ресурсы процессора не требуются.
Проблемы использования TCAM
TCAM особенно востребованы для сортировки и пересылки пакетов. Но большие массивы TCAM имеет очень большое энергопотребление, а отсутствие масштабируемых схем компоновки ограничивает возможности их применения. На сегодняшний день потребление доходит до 15 Вт на каждый чип. Потребляемая мощность прямо пропорциональна количеству бит в памяти.
Экспоненциально растущее количество записей в таблицах маршрутизации заставляет производителей использовать уже более 10-ти чипов в одном маршрутизаторе. Сортировка и фильтрация пакетов так же требует установки дополнительных чипов. Высокое энергопотребления и, соответственно, увеличенные затраты на охлаждение, заставляет ограничивать количество портов и препятствует повышению пропускной способности.
На текущий момент производители САМ предоставляют механизмы, позволяющие значительно уменьшить размеры чипа. Использование таких технологий позволяет значительно снизить энергопотребление во время поиска в таблице маршрутизации.
Стоимость — вторая большая проблема применения TCAM. Цена на один роутер нередко превышает 2000$, что резко ограничивает области их применения и заставляет пользователей искать другие варианты решения данной проблемы.
ТЕХНОЛОГИИ
Таблица 1 Таблица маршрутизации
Route Next hop
88.64.20.0/23 91.203.80.8
88.64.21.0/24 91.203.80.8
88.64.22.0/23 91.203.80.8
88.64.33.0/23 91.203.80.8
88.64.34.0/24 91.203.80.8
88.64.44.0/22 91.203.80.8
88.64.4Б.0/24 91.203.80.8
88.64.46.0/24 91.203.80.8
88.64.47.0/24 91.203.80.8
88.64.50.0/24 91.203.80.8
88.64.51.0/22 91.203.80.8
88.64.63.0/24 91.203.80.8
88.64.66.0/24 91.203.80.8
88.64.69.0/24 91.203.80.8
88.64.71.0/24 91.203.80.8
88.64.72.0/22 91.203.80.8
88.64.73.0/24 91.203.80.8
88.64.74.0/24 91.203.80.8
88.64.75.0/24 91.203.80.8
88.64.101.0/24 91.203.80.8
88.64.114.0/24 91.203.80.8
Большие проблемы возникают с внедрение 1Ру6. С одной стороны !Ру6 разработан так, чтобы уменьшить количество записей в роутере, а с другой стороны он увеличивает количество бит в 4 раза.
Свойства маски
Рассмотрим различные алгоритмы по сокращению количества записей в таблице маршрутизации. Аналогичные методы применяются и в других поисковых задачах, таких как просмотр ACL (access control list) и QoS (quality-of-service).
Допустим, мы имеем несколько маршрутов с одинаковым следующим шагом. Рассмотрим таблицу №1. В ней приведена таблица роутера, состоящая из 21 маршрута.
В двоичном виде данная таблица выглядит следующим образом (см. табл. 2).
Незначащие биты, то есть элементы подмножества, совпадение которых нам не требуется, переводим в состояние "don't care".
Проводим агрегирование сетей. То есть, рассматриваем все сети на предмет принадлежности их другим сетям. Данное действие вытекает из определения подмножества чисел. Например, множество сети 88.64.45.0/24 принадлежит 88.64.44.0/22, если любой адрес из сети 88.64.45.0/24 так же принадлежит сети 88.64.44.0/22. В нашем случае получим следующую таблицу, состоящую уже из 13 строк. (табл. 4а).
Приведем эту таблицу к более простому виду, то есть удалим пустые строки (табл. 4б).
Далее рассматриваем варианты по использованию состояния "don't care" в других битах маршрутов. Для этого должны выполняться два условия:
1. Маршруты должны иметь одинаковый следующий шаг.
2. У маршрутов должно быть одинаковое количество значащих бит.
3. Отличие значащих бит возможно только в соответствующих регистрах.
4. В случае отличия более двух бит, они должны быть одного значения.
Цветами выделены маршруты, у которых выполняются все четыре условия, соответственно, там есть возможность ввести бит X (табл. 5).
Итого, мы получаем таблицу, состоящую всего из 11 строк (табл. 6).
В реальных условиях сокращение таблицы происходит на 35-45%.
В настоящее время распределение адресного пространства носит случайный характер. Еще до недавнего времени предлагалось стимулировать пользователей использовать адресное пространство более экономично.
В качестве стимулов рассматривались варианты платы за каждую строчку в таблице маршрутизации или за количество узлов в сети. Но лучше всего с данной задачей справится протокол !Ру6. К сожалению, внедрение !Ру6 не может произойти единовременно — это длительный и мучительный процесс одновременного использования !Ру4 и !Ру6. Поэтому разработчики на данном этапе не оставляют работу по уплотнению таблиц маршрутизации.
Таблица 2
Двоичное представление таблицы маршрутизации
Таблица 3
Незначащие биты в состоянии "don't care"
Route Next hop
01011000.01000000.0001010 | 0.00000000 91.203.80.8
01011000.01000000. 00010101 | 00000000 91.203.80.8
01011000.01000000. 0001011 | 0.00000000 91.203.80.8
01011000.01000000. 0010000 1 0.00000000 91.203.80.8
01011000.01000000. 00100010 1 00000000 91.203.80.8
01011000.01000000. 001011 | 00.00000000 91.203.80.8
01011000.01000000. 00101101 1 00000000 91.203.80.8
01011000.01000000. 00101110 | 00000000 91.203.80.8
01011000.01000000. 00101111 1 00000000 91.203.80.8
01011000.01000000. 00110010 1 00000000 91.203.80.8
01011000.01000000. 001100 1 00.00000000 91.203.80.8
01011000.01000000. 00111111 1 00000000 91.203.80.8
01011000.01000000. 01000010 1 00000000 91.203.80.8
01011000.01000000. 01000101 | 00000000 91.203.80.8
01011000.01000000.01000111 1 00000000 91.203.80.8
01011000.01000000.010010 | 00.00000000 91.203.80.8
01011000.01000000. 01001001 | 00000000 91.203.80.8
01011000.01000000.01001010 1 00000000 91.203.80.8
01011000.01000000.01001011 | 00000000 91.203.80.8
01011000.01000000. 01100101 | 00000000 91.203.80.8
01011000.01000000. 01110010 1 00000000 91.203.80.8
ТЕХНОЛОГИИ
Таблица 4а
Агрегирование сетей
Агрегирование сетей
Таблица 4б
Route
01011000.01000000.0001010 I X. хххххххх
01011000.01000000.0001011 I X. хххххххх
01011000.01000000. 0010000 I X. хххххххх
01011000.01000000. 00100010 I хххххххх
01011000.01000000.001011 I XX. хххххххх
01011000.01000000. 001100 I XX. хххххххх
01011000.01000000. 00111111 I хххххххх
01011000.01000000. 01000010 I хххххххх
01011000.01000000. 01000101 I хххххххх
01011000.01000000.01000111 I хххххххх
01011000.01000000. 010010 | XX. хххххххх
01011000.01000000. 01100101 I хххххххх
01011000.01000000. 01110010 | хххххххх
Next hop
91.203.80.8
91.203.80.8
91.203.80.8
91.203.80.8
91.203.80.8
91.203.80.8
91.203.80.8
91.203.80.8
91.203.80.8
91.203.80.8
91.203.80.8
91.203.80.8
91.203.80.8
Разные архитектуры компоновки TCAM
Недавно, Panigrahy and Sharma [3] представили страничный TCAM, который позволил снизить энергопотребление. Была представлена схема разделения префиксов на восемь групп, где каждая находится на отдельном чипе. Поиск осуществляется только по одному чипу. Такой подход получил название страничный. Тем не менее, преимущество этого метода оказалось незначительным.
В работе H. Liu [4] описываются варианты "выбор бита" и "древовидная запись", которые так же использовали страничный TCAM. Схема "выбор бита" выделяет 16 значимых битов IP адреса, а затем, использую хеш-функцию про-
водит постраничный поиск в ТСАМ. Такой подход предполагает, что маска сети должна варьироваться от /16 до /24. Другой диапазон масок требует дополнительной отдельной обработки, что сильно увеличивает энергопотребление.
"Древовидная запись" создает структуру масок в виде дерева, с соответствующими подразделами. Маски индексируются в ОЗУ, по которой впоследствии происходит выбор ТСАМ. Это приводит к увеличению энергопотребления, а также дополнительно нагружает центральный процессор.
Необходимо отметить, что оба предложенных метода сохраняют полную таблицу марш-
рутизации, что приводит к увеличению накладных расходов.
В работе РаЛитаг УС. и РаЫ N. МаЬара1га [1] предложен вариант по объединению способов сжатия таблицы маршрутизации, используя свойства маски сети, и применения части ТСАМ. Как мы1 видим, разработчики не оставляют надежд по оптимизации поисковой системы1.
!ру6 на ТСАМ
Протокол 1Ру6 идет на смену протоколу 1Ру4, который исчерпал свое адресное пространство. Адресное пространство 1Ру4 это 232 и равно 4294967296 адресов, в то время как адресное пространство 1Ру6 — 2128 и равно примерно 3,4х1038 адресов. Соответственно, на каждого жителя Земли будет приходиться около 290 адресов.
Большое количество адресов позволяет ие-рархично распределять адресное пространство, что приводит к оптимизации таблицы маршрутизации. Адресное пространство 1Ру6 будет
Таблица 5
Таблица 6
Сокращение других значащих бит адреса
Конечная таблица маршрутизации
Route Next hop
01011000.01000000. 000101XXXXXXXXXX 91.203.80.8
01011000.01000000. ооюоооххххххххх 91.203.80.8
01011000.01000000. 00100010XXXXXXXX 91.203.80.8
01011000.01000000. 001011XXXXXXXXXX 91.203.80.8
01011000.01000000. 001100XXXXXXXXXX 91.203.80.8
01011000.01000000. 00111111XXXXXXXX 91.203.80.8
01011000.01000000. 01XX0010XXXXXXXX 91.203.80.8
01011000.01000000. 01X00101XXXXXXXX 91.203.80.8
01011000.01000000. 01000111XXXXXXXX 91.203.80.8
01011000.01000000. 010010XXXXXXXXXX 91.203.80.8
распределяться организацией IANA (Internet Assigned Numbers Authority — комиссия по стандартным числам в Интернет [RFC-1881]).
IANA выделяет адресное пространство с маской /23 для:
1. American Registry for Internet Numbers (ARIN) — для Северной Америки;
2. RIPE Network Coordination Centre (RIPE NCC) — для Европы, Ближнего Востока и Центральной Азии;
3. Asia-Pacific Network Information Centre (APNIC) — для Азии и Тихоокеанского региона;
4. Latin American and Caribbean Internet Addresses Registry (LACNIC) — для Латинской Америки и Карибского региона;
5. African Network Information Centre (AfriNIC) — для Африки.
Они в свою очередь выделяют адреса с маской /32 для локальных интернет регистраторов (LIR). и^ами, как правило, являются крупные интернет-провайдеры, а также организации, имеющие обширную сеть IP адресов: телекоммуникационные компании, промышленные предприятия, административные учреждения, академические институты. Те в свою очередь перераспределяют адреса более мелким провайдерам с маской /64.
Агрегирование такого иерархичного распределения уменьшает количество записей в таблицах маршрутизации, но увеличение количества бит с 32 до 128 существенно увеличивает накладные расходы по производству и внедрению TCAM. Однако внедрение IPv6 влечет за собой и другие проблемы, о чем будет рассказано ниже.
Преимущества Ipv6
Протокол IPv6 разработан таким образом, чтобы свести к минимуму все недостатки протокола IPv4. В протоколе IPv6 реализована мощная криптозащита (шифрования данных) и много других сервисов, такие как QoS (Quality of Service) или DHCP (Dynamic Host Configuration Protocol). QoS в IPv6 реализован на сетевом уровне, что повышает надежность мультимедийных трансляций. Внедрение IPv6 иерархично упорядочит структуру Интернета и решит основную сегодняшнюю проблему — нехватки IP адресов.
Кроме явного преимущества в расширении адресного пространства, можно выделить следующие преимущества IPv6 над IPv4:
1. Возможность автоконфигурирования IP адресов.
2. Упрощение маршрутизации.
3. Облегчение (упрощение) заголовка пакета.
4. Поддержка качества обслуживания (QoS).
5. Наличие возможности криптозащиты дейтограмм на уровне протокола.
6. Повышенная безопасность передачи данных
Маршрутизаторы, использую протокол IPv6, не фрагментируют пакеты на пути их следования. Первый хост должен изначально определить максимально возможный размер пакета MTU (Maximum Transmission Unit), поддерживаемый на всем пути следования до получателя и при необходимости выполнить фрагментацию заранее. Предполагается, что MTU не может быть меньше 576 байт. В дальнейшем планируют увеличить это значение до 1500 байт. Отказ от обработки размеров пакетов маршрутизаторами так же значительно увеличит их производительность, хотя и усложнит работу конечных пользователей сети.
Еще одним преимуществом IPv6 создатели называют повышенную сетевую безопасность. Злоумышленникам будет намного сложнее сканировать сети и проводить DDoS атаки.
Проблемы Ipv6
Чтобы понять влияние IPv6 на поисковую систему, удобнее всего наши требования разделить на две группы — это forwarding lookup и policy lookup. Forwarding lookup в пояснениях не нуждается, а в policy lookup входят элементы access control list (ACL) или classification lookups, quality-of-service (QoS), class-of-service (CoS) и access control rules. Так как forwarding lookup требует меньше ресурсов чем policy lookup, то производители стараются снижать стоимость за счет разделения аппаратных средств и разносить их по разным чипам.
Для обработки данных в policy lookup количество исследуемых бит увеличивается намного больше, чем в 4 раза. Необходимо сравнивать IP source, IP destination, номера портов уровня 4 модели OSI и тип протокола. К тому же результаты поиска по нескольким записям могут привести к рекурсивному изменению последующей обработки и пересылки пакетов, что приводит к значительному увеличению времени задержки.
Одним из вариантов решения данной проблемы предлагается проведение параллельного поиска по таблице маршрутизации, таблице ACL, таблице QoS и т.п. Но если рассматриваемый пакет маршрутизатор отбросит, то остальные чипы проделают пустую работу, выделяя энергию и требуя затраты на охлаждение.
Некоторыми исследователями предлагалась архитектура по разбиению адресного пространства по модели 16-8-8 для IPv4 и 16-16-...-16 для IPv6. На следующий уровень поиск переходил только в случае совпадения
ТЕХНОЛОГИИ
или удовлетворительного результата на предыдущем уровне.
Тем не менее, переход на IPv6 оказывает большее влияние и на forwarding lookup. Основные проблемы — это, безусловно, большее энергопотребление, усложнение архитектуры и необходимое повышение надежности [10].
Заключение
Переход на IPv6 неизбежен. Процесс этот происходит медленно, потому что не вся инфраструктура готова к единовременному переходу Многие программные продукты не поддерживают реализацию IPv6, что на время может привести к остановке выполнения ряда задач. Так же пользователи продолжают работать на аппаратных средствах прошлого века, которые не поддерживают протокол IPV6. Внедрение начинается в первую очередь в тех странах, где недостаток адресов ощущается наиболее остро.
Как мы рассмотрели выше, переход с IPv4 на IPv6 будет происходить постепенно, следовательно, необходимо продолжать работы по исследованию свойств маски сети, разрабатывать новые методы хеширования, снижать энергопотребление чипов, разрабатывать новые возможные архитектуры компоновки.
Литература
1. Ravkumar V.C и Rabi N. 'TCAM architecture for ip lookup using prefix properties", Published by the IEEE Computer Society, april-march 2004.
2. V. Srinivasan and G. Varghese, "Fast Address Lookups Using Controlled Prefix Expansion," ACM Trans. Computer Systems, vol. 17, no. 1, Oct. 1999, pp. 1-40.
3. R. Panigrahy and S. Shaima, "Reducing TCAM Power Consumption and Increasing Throughput," Proc. 10th Symp. High-Performance Interconnects (HOTI 02), IEEE CS Press, 2002, p^ 107-112.
4. H. Uu, "Routing Table Compaction in Ternary CAM," IEEE Micro, Jan.-Feb. 2002, vol. 22, no. 1, pp. 58-64.
5. D. Shah and P. Gupta, "Fast Updating Algorithms for TCAMs," IEEE Micro, vol. 21, no. 1, Jan.-Feb. 2001, pp. 36-47.
6. Yi-Ting Fang, Tzung-Chian Huang, Pi-Chung Wang 'Ternary CAM Compaction For IP Address Lookup", Department of Computer Science, National Chung Hsing University, Taichung, Taiwan, 2008.
7. Greg Ferro 'TCAM — A Deeper Look and the Impact of IPv6", 26/01/2011, http://elherealmind.com/ tcam-detail-review.
8. "Content-addressable memory", wikipedia, http://en.wikipedia.org/wiki/Content-addressable_memory#Ternary_CAMs 25/05/2012.
9. Karl Fzl "Answering IPv6 Lookup Challenges", 10/04/2012, http://eetimes.com/design/program-mable-logic/4009328/Answering-IPv6-Lookup-Challenges-Part-1.
10. "Интернет-протокол версии 6 (IPv6)", http://www.ing-ipv6.ru/ 23/03/2012.