Lähetyssovellusten siirtäminen IPv6:een

  • 31.05.2018
  • 2 minuuttia luettavaa
    • s
    • v
    • m

Tässä osassa kuvataan parhaat käytännöt IPv6-lähetyssovelluksen siirtämiseksi Windows Socketsin käytettävissä oleviin multicast-ominaisuuksiin.

Vertailu IPv4:n ja IPv6:n välillä

Valmisteltaessa IPv4-lähetyssovelluksen porttaamista IPv6:een on otettava huomioon erityisesti tämä: IPv6:ssa ei ole toteutettu broadcast-käsitettä. Sen sijaan IPv6 käyttää multicastia.

Multicast IPv6:ssa voi emuloida IPv4:n perinteisiä broadcast-ominaisuuksia. IPV6_ADD_MEMBERSHIP-socket-option asettaminen IPv6-osoitteen ollessa asetettu linkin paikallisen laajuuden kaikkien solmujen osoitteeseen (FF02::1) vastaa lähetystä IPv4:n broadcast-osoitteisiin SO_BROADCAST-socket-option avulla. Tätä osoitetta kutsutaan joskus all-nodes-monilähetysryhmäksi. Sovelluksille, jotka haluavat vain broadcast-emulaation IPv6:lle, tämä lähestymistapa on toiminnallisesti vastaava. Yksi huomattava ero IPv6:ssa on kuitenkin se, että multicast-lähetyksiä all-nodes multicast group -osoitteeseen ei oletusarvoisesti vastaanoteta (IPv4-lähetykset vastaanotetaan oletusarvoisesti). Sovellusohjelmoijien on käytettävä IPV6_ADD_MEMBERSHIP-socket-optiota ottaakseen monilähetysten vastaanoton käyttöön mistä tahansa lähteestä, myös all-nodes-monilähetysryhmäosoitteesta.

Huomautus

Ipv6:ssa rajapintavalinta määritetään argumenttirakenteessa, joka välitetään monilähetyssocket-optiolle tai IOCTL:lle.

Mutta rikkaampien, vankempien, valikoivampien ja helpommin hallittavien lähetysten aikaansaamiseksi useille isännille sovelluskehittäjien tulisi harkita siirtymistä multicast-malliin.

Monilähetykseen siirtyminen

Monilähetyksen avulla sovelluskehittäjät voivat valita valikoivasti tietyn lähde/ryhmä-parin, mikä mahdollistaa valikoivan vastaanottomallin. Multicast Listener Discovery (MLD) IPv6:ssa ja Internet Group Management Protocolin versio 3 (IGMPv3) IPv4:ssä tukevat monilähetysohjelmointia. Lisäksi monilähetys mahdollistaa sen, että sovellukset voivat erityisesti estää (tai poistaa) lähettäjiä ryhmässä, mikä suojaa sovelluksia edelleen vilpillisiltä lähettäjiltä. Tämä ominaisuus on käytettävissä sekä IPv4:ssä (vaatii IGMPv3:n) että IPv6:ssa (vaatii MLDv2:n).

Monilähetystä käyttävillä sovellusohjelmoijilla on kaksi ensisijaista skenaariota: ne, jotka siirtävät IPv4-yleislähetyssovelluksia (tai monilähetyssovelluksia) IPv4:stä IPv6:een, ja ne, jotka luovat IPv6:n monilähetyssovelluksia.

Olemassa olevien sovellusten siirtämiseksi IPv6-monilähetyksiin on kaksi vaihtoehtoa: socket-optioiden käyttäminen ja IOCTL:ien käyttäminen.

  • Socket-optioiden käyttäminen on muutoksiin perustuva lähestymistapa, jonka avulla kehittäjät pystyvät muuttamaan socket-ominaisuuksia tarpeen mukaan (kuten lähettäjän estäminen tai vapauttaminen, uuden lähteen lisääminen ja niin edelleen). Tämä lähestymistapa on intuitiivisempi ja suositeltava lähestymistapa. Lisätietoja muutoksiin perustuvasta lähestymistavasta multicast-ohjelmointiin on kohdassa MLD ja IGMP Windowsin pistorasioiden käyttäminen.
  • IOCTL:ien käyttäminen on lopulliseen tilaan perustuva lähestymistapa, koska sen avulla kehittäjät voivat tarjota täysin konfiguroidun pistorasian tilan, mukaan lukien sisällyttämis- ja poissulkemislistat, yhdellä kutsulla. Lisätietoja lopulliseen tilaan perustuvasta lähestymistavasta on kohdassa Lopulliseen tilaan perustuva monilähetysohjelmointi.

Uusia IPv6-monilähetyssovelluksia luotaessa suositellaan käytettäväksi socket-optioita sen sijaan, että käytettäisiin IOCTL:iä.

Monilähetyssovellusten luomisessa IPv6:lla on yksi toinenkin toimintatapa, ja siihen kuuluu WSAJoinLeaf-funktion käyttö. Vaikka WSAJoinLeaf-funktion käyttäminen ei ole suositeltava käytäntö, on tilanteita, jotka voivat vaatia sen käyttöä. Esimerkiksi yksi Windows Server 2003:n ja sitä aikaisempien Windows Server 2003:n socket-asetusten käytön haittapuoli on se, että ne ovat IP-versiokohtaisia. Näissä vanhemmissa Windows-versioissa on oltava eri socket-asetukset IPv6:lle ja IPv4:lle. Windows Vistassa ja uudemmissa versioissa tuetaan uusia socket-optioita, joita voidaan käyttää sekä IPv4:n että IPv6:n kanssa. WSAJoinLeaf-toiminto sen sijaan on IP-versio- ja protokollakriittinen, ja siksi se voi olla hyödyllinen lähestymistapa sellaisen sovelluksen rakentamiseen, jonka on toimittava useiden IP-versioiden kanssa Windows Server 2003:ssa ja sitä aikaisemmissa versioissa. WSAJoinLeaf-funktion käyttäminen voi olla tarkoituksenmukaisempaa tietyissä tilanteissa, joissa vaaditaan protokolla- ja IP-versio-agnostisuutta.

Vastaa

Sähköpostiosoitettasi ei julkaista.