Jak jistě všichni pozorujeme, oproti původním představám se IPv6 prosazuje proti verzi 4 dosti pomalu a obtížně. Na většinu uživatelů současného Internetu totiž adresová nouze zatím nedoléhá a ostatní pozitiva IPv6 zřejmě nevyváží utrpení spojené s přechodem na nový protokol. V této situaci je proto nezbytné, aby se nové API pro IPv6 chovalo velmi nenápadně a nenarušilo hladký chod stávajících síťových služeb a aplikací. Rovněž je potřeba, aby přidání podpory IPv6 do stávajících programů bylo pokud možno snadné. Návrh nového API se proto řídil těmito kritérii: * Veškeré změny musí zachovat kompatibilitu se stávajícími programy na úrovni //binární i zdrojové//. Jinými slovy, binární programy musí nadále fungovat i na systémech s knihovnami podporujícími nové API a programy napsané pro staré API musí jít beze změn přeložit a fungovat i na systémech s novým API. * Změny v API musí být co nejmenší a v souladu s tradičními postupy programování pomocí //BSD Sockets//. * Je-li to vhodné a možné, programy napsané pro nové API by měly být schopny komunikovat s jinými počítači jak pomocí IPv6, tak i IPv4. Nové API také musí fungovat na strojích podporujících zároveň obě verze IP (tzv. //duální sloupec// protokolů). Znamená to tedy, že díky uvedeným zásadám bude migrace aplikací na IPv6 triviální a programátorův život radostný? Obecně bohužel nikoli. Existuje totiž pěkná řádka programů a protokolů, které používají některý z těchto postupů či předpokladů: * Pracují s adresou IPv4 uvnitř aplikace (identifikují uzly adresami, kešují adresy získané z DNS apod.) * Předpokládají, že síťové rozhraní má jen jednu IP adresu. * Předpokládají, že IP adresa má 32 bitů. Programy, které těmito neduhy netrpí, je ale obvykle možno upravit pro nové API. Existují dokonce i automatické konvertory.