Сколько памяти необходимо для хранения ipv4
Главное, что мне нужно, это скорость поиска IP в сохраненных префиксах. Например, я даю unsigned int (32bit), и мне нужно сказать, есть он или нет.
Я пишу на C ++, поэтому могу использовать STL
Теперь он хранится в наборе STL (пара база + маска), и я ищу один за другим, так что это вроде O (n) (исключая то, что это, вероятно, дерево BST, поэтому прохождение через него может быть медленнее, чем O ( п))
Подводя итог: мне не нужен эффективный способ хранения IPV4, мне нужен эффективный способ ПОИСКА его в некоторой структуре данных. И структура данных не будет хранить порт или тип семейства и т. Д. Она будет хранить PREFIX (base + mask).
И я ищу структуру данных + какой-то алгоритм поиска.
Если общее количество префиксов не очень велико, будет достаточно простого двоичного дерева, представляющего от наиболее значимых до наименее значимых битов.
Вы можете проверить документ DXR «На пути к миллиарду запросов маршрутизации в секунду в программном обеспечении» от 2012 года:
В то время как вы спрашиваете «не нужен эффективный способ хранения IPV4», компактное хранилище поможет повысить производительность поиска, потому что память очень медленная, а кэш ЦП быстрее (вариант стены памяти в иерархии памяти компьютера ). Более компактное представление имеет меньше пропусков из кэша L3 в память и может быть быстрее.
DXR имеет очень хорошую скорость (на 3,6 ГГц AMD FX-8150 с памятью DDR3 1866 МГц):
With random search keys (a worst-case situation) D18R goes from 117 million lookups per second (Mlps) on a single core, to 840 Mlps with all 8 cores active. . Depending on the configuration and query pattern, DXR achieves between 50 and 250 million lookups per second on 1 core
117 млн / с на частоте 3,6 ГГц - это около 30 тиков ЦП на поиск; а задержка произвольного доступа к памяти для DDR3 1866 МГц составляет . более 9-10 нс или 32-36 циклов процессора только для передачи первых байтов из памяти в контроллер памяти, когда строка DRAM открыта (обычно это может быть не так - строка открывается медленно слишком). Дополнительное время требуется для считывания полной строки кэша и еще некоторое время для пересылки этой строки кэша в регистры L3, L2, L1. Полная задержка памяти может быть близка к 100 нс (360 циклов процессора)
Какой должен быть идеальный размер для хранения адресов IPv4, IPv6 в виде строки в базе данных MySQL. должно ли быть достаточно varchar (32)?
Предполагается, что текстовое представление в виде строки:
- 15 символов для IPv4 (формат xxx.xxx.xxx.xxx , 12 + 3 разделители) для IPv6
Это максимальная длина строки.
Альтернативы хранению в виде строки:
- IPv4 является 32-битным, поэтому подойдет тип данных MySQL, который может содержать 4 байта, использование INT UNSIGNED является обычным наряду с INET_ATON и INET_NTOA для обработки преобразования из адреса в число, и от номера к адресу
- Для IPv6, к сожалению, MySQL не имеет типа данных, который составляет 16 байтов, однако можно преобразовать IPv6 в каноническую форму, а затем разделить их на 2 BIGINT (8 байтов), однако при этом будут использоваться два поля.
Численно IPv4-адрес имеет длину 32 бита, а адрес IPv6 - 128 бит. Таким образом, вам необходимо хранилище размером не менее 16 байт.
Если «строка», которую вы храните, является кодировкой адреса в байтовой форме, тогда 16 будет достаточно.
Если вы храните их в виде строк, а не битовых шаблонов:
Адреса IPv4 состоят из четырех трехзначных десятичных символов с тремя разделителями . , поэтому для них требуется всего 15 символов, например 255.255.255.255 .
Адреса IPv6 состоят из восьми 4-значных шестнадцатеричных символов с семью разделителями : , что составляет 39 символов, например 0123:4567:89ab:cdef:0123:4567:89ab:cdef .
Вы можете использовать VARBINARY (16) для хранения IPv6-адреса в двоичном формате.
IPv6-адрес может быть 46 символов.
Ссылка: IPv4-сопоставленные адреса IPv6. Гибридные реализации IPv6 / IPv4 с двойным стеком распознают специальный класс адресов - IPv4-сопоставленные адреса IPv6. В этих адресах первые 80 бит равны нулю, следующие 16 бит равны единице, а оставшиеся 32 бита являются адресом IPv4. Можно увидеть эти адреса с первыми 96 битами, записанными в стандартном формате IPv6, а оставшимися 32 битами, записанными в обычной точечно-десятичной нотации IPv4. Например, :: ffff: 192.0.2.128 представляет IPv4-адрес 192.0.2.128. Устаревший формат для IPv4-совместимых адресов IPv6 был :: 192.0.2.128. [61]
Помимо того, что уже было сказано, есть Link-Local IPv6-адрес. Если вы хотите сохранить адрес, чтобы можно было использовать строку для создания соединений, вам также потребуется сохранить идентификатор области. В Windows это 16-битное число, в Linux это может быть строка - имя интерфейса, я не нашел максимальной длины имени интерфейса.
Предполагая, что у вас нет присоединенной сетевой информации (такой как идентификатор LL, класс или маска CIDR), IPv4-адрес может содержать до пятнадцати символов (4x3 числа + 3 точки), а IPv6-адрес может содержать до 39 символов.
каким должен быть идеальный размер для хранения IPv4, IPv6 адресов в виде строки в базе данных MySQL. стоит тип varchar(32) будет достаточно?
- 15 символов для IPv4 ( xxx.xxx.xxx.xxx формат, 12+3 сепараторы)
- 39 символов (32 + 7 сепараторы) для IPv6
- IPv4 является 32-битным, поэтому тип данных MySQL, который может содержать 4 байта, будет делать, используя INT UNSIGNED общий вместе с INET_ATON и INET_NTOA для обработки преобразования из адреса в номер, а из номера в адрес
- для IPv6, к сожалению, MySQL не имеет типа данных, который составляет 16 байт, однако можно поместить IPv6 в каноническую форму, а затем разделить их на 2 BIGINT (8 байт), это, однако, будет использовать два поля.
если вы храните их в виде строк, а не битовых шаблонов:
IPv4 адреса состоят из четырех 3-значных десятичных символов с тремя . разделители, так что только занимает 15 символов, таких как 255.255.255.255 .
IPv6-адреса состоят из восьми 4-значных шестнадцатеричных символов с семи : разделители, так что занимает 39 символов, таких как 0123:4567:89ab:cdef:0123:4567:89ab:cdef .
предполагая, что у вас нет никакой сетевой информации (например, идентификатор LL, класс или маска CIDR), IPv4-адрес может содержать до пятнадцати символов (числа 4x3+3 периода), а IPv6-адрес может содержать до 39 символов.
адрес ipv6 может быть 46 символов.
ссылка: Отображения IPv4 IPv6-адресов Гибридные двухстековые реализации IPv6/IPv4 распознают специальный класс адресов, IPv4-сопоставленные IPv6-адреса. В этих адресах первые 80 бит равны нулю, следующие 16 бит-единице, а оставшиеся 32 бита-IPv4-адресу. Можно увидеть эти адреса с первыми 96 битами, записанными в стандартном формате IPv6, а остальные 32 бита записаны в обычном десятичном формате обозначение IPv4. Например:: ffff: 192.0.2.128 представляет IPv4-адрес 192.0.2.128. Устаревший формат для IPv4-совместимых IPv6-адресов был:: 192.0.2.128.[61]
кроме того, что уже было сказано, существует локальный IPv6-адрес. Если вы хотите сохранить адрес, чтобы вы могли использовать строку для создания соединений, вам также нужно будет сохранить идентификатор области. В Windows это 16-битное число, в Linux это может быть имя строкового интерфейса, я не нашел максимальной длины имени интерфейса.
Ни для кого не секрет, что Интернет развивается очень стремительно, потому совсем не удивительно, что последние свободные блоки адресов /8 (IPv4) были распределены администрацией адресного пространства Интернет (IANA) между нуждающимися региональными регистраторами 3 февраля 2011 года. Последний блок /8 был распределен региональным Интернет-регистратором Европы (RIPE) в сентябре 2012 года. Претендовать на получение блока /22, состоящего из 1024 адресов, может только существующий локальный регистратор, который уже ранее получил адреса IPv6. Тысяча адресов — это единственное, на что он может претендовать. Распределение провайдеро-независимых адресов IPv4 прекращено вовсе. В связи с этим получить блок /24 или даже индивидуальный ip-адрес становится все сложнее.
— переход на новую версию интернет протокола IPv6, в котором 2 в 128 степени свободных адресов (что невозможно в ближайшие годы по причине использования большинством провайдеров оборудования не поддерживающего IPv6);
— перераспределение существующих IP-адресов.
Немного истории
На заре развития Интернета, в сентябре 1981 года, когда только ввели Internet Protocol (version 4), казалось, что адресов хватит навсегда и они «бесконечны». Ведь IPv4 использует 32-битные (четырехбайтные) адреса, ограничивающие адресное пространство 4 294 967 296 (2 в 32 степени) возможными уникальными адресами. Настоящий бум в присвоении ай пи адресов начался в 1993 году в результате значительного роста количества персональных компьютеров и усилился в 2005 году, когда возросло количество мобильных устройств.
За эти годы были разработаны схемы «экономии» использования адресов, например, использование частных диапазонов IP-адресов, уникальных в пределах одной сети, доступ в Интернет для которых осуществляется через шлюз, имеющий уже «внешний» IP-адрес, что позволило большому количеству пользователей использовать для доступа в сеть Интернет всего лишь 1 или несколько адресов. Сейчас же это решение изжило себя и представляет собой большое осложнение на пути перехода к IPv6.
График демонстрирует уменьшение количества не распределенных блоков /8 с течением времени
И хотя переход с IPv4 на IPv6 ожидался давно, многие организации не готовы осуществить его. В дополнение к этому необходимо поддерживать присутствие в обоих адресных пространствах до полного завершения перехода на IPv6. Однако некоторые организации начинают предоставлять свои новые сервисы все чаще и чаще только в одном адресном пространстве. Например, Microsoft's DirectAccess доступен только в IPv6, так как производители сочли присутствие в IPv4 слишком затратным.
К августу 2010 года осталось только 5% нераспределенных адресов (12 блоков /8 из 256, по примерно 16,7 млн. адресов в каждом). IPv4 стал жертвой собственного успеха.
Черный рынок
Растущий спрос на ай пи адреса приводит к появлению «черного рынка», который резко увеличивает затраты на получение возможности «присутствия» в сети Интернет сегодня. После распределения последнего блока адресов /8 единственным способом получения адресов останется черный рынок, цены на адреса в котором будут повышаться до того уровня, который будет приемлем для бизнеса, нуждающегося в адресах. Если выживание Вашего бизнеса зависит от получения IPv4-адресов, Вы будете готовы заплатить за них, даже если вам придется обойти правила.
Вклад хостинг-провайдеров в развитие черного рынка
Поспособствовали развитию черного рынка и хостинг-провайдеры. В прошлом десятилетии, как только хостинг стал общедоступным, у провайдеров было много свободных блоков IP-адресов. И как это часто случается, возникла мысль заработать дополнительные средства на них, сдавая IP-адреса в аренду. Однако такое количество IP просто некому было продать, ведь далеко не все пользователи нуждаются в VDS, SSL и т.п. Решение было найдено – придумать мифы, согласно которым обычным вебмастерам просто необходимы выделенные ip-адреса для их сайтов и обойтись без них просто нельзя.
Продавая ай пи адреса сотнями по $0,5-1 / месяц за адрес провайдеры получали неплохую прибыль. Так подсеть на 256 адресов обходилась провайдеру максимум в $100 / год, а доход с нее порой превышал $2500 в год. И такие подсети распродавались десятками. То, что использование адресов было не совсем целевым – мало кого волновало. Начало дефицита IP-адресов на рынке хостинг услуг еще больше увеличило прибыль с их продажи, некоторые не стеснялись предложить цену в 5 долларов за адрес и более. Не все, правда, были движимые жаждой наживы, некоторые, поднимая цены, просто пытались безуспешно сбавить спрос, так как их запасы адресов подходили к концу, а взять новые было дорого / невозможно.
Зоны влияния ответственных региональных регистраторов, пытающихся контролировать честное распределение адресов
Все больше провайдеров начинают осознавать, что скоро даже для выделенных серверов свободных адресов может не остаться вовсе, а серверу без своего ай пи не обойтись. К тому же доход от аренды сервера в десятки раз выше доходов с нецелевой продажи адреса. Такие крупные компании, как LeaseWeb, где устанавливается свыше сотни новых серверов ежедневно, вынуждены были не только поднять цены, чтоб сбавить спрос, но даже ввести ограничение на максимально возможное количество ай пи предоставляемых для одного сервера.
Поможет ли это? Не думаю… Но даст какое-то время однозначно.
На протяжении многих лет вебмастерам внушалась необходимость использования выделенных ip- адресов для их проектов. Теперь же ситуация обратная. Все больше хостинг-провайдеров пытается доказать, что клиенту адрес не нужен, не только потому, что все стали вдруг честными, скорее потому, что большинству уже больше нечего предложить, а клиент может уйти туда где еще есть то, что он ищет… Увы, людей зомбировали так, что порой переубедить просто не удается, даже имея самые благие намерения. Люди продолжают верить в то, что им внушили…
Давайте рассмотрим самые распространенные мифы:
— SEO (поисковая оптимизация), миф о том, что размещение сайта на выделенном ip-адресе увеличивает его PR (page rank), но это не так.
— Негативное влияние соседних сайтов при размещении на одном ip-адресе – очередная выдумка. Размещение на одном адресе сотни или даже тысячи сайтов – обычная практика, например большинство сервисов Google используют общий IP-адрес. Недостатков в этом быть не может, хотя бы потому, что в Интернете сейчас существует больше сайтов, чем насчитывается ip-адресов.
— Необходимость второго адреса на сервере для создания DNS также является сомнительной. Всегда можно использовать DNS-ы регистраторов, хостинг-провайдеров, к тому же при размещении первичного и вторичного DNS на одном сервере – теряется необходимая избыточность, для обеспечения которой и предусмотрено наличие минимум двух ns-cерверов.
— Выделенный IP для SSL сертификата. Хотя SSL-сайты не могут использовать один и тот же ip-адрес совместно с другими SSL-сайтами, Вы все еще можете разместить один такой сайт на ай пи адресе совместно с обычными web-сайтами, либо какими-либо сервисами (DNS, ftp, email и т.п.).
— Выделенный IP для мониторинга потребления трафика. Еще один распространенный миф, заключается в присвоении сайтам разных ай пи адресов с целью контроля трафика, потребляемого каждым из сайтов. На самом деле для того же веб-сервера apache можно установить дополнительные модули, такие как mod_logio и mod_watch, при помощи которых беспрепятственно контролировать потребление трафика отдельными сайтами, расположенных на одном и том же адресе.
— Только IPv4 адреса могут быть использованы. Если у Вас есть сайты / серверы, которые используются тестово или только для Вас – целесообразно назначить им IPv6 адрес, это может даже привести к повышению безопасности, так как Вы сделаете их недоступными для Интернета IPv4.
— VPN-доступ. Вам не нужен отдельный ip-адрес для каждого виртуального канала. Если Вы воспользуетесь Network Address Translation (NAT) Вы сможете подключить столько виртуальных каналов сколько захотите, и Вы не будете ограничены количеством IP-адресов, при этом само собой все Ваши пользователи виртуальных каналов будут иметь один «внешний» адрес.
— Виртуальные серверы (VDS). Да, Вам действительно нужны для них выделенные ip-адреса, если Вы хотите продавать их разным клиентам, однако если Вы используете виртуализацию в качестве меры безопасности, чтобы изолировать различные сервисы (базы данных, файловое хранилище), Вам стоит рассмотреть вопрос о присвоении, по крайней мере, некоторым виртуальным машинам частных («внутренних») IP-адресов и сделать их доступными только с других виртуальных машин на этом сервере.
— Черное SEO. Сайты, продвигающиеся черными методами, все равно ждет печальная участь. Поисковые системы продвинуты, способны распознать Ваши дорвеи и прочее, даже если они будут на разных IP-адресах.
В заключение хотелось бы попросить в особенности вебмастеров, занимающихся черным SEO — не засоряйте Интернет мусором, делайте полезные, уникальные проекты для людей, а не для поисковых систем. Интернет-сообщество это оценит и адреса сохранятся.
Не так давно я написал свою первую статью на Хабр. В моей статье была одна неприятная шероховатость, которую моментально обнаружили, понимающие в сетевом администрировании, пользователи. Шероховатость заключается в том, что я указал неверные IP адреса в лабораторной работе. Сделал это я умышленно, так как посчитал что неопытному пользователю будет легче понять тему VLAN на более простом примере IP, но, как было, совершенно справедливо, замечено пользователями, нельзя выкладывать материал с ключевой ошибкой.
Для начала, стоит сказать о том, что такое IP адрес.
Максимальным возможным числом в любом октете будет 255 (так как в двоичной системе это 8 единиц), а минимальным – 0.
Далее давайте разберёмся с тем, что называется классом IP (именно в этом моменте в лабораторной работе была неточность).
IP-адреса делятся на 5 классов (A, B, C, D, E). A, B и C — это классы коммерческой адресации. D – для многоадресных рассылок, а класс E – для экспериментов.
Класс А: 1.0.0.0 — 126.0.0.0, маска 255.0.0.0
Класс В: 128.0.0.0 — 191.255.0.0, маска 255.255.0.0
Класс С: 192.0.0.0 — 223.255.255.0, маска 255.255.255.0
Класс D: 224.0.0.0 — 239.255.255.255, маска 255.255.255.255
Класс Е: 240.0.0.0 — 247.255.255.255, маска 255.255.255.255
Теперь о «цвете» IP. IP бывают белые и серые (или публичные и частные). Публичным IP адресом называется IP адрес, который используется для выхода в Интернет. Адреса, используемые в локальных сетях, относят к частным. Частные IP не маршрутизируются в Интернете.
Публичные адреса назначаются публичным веб-серверам для того, чтобы человек смог попасть на этот сервер, вне зависимости от его местоположения, то есть через Интернет. Например, игровые сервера являются публичными, как и сервера Хабра и многих других веб-ресурсов.
Большое отличие частных и публичных IP адресов заключается в том, что используя частный IP адрес мы можем назначить компьютеру любой номер (главное, чтобы не было совпадающих номеров), а с публичными адресами всё не так просто. Выдача публичных адресов контролируется различными организациями.
Допустим, Вы молодой сетевой инженер и хотите дать доступ к своему серверу всем пользователям Интернета. Для этого Вам нужно получить публичный IP адрес. Чтобы его получить Вы обращаетесь к своему интернет провайдеру, и он выдаёт Вам публичный IP адрес, но из рукава он его взять не может, поэтому он обращается к локальному Интернет регистратору (LIR – Local Internet Registry), который выдаёт пачку IP адресов Вашему провайдеру, а провайдер из этой пачки выдаёт Вам один адрес. Локальный Интернет регистратор не может выдать пачку адресов из неоткуда, поэтому он обращается к региональному Интернет регистратору (RIR – Regional Internet Registry). В свою очередь региональный Интернет регистратор обращается к международной некоммерческой организации IANA (Internet Assigned Numbers Authority). Контролирует действие организации IANA компания ICANN (Internet Corporation for Assigned Names and Numbers). Такой сложный процесс необходим для того, чтобы не было путаницы в публичных IP адресах.
Поскольку мы занимаемся созданием локальных вычислительных сетей (LAN — Local Area Network), мы будем пользоваться именно частными IP адресами. Для работы с ними необходимо понимать какие адреса частные, а какие нет. В таблице ниже приведены частные IP адреса, которыми мы и будем пользоваться при построении сетей.
Из вышесказанного делаем вывод, что пользоваться при создании локальной сеть следует адресами из диапазона в таблице. При использовании любых других адресов сетей, как например, 20.*.*.* или 30.*.*.* (для примера взял именно эти адреса, так как они использовались в лабе), будут большие проблемы с настройкой реальной сети.
Из таблицы частных IP адресов вы можете увидеть третий столбец, в котором написана маска подсети. Маска подсети — битовая маска, определяющая, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети.
У всех IP адресов есть две части сеть и узел.
Сеть – это та часть IP, которая не меняется во всей сети и все адреса устройств начинаются именно с номера сети.
Узел – это изменяющаяся часть IP. Каждое устройство имеет свой уникальный адрес в сети, он называется узлом.
Маску принято записывать двумя способами: префиксным и десятичным. Например, маска частной подсети A выглядит в десятичной записи как 255.0.0.0, но не всегда удобно пользоваться десятичной записью при составлении схемы сети. Легче записать маску как префикс, то есть /8.
Так как маска формируется добавлением слева единицы с первого октета и никак иначе, но для распознания маски нам достаточно знать количество выставленных единиц.
Таблица масок подсети
Высчитаем сколько устройств (в IP адресах — узлов) может быть в сети, где у одного компьютера адрес 172.16.13.98 /24.
172.16.13.0 – адрес сети
172.16.13.1 – адрес первого устройства в сети
172.16.13.254 – адрес последнего устройства в сети
172.16.13.255 – широковещательный IP адрес
172.16.14.0 – адрес следующей сети
Итого 254 устройства в сети
Теперь вычислим сколько устройств может быть в сети, где у одного компьютера адрес 172.16.13.98 /16.
172.16.0.0 – адрес сети
172.16.0.1 – адрес первого устройства в сети
172.16.255.254 – адрес последнего устройства в сети
172.16.255.255 – широковещательный IP адрес
172.17.0.0 – адрес следующей сети
Итого 65534 устройства в сети
В первом случае у нас получилось 254 устройства, во втором 65534, а мы заменили только номер маски.
Посмотреть различные варианты работы с масками вы можете в любом калькуляторе IP. Я рекомендую этот.
До того, как была придумана технология масок подсетей (VLSM – Variable Langhe Subnet Mask), использовались классовые сети, о которых мы говорили ранее.
Теперь стоит сказать о таких IP адресах, которые задействованы под определённые нужды.
Адрес 127.0.0.0 – 127.255.255.255 (loopback – петля на себя). Данная сеть нужна для диагностики.
169.254.0.0 – 169.254.255.255 (APIPA – Automatic Private IP Addressing). Механизм «придумывания» IP адреса. Служба APIPA генерирует IP адреса для начала работы с сетью.
Теперь, когда я объяснил тему IP, становиться ясно почему сеть, представленная в лабе, не будет работать без проблем. Этого стоит избежать, поэтому исправьте ошибки исходя из информации в этой статье.
Читайте также: