RU2777809C1 - Способ разделения географически распределённых IP-сетей на подсети для систем балансирования нагрузки сетей CDN - Google Patents
Способ разделения географически распределённых IP-сетей на подсети для систем балансирования нагрузки сетей CDN Download PDFInfo
- Publication number
- RU2777809C1 RU2777809C1 RU2021130944A RU2021130944A RU2777809C1 RU 2777809 C1 RU2777809 C1 RU 2777809C1 RU 2021130944 A RU2021130944 A RU 2021130944A RU 2021130944 A RU2021130944 A RU 2021130944A RU 2777809 C1 RU2777809 C1 RU 2777809C1
- Authority
- RU
- Russia
- Prior art keywords
- network
- list
- networks
- cdn
- node
- Prior art date
Links
- 230000001934 delay Effects 0.000 claims abstract description 12
- 238000000926 separation method Methods 0.000 claims abstract description 4
- 238000000034 method Methods 0.000 claims abstract description 3
- 238000005259 measurement Methods 0.000 claims description 14
- 230000000694 effects Effects 0.000 abstract 1
- 239000000126 substance Substances 0.000 abstract 1
- 238000005457 optimization Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 1
- 238000002592 echocardiography Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006011 modification reaction Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 235000010384 tocopherol Nutrition 0.000 description 1
- 235000019731 tricalcium phosphate Nutrition 0.000 description 1
Images
Abstract
Изобретение относится к вычислительной технике. Технический результат заключается в оптимизации количества добавляемых префиксов. Способ разделения географически распределённых IP-сетей на подсети характеризуется тем, что с узлов сети CDN измеряют сетевые задержки для IP-адресов, входящих в предполагаемые для разделения сетевые префиксы; строят временный список сетей T; для каждой сети из списка T запоминают метрику; создают пустой список R; каждую IP-сеть в списке T заменяют содержащей её IP-сетью с на единицу меньшей маской сети в том случае, если новая IP-сеть содержит только одну IP-сеть из списка T в качестве подсети, а метрику копируют; две IP-сети из списка T, входящие в одну и ту же IP-сеть с на единицу меньшей маской заменяют этой сетью в том случае, если их метрики содержат хотя бы один общий узел; когда замена двух IP-сетей невозможна, рассматриваемую IP-сеть либо пару IP-сетей удаляют из списка T и добавляют в список R; процесс продолжают до тех пор, пока список T не опустеет либо пока в нём не останется IP-сетей с сетевыми масками больше заданной величины, которые переносят в список R; IP-сети из списка R заменяют разделённые сетевые префиксы в подсистеме балансирования нагрузки сети CDN. 5 з.п. ф-лы, 5 ил.
Description
Изобретение относится к области компьютерных сетей, более конкретно – к сетям доставки контента (сети CDN), и может быть использовано для разделения сетевых префиксов на подпрефиксы.
Здесь и далее под сетевым префиксом понимается комбинация IP-адреса и маски сети, то есть запись вида x.x.x.x/y, где x.x.x.x – IP-адрес сети, y – маска сети, записанная в виде десятичного числа.
Из уровня техники известен традиционный способ балансирования нагрузки в сетях CDN, в котором для каждого сетевого префикса выбирается оптимальный с точки зрения той или иной метрики сервер сети CDN. Данный способ хорошо работает для IP-сетей, адреса которых назначены географически расположенным близко друг к другу устройствам и, соответственно, имеют один и тот же оптимальный сервер. Вместе с тем для IP-сетей, адреса которых назначены устройствам, находящимся в различных географических областях, выбор единого оптимального сервера может быть невозможен, что приведёт к ухудшению качества обслуживания для части пользователей. В тех случаях, когда балансирование нагрузки в сети CDN осуществляется на основе IP-адреса DNS-сервера, и когда IP-адрес DNS-сервера принадлежит подобной географически распределённой IP-сети, снижение качества обслуживания может наблюдаться у значительной доли пользователей.
Одним из способов повышения качества обслуживания пользователей является разделение подобных IP-сетей на несколько подсетей с выбором оптимального сервера для каждой из них. Этот способ эффективен, так как разделение можно произвести таким образом, чтобы для каждой подсети для всех входящих в неё адресов оптимальным являлся один и тот же сервер.
В соответствие с этим наиболее близким аналогом заявленного изобретения является система и способ повышения степени детализации управления префиксами в компьютерной сети (US 8625420 B2, 09.05.2005), в котором сетевой префикс разделяется на один или более подпрефиксов на основе тех или иных критериев, включая время отклика, с последующим добавлением в таблицу маршрутизации вместо оригинального префикса.
Недостатком указанного способа является недостаточная оптимизация количества добавляемых префиксов, что может привести к повышенной нагрузке на систему балансирования нагрузки сети CDN. Также указанный способ может приводить к некорректному результату, если префикс или его часть недоступна для измерений с части узлов сети.
Задачей изобретения является создание способа разделения географически распределённых IP-сетей на подсети для систем балансирования нагрузки сетей CDN, лишённого указанных выше недостатков уровня техники.
Технический результат заключается в оптимизации количества добавляемых префиксов.
Также результат заключается в повышении точности разделения сетей на подсети в том случае, если сетевая задержка части адресов не доступна для измерения.
Вышеуказанные результаты достигаются за счёт того, что способ разделения географически распределённых IP-сетей на подсети включает в себя этапы, на которых получают список предполагаемых для разделения сетевых префиксов S, список всех прочих префиксов N и список узлов сети CDN L, генерируют список IP-адресов A, включающий все IP-адреса, входящие хотя бы в один из префиксов из списка S, далее список A передают на все узлы сети CDN из списка L для осуществления измерения сетевых задержек.
После получения результатов измерений сетевых задержек от узлов из списка L определяют минимальную сетевую задержку и строят временный список сетей T, состоящий из IP-сетей минимального размера и содержащий все IP-адреса из списка A, сетевая задержка которых была успешно измерена хотя бы с одного узла, при условии, что данная сеть не принадлежит списку N.
Также для каждой сети (i, m) из списка T, где i – IP-адрес сети, а m – маска сети, запоминают метрику, состоящую из списка узлов сети CDN C(i, m) и значением разницы d(e, i, m) между измеренной с узла e сетевой задержкой сети (i, m) и минимальной сетевой задержкой для сети (i, m) среди всех узлов сети CDN, успешно измеривших сетевую задержку данной сети, при этом если сетевая задержка не была успешно измерена с узла e, либо если значение разницы d(e, i, m) превышает заданную величину, узел e и его значение d(e, i, m) не включают в метрику.
Кроме того создают пустой список R, элементами которого являются тройки (e, i, m), далее каждую IP-сеть в списке T заменяют содержащей её IP-сетью с на единицу меньшей маской сети в том случае, если новая IP-сеть содержит только одну IP-сеть из списка T в качестве подсети, при этом метрику копируют.
Также две IP-сети из списка T, входящие в одну и ту же IP-сеть с на единицу меньшей маской сети заменяют этой сетью в том случае, если их метрики содержат хотя бы один общий узел, при этом метрика новой сети состоит из узлов, присутствующих в каждой из заменяемых сетей, со значением d(e, i, m) равным максимальному из значений d(e, i, m) заменяемых сетей.
В случае, когда замена двух IP-сетей по указанному критерию невозможна, либо когда IP-сеть с на единицу меньшей маской сети будет совпадать с не предполагаемым для разделения сетевым префиксом, либо содержать не предполагаемый для разделения сетевой префикс в качестве подсети, рассматриваемую IP-сеть, либо пару IP-сетей удаляют из списка T и добавляют в список R, при этом для каждой добавляемой в список R сети также запоминают узел из её метрики с минимальным значением d(e, i, m).
Этот процесс продолжают до тех пор, пока список T не опустеет, либо пока в нём не останется IP-сетей с сетевыми масками больше заданной величины и в этом случае оставшиеся в списке T сети также переносят в список R. Полученные IP-сети из списка R заменяют разделённые сетевые префиксы в подсистеме балансирования нагрузки сети CDN.
В соответствии с частным случаем выполнения, при объединении двух IP-сетей из списка T значение d(e, i, m) новой сети вычисляют как сумму значений d(e, i, m) заменяемых сетей, а при замене IP-сети из списка T на IP-сеть с на единицу меньшей маской сети значение разницы d(e, i, m) удваивают.
В соответствии с частным случаем выполнения, в случае невозможности объединения двух IP-сетей, одну из них удаляют из списка T и добавляют в список R, а другую – заменяют в списке T на IP-сеть с на единицу меньшей маской сети.
В соответствии с частным случаем выполнения, если узел сети CDN не смог измерить сетевые задержки для IP-адреса, однако такие измерения были успешны ранее, используют результаты последнего успешного измерения.
В соответствии с частным случаем выполнения, измерение сетевых задержек производят только для части входящих в предполагаемый для разделения сетевой префикс IP-адресов.
В соответствии с частным случаем выполнения, если несколько узлов сети CDN обладают схожими сетевыми характеристиками, измерения производят только с одного из этих узлов, а при добавлении IP-сетей в систему балансирования нагрузки сети CDN оптимальный узел заменяют на узел со схожими сетевыми характеристиками.
Оптимизация количества добавляемых префиксов достигается за счёт того, что предложенный способ объединяет префиксы, расположенные на значительном географическом расстоянии друг от друга в том случае, если оптимальным для них является один и тот же сервер сети CDN. На это влияет то, что в качестве разницы d(e, i, m) берётся не значение сетевой задержки, а разница между измеренной с узла e сетевой задержкой сети (i, m) и минимальной сетевой задержкой для сети (i, m) среди всех узлов сети CDN.
Повышение точности разделения сетей на подсети достигается за счёт того, что данный способ генерирует не те подпрефиксы, которые удалось измерить и только их, а более крупные содержащие их префиксы. Поскольку соседние IP-адреса как правило расположены географически близко друг к другу, такой подход позволяет повысить точность и для тех IP-адресов, время отклика которых не удалось измерить.
Изобретение иллюстрируется чертежами.
На фиг. 1 показана схема системы.
На фиг. 2-5 показаны примеры объединения сетей в дополнительном варианте осуществления.
Способ разделения географически распределённых IP-сетей на подсети для систем балансирования нагрузки сетей CDN включает в себя подсистему оптимизации префиксов 1, подсистему балансирования нагрузки сети CDN 2 и узлы сети CDN 3. Подсистема оптимизации префиксов связана с подсистемой балансирования нагрузки сети CDN через канал обмена данных 4 и с узлами сети CDN через канал обмена данных 5. Направление стрелок соответствует направлению передачи данных. Также подсистема балансирования нагрузки сети CDN перенаправляет запросы клиентов на узлы сети CDN, что обозначено стрелкой 6 (фиг.1).
Подсистема оптимизации префиксов 1 предусматривает программный модуль, выполняемый на одном или нескольких либо выделенных серверах, либо серверах сети CDN, либо их комбинации. Данный модуль получает от подсистемы балансирования нагрузки 2 сети CDN список предполагаемых для разделения сетевых префиксов S, список всех прочих префиксов N и список узлов 3 сети CDN L. Подсистема оптимизации префиксов 1 генерирует список IP-адресов A, включающий все IP-адреса, входящие хотя бы в один из префиксов из списка S. Список A передаётся на все узлы 3 сети CDN из списка L для осуществления измерения сетевых задержек.
В дополнительном варианте осуществления список IP-адресов A включает только часть адресов, входящих в префиксы из списка S. Эту часть отбирают по тому или иному критерию. В качестве критериев выбора может использоваться определённое значение некоторого количества последних битов IP-адреса (то есть выборка с шагом 2^x), выбор определённого количества адресов для каждого префикса случайным образом, либо иной критерий выбора.
После того, как подсистема оптимизации префиксов 1 получит результаты измерений сетевых задержек от всех узлов 3 сети CDN из списка L, подсистема строит временный список сетей T, состоящий из IP-сетей минимального размера – с маской /32 для IPv4 и /128 для IPv6, содержащий все IP-адреса из списка A, сетевая задержка которых была успешно измерена хотя бы с одного узла, при условии, что данная сеть не принадлежит списку N.
Для каждой сети (i, m) из списка T, где i – IP-адрес сети, а m – маска сети, также запоминается метрика, состоящая из списка узлов сети CDN C(i, m) и значением разницы d(e, i, m) между измеренной с узла e сетевой задержкой сети (i, m) и минимальной сетевой задержкой для сети (i, m) среди всех узлов сети CDN, успешно измеривших сетевую задержку данной сети.
При этом если сетевая задержка не была успешно измерена с узла e, либо если разница d(e, i, m) превышает заданную величину, которая задаётся административной политикой, узел e и его значение разницы d(e, i, m) не включаются в метрику. Также создаётся пустой список R, элементами которого являются тройки (e, i, m).
Далее выполняется цикл по m со стартовым значением h равным 32 для IPv4 и 128 для IPv6, конечным значением z, которое задаётся административной политикой, и шагом –1, в котором для всех (i, m) из списка T выполняются следующие действия:
1. Если m-ый бит слева адреса i равен 0, сеть (i+2^(h–m), m) не входит ни в список T, ни в список N и сеть (i, m–1) не входит в список N, то (i, m) удаляется из T, а (i, m–1) добавляется в T, причём C(i, m–1) = C(i, m), и d(e, i, m–1) = d(e, i, m) для каждого узла e из C(i, m). Здесь и далее под операциями +, – и ^ понимается сложение, вычитание и возведение в степень при записи IP-адреса и сетевой маски в виде десятичного целого.
2. Если m-ый бит слева адреса i равен 1, сеть (i–2^(h–m), m) не входит ни в список T, ни в список N и сеть (i–2^(h–m), m–1) не входит в список N, то (i, m) удаляется из T, а (i–2^(h–m), m–1) добавляется в T, причём C(i–2^(h–m), m–1) = C(i, m), и d(e, i–2^(h–m), m–1) = d(e, i, m) для каждого узла e из C(i, m).
3. Если m-ый бит слева адреса i равен 0, сеть (i+2^(h–m), m) входит в список T, сеть (i, m–1) не входит в список N и множества узлов из списков C(i, m) и C(i+2^(h–m), m) имеют непустое пересечение, то (i, m) и (i+2^(h–m), m) удаляются из T, а (i, m–1) добавляется в T, причём C(i, m–1) равен пересечению C(i, m) и C(i+2^(h–m), m), а d(e, i, m–1) равен максимуму d(e, i, m) и d(e, i+2^(h–m), m) для всех e из C(i, m–1).
4. Если m-ый бит слева адреса i равен 0, сеть (i+2^(h–m), m) не входит в список T, но сеть (i+2^(h–m), m) и/или сеть (i, m–1) входит в список N, то (i, m) удаляется из T, а (e, i, m) добавляется в список R, где e – узел из C(i, m) с минимальным d(e, i, m).
5. Если m-ый бит слева адреса i равен 1, сеть (i–2^(h–m), m) не входит в список T, но сеть (i–2^(h–m), m) и/или сеть (i–2^(h–m), m–1) входит в список N, то (i, m) удаляется из T, а (e, i, m) добавляется в список R, где e – узел из C(i, m) с минимальным d(e, i, m).
6. Если m-ый бит слева адреса i равен 0, сеть (i+2^(h–m), m) входит в список T, но сеть (i, m–1) входит в список N и/или множества узлов из списков C(i, m) и C(i+2^(h–m), m) имеют пустое пересечение, то (i, m) и (i+2^(h–m), m) удаляются из T, а (e1, i, m) и (e2, i+2^(h–m), m) добавляются в список R, где e1 – узел из C(i, m) с минимальным d(e1, i, m), а e2 – узел из C(i+2^(h–m), m) с минимальным d(e2, i+2^(h–m), m).
После завершения цикла, если список T не пуст, для каждой сети (i, m) из списка T производится добавление (e, i, m) в список R, где e – узел из C(i, m) с минимальным d(e, i, m). Затем список R передаётся подсистеме балансирования нагрузки 2 сети CDN.
В дополнительном варианте осуществления в цикле по m для всех (i, m) из списка T если m-ый бит слева адреса i равен 0, сеть (i+2^(h–m), m) входит в список T, сеть (i, m–1) не входит в список N и множества узлов из списков C(i, m) и C(i+2^(h–m), m) имеют непустое пересечение, то d(e, i, m–1) = d(e, i, m) + d(e, i+2^(h–m), m) для всех e из C(i, m–1). Также если m-ый бит слева адреса i равен 0, сеть (i+2^(h–m), m) не входит ни в список T, ни в список N и сеть (i, m–1) не входит в список N, то d(e, i, m–1) = 2*d(e, i, m) для всех e из C(i, m–1). Также если m-ый бит слева адреса i равен 1, сеть (i–2^(h–m), m) не входит ни в список T, ни в список N и сеть (i–2^(h–m), m–1) не входит в список N, то d(e, i–2^(h–m), m–1) = 2*d(e, i, m) для всех e из C(i–2^(h–m), m–1). Замена максимума на сумму и удвоение может производиться в тех случаях, когда предпочтительна минимизация средней сетевой задержки минимизации наихудшей сетевой задержки.
В дополнительном варианте осуществления в цикле по m для всех (i, m) из списка T если m-ый бит слева адреса i равен 0, сеть (i+2^(h–m), m) входит в список T, сеть (i, m–1) не входит в список N и множества узлов из списков C(i, m) и C(i+2^(h–m), m) имеют пустое пересечение, то (i, m) и (i+2^(h–m), m) удаляются из T, (i, m–1) добавляется в T, и либо C(i, m–1) = C(i, m), d(e, i, m–1) = d(e, i, m) и (e, i+2^(h–m), m) добавляется в список R, где e – узел из C(i+2^(h–m), m) с минимальным d(e, i+2^(h–m), m), либо C(i, m–1) = C(i+2^(h–m), m), d(e, i, m–1) = d(e, i+2^(h–m), m) и (e, i, m) добавляется в список R, где e – узел из C(i, m) с минимальным d(e, i, m). Иными словами, одна из сетей заменяется сетью с на единицу меньшей маской, а другая переносится в список R. Выбор сети, которая будет заменена на сеть с на единицу меньшей маской, осуществляется таким образом, чтобы обеспечить объединение с другими сетями из списка T на как можно большем количестве последующих итераций цикла в пределах заданной глубины поиска. В том случае, если в пределах заданной глубины поиска количество объединений совпадает, выбор осуществляется так, чтобы минимизировать наименьшее значение d(e, i, m) после этих объединений, а в случае совпадения значений d(e, i, m) – случайным образом. Например, если нам необходимо осуществить выбор между сетью (i1, m) с C(i1, m) = {e1, e2} и сетью (i2, m) с C(i2, m) = {e3, e4}, при этом на следующем шаге предстоит объединение с сетью (i3, m–1) с C(i3, m–1) = {e1, e3, e4}, а через шаг после этого с сетью (i4, m–2) с C(i4, m–2) = {e1, e5} (фиг. 2), то для сохранения в списке T будет выбрана сеть (i1, m), т.к. хотя обе рассматриваемые сети могут участвовать в объединении на следующем шаге, через один шаг объединение возможно только в случае выбора сети (i1, m) (фиг. 3). В том случае, когда возможны различные варианты списка C на следующем шаге, рассматриваются все возможные комбинации. Например, если нам необходимо заменить на (i1, m–1) либо сеть (i1, m) с C(i1, m) = {e1, e2}, либо сеть (i2, m) с C(i2, m) = {e3, e4}, а также заменить на (i3, m–1) либо сеть (i3, m) с C(i3, m) = {e2, e5}, либо сеть (i4, m) с C(i4, m) = {e6, e7}, причём на следующем шаге предстоит объединение сетей (i1, m–1) и (i3, m–1) (фиг. 4), то будут выбраны сети (i1, m) и (i3, m), т.к. эта единственная пара, которая может объединиться на следующем шаге (на основе узла e2) (фиг. 5).
Подсистема балансирования нагрузки 2 сети CDN осуществляет выбор оптимального узла сети CDN на основе IP-адреса пользователя. При выявлении префиксов, которые могут нуждаться в разделении, подсистема передаёт их список S, а также список всех прочих префиксов N и список узлов 3 сети CDN L подсистеме 1 оптимизации префиксов. Выявление предполагаемых к разделению префиксов может осуществляться на основе статистических данных, результатов измерений, административной конфигурации, либо иным образом.
При получении списка R от подсистемы 1 оптимизации префиксов подсистема балансирования нагрузки 2 сети CDN удаляет все предполагавшиеся для разделения сетевые префиксы (список S), и добавляет префиксы (i, m) с оптимальным узлом e, где (e, i, m) – элемент списка R.
В дополнительном варианте осуществления если несколько узлов сети CDN обладают схожими сетевыми характеристиками – расположены в географической близости, подключены к одинаковому набору операторов связи и прочее, то при формировании списка L в него может быть включён только один узел из каждой группы подобных узлов. В качестве критерия выбора может выступать текущая нагрузка на узел, аппаратно-технические характеристики узла, административная конфигурация, или иной критерий. При этом при получении списка R оптимальный узел e может быть заменён на другой узел со схожими сетевыми характеристиками, причём замена может осуществляться случайным образом, путём поочерёдного выбора узлов из группы, или иным образом.
Узлы 3 сети CDN предоставляют данные в ответ на запросы клиентов сети CDN. При получении списка A от подсистемы 1 оптимизации префиксов производится попытка измерения сетевых задержек для каждого IP-адреса из списка путём отправки ICMP Echo запросов, попытки установки TCP-соединения, или иным образом. Результаты измерений, состоящие из списка адресов, для которых удалось измерить сетевую задержку, и величины задержки для каждого из них, передаются подсистеме оптимизации префиксов.
В дополнительном варианте осуществления если узел 3 сети CDN не смог измерить сетевую задержку для IP-адреса, однако ранее сетевая задержка для данного адреса была успешно измерена, данный адрес и результат его последнего успешного измерения могут быть переданы подсистеме оптимизации префиксов 1.
Ниже приведён пример осуществления предложенного способа.
Пусть сеть CDN состоит из узлов L = {node1, node2, node3}
Пусть список предполагаемых для разделения сетевых префиксов S = {10.0.0.0/24, 10.0.1.0/24, 10.0.2.0/24}
Пусть список всех прочих префиксов N = {10.0.0.0/23, 10.0.2.18/32, 10.0.3.0/24}
Тогда список A, включающий все IP-адреса, входящие хотя бы в один из префиксов из списка S, будет содержать все IP-адреса в диапазоне 10.0.0.0-10.0.2.255 (768 адресов).
Пусть среди этих 768 адресов были успешно измерены следующие задержки:
• На node1 - 10.0.0.1 (25мс), 10.0.0.2 (25мс), 10.0.0.10 (30мс), 10.0.2.17 (10мс).
• На node2 - 10.0.0.1 (30мс), 10.0.0.10 (10мс), 10.0.2.16 (10мс).
• На node3 - 10.0.0.2 (20мс), 10.0.0.10 (15мс), 10.0.2.18 (10мс).
Пусть максимально допустимая разница задержек составляет 5мс.
Тогда список T будет содержать IP-адреса {10.0.0.1/32, 10.0.0.2/32, 10.0.0.10/32, 10.0.2.16/32, 10.0.2.17/32}, причём:
• С(10.0.0.1, 32) = {node1, node2}, d(node1, 10.0.0.1, 32) = 0, d(node2, 10.0.0.1, 32) = 5
• С(10.0.0.2, 32) = {node1, node3}, d(node1, 10.0.0.2, 32) = 5, d(node3, 10.0.0.2, 32) = 0
• С(10.0.0.10, 32) = {node2, node3}, d(node2, 10.0.0.10, 32) = 0, d(node3, 10.0.0.10, 32) = 5
• С(10.0.2.16, 32) = {node2}, d(node2, 10.0.2.16, 32) = 0
• С(10.0.2.17, 32) = {node1}, d(node1, 10.0.2.17, 32) = 0
В список T не входит адрес 10.0.2.18/32, т.к. он входит в список N. С(10.0.0.10, 32) не включает node1, т.к. время отклика с этого узла отличается от наилучшего больше чем на 5мс.
В этот момент список R пуст.
Далее выполняется цикл по маске m:
• m = 32:
• Для 10.0.0.1/32. Сеть 10.0.0.0/32 не входит ни в список T, ни в список N и сеть 10.0.0.0/31 не входит в список N, поэтому 10.0.0.1/32 заменяется на 10.0.0.0/31
• Для 10.0.0.2/32. Сеть 10.0.0.3/32 не входит ни в список T, ни в список N и сеть 10.0.0.2/31 не входит в список N, поэтому 10.0.0.2/32 заменяется на 10.0.0.2/31
• Для 10.0.0.10/32. Сеть 10.0.0.11/32 не входит ни в список T, ни в список N и сеть 10.0.0.10/31 не входит в список N, поэтому 10.0.0.10/32 заменяется на 10.0.0.10/31
• Для 10.0.2.16/32. Сеть 10.0.2.17/32 входит в список T, но С(10.0.2.16, 32) и С(10.0.2.17, 32) имеют пустое пересечение, поэтому 10.0.2.16/32 и 10.0.2.17/32 удаляются из списка T и добавляются в список R.
• Итог шага: T = {10.0.0.0/31, 10.0.0.2/31, 10.0.0.10/31} С(10.0.0.0, 31) = {node1, node2}, d(node1, 10.0.0.0, 31) = 0, d(node2, 10.0.0.0, 31) = 5
С(10.0.0.2, 31) = {node1, node3}, d(node1, 10.0.0.2, 31) = 5, d(node3, 10.0.0.2, 31) = 0
С(10.0.0.10, 31) = {node2, node3}, d(node2, 10.0.0.10, 31) = 0, d(node3, 10.0.0.10, 31) = 5
R = {(node2, 10.0.2.16, 32), (node1, 10.0.2.17, 32)}
• m = 31:
• Для 10.0.0.0/31. Сеть 10.0.0.2/31 входит ни в список T, не входи в список N и С(10.0.0.0, 31) и С(10.0.0.2, 31) имеют непустое пересечение, поэтому 10.0.0.0/31 и 10.0.0.2/31 заменяется на 10.0.0.0/30, С(10.0.0.0, 30) = {node1}, а d(node1, 10.0.0.0, 31) = 5.
• Для 10.0.0.10/31. Сеть 10.0.0.8/31 не входит ни в список T, ни в список N и сеть 10.0.0.8/30 не входит в список N, поэтому 10.0.0.10/31 заменяется на 10.0.0.8/30
• Итог шага: T = {10.0.0.0/30, 10.0.0.8/30} С(10.0.0.0, 30) = {node1}, d(node1, 10.0.0.0, 30) = 5
С(10.0.0.8, 30) = {node2, node3}, d(node2, 10.0.0.8, 30) = 0, d(node3, 10.0.0.8, 30) = 5
R = {(node2, 10.0.2.16, 32), (node1, 10.0.2.17, 32)}
R = {(node2, 10.0.2.16, 32), (node1, 10.0.2.17, 32)}
• m = 30:
• Для 10.0.0.0/30. Сеть 10.0.0.4/30 не входит ни в список T, ни в список N и сеть 10.0.0.0/29 не входит в список N, поэтому 10.0.0.0/30 заменяется на 10.0.0.0/29
• Для 10.0.0.8/30. Сеть 10.0.0.12/30 не входит ни в список T, ни в список N и сеть 10.0.0.8/29 не входит в список N, поэтому 10.0.0.8/30 заменяется на 10.0.0.8/29
• Итог шага: T = {10.0.0.0/29, 10.0.0.8/29} С(10.0.0.0, 29) = {node1}, d(node1, 10.0.0.0, 29) = 5
С(10.0.0.8, 29) = {node2, node3}, d(node2, 10.0.0.8, 29) = 0, d(node3, 10.0.0.8, 29) = 5
R = {(node2, 10.0.2.16, 32), (node1, 10.0.2.17, 32)}
R = {(node2, 10.0.2.16, 32), (node1, 10.0.2.17, 32)}
• m = 29:
• Для 10.0.0.0/29. Сеть 10.0.0.4/30 не входит ни в список T, ни в список N и сеть 10.0.0.0/29 не входит в список N, поэтому 10.0.0.0/30 заменяется на 10.0.0.0/29
• Для 10.0.0.8/30. Сеть 10.0.0.12/30 не входит ни в список T, ни в список N и сеть 10.0.0.8/29 не входит в список N, поэтому 10.0.0.8/30 заменяется на 10.0.0.8/29
• Итог шага: T = {10.0.0.0/29, 10.0.0.8/29} С(10.0.0.0, 29) = {node1}, d(node1, 10.0.0.0, 29) = 5
С(10.0.0.8, 29) = {node2, node3}, d(node2, 10.0.0.8, 29) = 0, d(node3, 10.0.0.8, 29) = 5
R = {(node2, 10.0.2.16, 32), (node1, 10.0.2.17, 32)}
R = {(node2, 10.0.2.16, 32), (node1, 10.0.2.17, 32)}
• m = 28:
• Для 10.0.0.0/29. Сеть 10.0.0.8/29 входит в список T, но С(10.0.0.0, 29) и С(10.0.0.8, 29) имеют пустое пересечение, поэтому 10.0.0.0/29 и 10.0.0.8/29 удаляются из списка T и добавляются в список R.
• Итог шага: T = {}
R = {(node1, 10.0.0.0, 29), (node2, 10.0.0.8, 29), (node2, 10.0.2.16, 32), (node1, 10.0.2.17, 32)}
Список T опустел, поэтому цикл завершён.
Сети 10.0.0.0/24, 10.0.1.0/24 и 10.0.2.0/24 были успешно разделены на 10.0.0.0/29, 10.0.0.8/29, 10.0.2.16/32 и 10.0.2.17/32.
Итоговая таблица балансировки будет следующей:
• 10.0.0.0/23 => some_node
• 10.0.0.0/29 => node1
• 10.0.0.8/29 => node2
• 10.0.2.16/32 => node2
• 10.0.2.17/32 => node1
• 10.0.2.18/32 => some_node
• 10.0.3.0/24 => some_node
Из изложенного выше специалисту будет понятно, что заявленное изобретение оптимизирует количество добавляемых префиксов и повышает точность разделения сетей на подсети в том случае, если сетевая задержка части адресов сети не доступна для измерения.
Хотя выше был описан предпочтительный вариант осуществления настоящего изобретения, специалисту будет понятно, что настоящее изобретение не ограничено этим предпочтительным вариантом осуществления. Более того, различные изменения и модификации могут быть выполнены в пределах сущности и объёма настоящего изобретения, как определено в следующей ниже формуле изобретения.
Claims (17)
1. Способ разделения географически распределённых IP-сетей на подсети, характеризующийся тем, что
получают список предполагаемых для разделения сетевых префиксов S, список всех прочих префиксов N и список узлов сети CDN L,
затем генерируют список IP-адресов A, включающий все IP-адреса, входящие хотя бы в один из префиксов из списка S, далее список A передают на все узлы сети CDN из списка L для осуществления измерения сетевых задержек,
после получения результатов измерений сетевых задержек от узлов из списка L определяют минимальную сетевую задержку и строят временный список сетей T, состоящий из IP-сетей минимального размера и содержащий все IP-адреса из списка A, сетевая задержка которых была успешно измерена хотя бы с одного узла, при условии, что данная сеть не принадлежит списку N,
также для каждой сети (i, m) из списка T, где i – IP-адрес сети, а m – маска сети, запоминают метрику, состоящую из списка узлов сети CDN C(i, m) и значения разницы d(e, i, m) между измеренной с узла e сетевой задержкой сети (i, m) и минимальной сетевой задержкой для сети (i, m) среди всех узлов сети CDN, успешно измеривших сетевую задержку данной сети,
при этом если сетевая задержка не была успешно измерена с узла e либо если значение разницы d(e, i, m) превышает заданную величину, узел e и его d(e, i, m) не включают в метрику,
также создают пустой список R, элементами которого являются тройки (e, i, m),
далее каждую IP-сеть в списке T заменяют содержащей её IP-сетью с на единицу меньшей маской сети в том случае, если новая IP-сеть содержит только одну IP-сеть из списка T в качестве подсети, при этом метрику копируют,
также две IP-сети из списка T, входящие в одну и ту же IP-сеть с на единицу меньшей маской сети, заменяют этой сетью в том случае, если их метрики содержат хотя бы один общий узел, при этом метрика новой сети состоит из узлов, присутствующих в каждой из заменяемых сетей, со значением d(e, i, m), равным максимальному из значений d(e, i, m) заменяемых сетей,
в случае, когда замена двух IP-сетей по указанному критерию невозможна либо когда IP-сеть с на единицу меньшей маской сети будет совпадать с не предполагаемым для разделения сетевым префиксом либо содержать не предполагаемый для разделения сетевой префикс в качестве подсети, рассматриваемую IP-сеть либо пару IP-сетей удаляют из списка T и добавляют в список R, при этом для каждой добавляемой в список R сети также запоминают узел из её метрики с минимальным значением d(e, i, m),
этот процесс продолжают до тех пор, пока список T не опустеет либо пока в нём не останется IP-сетей с сетевыми масками больше заданной величины, и в этом случае оставшиеся в списке T сети также переносят в список R,
полученные IP-сети из списка R заменяют разделённые сетевые префиксы в подсистеме балансирования нагрузки сети CDN.
2. Способ по п.1, в котором при объединении двух IP-сетей из списка T значение d(e, i, m) новой сети вычисляют как сумму значений d(e, i, m) заменяемых сетей, а при замене IP-сети из списка T на IP-сеть с на единицу меньшей маской сети значение разницы d(e, i, m) удваивают.
3. Способ по п.1, в котором в случае невозможности объединения двух IP-сетей, одну из них удаляют из списка T и добавляют в список R, а другую – заменяют в списке T на IP-сеть с на единицу меньшей маской сети.
4. Способ по п.1, в котором если узел сети CDN не смог измерить сетевые задержки для IP-адреса, однако такие измерения были успешны ранее, используют результаты последнего успешного измерения.
5. Способ по п.1, в котором измерение сетевых задержек производят только для части входящих в предполагаемый для разделения сетевой префикс IP-адресов.
6. Способ по п.1, в котором если несколько узлов сети CDN обладают схожими сетевыми характеристиками, измерения производят только с одного из этих узлов, а при добавлении IP-сетей в систему балансирования нагрузки сети CDN оптимальный узел заменяют на узел со схожими сетевыми характеристиками.
Publications (1)
Publication Number | Publication Date |
---|---|
RU2777809C1 true RU2777809C1 (ru) | 2022-08-10 |
Family
ID=
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6262988B1 (en) * | 1998-03-11 | 2001-07-17 | Cisco Technology, Inc. | Method and system for subnetting in a switched IP network |
RU2476996C2 (ru) * | 2007-12-18 | 2013-02-27 | Таль Аления Спейс Италия С.П.А. | Способ синхронизации узлов сети, система и устройство для его осуществления |
US8625420B2 (en) * | 2005-05-09 | 2014-01-07 | Cisco Technology, Inc. | System and method for increasing granularity of prefix control in a computer network |
US9456053B2 (en) * | 2011-12-14 | 2016-09-27 | Level 3 Communications, Llc | Content delivery network |
US9621660B2 (en) * | 2008-03-31 | 2017-04-11 | Amazon Technologies, Inc. | Locality based content distribution |
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6262988B1 (en) * | 1998-03-11 | 2001-07-17 | Cisco Technology, Inc. | Method and system for subnetting in a switched IP network |
US8625420B2 (en) * | 2005-05-09 | 2014-01-07 | Cisco Technology, Inc. | System and method for increasing granularity of prefix control in a computer network |
RU2476996C2 (ru) * | 2007-12-18 | 2013-02-27 | Таль Аления Спейс Италия С.П.А. | Способ синхронизации узлов сети, система и устройство для его осуществления |
US9621660B2 (en) * | 2008-03-31 | 2017-04-11 | Amazon Technologies, Inc. | Locality based content distribution |
US9456053B2 (en) * | 2011-12-14 | 2016-09-27 | Level 3 Communications, Llc | Content delivery network |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10200402B2 (en) | Mitigating network attacks | |
US6850984B1 (en) | System for isolating other clients that experience different connection performance than the client and directing the other clients to another different mirrored server | |
US9794281B1 (en) | Identifying sources of network attacks | |
US9742795B1 (en) | Mitigating network attacks | |
Wang et al. | Defense against spoofed IP traffic using hop-count filtering | |
CN1491507B (zh) | 用于多个主机任意播放路由选择的方法和系统 | |
Krishnamurthy et al. | On network-aware clustering of web clients | |
EP3780552B1 (en) | Message processing method in distributed device and distributed device | |
US7020698B2 (en) | System and method for locating a closest server in response to a client domain name request | |
Poese et al. | Enabling content-aware traffic engineering | |
US7751331B1 (en) | Technique for policy conflict resolution using priority with variance | |
US6249801B1 (en) | Load balancing | |
KR20050018950A (ko) | 분산된 서비스 거부 공격에 대한 컨텐츠 분산 네트워크의회복력을 향상시키는 방법 및 장치 | |
US20030195984A1 (en) | Load balancing | |
WO2002017110A1 (en) | Method and system for optimizing routing through multiple available internet route providers | |
US20060239196A1 (en) | System and method for performing load balancing across a plurality of servers | |
US11153265B1 (en) | Decoupling of IP address bindings and use in a distributed cloud computing network | |
Wang | An elastic and resiliency defense against DDoS attacks on the critical DNS authoritative infrastructure | |
Aubry et al. | Traffic duplication through segmentable disjoint paths | |
RU2777809C1 (ru) | Способ разделения географически распределённых IP-сетей на подсети для систем балансирования нагрузки сетей CDN | |
Schomp et al. | Partitioning the internet using anycast catchments | |
JP5648560B2 (ja) | トラフィックエンジニアリング装置、トラフィックエンジニアリング方法およびプログラム | |
EP1327195A1 (en) | Method and apparatus for dynamic determination of optimum connection of a client to content servers | |
CN114827015B (zh) | 一种数据转发方法和虚拟化云网络架构 | |
JP5283271B2 (ja) | ネットワークにおけるサーバ選択方法,選択システム及びプログラム |