Запрос на подсеть IPv6 - PullRequest
       14

Запрос на подсеть IPv6

0 голосов
/ 10 октября 2011

Предположим, даны два адреса IPv6: ip1 (abc :: 1/64), ip2 (abc :: 2/64), каков алгоритм определения, являются ли они частью одной подсети или нет?

Для IPv4 каждый октет в одном адресе маскируется октетом подсети, и результат сравнивается с результатом аналогичного упражнения для второго адреса. Можем ли мы сделать аналогичную вещь для каждого гексета в адресе IPv6?

Кроме того, в IPv6 длина префикса / 64 эквивалентна 'ffff: ffff: ffff: ffff ::'? Как маска сети представлена ​​в формате адреса IPv6?

Спасибо!

Ответы [ 3 ]

1 голос
/ 10 октября 2011

Предположим, что два IPv6-адреса ip1 (abc :: 1/64), ip2 (abc :: 2/64) учитывая, что алгоритм, чтобы определить, являются ли они частью одного и того же подсеть или нет?

Они находятся в одной подсети, если первые 64 бита равны. Это первые четыре «блока» в адресе. Если вы напишите полные адреса, они станут 0abc: 0000: 0000: 0000: 0000: 0000: 0000: 0001 и 0abc: 0000: 0000: 0000: 0000: 0000: 0000: 0002. Первые 64 бита (0abc: 0000: 0000: 0000: часть) равны, поэтому они находятся в одной подсети.

Для IPv4 каждый октет в одном адресе маскируется октетом подсети. и результат по сравнению с результатом аналогичного упражнения для второй адрес. Можем ли мы сделать аналогичную вещь для каждого гексета в IPv6-адрес?

На самом деле, вы маскируете биты, а не октет. Но вы все равно можете использовать ту же технику. Преобразуйте адрес в биты и замаскируйте его битовой последовательностью, соответствующей длине префикса. Таким образом, a / 64 будет 64 битами со значением 1, за которым следует 64 бита со значением 0. Для / 48 это будет 48 битов со значением 1, за которым следует 80 битов со значением 0.

Кроме того, в IPv6 длина префикса / 64 эквивалентна 'FFFF: FFFF: FFFF: FFFF ::'? Как сетевая маска представлена ​​в IPv6 формат адреса?

Обычно нет, но 'ffff: ffff: ffff: ffff ::' соответствует маске сети / 64.

1 голос
/ 10 октября 2011

Маски IPv4 немного обманчивы, потому что они позволяют указывать маски, например, 255.0.0.255.IPv6 разъясняет это, определяя термин «длина префикса» как длину непрерывных битов в маске сети.

255.0.0.0     ≡ ff00::      ≡ 8-bit prefix
255.255.0.0   ≡ ffff::      ≡ 16-bit prefix
255.255.192.0 ≡ ffff:C000:: ≡ 18-bit prefix

Если у вас есть два адреса, IP # 1 и IP # 2 и маска сети NETMASK, то для проверкиесли два адреса в одной сети, то должно быть верно следующее:

IP#1 & NETMASK == IP#2 & NETMASK

Это распространяется на истину как для IPv4, так и для IPv6, поэтому все, что необходимо, - это преобразовать длины префикса IPv6 в маску сети, что прощеиспользовать в тесте.

0 голосов
/ 10 октября 2011

стандартная реализация Radix Tree (Trie) (Patricia) поиска маршрута доступна для IPv6.

Маска подсети представляется следующим образом:

при описании IPv4IP и сеть, мы используем маску сети для определения сети.IPv6 решил вместо использования старой нотации 255.255.255.0, что лучше просто использовать / # нотацию.Таким образом, наша маска сети будет 128, чтобы описать что-то похожее на / 32 (255.255.255.255) или один хост.Обратите внимание, что expr 16 \* 8 дает нам 128. "[1]

[1] http://www.linux -sxs.org / network / ipv6_for_beginners.html

[2] http://www.tldp.org/HOWTO/Linux+IPv6-HOWTO/

...