Adresy IPv6
Výběr adresy

S několika různými adresami přiřazenými jednomu počítači vznikl problém, kterou adresu použít pro danou komunikaci. K tomuto účelu byl definován algoritmus pro volbu adres, který je popsán v RFC 3484.

## Kandidátské adresy

Základem algoritmu jsou kandidátské adresy. Pro cílové adresy se seznam kandidátských adres nejčastěji získá prostřednictvím DNS dotazu (převod DNS jména na IPv6 adresu). Tento seznam je následně seřazen podle níže uvedených pravidel od nejvhodnější adresy po nejméně vhodnou, z něhož se vybere nejvhodnější cílová adresa. V případě, že má aplikace k dispozici cílovou IPv6 adresu, výběr cílové adresy odpadá.

K cílové adrese je třeba vybrat nejvhodnější zdrojovou adresu. Pro zdrojové adresy seznam kandidátských adres tvoří všechny individuální adresy přiřazené rozhraní, kterým budou data odeslána k danému cíli. Z toho vyplývá, že každá cílová adresa může mít různé seznamy kandidátských adres pro zdrojovou adresu. V případě směrovače, seznam kandidátských adres pro zdrojovou adresu může obsahovat i individuální adresy ostatních rozhraní, na kterých předává data. Aplikováním níže uvedených pravidel se ze seznamu kandidátských adres vybere nejvhodnější zdrojová adresa.

V případě, že se komunikace nezdaří, může se volba adres opakovat.

## Tabulka politik

Tabulka politik slouží k určení místních preferencí. Jednotlivé záznamy obsahují prefix, prioritu a značku, kde priorita určuje výhodnost dané adresy jako cílové a značka určuje, zdali se zvolený pár adres k sobě hodí. V případě shodné značky obou adres, je takovému páru adres dána přednost. Hledaná priorita a značka se určí na základě nejdelšího shodného prefixu.

V případě, že není tabulka politik nakonfigurována administrátorem, použije se výchozí tabulka politik.

Výchozí tabulka politik
prefix | priorita | značka
::1/128 | 50 | 0
::/0 | 40 | 1
2002::/16 | 30 | 2
::/96 | 20 | 3
::FFFF:0:0/96 | 10 | 4

## Výběr zdrojové adresy

Algoritmus má dvě sady pravidel. První se vztahuje na volbu zdrojové adresy a je demonstrována pomocí příkladu, kdy jsou k dispozici dvě zdrojové adresy SA a SB pro daný cíl. Pravidla se aplikují postupně a v případě, že dojde k rozhodnutí, ostatní se neberou v potaz. Jestliže žádné pravidlo nerozhodne, ponechá se volba zdrojové adresy na implementaci. Pořadí pravidel pro volbu zdrojové adresy je:

1. Preferovat totožné adresy – pokud je adresa totožná s cílovou, vyber ji.
2. Preferovat odpovídající dosah – pokud mají adresy rozdílný dosah, seřaď je podle dosah(SA) < dosah(SB). Pokud je dosah(SA) < dosah(cíl) vyber adresu SB, jinak vyber adresu SA.
3. Vyhýbat se odmítaným adresám
4. Preferovat domácí adresy
5. Preferovat odchozí rozhraní – pokud je adresa SA přiřazena k rozhraní, kterým budou data odeslána k cíli, a adresa SB nikoli, vyber adresu SA.
6. Preferovat shodné značky – pokud značka(SA) = značka(cíl) a značka(SB) ≠ značka(cíl), vyber adresu SA.
7. Preferovat veřejné adresy
8. Použít nejdelší shodný prefix

Algoritmus je symetrický, proto dojde prohození rolí zdrojových adres a k opakované aplikaci pravidel. Aplikováním pravidel se určí nejvhodnější zdrojová adresa pro daný cíl.

## Výběr cílové adresy

Při výběru cílové adresy se mimo jiné zvažuje vhodnost zdrojové a cílové adresy. Z tohoto důvodu se pro každou cílovou adresu prvně určí nejvhodnější zdrojová adresa. Následně dojde k uspořádání cílových adres v kandidátském seznamu podle následujících pravidel:

1. Vyhýbat se cílovým adresám, které se nepoužívají – pokud je cílová adresa DB nedosažitelná, nebo pokud zdroj(DB) není definován, vyber cílovou adresu DA.
2. Preferovat shodný dosah – pokud je dosah(DA) = dosah(zdroj(DA)) a dosah(DB) ≠ dosah(zdroj(DB)), vyber adresu DA.
3. Vyhýbat se odmítaným adresám
4. Preferovat domácí adresy
5. Preferovat shodné značky – pokud je značka(zdroj(DA)) = značka(DA) a značka(zdroj(DB)) ≠ značka(DB), vyber adresu DA.
6. Preferovat nejvyšší prioritu
7. Preferovat přenos nativním protokolem – pokud adresa DA je dosažitelná prostřednictvím přechodového mechanismu (např. zapouzdření IPv6 do IPv4) a adresa DB je dosažitelná prostřednictvím nativního protokolu, vyber adresu DB.
8. Preferovat menší dosah – pokud je dosah(DA) < dosah(DB), vyber adresu DA.
9. Použít nejdelší shodný prefix
10. V opačném případě, nech pořadí beze změny – pokud adresa DA předchází v původním seznam adresu DB, vyber adresu DA. Jinak vyber adresu DB.

Počítač má jediné síťové rozhraní, kterému byly přiděleny následující adresy:

1. FE80::02B5:32FF:FE01:1984 (lokální linková)
2. 2001:718:10:1:02B5:32FF:FE01:1984 (globální individuální)
3. 2001:: 02B5:32FF:FE01:1984 (globální individuální)

Počítač má odeslat data na adresu 2001:718:20:56:E859:A1FF:FE82:AA01 a potřebuje vybrat nejvhodnější zdrojovou adresu. Dále bude použita výchozí tabulka politik, z jejíhož hlediska se všem adresám přiřadí priorita 40 a značka 1.

Lokální linková adresa skončí na pravidle číslo 2, protože její dosah je menší než globální dosah cíle. Mezi globálními adresami rozhodne až pravidlo 8, kdy se jako zdrojová adresa zvolí druhá adresa, protože má shodný nejdelší prefix 2001:718::/32.

Výběr cílové adresy je založen na kandidátském seznamu, který poslal DNS server pro určité doménové jméno. Kandidátský seznam obsahuje následující adresy:

1. 2001:DB8:A29C:5::02 (zdrojová adresa 2001:: 02B5:32FF:FE01:1984)
2. 2001:718::B5:18FF:FE09:1 (zdrojová adresa 2001:718:10:1:02B5:32FF:FE01:1984)

Seznam obsahuje i vhodné zdrojové adresy, které jsou zvoleny na základě algoritmu pro výběr zdrojové adresy. Obě adresy mají shodně přidělenu prioritu 40 i značku 1. Algoritmus rozhodne až na základě pravidla 8, kdy druhá adresa má shodný nejdelší prefix 2001:718::/32. Kandidátský seznam pro cílové adresy bude seřazen následovně:

1. 2001:718::B5:18FF:FE09:1
2. 2001:DB8:A29C:5::02

Tedy pro komunikaci bude zvolena adresa 2001:718:10:1:02B5:32FF:FE01:1984 jako zdrojová a adresa 2001:718::B5: 18FF:FE09:1 jako cílová.