Сколько бит в ipv6 адресе
Перейти к содержимому

Сколько бит в ipv6 адресе

  • автор:

Протокол IPv6

Протокол IPv6 пришел на замену протоколу IPv4 и хотя в настоящее время IPv4 всё еще везде используется, придет время и протокол IPv6 вытеснит своего предшественника полностью.

Первое, что стоит упомянуть когда рассматривают протокол IPv6 — это измененная структура адреса и количество возможных адресов. Если в IPv4 используется 2^32 адресов, то в новой версии это число достигает невероятных значений 2^128 . Структура адреса выглядит следующим образом: 2001:1536:a0b8:3491:c800:00ef:fe74:0c00 — 8 хекстетов, разделенных символом :

Типы адресов IPv6

Всего существует три основных типа IPv6 адресов:

  • Unicast адреса
  • Anycast адреса
  • Multicast адреса

В отличие от IPv4, в IPv6 нет broadcast адресов. Однако, группа multicast адресов “all nodes” делает ту же работу, что и broadcast адреса.

Unicast

IPv6 unicast адреса работают в точности так же как и в IPv4. Данные адреса определяют один интерфейс или устройство. Существует три типа IPv6 unicast адресов:

  • Global адреса — это те же адреса, что и публичные адреса в IPv4. Они глобально маршрутизируются и могут использоваться при коммуникации через сеть Интернет. В настоящее время вся глобальная одноадресная адресация выделяется из префиксного блока 2000::/3 .
  • Unique local unicast адреса — адреса, которые в IPv4 определены как “серые”, т.е. адреса, описанные в RFC 1918. Данные адреса маршрутизируются в пределах внутренней коммуникации организации и не маршрутизируются в сети Интернет. RFC 4193 определяет блок префиксов fc00::/7 для уникальной локальной одноадресной адресации. Данные адреса всегда начинаются с двоичного значения 1111 110 , которое соответствует префиксу fc00::/7 . Восьмой бит — бит L в настоящее время установлен в 1, чтобы указать, что адрес назначен локально. Установка бита L на 0 еще не определена и зарезервирована для использования в будущем. Объединение префикса (первых 7 бит) и бита L создает два потенциальных адресных блока:
    • fc00::/8 : зарезервировано для будущего использования
    • fd00::/8 : локальная одноадресная адресация
    • Link-local адреса — немаршрутизируемые адреса, используются для коммуникации в пределах одного непосредственно подключенного канала. Основное назначение данных адресов — обнаружение соседей и определение дубликата адресов. Адреса выделяются из префиксного блока fe80::/10 . Данные адреса могут назначаться как вручную, так и динамически с использованием механизма SLAAC (stateless address autoconfiguration). При использовании SLAAC часть Interface ID выводится из MAC-адреса модификацией формата EUI-64.

    Anycast

    Anycast адреса представляют скорее сервис нежели чем отдельное устройство, поэтому один адрес может быть назначен разным устройствам, предоставляющим один и тот же сервис. Основное предназначение anycast адресов — обеспечение отказоустойчивости.

    На следующей схеме приведён пример того как может выглядеть это в реальности

    Anycast

    В сети имеется два сервера, которые имеют идентичную адресацию, но физически расположены в разных местах. В зависимости от того где находится клиент, трафик пойдет к ближайшему серверу, опираясь на таблицу маршрутизации.

    В случае если в сети произойдет падение одного из маршрутизаторов, находящихся рядом с серверами, произойдет перестроение пути следования трафика для одного из клиентов и трафик для этого клиента пойдет по новому пути. В этом случае оба клиента будут обращаться к одному и тому же серверу.

    Какого определённого формата для данных типов адресов не существует, поэтому теоретически любой unicast адрес может быть anycast. Для корректной работы anycast адресов может быть желательно отключать механизм определения дубликата адресов (DAD — Duplicate Address Detection). В операционной системе Cisco IOS и Cisco IOS XE механизм DAD отключается для всего префикса, делается это следующей командой:

    Для операционной системы Cisco IOS XR механизм DAD отключается для всего интерфейса (включая префиксы link-local) с помощью команды:

    Multicast

    Multicast адреса определяют не одно устройство, а группу устройств — multicast группу, при этом в данной группе может состоять как множество устройств, так и одно. Multicast адреса не могут выступать в качестве адреса источника в пакете. В IPv6 не существует как такового broadcast адреса, вместо него есть multicast группа «All nodes» , которая по сути имеет то же предназначение, что и broadcast в IPv4.

    В IPv6 multicast адреса имеют различное назначение: передача информации о протоколе маршрутизации, обнаружение соседних устройств, разрешение IPv6-адресов. Более подробно об этом будет описано в статье по протоколу Neighbor Discovery Protocol

    Multicast address structure

    Как видно из рисунка выше, первые 8 бит всегда установлены в 1 , следующие 4 бита отвечают за флаги. Первые три бита из поля Flags установлены в 0 и в настоящее время не используются. Четвёртый бит из поля Flags — флаг transient .

    Флаг T — transient имеет два возможных значения:

    • 0 — постоянный адрес, который широко известен и присваивается IANA
    • 1 — временный адрес, используется для целей тестирования

    Поле Scope используется для того, чтобы маршрутизатор мог определить является ли multicast адрес маршрутизируемым. Все диапазоны таких адресов описаны в RFC 4291. Краткая выдержка представлена в таблице ниже.

    Типы диапазонов IPv6 префикс Описание
    Reserved ff00 Зарезервировано
    Interface-Local ff01 Interface-Local диапазон не позволяет multicast пакетам проходить через интерфейс. Данный диапазон аналогичен адресу unicast loopback, поскольку multicast пакеты содержатся внутри одного устройства.
    Link-Local ff02 Link-Local диапазон содержит multicast трафик для локальной интерфейсной связи.
    Admin-Local ff04 Admin-Local диапазон является маршрутизируемым и считается наименьшей административным диапазоном. Граница диапазона действия не имеет определенных ограничений, но обычно трафик ограничен одним отделом или этажом в здании.
    Site-Local ff05 Site-Local диапазон является также маршрутизируемым и считается большим, чем admin-Local диапазон. Граница обычно ограничивается зданием или регионом.
    Organization-Local ff08 Organization-Local диапазон является также маршрутизируемым и должен располагаться в одной организации.
    Global ff0е Global диапазон не имеет никаких ограничений на достижимость.

    Поле Group ID определяет индивидуальную multicast группу. На данное поле отводится 112 бит, 80 из которых в настоящее время не используются и установлены в 0.

    Наиболее широко известные и используемые адреса представлены в таблице ниже

    Адрес Описание
    ff02::1 All nodes адрес
    ff02::2 All-routers адрес
    ff02::5 Aдрес OSPFv3 all routers
    ff02::6 Aдрес OSPFv3 all DR
    ff02::8 IS-IS
    ff02::9 RIPng
    ff02::a EIGRP
    ff02::d PIM
    ff02::1:2 Адрес всех DHCPv6 relay агентов и серверов
    ff05::1:3 Адрес всех DHCPv6 серверов
    ff02::1:ffxx:xxxx Адрес запрашиваемого узла, используется для обнаруженя соседних узлов для разрешения адресов (последние 24 бита [xx:xxxx] адреса сопоставляются с последними 24 битами unicast адреса IPv6)

    Более полный список можно увидеть, перейдя по ссылке

    Каждое устройство автоматически присоединяется к двум multicast группам: all nodes — ff02::1 и solicited-node — ff02::1:ffxx:xxxx . Группа all nodes используется для связи со всеми интерфейсами на локальном канале, а группа solicited-node требуется для разрешения адресов на уровне канала. Маршрутизаторы также присоединяются к третьей multicast группе all-routers — ff02::2 .

    Для того чтобы посмотреть в какой группе состоит тот или иной интерфейс необходимо выполнить команду show ipv6 interface <тип интерфейса номер интерфейса>

    Cisco IOS

    Cisco IOS XR

    Специальные IPv6 адреса

    Помимо основных адресов, описанных выше, есть два типа, которые не включены ни в одну из категорий.

    • Неопределенный адрес — указывает на то, что на интерфейсе еще нет никакого адреса, обозначается как 0:0:0:0:0:0:0:0 или просто :: . Данный адрес используется устройством когда оно только инициализированно и не получило еще никакого другого адреса
    • Loopback адрес — используется для того чтобы отправлять пакеты самому себе, обозначается как 0:0:0:0:0:0:0:1 или ::1

    Структура заголовка IPv6

    Формат заголовка протокола IPv6 представлен на рисунке ниже

    Header IPv6

    Version — 4-битное поле, также как и в протоколе IPv4 отвечает за версию протокола. Принимает значение 0110 .

    Version

    Traffic Class — 8-битное поле, идентично полю DiffServ в протоколе IPv4.

    Traffic Service

    Flow Label — 20-битное уникальное для IPv6 поле. Данное поле позволяет помечать определенный поток трафика, при балансировке трафика метка позволяет более точно определять путь, по которому пойдет тот или иной пакет, предотвращая возможное изменение следования порядка пакетов.

    Поток определяется как совокупность адреса и порта источника и назначения. Однако, определить порт источника и назначения для маршрутизатора может быть сложной задачей и возможным падением производительности для него. Расширения заголовка IPv6 позволяют маршрутизатору определить заголовок транспортного уровня.

    Flow Label

    Payload Length — 16-битное поле, определяющее длину содержимого пакета в байтах. Размер заголовка IPv6 всегда фиксирован и составляет 40 байт, поэтому, в отличие от протокола IPv4, вычитать размер заголовка из общего содержимого пакета нет необходимости.

    Payload Length

    Next Header — 8-битное поле, определяющее заголовок протокола, который следует за протоколом IPv6. Данное поле идентично полю Protocol в заголовке IPv4 и используется для тех же самых целей. Однако, в протоколе IPv6 вместо протокола, располагающегося выше протокола IPv6, можеть быть расширение заголовка IPv6.

    Hext Header

    Hop Limit — 8-битное поле, выполняющее те же функции, что и поле Time to Live в протоколе IPv4. Если данное поле примет значение 0 на пути следования пакета, то пакет будет отброшен.

    Hop Limit

    Source и Destination Address — 128-битные поля, определяющие адреса источника и назначения соответственно.

    Source и Destination Address

    В данном дампе можно более подробно рассмотреть все поля протокола IPv6.

    Расширение заголовка IPv6

    Расширение заголовка IPv6 используется в случае когда необходимо добавить дополнительные функции для протокола (фрагментация, аутентификация и др.). В случае применения данных расширений, они добавляются в конец заголовка IPv6.

    Extensions Header

    Каждое расширение заголовка, как и сам заголовок IPv6, имеет поле Next Header, которое определяет какой заголовок будет следовать за текущим. RFC 1883 описывает формат всех основных расширений, используемых в протоколе IPv6, а также порядок следования данных расширений заголовка. Некоторые из расширений описаны в таблице ниже.

    IPv6 теория и практика: введение в IPv6

    Этой статьёй я хочу начать цикл, посвященный IPv6. Я являюсь инструктором академии Cisco, поэтому, если вы в совершенстве знаете материал нового CCNA Routing & Switching, то скорее всего, не найдёте в цикле ничего нового. Речь пойдёт о структуре и особенностях протокола IPv6, а также, применении его на маршрутизаторах Cisco (маршрутизация RIP, OSPF, EIGRP, списки контроля доступа, и др. – как пойдёт). В первой статье мы поговорим о структуре IPv6 пакета, записи адресов, префиксе. Вторая статья цикла доступна здесь. Информация подойдёт для новичков, имеющих, тем не менее, некоторые знания по IPv4 и модели OSI.
    Цикл статей основан на материалах моего блога, которые, в свою очередь, основаны на опыте преподавания, работы с оборудованием и вольном переводе и обдумывании официального курса CCNA Routing & Switching.
    Итак, начнём. Не буду останавливаться на стандартных рассуждениях о том, что IPv4 адресов мало, о том, что NAT и прокси – это костыли, о том, что костыли пока работают, и никто не хочет переходить на IPv6, вместо этого – сразу к сути.

    The Anatomy of IPv4 and IPv6 Addresses

    A tale of decimals, hexadecimals, zero suppression and compression

    In the Spring of 2018 I attended a three month Web Development Intensive course. I learned a lot, though in many ways it didn’t prepare me for entering the world of Linux, in which I now spend my days as a Customer Support Specialist at a cloud hosting company.

    The on the job experience has been great, though I find it helpful to step back occasionally and dig into things that confuse me. One of those things is the difference between IPv4 and IPv6 addresses.

    Where did they come from? What happened to IPv1, IPv2, IPv3 and IPv5? Why are there letters in IPv6 addresses? Why are they different lengths from one another? On and on the questions go.

    This article is intended to be a beginner’s guide to the anatomy of IPv4 and IPv6 addresses.

    I’ll try to break things down in byte size pieces. (Pun intended.) But first:

    Where would I first interact with these as a beginning coder?

    You made your first web application. Now what? You’ll want to host it somewhere so it can be available for others to see! (Maybe even your prospective employers.) You’ll likely purchase your own domain name to give it a little extra splash. Depending on where you purchased your domain from, you’ll need to point your registrar to your newly purchased web server’s IPv4 address (A record), and your Cloud hosting provider’s nameservers (NS records).

    What does the IPv stand for in IPv4 and IPv6?

    Internet Protocol Version.

    What happened to IPv1, IPv2, IPv3 and IPv5?

    In a time (1977) when the Internet was referred to as the “Internetwork” ❤, a discussion began regarding Internet Protocol:

    In other words, TCP — or Transmission Control Protocol — wasn’t cutting the cake, and something new was needed. Something that made the distinction between network-to-network (or “internetwork”) vs. host level protocols.

    The reason we don’t hear about IPv1, IPv2 and IPv3 is because IPv4 was the first stable version of Internet Protocol. It transmitted datagrams with grace and poise, not to mention security and efficiency.

    As for IPv5, it was an experimental real-time streaming protocol. But due to the increase in IPv4 bandwidth over time, IPv5 became unnecessary.

    Zeros and ones

    You’ve probably heard it said that everything in a computer — all the videos you stream on YouTube, every key, every ‘like’ you click — ultimately boils down to zeros and ones. The same thing could be said for IP addresses.

    An IPv4 address has four sections, separated by dots:

    Each of these sections is made up of 8 bits.

    What’s a bit?

    A bit is a zero or one. The building block of computer language. So the numbers you see in the IPv4 address above (for example: 104 ), could be written in binary.

    (For some fun facts regarding binary and how bits flow through computer chips, check out Making Sense of Zeros and Ones.)

    What is binary?

    Binary means communicating in zeros and ones (or bits). Binary is a “base-2” numeral system. This means it uses two digits: 0 or 1. A bit is either off or on, 0 or 1. (For context, decimal is a base-10 numeral system, and hexadecimal… well, we’ll get to that.)

    IPv4 addresses range from 0.0.0.0 to 255.255.255.255 .

    As mentioned earlier, each section is made up of 8 bits. Or eight zeros and ones. Eight bits is equal to 1 byte, or could be referred to as an octet.

    For example, this is an 8-bit number:

    The above IPv4 address ( 104.16.120.127 ) could be written in binary as follows:

    How does 01101000 represent the number 104?

    Each bit is weighted, from right to left, starting at 1 and increasing by a factor of 2. For example:

    So when you hear someone say an IPv4 address is 32 bits in length, just think: 8 bits * 4 sections = 32 bits.

    The anatomy of an IPv6 address

    IPv6 addresses look a lot different. For example:

    IPv6 addresses use the hexadecimal numeral system.

    What are hexadecimal numbers?

    The hexadecimal numeral system is base-16. The doesn’t mean it goes 0-16. Instead, it goes 0–9, then A-F (A: 10, B: 11, and so on).

    As mentioned earlier, an IPv4 address contains four, 8-bit sections. (Making it 32 bits in length.) An IPv6 address, however, contains eight, 16-bit sections. (For a grand total of 128 bits.)

    But the IPv6 address listed above looks like it only has 4 (or 5?) sections. What’s going on?

    This is something that has confused me for awhile. So to provide some context, another way to write this IPv6 address would be:

    The reason you don’t include those additional zeros is because IPv6 addresses use something called zero compression (and zero suppression).

    So if one (or more) of those sections contained all zeros, you could replace them with a colon. This is called zero compression. (Even if there were multiple sections of zeros — such as 0000:0000:0000:0000 — you’d still only use a double colon to represent all of the compressed zeros.

    If one of those sections started with a zero — like 087f rather than 787f — you would remove the zero from the beginning, leaving you with 87f . This is called zero suppression.

    How would you write an IPv6 address in bits?

    As previously mentioned, there are eight, 16-bit sections in an IPv6 address. Each 16-bit section is made up of four, 4-bit sections.

    Let’s break this down by taking the first 4-bit section of the address above:

    How many possible IPv4 and IPv6 addresses are there?

    As you’ve probably heard, one of the reasons for moving to IPv6 is due to the near exhaustion of IPv4 addresses.

    The total number of IPv4 addresses is 2³²:

    4,294,967,296. (Just over four billion.)

    For IPv6, it would be 2¹²⁸:

    This is only a brief foray into the deep world of Internet Protocol. For further nerd reading:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *