СПОСОБ ОРГАНИЗАЦИИ ТАБЛИЦЫ ФИЛЬТРАЦИИ МЕЖСЕТЕВОГО КОММУТАТОРА И УСТРОЙСТВО ДЛЯ ЕГО РЕАЛИЗАЦИИ
METHOD OF ORGANISING FILTER TABLE OF INTERNETWORK SWITCH AND APPARATUS THEREFOR

Изобретение относится к области вычислительной техники и может быть использовано в вычислительных сетях с кадровой (пакетной) коммутацией данных.
Одной из основных функций межсетевых мостов и коммутаторов является фильтрация кадров. Кадры, непредназначенные узлам сетей, подключенным к портам межсетевого моста или коммутатора, не должны передаваться на эти порты. Фильтрация, или принятие решения о необходимости передачи кадра на определенный порт межсетевого моста или коммутатора, осуществляется на основании заранее известной или накопленной информации об адресах узлов сети, подключенных к соответствующим портам коммутатора, которая хранится в таблице фильтрации. Исходя из логики работы межсетевых мостов и коммутаторов, описанной в стандарте [IEEE Std 802.1D, 1998 Edition, Part 3: Media Access Control (MAC) Bridges], таблица фильтрации заполняется адресами отправителей кадров данных и номерами портов, через которые эти кадры поступили на коммутатор. Для принятия решения о необходимости передачи кадра на другой порт коммутатора в таблице производится поиск адреса, совпадающего с адресом назначения кадра и ассоциированным с этим адресом номером порта, на который нужно передать кадр.
Для организации таблиц фильтрации в настоящее время применяются хешированные таблицы, в которых адрес записи в таблице является хеш-функцией от ключа поиска. Это позволяет производить поиск и сохранение записей в таблице за одно (в некоторых случаях несколько) к ней обращение.
Так как для одного значения хеш-функции возможно существование нескольких ключей поиска, то существует вероятность получения неверного результата поиска в хешированной таблице - коллизии. Существуют различные способы разрешения коллизий. Все они основаны на необходимости хранения ключа поиска в таблице. В случае если произошла коллизия или искомый адрес назначения не найден в таблице фильтрации, кадр передается на все порты коммутатора, что ведет к увеличению сетевой нагрузки и снижению производительности коммутатора.
Цель данного изобретения - снижение требуемого объема памяти для хранения таблицы фильтрации, осуществление поиска и сохранения записей за одно обращение к таблице фильтрации и снижение вероятности получения неверного результата поиска в таблице фильтрации.
Эффективность организации таблиц фильтрации определяется следующими критериями:
- объем памяти, необходимой для хранения одной записи в таблице фильтрации;
- количество обращений к таблице при поиске записей;
- вероятность коллизии.
Вероятность коллизии можно определить выражением:
<mrow><mi>P</mi><mo>=</mo><mfrac><mi>Q</mi><mi>W</mi></mfrac><mo>,</mo><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mo stretchy="false">(</mo><mn>1</mn><mo stretchy="false">)</mo></mrow>
где Q - количество сочетаний узлов в объединяемых межсетевым коммутатором сетях, при которых происходит коллизия, ω - общее количество сочетаний узлов в объединяемых сетях.
Известен способ организации таблиц фильтрации, применяющий хешированные таблицы, и способ «блоков» для разрешения коллизий [Патент США №6266705B1, G06F 15/173]. В качестве ключа поиска в этом способе используется комбинация MAC-адреса и идентификатора VLAN кадра. По ключу поиска вычисляется значение хеш-функции, которое является адресом для поиска записи в таблице фильтрации. Поиск осуществляется одновременно в 8-ми таблицах-блоках. Полученные 8 значений из таблиц сравниваются с ключом поиска и в случае совпадения запись считается найденной - кадр передается на порт с найденным в таблице номером.
Для сохранения записи в таблицу дополнительно производится проверка занятости ячейки с вычисленным с помощью хеш-функции адресом для таблицы-блока. Если ячейка занята, производится проверка ячейки в следующей таблице-блоке и т.д.
Для описанного способа на хранение одной записи требуется 512 бита (8 таблиц-блоков по 64 бита на каждую запись). Всего на описанную таблицу фильтрации необходимо 16777216 бит (2 Мбайта) памяти. При этом, как показано в [Маков С.В., Шрайфель И.С. Оценка эффективности фильтрации трафика в межсетевых мостах и коммутаторах [Электронный ресурс] // Сервис в России и за рубежом. - Вып.5(24). - 2011 г. URL: http://http://www.mgus.ru/ files/ electronic_journal/ number24/ 5.doc] вероятность коллизии для такой таблицы ненулевая и может быть определена выражением:
<mrow><msub><mi>P</mi><mi>Б</mi></msub><mo>=</mo><mn>1</mn><mo>−</mo><mfrac><mrow><msubsup><mi>λ</mi><mrow><mi>r</mi><mi>l</mi></mrow><mrow><mi>m</mi><mi>k</mi></mrow></msubsup><mo stretchy="false">(</mo><mi>r</mi><mi>l</mi><mo stretchy="false">)</mo><mo>!</mo><mo stretchy="false">(</mo><mi>m</mi><mo>−</mo><mi>r</mi><mi>l</mi><mo stretchy="false">)</mo><mo>!</mo></mrow><mrow><mi>m</mi><mo>!</mo></mrow></mfrac><mo>,</mo><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mo stretchy="false">(</mo><mn>2</mn><mo stretchy="false">)</mo></mrow>
<mrow><msubsup><mi>λ</mi><mrow><mi>r</mi><mi>l</mi></mrow><mrow><mi>m</mi><mi>k</mi></mrow></msubsup></mrow>
где r - количество возможных значений хеш-функции, rl - общее число возможных сетевых адресов, m - общее количество узлов в объединяемых коммутатором сетях, k - количество таблиц-блоков,
определяется рекуррентным выражением:
<mrow><msubsup><mi>λ</mi><mrow><mi>r</mi><mi>l</mi></mrow><mrow><mi>m</mi><mi>k</mi></mrow></msubsup><mo>=</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>s</mi><mo>=</mo><mi>m</mi><mi>a</mi><mi>x</mi><mrow><mo>(</mo><mrow><mn>0</mn><mo>;</mo><mi>m</mi><mo>−</mo><mi>r</mi><mrow><mo>(</mo><mrow><mi>k</mi><mo>−</mo><mn>1</mn></mrow><mo>)</mo></mrow></mrow><mo>)</mo></mrow></mrow><mrow><mrow><mo>[</mo><mrow><mfrac><mi>m</mi><mi>k</mi></mfrac></mrow><mo>]</mo></mrow></mrow></munderover><mrow><msubsup><mi>C</mi><mi>r</mi><mi>s</mi></msubsup><msup><mrow><mrow><mo>(</mo><mrow><msubsup><mi>C</mi><mi>l</mi><mi>k</mi></msubsup></mrow><mo>)</mo></mrow></mrow><mi>s</mi></msup><msubsup><mi>λ</mi><mrow><mi>r</mi><mo>-</mo><mi>s</mi><mo>,</mo><mi>l</mi></mrow><mrow><mi>m</mi><mo>-</mo><mi>k</mi><mi>s</mi><mo>,</mo><mi>k</mi><mo>-</mo><mn>1</mn></mrow></msubsup></mrow></mstyle><mo>.</mo><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mo stretchy="false">(</mo><mn>3</mn><mo stretchy="false">)</mo></mrow>
Признаки способа-аналога, совпадающие с признаками заявляемого технического решения, следующие: использование значения хеш-функции от ключа поиска в качестве адреса записи в таблице; поиск в таблице фильтрации информации, позволяющей принять решение о необходимости передачи кадра на соответствующий порт межсетевого коммутатора.
Недостатками известного способа и устройства, его реализующего, являются:
- сохранение записей может требовать до 8-ми обращений к таблице;
- избыточный объем памяти, требуемый для хранения таблицы фильтрации.
Причины, препятствующие достижению требуемого технического результата, заключаются в следующем:
- в случае уменьшения количества таблиц-блоков вероятность коллизии резко увеличивается, что ведет к снижению производительности коммутатора.
Структурная схема устройства, решающего рассмотренный способ-аналог, содержит вычислитель хеш-функции, таблицу хранения ключей поиска и ассоциируемой информации, состоящую из 8-ми одинаковых блоков, узел сравнения ключа поиска, блок принятия решения о необходимости сохранения записи в следующем блоке.
Известен способ использования CRC для вычисления хеш-функции и устройство, его реализующее [Патент США №20070071015, H04L 12/28].
В рассматриваемом способе для организации таблицы фильтрации, записи, содержащие 72 бита - 45 бит ключа поиска и 27 бит ассоциируемой информации, располагаются в таблице блоками по 4. Всего выделяется 32768 блоков исходя из количества возможных вариантов значений 15-битной хеш-функции. Таким образом, для хранения одной записи используется 72 бита, а всего для хранения таблицы фильтрации необходимо 9437184 бита (1.125 Мбайта).
По ключу поиска вычисляется значение хеш-функции, являющееся адресом блока из 4-х записей. Поиск осуществляется последовательным считыванием записей из блока и сравнением с ключом поиска. Сохранение записи осуществляется в незанятую ячейку блока. Таким образом, для сохранения или поиска записи в таблице фильтрации может потребоваться до 4-х обращений к таблице.
-6
Вероятность коллизии для такой таблицы также можно вычислить из выражения (2). Для 1024 узлов в объединяемых коммутатором сетях при 15-битной хеш-функции и 4-х записях в блоке вероятность коллизии составляет порядка 10.
Признаки способа-аналога, совпадающие с признаками заявляемого технического решения, следующие: использование значения хеш-функции от ключа поиска в качестве адреса записи в таблице; поиск в таблице фильтрации информации, позволяющей принять решение о необходимости передачи кадра на соответствующий порт межсетевого коммутатора.
Недостатками известного способа и устройства, его реализующего, являются:
- сохранение записей и их поиск может требовать до 4-х обращений к таблице;
- избыточный объем памяти, требуемый для хранения таблицы фильтрации.
Причины, препятствующие достижению требуемого технического результата, заключаются в следующем:
- в случае уменьшения количества записей в блоках вероятность коллизии резко увеличивается, что ведет к снижению производительности коммутатора.
Структурная схема устройства, решающего рассмотренный способ-аналог, содержит вычислитель хеш-функции, таблицу хранения ключей поиска и ассоциируемой информации, состоящую из блоков по 4 записи на каждое значение хеш-функции, узел сравнения ключа поиска, блок принятия решения о необходимости сохранения записи в следующей ячейке блока.
Наиболее близким к изобретению является способ-прототип организации таблиц фильтрации, применяющий хешированные таблицы с адаптивным вычислением хеш-функции [Патент США №6279097, G06F 12/00], где в качестве ключа поиска используется 48-битный MAC-адрес источника или получателя кадра. По ключу поиска производится вычисление значения 13-битной хеш-функции по изменяющемуся закону, которое используется в качестве адреса записи в таблице фильтрации. В таблице фильтрации хранится 48-битный MAC-адрес и 16 бит ассоциируемой информации для определения порта, на который необходимо передавать кадр. Изменение закона вычисления хеш-функции происходит в случае обнаружения коллизии, т.е. когда для двух различных ключей поиска было получено одинаковое значение хеш-функции.
Применение такого способа организации таблицы фильтрации позволяет с большой вероятностью подобрать такой закон вычисления хеш-функции, при котором коллизии для заданного набора сетевых адресов наблюдаться не будут. Вероятность того, что не будет найден закон вычисления хеш-функции, при котором отсутствуют коллизии, можно найти из выражения:
<mrow><msubsup><mi>P</mi><mi>A</mi><mi>t</mi></msubsup><mo>=</mo><msup><mrow><mrow><mo>(</mo><mrow><msub><mi>P</mi><mi>Б</mi></msub></mrow><mo>)</mo></mrow></mrow><mi>t</mi></msup><mo>,</mo><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mo stretchy="false">(</mo><mn>4</mn><mo stretchy="false">)</mo></mrow>
Б
где P - вероятность появления коллизии для разрешения коллизий способом блоков, которую можно найти из выражения (2), t - количество вариантов перебора законов вычисления хеш-функции.
Таким образом, для рассматриваемого способа также существует ненулевая вероятность появления коллизии, которая быстро уменьшается с ростом количества перебираемых законов ее вычисления.
В соответствии с рассматриваемым способом для хранения одной записи требуется 64 бита. Полный размер таблицы при 13-битной хеш-функции составляет 524288 бит (64 кБайта).
Структурная схема устройства, решающего рассмотренный способ-прототип, содержит вычислитель хеш-функции, таблицу хранения ключей поиска и ассоциируемой информации, узел сравнения ключа поиска и считанной записи, блок обнаружения коллизии.
Недостатками известного способа и устройства, его реализующего, являются:
- необходимость подбирать закон вычисления хеш-функции;
- во время подбора закона вычисления хеш-функции коммутатор работает с коллизиями таблицы фильтрации;
- необходимость хранения в таблице фильтрации ключа поиска для точного сравнения и детектирования коллизии.
Причины, препятствующие достижению требуемого технического результата, заключаются в следующем:
- в случае уменьшения количества таблиц-блоков вероятность коллизии резко увеличивается, что ведет к снижению производительности коммутатора;
- отказ от хранения ключа поиска не позволит для данного способа обнаружить коллизию.
Целью изобретения является организация таблицы фильтрации межсетевого моста или коммутатора, позволяющая производить поиск записей или их сохранения за одно обращение к таблице фильтрации; требующая меньшее количество памяти для размещения таблицы по сравнению с известными способами; позволяющая обеспечить меньшую вероятность коллизии по сравнению с известными способами.
Предлагаемый способ организации таблицы фильтрации без хранения ключа поиска предполагает:
1) наличие N параллельных таблиц одинакового размера;
2) выделение из кадра адреса узла источника и узла назначения, который является ключом поиска;
3) вычисление N значений хеш-функции от ключа поиска для каждой из параллельных таблиц по своему закону;
4) сохранение в каждой таблице только ассоциируемой с ключом поиска информации в виде бита принадлежности узла порту коммутатора, к которому он подключен;
5) определение коллизии;
6) изменение закона вычисления хеш-функции для одной из параллельных таблиц.
a
a
Для предлагаемого способа организации таблицы фильтрации кадров в межсетевом мосте или коммутаторе без хранения ключа поиска сохранение записей в таблицу фильтрации происходит следующим образом. На вход устройства поступает адрес узла источника. Для полученного адреса узла источника вычисляется N значений хеш-функций по разным законам. Во всех параллельных таблицах по адресу, соответствующему своему значению хеш-функции, сохраняется значение бит принадлежности узла источника порту, через который поступил кадр, и дополнительная информация, например значение поля «времени жизни» записи. Биты принадлежности представляют собой двоичное число, в котором количество бит соответствует количеству портов коммутатора. В 1 устанавливается тот бит, порядковый номер которого равен номеру порта, через который поступил кадр. Таким образом, сохранение записи происходит за одно обращение к таблице. Для хранения одной записи требуется N·(m+) бит, где N - количество параллельных таблиц, m - количество портов,  - количество бит для дополнительной информации. Так, например, для 8-портового коммутатора при использовании 8-ми параллельных таблиц и 8 бит дополнительной информации необходимо 128 бит на одну запись. При 10-битной хеш-функции для хранения всех параллельных таблиц требуется 128 кБит памяти (16 кБайт).
Поиск в таблице, организованной предложенным способом, осуществляется следующим образом. На вход устройства поступает адрес узла назначения. Для полученного адреса узла назначения вычисляется N значений хеш-функций по тем же законам, что и для процедуры сохранения записи. Из всех параллельных таблиц по адресам, соответствующим своим значениям хеш-функций, выбирается значение бит принадлежности узла назначения портам. Результирующие биты принадлежности портам вычисляются по следующему закону:
<mrow><msub><mi>B</mi><mi>i</mi></msub><mo>=</mo><munderover><mo>∩</mo><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><msubsup><mi>A</mi><mi>i</mi><mi>k</mi></msubsup><mo>,</mo><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mo stretchy="false">(</mo><mn>5</mn><mo stretchy="false">)</mo></mrow>
i
<mrow><msubsup><mi>A</mi><mi>i</mi><mi>k</mi></msubsup></mrow>
где B - i-й результирующий бит принадлежности портам; i=1, 2, …, m; m - количество портов коммутатора;
- i-й бит принадлежности портам, полученный из k-й параллельной таблицы; N - количество параллельных таблиц. Т.е. результирующие биты принадлежности - это результат побитной операции «логическое И» для всех параллельных таблиц.
Коллизия определяется по результирующим битам принадлежности портам следующим образом. В случае если количество установленных в 1 бит в результирующих битах принадлежности больше 1, то обнаружена коллизия.
В случае обнаружения коллизии для одной из параллельных таблиц меняется закон вычисления хеш-функции на несовпадающий с ранее использованными. Соответствующая параллельная таблица сбрасывается в исходное состояние.
Результатом поиска информации в таблице фильтрации является номер установленного результирующего бита соответствия портам. Кадр должен передаваться на соответствующий порт коммутатора. Если все результирующие биты не установлены или обнаружена коллизия, то в качестве результата поиска возвращается 0. В таком случае кадр должен передаваться на все порты коммутатора.
Устройство для организации таблицы фильтрации межсетевого коммутатора без хранения ключа поиска (фиг.1) содержит блоки вычисления значений хеш-функций 1.N, входы которых подключены к информационному входу устройства, а выходы подключены к первым входам блоков хранения записей 2.N, вторые входы которых подключены ко второму информационному входу устройства, выходы которых подключены к N входам блока вычисления результата 3 соответственно, выход которого является информационным выходом устройства и подключен к входу блока обнаружения коллизии 4, выход которого подключен ко второму входу блока вычисления значения хеш-функции 1.1 и третьему входу блока хранения записей 2.1.
Устройство для организации таблицы фильтрации межсетевого коммутатора без хранения ключа поиска работает следующим образом. На первый информационный вход устройства поступает адрес узла источника или узла назначения кадра, который поступает на вычислители значений хеш-функций 1.N. Полученные значения хеш-функций с выходов вычислителей хеш-функций 1.N поступают на первые входы блоков хранения записей 2.N, которые являются адресными входами. Таким образом, в блоках хранения записей выбираются ячейки с адресами, соответствующими значениям хеш-функций адресов источника или назначения кадра. На второй информационный вход устройства поступает информация о том, на какой порт устройства поступил кадр. Соответствующие поступившему номеру биты принадлежности портам в выбранных ячейках блоков хранения записей 2.N устанавливаются в логические 1 в случае поступления на первый информационный вход адреса источника. При поступлении на первый информационный вход адреса назначения на выходы блоков хранения записей 2.N поступают значения, считанные из выбранных ячеек блоков хранения записей, и передаются на соответствующие входы блока вычисления результата 3. Биты принадлежности портам с одинаковыми порядковыми номерами в соответствии с законом (5) складываются по логическому «И» в блоке вычисления результата 3. Полученные результирующие значения бит принадлежности поступают на информационный выход устройства и на вход блока обнаружения коллизий 4. В блоке обнаружения коллизий 4 проверяется количество установленных в логические 1 результирующих бит принадлежности к портам, и если их больше 1, то на выходе блока обнаружения коллизии 4 появляется сигнал смены закона вычисления хеш-функции, поступающий на второй вход одного из блоков вычисления хеш-функций 1.1. При этом в этом блоке вычисления хеш-функций меняется закон вычисления на неиспользованный ранее закон. Одновременно сигнал смены закона вычисления хеш-функции поступает на третий вход блока хранения записей 2.1, связанного с блоком вычисления хеш-функции с переменным законом ее вычисления.
Технический результат - поиск и сохранение информации в таблице фильтрации кадров межсетевого коммутатора.
Посредством статистических исследований математической модели предлагаемого способа было установлено, что предлагаемый способ обладает следующими преимуществами:
- позволяет сохранять и находить ассоциируемую информацию в таблице фильтрации кадров за одно обращение к таблице;
- позволяет в разы сократить требуемый объем памяти для хранения таблицы фильтрации в виду отказа от хранения ключа поиска;
- обеспечивает стремящуюся к нулю вероятность коллизии;
- позволяет подбирать закон вычисления хеш-функции, обеспечивающий отсутствие коллизий для заданных условий работы коммутатора без значительного снижения его производительности.