СПОСОБ И УСТРОЙСТВО ДЛЯ РАЗДЕЛЕНИЯ НАГРУЗКИ
METHOD AND DEVICE FOR LOAD SHARING

Область техники
Настоящее изобретение относится к технологии разделения нагрузки при передаче данных по сети, а именно, к способу и устройству для разделения нагрузки.
Предпосылки создания изобретения
Трансляция сетевых адресов (Network Address Translation, NAT), являющаяся технологией трансляции частных адресов в адреса протокола Интернета (Internet Protocol, IP), широко применяется в множестве различных типов доступа к Интернет и в различных типах сетей. Технология NAT позволяет множеству компьютеров в частной сети совместно использовать линию связи с Интернет, благодаря чему эффективно решается проблема ограниченности ресурсов публичных IP-адресов.
Устройства NAT операторского класса (Garrier Grade NAT, CGN), развертываемые на стороне оператора связи, позволяют обеспечить плавный переход от протокола Интернета версии 4 (IPv4) к протоколу Интернета версии 6 (IPv6) и поддерживают процесс эволюции сетей за счет интеграции множества эволюционных механизмов, включая туннелирование и NAT. Виды трансляции адресов в CGN включают: трансляцию частных сетевых адресов IPv4 в публичные сетевые адреса IPv4, трансляцию частных адресов IPv4 в адреса IPv6 и трансляцию адресов IPv6 в публичные адреса IPv4 и т.п. Для повышения производительности CGN в большинстве случаев применяют независимый процессорный блок. Такой процессорный блок может представлять собой одноядерный процессорный блок или многоядерный процессорный блок. В настоящее время, с целью оптимизации центрального процессорного блока (Central Processing Unit, CPU) многоядерного процессорного блока, в многоядерных процессорных блоках применяют ту или иную форму разделения нагрузки
Разделение нагрузки может представлять собой разделение нагрузки в отношении ресурсов публичных сетевых адресов и разделение нагрузки в отношении пользовательских устройств. Ресурсы публичных сетевых адресов могут хэшироваться в различные CPU при помощи метода хэш-функции, чтобы при назначении ресурсов публичных сетевых адресов и пользовательских устройств мог быть реализован эффект сбалансированного разделения нагрузки. Однако, если хэширование выполняется единственным ресурсом публичных сетевых адресов, блок пересылки и процессорный блок устройства CGN должны иметь относительно высокую производительность. Если хэширование выполняется фиксированным блоком публичных сетевых адресов, то, поскольку в устройстве CGN может присутствовать различное количество процессорных блоков, а в каждом процессорном блоке может иметься различное количество CPU, возникает проблема неэффективного разделения нагрузки.
Сущность изобретения
В свете описанного выше, основная цель вариантов осуществления настоящего изобретения - предложить способ и устройство для разделения нагрузки, позволяющие решить проблему несбалансированного разделения нагрузки при реализации NAT на множестве CPU.
Для достижения этой цели техническое решение, предложенное в одном из вариантов осуществления настоящего изобретения, реализуют описанным ниже образом.
В одном из вариантов осуществления настоящего изобретения предложен способ разделения нагрузки. Способ включает следующее:
публичные сетевые адреса конфигурируют в форме адресных пулов;
после приема трафика, переданного пользовательскими устройствами, эти пользовательские устройства группируют согласно моделям трафика, передаваемого пользовательскими устройствами; при помощи центральных процессорных блоков (CPU) назначают публичные сетевые адреса для упомянутых пользовательских устройств и транслируют частные сетевые адреса в публичные сетевые адреса,
при этом каждый из упомянутых адресных пулов включает множество адресных блоков, и каждый из упомянутых адресных блоков соответствует одному CPU, каждая группа пользователей включает множество блоков пользователей, и каждый блок из упомянутого множества блоков пользователей соответствует одному CPU.
В данном решении способ может дополнительно включать следующее:
формируют маркерную таблицу разделения нагрузки ресурсов публичных сетевых адресов, в соответствии с линиями передачи данных адресных ресурсов, соответствующими упомянутым адресным пулам; формируют маркерную таблицу разделения нагрузки пользовательских устройств, в соответствии с линиями передачи данных пользователей, соответствующим группам пользователей, при этом линии передачи данных адресных ресурсов формируют в соответствии с упомянутыми адресными пулами, а линии передачи данных пользователей формируют в соответствии с упомянутыми группами пользователей;
управляющую информацию разделения нагрузки, сформированную в соответствии с упомянутой маркерной таблицей разделения нагрузки ресурсов публичных сетевых адресов и упомянутой маркерной таблицей разделения нагрузки пользовательских устройств, передают в блоки CPU;
соответственно, операция назначения, упомянутыми блоками CPU, публичных сетевых адресов упомянутым пользовательским устройствам, и трансляции частных сетевых адресов этих пользовательских устройств в публичные сетевые адреса может включать следующее:
назначение, упомянутыми блоками CPU, в соответствии с принятой управляющей информацией разделения нагрузки, публичных сетевых адресов упомянутым пользовательским устройствам и трансляцию частных сетевых адресов этих пользовательских устройств в публичные сетевые адреса.
В данном решении каждый из блоков CPU может соответствовать по существу одинаковому количеству сетевых адресов в каждом из адресных пулов, при этом конфетный способ реализации может включать:
каждому из упомянутых блоков CPU назначают определенное количество публичных сетевых адресов, при этом упомянутое количество назначенных публичных сетевых адресов является произведением целочисленного значения, полученного делением общего количества публичных сетевых адресов в текущем адресном пуле на количество блоков CPU в квадрате, и количества блоков CPU; если еще имеются оставшиеся публичные сетевые адреса, то определенное количество публичных сетевых адресов назначают каждому из блоков CPU, при этом упомянутое количество назначенных сетевых адресов является целочисленным значением, полученным делением количества оставшихся публичных сетевых адресов на количество блоков CPU; если еще имеются оставшиеся публичные сетевые адреса, то эти оставшиеся публичные сетевые адреса в каждом из упомянутых адресных пулов, передают как единое целое, чтобы обеспечить соответствие каждого из блоков CPU по существу одинаковому количеству публичных сетевых адресов.
В данном решении между упомянутыми блоками CPU может быть разделено по существу одинаковое количество пользовательских устройств, при этом конфетный способ реализации может включать следующее:
каждому из упомянутых блоков CPU назначают определенное количество пользовательских устройств, при этом упомянутое количество назначенных пользовательских устройств представляет собой произведение целочисленного значения, которое получают делением общего количества пользовательских устройств в текущей группе пользователей на количество упомянутых блоков CPU в квадрате, и количества упомянутых блоков CPU; если еще имеются оставшиеся пользовательские устройства, каждому из упомянутых блоков CPU назначают определенное количество пользовательских устройств, при этом упомянутое количество назначенных пользовательских устройств представляет собой целочисленное значение, полученное делением количества оставшихся пользовательских устройств на количество упомянутых блоков CPU; если еще имеются оставшиеся пользовательские устройства, то эти оставшиеся пользовательские устройства в каждой группе пользователей передают как единое целое, в целях назначения по существу одинакового количества пользовательских устройств каждому из упомянутых блоков CPU.
В данном решении каждый из упомянутых адресных пулов может соответствовать одной линии передачи данных ресурсов публичных сетевых адресов, при этом количество узлов в этой линии передачи данных ресурсов публичных сетевых адресов может быть равно количеству блоков CPU, и каждый из узлов может соответствовать одному блоку CPU, при этом каждый из узлов может включать метку блока и хвостовую метку.
В данном решении каждая группа пользователей может соответствовать одной линии передачи данных пользователей, при этом количество узлов в линии передачи данных пользователей может быть равно количеству блоков CPU, и каждый из узлов может соответствовать одному блоку CPU, и при этом каждый из узлов может включать метку блока и хвостовую метку.
В одном из вариантов осуществления настоящего изобретения предложено также устройство для разделения нагрузки. Устройство для разделения нагрузки включает конфигурационный модуль разделения нагрузки, модуль управления разделением нагрузки и блоки CPU, при этом
упомянутый конфигурационный модуль разделения нагрузки сконфигурирован для конфигурирования публичных сетевых адресов в форме адресных пулов, и для группирования пользовательских устройств согласно моделям трафика, передаваемого этими пользовательскими устройствами;
при этом каждый из упомянутых адресных пулов включает множество адресных блоков, и при этом каждый из упомянутых адресных блоков соответствует одному CPU, каждая группа пользователей включает множество блоков пользователей, и каждый блок из упомянутого множества блоков пользователей соответствует одному CPU.
упомянутый модуль управления разделением нагрузки сконфигурирован для передачи управляющей информации разделения нагрузки в упомянутые блоки CPU; и
упомянутые блоки CPU сконфигурированы для назначения упомянутых публичных сетевых адресов упомянутым пользовательским устройствам согласно принятой управляющей информации разделения нагрузки и для трансляции частных сетевых адресов упомянутых пользовательских устройств в публичные сетевые адреса.
В данном решении модуль управления разделением нагрузки может быть сконфигурирован для формирования, в соответствии с линиями передачи данных ресурсов публичных сетевых адресов, маркерной таблицы разделения нагрузки ресурсов публичных сетевых адресов; и для формирования, в соответствии с линиями передачи данных пользователей, маркерной таблицы разделения нагрузки пользовательских устройств, и для предоставления в блоки CPU управляющей информации разделения нагрузки, сформированной в соответствии с маркерной таблицей разделения нагрузки ресурсов публичных сетевых адресов и маркерной таблицей разделения нагрузки пользовательских устройств.
В данном решении каждый из упомянутых адресных пулов может соответствовать одной линии передачи данных ресурсов публичных сетевых адресов, при этом количество узлов в этой линии передачи данных ресурсов публичных сетевых адресов может быть равно количеству блоков CPU, и каждый из узлов может соответствовать одному блоку CPU, и при этом каждый из узлов может включать метку блока и хвостовую метку;
каждая группа пользователей может соответствовать одной линии передачи данных пользователей, при этом количество узлов в линии передачи данных пользователей может быть равно количеству блоков CPU, и каждый из узлов может соответствовать одному блоку CPU, при этом каждый из узлов может включать метку блока и хвостовую метку.
В данном решении упомянутый конфигурационный модуль разделения нагрузки и модуль управления разделением нагрузки могут быть установлены в устройстве CGN.
В соответствии со способом и устройством для разделения нагрузки, предложенными в вариантах осуществления настоящего изобретения, публичные сетевые адреса конфигурируют в форме адресных пулов, таким образом, чтобы блоки CPU соответствовали по существу одинаковому количеству публичных сетевых адресов в каждом из адресных пулов; после приема трафика, переданного пользовательскими устройствами, эти пользовательские устройства группируют согласно моделям трафика, передаваемого пользовательскими устройствами, таким образом, чтобы между блоками CPU было разделено по существу одинаковое количество пользовательских устройств; блоки CPU назначают публичные сетевые адреса пользовательским устройствам и транслируют частные сетевые адреса пользовательских устройств в публичные сетевые адреса, за счет чего решается проблема неравномерного разделения ресурсов публичных сетевых адресов по различным блоков CPU и неравномерного разделения нагрузки от различных пользовательских устройств, а также достигается снижение влияния, оказываемого добавлением или удалением части ресурсов публичных сетевых адресов и пользовательских устройств, на общую производительность CGN. Технические решения, предложенные в вариантах осуществления настоящего изобретения, не только позволяют повысить скорость обработки данных блоками CPU для трансляции адресов, но и позволяют также достичь эффекта балансировки нагрузки на различные блоки CPU.
Краткое описание чертежей
Фиг. 1 представляет собой схему процесса реализации способа разделения нагрузки в соответствии с одним из вариантов осуществления настоящего изобретения;
Фиг. 2 представляет собой структурную схему линии передачи данных ресурсов публичных сетевых адресов в соответствии с одним из вариантов осуществления настоящего изобретения;
Фиг. 3 представляет собой эскизную схему линии передачи данных пользователей в соответствии с одним из вариантов осуществления настоящего изобретения;
Фиг. 4 представляет собой структурную схему компонентов устройства для разделения нагрузки в соответствии с одним из вариантов осуществления настоящего изобретения; и
Фиг. 5 представляет собой эскизную схему разделения нагрузки CGN в соответствии с одним из вариантов осуществления настоящего изобретения.
Подробное описание изобретения
Далее настоящее изобретение будет описано более подробно в сочетании с приложенными чертежами и конкретными вариантами его осуществления.
Фиг. 1 представляет собой схему процесса реализации способа разделения нагрузки в соответствии с одним из вариантов осуществления настоящего изобретения. В соответствии с иллюстрацией фиг. 1, способ включает следующие шаги.
На шаге 101 публичные сетевые адреса конфигурируют в форме адресных пулов;
при этом каждый из адресных пулов включает множество адресных блоков, и каждый из этого множества адресных блоков соответствует одному CPU.
В вариантах осуществления настоящего изобретения задается множество адресных пулов. Количество адресных пулов может быть определено согласно требованиям конфетного практического применения. Каждый из адресных пулов включает несколько публичных сетевых адресов. Каждый из адресных пулов может включать одинаковое количество публичных сетевых адресов, или может включать отличающееся количество публичных сетевых адресов, при этом каждый из адресных пулов включает публичные сетевые адреса, соответствующие каждому из CPU. Каждый из CPU соответствует по существу одинаковому количеству сетевых адресов в каждом из адресных пулов. Например, могут присутствовать три адресных пула, которыми, соответственно, являются адресный пул А, адресный пул В и адресный пул С, два CPU, которыми соответственно являются CPU1 и CPU2, и двенадцать публичных сетевых адресов. В данном примере количество публичных сетевых адресов, входящих, соответственно, в адресный пул А, адресный пул В и адресный пул С, может конфигурироваться гибким образом. То есть, адресный пул А, адресный пул В и адресный пул С могут включать различное количество публичных сетевых адресов. Например, адресный пул А включает восемь публичных сетевых адресов, адресный пул В может включать три публичных сетевых адреса, а адресный пул С включает один публичный сетевой адрес. В идеальном случае адресный пул А, адресный пул В и адресный пул С включают, соответственно, по четыре публичных сетевых адреса, и при этом в каждом из адресных пулов два публичных сетевых адреса соответствуют CPU1 и два публичных сетевых адреса соответствуют CPU2.
На шаге 102 после приема трафика, переданного пользовательскими устройствами, пользовательские устройства группируют согласно моделям трафика, передаваемого этими пользовательскими устройствами. Блоки CPU назначают публичные сетевые адреса для этих пользовательских устройств и транслируют частные сетевые адреса пользовательских устройств в публичные сетевые адреса,
при этом каждая группа включает множество блоков пользователей, и каждый блок из этого множества блоков пользователей соответствует одному CPU. Упомянутые модели трафика могут представлять собой модели трафика, применяемые в существующих технологиях передачи данных.
В настоящем изобретении при группировании пользовательских устройств по возможности выполняется разделение между CPU по существу одинакового количества пользовательских устройств, чтобы обеспечить сбалансированную нагрузку на эти блоки CPU. Публичные сетевые адреса, назначаемые блоками CPU пользовательским устройствам, берут из публичных сетевых адресов, соответствующих этим блокам CPU в адресных пулах.
А именно, CPU назначают публичные сетевые адреса пользовательским устройствам в соответствии с управляющей информацией разделения нагрузки, при этом управляющая информация разделения нагрузки включает маркерную таблицу разделения нагрузки ресурсов публичных сетевых адресов, сформированную в соответствии с линиями передачи данных ресурсов публичных сетевых адресов, и маркерную таблицу разделения нагрузки пользовательских устройств, сформированную в соответствии с линиями передачи данных пользователей. В настоящем изобретении под линиями передачи данных ресурсов публичных сетевых адресов понимаются структуры таблицы, предназначенные для записи состояния публичных сетевых адресов, назначенных блокам CPU в адресных пулах. Под линиями передачи данных пользователей понимаются структуры таблицы, включающие состояния нагрузки пользовательских устройств.
На практике операция по конфигурированию публичных сетевых адресов в форме адресных пулов может соответствовать иллюстрации фиг. 2. Все заранее сконфигурированные публичные сетевые адреса разбивают на части в форме адресных пулов. В настоящем документе адресные пулы могут включать одинаковое общее количество публичных сетевых адресов или различное количество публичных сетевых адресов. Однако каждый из CPU соответствует множеству адресных пулов, при этом CPU должны соответствовать по существу одинаковому количеству публичных сетевых адресов в каждом из адресных пулов. А именно, способ обеспечения по существу одинакового количества публичных сетевых адресов, соответствующих блокам CPU, для каждого из адресных пулов после выбора адресного пула включает следующее:
выполняют первое назначение публичных сетевых адресов; каждому из CPU назначают определенное количество публичных сетевых адресов, при этом упомянутое количество назначенных публичных сетевых адресов является произведением количества CPU и целочисленного значения, полученного делением общего количества публичных сетевых адресов в текущем адресном пуле на количество CPU в квадрате; если еще имеются оставшиеся публичные сетевые адреса, то выполняют второе назначение публичных сетевых адресов с целью назначения определенного количества публичных сетевых адресов каждому из CPU, при этом упомянутое количество назначенных сетевых адресов является целочисленным значением, полученным делением количества оставшихся публичных сетевых адресов на количество CPU; если еще имеются оставшиеся публичные сетевые адреса, то эти оставшиеся публичные сетевые адреса обрабатывают по отдельности; однако не более одного публичного сетевого адреса назначают каждому из CPU в ходе третьего назначения публичных сетевых адресов, то есть каждому из CPU в ходе третьего назначения публичных сетевых адресов назначают один публичный сетевой адрес или ни одного.
Операция, в которой оставшиеся публичные сетевые адреса обрабатывают по отдельности, включает следующее: оставшиеся публичные сетевые адреса в каждом из адресных пулов назначают как единое целое, чтобы каждый из CPU соответствовал по существу одинаковому количеству публичных сетевых адресов.
В данном примере публичные сетевые адреса обрабатывают как единое целое, поскольку нагрузка на CPU А будет относительно высокой, если в адресном пуле А, адресном пуле В и адресном пуле С будет присутствовать один оставшийся публичный сетевой адрес, и если из каждого адресного пула этот оставшийся сетевой адрес будет назначен CPU А. Если оставшиеся публичные сетевые адреса назначают как единое целое, из адресного пула А один оставшийся публичный сетевой адрес может быть назначен CPU А, из адресного пула В один оставшийся публичный адрес может быть назначен CPU В, а из адресного пула С один оставшийся публичный сетевой адрес может быть назначен CPU С, за счет чего каждому блоку CPU обеспечивается назначение более сбалансированного количества публичных сетевых адресов.
В соответствии с иллюстрацией фиг. 2, каждый из адресных пулов соответствует одной линии передачи данных ресурсов публичных сетевых адресов. Количество узлов в линии передачи данных ресурсов публичных сетевых адресов равно количеству блоков CPU, при этом узел каждого из звеньев данных ресурсов публичных сетевых адресов соответствует одному CPU. Каждый из узлов включает метку блока и хвостовую метку, при этом метка блока предназначена для записи адресных блоков и количества адресных блоков, назначенных при первом назначении блоком CPU, соответствующим связанному с ним узлу, а также для записи адресных блоков и количества блоков, назначенных при втором назначении блоком CPU, соответствующим связанному с ним узлу.
Хвостовая метка предназначена для записи количества публичных сетевых адресов, полученных CPU, который соответствует связанному с ним узлу, в результате третьего назначения. При этом в результате третьего назначения получают ноль или один публичных сетевых адресов, то есть хвостовая метка каждого из узлов равна 0 или 1.
В настоящем изобретении в адресных пулах единицей являются адресные блоки, при этом размер адресных блоков может изменяться. Размер адресных блоков отражает количество публичных сетевых адресов, включенных в каждый из множества адресных блоков. Размер адресных блоков, назначаемых при первом назначении, отличается от размера адресных блоков, назначаемых при втором назначении,
при этом первое назначение включает следующее: определенное количество публичных сетевых адресов назначают каждому из блоков CPU, при этом количество назначенных публичных сетевых адресов представляет собой произведение количества блоков CPU на целочисленное значение, которое получают делением общего количества публичных сетевых адресов в текущем адресном пуле на количество блоков CPU в квадрате, при этом размер адресных блоков, назначаемых при первом назначении, равен количеству блоков CPU. Количество адресных блоков, назначенных для каждого из блоков CPU, представляет собой целочисленное значение, полученное делением общего количества публичных сетевых адресов в адресном пуле на количество блоков CPU в квадрате, то есть каждый из блоков CPU, содержит одинаковое количество адресных блоков.
Следует отметить, что размер адресных блоков, назначаемых при первом назначении, связан с множеством переменных, включающих количество CPU, общее количество публичных сетевых адресов в адресных пулах и т.п. Соответственно, размер адресных блоков, назначаемых при первом назначении, может быть задан как функциональная переменная. Размер адресных блоков, назначаемых при первом назначении, может иметь множество альтернативных значений.
Второе назначение включает следующее: если после первого назначения еще имеются оставшиеся публичные сетевые адреса, каждому из CPU назначают определенное количество публичных сетевых адресов, при этом количество назначенных публичных сетевых адресов при втором назначении представляет собой целочисленное значение, полученное делением количества оставшихся публичных сетевых адресов на количество блоков CPU, при этом количество адресных блоков, назначенных при втором назначении, представляет собой целочисленное значение, полученное делением общего количества публичных сетевых адресов, оставшихся после первого назначения, на количество CPU, и каждый из CPU включает один адресный блок, назначенный при втором назначении.
Если после второго назначения еще имеются оставшиеся публичные сетевые адреса, то эти оставшиеся публичные сетевые адреса обрабатывают по отдельности. Операция, в которой оставшиеся публичные сетевые адреса обрабатывают по отдельности, включает следующее: оставшиеся публичные сетевые адреса в каждом из адресных пулов назначают как единое целое, чтобы каждый из CPU соответствовал по существу одинаковому количеству публичных сетевых адресов. В процессе назначения каждому из CPU назначают максимум один публичный сетевой адрес, то есть в процессе назначения каждому из блоков CPU назначают ноль или один публичный сетевой адрес.
Все адресные пулы могут храниться в виде таблицы данных. Каждый из узлов таблицы данных соответствует всем адресным пулам и соответствует одному CPU. Количество узлов таблицы равно количеству CPU, при этом каждый из узлов таблицы включает блок и метку, а также хвост и метку.
В настоящем изобретении блок и метка каждого из узлов таблицы предназначены для записи суммы общего количества публичных сетевых адресов, назначенных при первом назначении и при втором назначении и соответствующих CPU в каждом из адресных пулов. То есть, блок и метка в каждом из узлов таблицы предназначены для записи суммы произведений размера адресных блоков на количество адресных блоков, назначенных соответствующим CPU в адресных пулах при первом назначении, а также для записи суммы произведений размеров адресных блоков на количество адресных блоков, назначенных соответствующим CPU в адресных пулах при втором назначении.
Хвост и метка в каждом из узлов таблицы предназначены для записи суммы хвостовых меток, соответствующих CPU в адресных пулах.
Таблица данных сконфигурирована для определения CPU, для которого должно быть выполнено добавление или удаление публичного сетевого адреса. Добавление выполняют, предпочтительно, для CPU, соответствующего узлу, который имеет малое значение хвоста и метки, если необходимо добавить публичный сетевой адрес, а удаление выполняют, предпочтительно, для CPU, соответствующего узлу, имеющего большое значение хвоста и метки, если необходимо удалить публичный сетевой адрес, благодаря чему обеспечивается сбалансированное назначение публичных сетевых адресов и балансировка нагрузки на CPU.
А именно добавление выполняют, предпочтительно, для CPU, соответствующего узлу, который имеет хвостовую метку, равную 0, если необходимо добавить публичный сетевой адрес, а удаление выполняют, предпочтительно, для CPU, соответствующего узлу, который имеет хвостовую метку, равную 1, если необходимо удалить публичный сетевой адрес произвольным образом при хранении одного адресного пула.
Операция, в которой добавление выполняют, предпочтительно, для CPU, соответствующего узлу с хвостовой меткой, равной 0, если необходимо добавить публичный сетевой адрес, а удаление выполняют, предпочтительно, для блока CPU, соответствующего узлу с хвостовой меткой, равной 1, если необходимо удалить публичный сетевой адрес произвольным образом при хранении одного адресного пула, включает:
если необходимо добавить публичный сетевой адрес в адресный пул, публичные сетевые адреса, оставшиеся после второго назначения, комбинируют с добавленными публичными сетевыми адресами, и эти скомбинированные публичные сетевые адреса назначают при первом назначении и при втором назначении;
если из адресного пула удаляют один публичный сетевой адрес, то находят узел, в котором располагается этот подлежащий удалению публичный сетевой адрес и проверяют, равна ли хвостовая метка этого узла 1, и если она равна 1, то этот публичный сетевой адрес удаляют, а значение хвостовой метки узла меняют с 1 на 0; если же она не равна 1, то выполняют операцию, предназначенную для ситуации, в которой количество удаленных из адресного пула публичных сетевых адресов больше, чем количество адресных блоков, назначенных при первом назначении.
Если количество публичных сетевых адресов, удаляемых из адресного пула, больше 1 и меньше либо равно количеству адресных блоков, назначенных при первом назначении, и если эти подлежащие удалению публичные сетевые адреса распределены по различным узлам, и хвостовые метки узлов, в которые эти подлежащие удалению публичные сетевые адреса были распределены, равны 1, то эти подлежащие удалению публичные сетевые адреса удаляют, а значения хвостовых меток узлов, в которые эти подлежащие удалению публичные сетевые адреса были распределены, изменяют с 1 на 0. Если не все подлежащие удалению публичные сетевые адреса были распределены в различные узлы, или если хвостовые метки не всех узлов, в которые были распределены эти подлежащие удалению публичные сетевые адреса, равны 1, то выполняют операцию, предназначенную для ситуации, в которой количество публичных сетевых адресов, удаляемых из адресного пула, больше, чем количество адресных блоков, назначенных при первом назначении.
Если количество публичных сетевых адресов, удаляемых из адресного пула, больше, чем количество адресных блоков, назначенных при первом назначении, то эти публичные сетевые адреса назначают повторно в соответствии с разностью между общим количеством исходных публичных сетевых адресов адресного пула и количеством подлежащих удалению публичных сетевых адресов.
Например, если сконфигурирован только один адресный пул, и этот адресный пул в целом соответствует 97 публичным сетевым адресам, то формирование линии передачи данных ресурсов публичных сетевых адресов будет соответствовать приведенному ниже описанию, для случаев, соответственно, с наличием только одного CPU или двух CPU, т.е. CPU А и CPU В.
Если имеется только один CPU, то будет присутствовать один адресный блок размером 97, а хвостовая метка линии передачи данных ресурсов публичных сетевых адресов будет равна 0.
Если имеются два блока CPU, размер адресных блоков будет равен 2. Допустим, два блока CPU соответствуют узлу А и узлу В, тогда узел, соответствующий CPU А, включает метку А блока, и хвостовую метку А, а CPU В включает метку В блока и хвостовую метку В. Если выполняют первое назначение, то размер адресных блоков, назначаемых каждому из CPU, будет равен 2, и будут присутствовать 24 адресных блока. Если имеется один оставшийся адрес, то выполняют второе назначение. После назначения всех публичных сетевых адресов размеры адресных блоков в метке блока А и в метке блока В равны 2, имеются 24 адресных блока, хвостовая метка А равна 1, а хвостовая метка В равна 0.
Если в данный момент удаляют один из публичных сетевых адресов, то адрес этого публичного сетевого адреса до удаления находится в CPU А, затем этот публичный сетевой адрес удаляют, и значение хвостовой метки А изменяют на 0. Если удаляют два публичных сетевых адреса, но при этом оба подлежащих удалению публичных сетевых адреса находятся в CPU А, то выполняют переназначение публичных сетевых адресов, то есть размер новых адресных блоков равен 2. Когда выполняют второе назначение размеры адресных блоков в CPU А и в CPU В, соответственно, равны 1, количество адресов, соответственно, равно 1, хвостовая метка А равна 1 и хвостовая метка В равна 0.
Из предшествующего описания следует, что ресурсы публичных сетевых адресов загружают в различные CPU сбалансированным образом, при этом максимальная разность в количестве адресов равна 1, и на нее не влияет количество процессорных блоков. В настоящем изобретении каждый из процессорных блоков может включать отличающееся количество CPU. Формирование и обновление линий передачи данных пользователей является аналогичным, и его описание повторно приведено не будет.
На практике выполняют группирование пользовательских устройств. В соответствии с иллюстрацией фиг. 3, все пользовательские устройства, передающие трафик в течение определенного временного интервала, группируют согласно моделям трафика, передаваемого этими пользовательскими устройствами. В настоящем изобретении количество пользовательских устройств, включаемых в пользовательские группы, может быть различным. Однако каждый из CPU соответствует множеству групп пользователей, и каждый из CPU соответствует по существу одинаковому количеству пользовательских устройств в каждой из групп пользователей. Способ обеспечения по существу одинакового количества пользовательских устройств, соответствующих каждому из CPU для каждой группы пользователей, после выбора группы пользователей включает следующее:
выполняют первое назначение, каждому из CPU назначают определенное количество пользовательских устройств, при этом упомянутое количество назначенных пользовательских устройств представляет собой произведение количества CPU и целочисленного значения, которое получают делением общего количества пользовательских устройств в текущей группе пользователей на количество блоков CPU в квадрате; выполняют второе назначение, если еще имеются оставшиеся пользовательские устройства, каждому из блоков CPU назначают определенное количество пользовательских устройств, при этом количество назначенных пользовательских устройств при втором назначении представляет собой целочисленное значение, полученное делением количества оставшихся пользовательских устройств на количество блоков CPU; если еще имеются оставшиеся пользовательские устройства, оставшиеся пользовательские устройства обрабатывают по отдельности. Операция, в которой оставшиеся пользовательские устройства обрабатывают по отдельности, включает следующее: оставшиеся пользовательские устройства в каждой группе пользователей назначают как единое целое таким образом, чтобы блокам CPU было назначено по существу одинаковое количество пользовательских устройств. Каждому из CPU в ходе процедуры назначения назначают максимум одно пользовательское устройство. То есть в ходе процедуры третьего назначения каждому из CPU назначают ноль или одно пользовательское устройство.
В настоящем изобретении группы пользователей разделяют на определенные временные интервалы как единицы.
Фиг. 3 представляет собой эскизную схему передачи данных пользователей в соответствии с одним из вариантов осуществления настоящего изобретения. В соответствии с иллюстрацией фиг. 3, пользовательские терминалы, передающие трафик в течение определенного интервала времени, разбивают на множество групп пользователей, каждая из которых соответствует линии передачи данных пользователей. Количество узлов этой линии передачи данных пользователей равно количеству CPU. Узлы линии передачи данных пользователей соответствуют блокам CPU. Каждый из узлов включает метку блока и хвостовую метку, при этом
метка блока предназначена для записи блоков пользователей и количества блоков пользователей, назначенных при первом назначении блоком CPU, соответствующим связанному с ним узлу, и для записи блоков пользователей и количества блоков пользователей, назначенных при втором назначении блоком CPU, соответствующим связанным с ним узлом.
Хвостовая метка предназначена для записи количества пользовательских устройств, полученных блоком CPU, который соответствует связанному с ним узлу, в результате третьего назначения. При этом в результате третьего назначения получают ноль или одно пользовательских устройств.
В настоящем изобретении для групп пользователей в качестве единиц используют блоки пользователей, при этом размер блоков пользователей может меняться. Размер блоков пользователей отражает количество пользовательских устройств, включенных в каждый блок из множества блоков пользователей. Размер блоков пользователей, назначаемых при первом назначении, отличается от размера блоков пользователей, назначаемых при втором назначении,
при этом первое назначение включает следующее: определенное количество пользовательских устройств назначают каждому из CPU, при этом количество назначенных пользовательских устройств представляет собой произведение количества CPU на целочисленное значение, которое получают делением общего количества пользовательских устройств в текущей группе пользователей на количество блоков CPU в квадрате, при этом размер блоков пользователей, назначаемых при первом назначении, равен количеству блоков CPU. Количество блоков пользователей, назначенных для каждого из CPU, представляет собой целочисленное значение, полученное делением общего количества пользовательских устройств в группе пользователей на количество блоков CPU в квадрате, то есть для каждого из CPU назначают одинаковое количество блоков пользователей.
Второе назначение включает следующее: если после первого назначения еще имеются оставшиеся пользовательские устройства, каждому из блоков CPU назначают определенное количество пользовательских устройств, при этом количество назначенных пользовательских устройств при втором назначении представляет собой целочисленное значение, полученное делением количества оставшихся пользовательских устройств на количество блоков CPU, и количество блоков пользователей, назначенных при втором назначении, представляет собой целочисленное значение, полученное делением общего количество пользовательских устройств, оставшихся после первого назначения, на количество блоков CPU, и при этом каждому из блоков CPU при втором назначении назначают один блок пользователей.
Если после второго назначения еще имеются оставшиеся пользовательские устройства, эти оставшиеся пользовательские устройства обрабатывают по отдельности. Операция, в которой ставшиеся пользовательские устройства в каждой группе пользователей обрабатывают по отдельности, включает следующее: оставшиеся пользовательские устройства в каждой группе пользователей назначают как единое целое таким образом, чтобы каждому CPU было назначено по существу одинаковое количество устройств. В процессе назначения каждому из CPU назначают максимум одно пользовательское устройство, то есть в процессе назначения каждому из CPU назначают ноль или один пользовательское устройство.
Все группы пользователей могут храниться в виде таблицы данных групп пользователей. Каждый из узлов таблицы данных соответствует всем группам пользователей и одному CPU. Количество узлов таблицы равно количеству CPU, при этом каждый из узлов в таблице включает блок и метку, а также хвост и метку, при этом, если необходимо добавить пользовательское устройство, то пользовательское устройство, которое будет добавлено, классифицируют как новую группу пользователей с использованием определенного времени в качестве единицы. Если необходимо удалить пользовательское устройство, то удаляют, предпочтительно, CPU, соответствующий узлу с большим значением хвоста и метки.
Блок и метка каждого из узлов таблицы предназначены для записи суммы общего количества пользовательских устройств, назначенных при первом назначении и при втором назначении, соответствующих CPU в каждой из групп пользователей. То есть метка и блок в каждом из узлов таблицы предназначена для записи суммы произведений размера блоков пользователей на количество блоков пользователей, назначенных соответствующими CPU в адресных пулах при первом назначении, а также для записи суммы произведений размеров блоков пользователей на количество блоков пользователей, назначенных соответствующими CPU при втором назначении.
Хвост и метка в каждом из узлов таблицы предназначены для записи суммы хвостовых меток, соответствующих CPU в группах пользователей.
Таблица данных групп пользователей сконфигурирована для определения CPU, для которого будет удалено пользовательское устройство. Если необходимо удалить пользовательское устройство, то удаление выполняют, предпочтительно, для CPU, соответствующего узлу с большим значением хвоста и метки. А именно, удаление выполняют, предпочтительно, для CPU, соответствующего узлу с хвостовой меткой, равной 1, если необходимо удалить пользовательское устройств произвольным образом при хранении одной группу пользователей.
Операция, в которой удаление выполняют, предпочтительно, для CPU, соответствующего узлу с хвостовой меткой 1, если пользовательское устройство необходимо удалить произвольным образом при хранении одной группы пользователей, включает следующее:
если из группы пользователей удаляют одно пользовательское устройство, то находят узел, в котором находится подлежащее удалению пользовательское устройство и проверяют, равна ли хвостовая отметка этого узла 1, и если она равна 1, то это пользовательское устройство удаляют, а значение хвостовой метки узла меняют с 1 на 0; если же она не равна 1, то выполняют операцию, предназначенную для ситуации, в которой количество пользовательских устройств, удаленных из группы пользователей, больше, чем количество блоков пользователей, назначенных при первом назначении;
если количество пользовательских устройств, удаляемых из адресного пула, больше 1 и меньше либо равно количеству блоков пользователей, назначенных при первом назначении, и если эти подлежащие удалению пользовательские устройства были распределены по различным узлам, и хвостовые метки узлов, в которые эти подлежащие удалению пользовательские устройства, равны 1, то эти подлежащие удалению пользовательские устройства удаляют, а значения хвостовых меток узлов, в которые были распределены эти подлежащие удалению пользовательские устройства, изменяют с 1 на 0. Если не все подлежащие удалению пользовательские устройства были распределены в различные узлы, или если хвостовые метки не всех узлов, в которые были распределены эти подлежащие удалению пользовательские устройства, равны 1, то выполняют операцию, предназначенную для ситуации, в которой количество пользовательских устройств, удаляемых из группы пользователей, больше, чем количество блоков пользователей, назначенных при первом назначении.
Если количество пользовательских устройств, удаляемых из группы пользователей, больше, чем количество блоков пользователей, назначенных при первом назначении, то пользовательские устройства назначают повторно в соответствии с разностью между общим количеством исходных пользовательских устройств в этой группе пользователей и количеством подлежащих удалению пользовательских устройств.
Из приведенного выше описания следует, что ресурсы пользовательских устройств загружают в различные CPU сбалансированным образом, при этом наибольшая разница в количестве пользовательских устройств равна 1. Формирование и обновление линий передачи данных пользователей аналогично формированию и обновлению линий передачи данных ресурсов публичных сетевых адресов и повторно в настоящем документе описано не будет.
Фиг. 4 представляет собой структурную схему компонентов устройства для разделения нагрузки в соответствии с одним из вариантов осуществления настоящего изобретения. В соответствии с иллюстрацией фиг. 4, устройство включает конфигурационный модуль 41 разделения нагрузки, модуль 42 управления разделением нагрузки и блоки 43 CPU, при этом
конфигурационный модуль 41 разделения нагрузки сконфигурирован для конфигурирования публичных сетевых адресов в форме адресных пулов; а также сконфигурирован для группирования пользовательских устройств согласно моделям трафика, передаваемого этими пользовательскими устройствами;
при этом каждый из адресных пулов включает множество адресных блоков, и каждый из адресных блоков соответствует одному CPU, каждая группа пользователей включает множество блоков пользователей, и каждый блок из множества блоков пользователей соответствует одному CPU; и
модуль 42 управления разделением нагрузки сконфигурирован для передачи управляющей информации разделения нагрузки в блоки CPU 43 для управления ими с целью разделения нагрузки.
Модуль 42 управления разделением нагрузки сконфигурирован для формирования, в соответствии с линиями передачи данных ресурсов публичных сетевых адресов, маркерной таблицы разделения нагрузки ресурсов публичных сетевых адресов; и для формирования, в соответствии с линиями передачи данных пользователей, маркерной таблицы разделения нагрузки пользовательских устройств, и для предоставления в CPU 43 управляющей информации разделения нагрузки, сформированной в соответствии с маркерной таблицей разделения нагрузки ресурсов публичных сетевых адресов и маркерной таблицей разделения нагрузки пользовательских устройств.
Блоки 43 CPU сконфигурированы для назначения публичных сетевых адресов пользовательским устройствам согласно принятой управляющей информации разделения нагрузки и для трансляции частных сетевых адресов пользовательских устройств в публичные сетевые адреса.
А именно каждый из адресных пулов соответствует одной линии передачи данных ресурсов публичных сетевых адресов, при этом количество узлов в этой линии передачи данных ресурсов публичных сетевых адресов равно количеству CPU, при этом каждый из узлов соответствует одному CPU, и каждый из узлов включает метку блока и хвостовую метку.
Каждая группа пользователей соответствует одной линии передачи данных пользователей, при этом количество узлов в линии передачи данных пользователей равно количеству CPU, каждый из узлов соответствует одному CPU, и каждый из узлов включает метку блока и хвостовую метку.
На практике конфигурационный модуль 41 разделения нагрузки и модуль 42 управления разделением нагрузки могут быть установлены в устройстве CGN.
На практике устройство для разделения нагрузки может быть установлено в устройстве CGN. Оба модуля, конфигурационный модуль 41 разделения нагрузки и модуль 42 управления разделением нагрузки, могут быть реализованы при помощи блока CPU, цифрового сигнального процессора (Digital Signal Processor, DSP) или электрически программируемой вентильной матрицы (Field Programmable Gate Array, FPGA) из состава устройства CGN.
Фиг. 5 представляет собой эскизную схему разделения нагрузки в CGN в соответствии с одним из вариантов осуществления настоящего изобретения. В данном варианте осуществления настоящего изобретения типом устройства CGN может быть Ds-lite CGN, NAT44, Bras nat44, NAT64 и т.п. Частный сетевой адрес, соответствующий пользовательскому устройству, может представлять собой адрес IPv4, IPv6 и т.п. Устройство CGN представляет собой многозадачный процессорный блок, при этом каждый из процессорных блоков включает множество CPU.
В соответствии с иллюстрацией фиг. 5, конфигурационный модуль разделения нагрузки сначала конфигурирует публичные сетевые адреса в форме адресного пула, и затем выполняет разделение ресурсов публичных сетевых адресов между блоками CPU различных процессорных блоков устройства CGN, при этом количество адресных пулов может быть задано в соответствии с требованиями конфетного практического применения. Также при этом могут быть дополнительно сконфигурированы типы пользователей. Типы пользователей представляют собой типы частных сетевых адресов, соответствующих пользовательским устройствам. Пользовательские устройства при этом разделяют за счет применения формы динамического разделения нагрузки, то есть пользовательские устройства разделяют по различным CPU. Модуль управления разделением нагрузки формирует маркерную таблицу разделения нагрузки и передает информацию из этой маркерной таблицы в соответствующие CPU. При помощи описанной выше обработки данных каждому из CPU распределяют по существу сбалансированное количество публичных сетевых адресов, при этом каждый из CPU также обрабатывает по существу сбалансированное количество пользовательских устройств.
Описание, приведенное выше, является описанием лишь предпочтительных вариантов осуществления настоящего изобретения и не должно использоваться для ограничения объема правовой защиты настоящего изобретения. Соответственно, любые модификации, эквивалентные замены, усовершенствования и т.п., выполненные в соответствии с замыслом настоящего изобретения, попадают в объем правовой защиты настоящего изобретения.
Промышленная применимость
В вариантах осуществления настоящего изобретения публичные сетевые адреса конфигурируют в форме адресных пулов; и после приема трафика, переданного пользовательскими устройствами, эти пользовательские устройства группируют согласно моделям трафика, переданного пользовательскими устройствами; блоки CPU назначают публичные сетевые адреса пользовательским устройствам и транслируют частные сетевые адреса пользовательских устройств в публичные сетевые адреса, при этом каждый из адресных пулов включает множество адресных блоков, каждый из множества адресных боков соответствует одном блоку CPU, каждая группа пользователей включает множество блоков пользователей, и каждый из множества блоков пользователей соответствует одному CPU. Таким образом, удается избежать неравномерного разделения ресурсов публичных сетевых адресов среди множества CPU и неравномерного разделения нагрузки от пользовательских устройств, благодаря чему не только повышается скорость обработки данных блоками CPU при трансляции адресов, но также обеспечивается более эффективное разделение нагрузки.