Sunday, July 5, 2009

IPv6: коннективити

Не прошло и года^Wполугода, как оно свершилось:
Где-то в феврале получил блок /32 (выдают всем, по первой же просьбе), через месяц-другой начали уговаривать аплинков на ipv6 транзит, еще с месяц аплинки уговаривались, меняли у себя софт, etc..

В результате, после упорной борьбы с не менее упорно не работавшим между мной и провайдером NDP и обновлением престарелой квагги (некультурно сбрасывающей соединение сразу по получении bgp multiprotocol extension capability без отсылки open errors) "оно" решило заработать.

Остальные садовые грабли тут...

Отдельно пришлось разбираться с странной идеей класть с обоих сторон в MP_REACH_NLRI nexthop как global адрес интерфейса, так и его же link-local адрес (что при нерабочем NDP было весьма затруднительно). Причем, в rfc внятно не описано ни то, зачем собственно класть link-local адрес в nexthop ни то, какой же из них обоих (при наличии) получившему апдейт роутеру выбирать. После просмотра исходников quagga - bgp_zebra_announce() где-то в радиусе
/* We have to think about a IPv6 local-address curse. */
выяснилось, что при наличии link-local адреса в ядро улетает именно он, несмотря на показывающийся в sh ipv6 b global адрес. Спас ситуацию смешной
route-map XXX-IN permit 10
set ipv6 next-hop local <global address>
На исходящих апдейтах такой route-map не сработал - циска видимо более придирчиво относится к local global адресам :), поэтому пришлось сносить ipv6 link-local адрес с интерфейса и перезапускать квагу, после чего та честно начинала слать в nexthop только один глобальный адрес

Отдельная тема - то, что не получилось повесить static ND entry на локальный адрес стыка - получались либо такие вещи
# ndp -a | grep fe80::20b:45ff:feb6:8980
fe80::20b:45ff:feb6:8980%em0 0:b:45:b6:89:80 em0 expired N
fe80::20b:45ff:feb6:8980%em0 (incomplete) em0 expired N
.. либо вообще ничего не получалось

0 comments:

Post a Comment