TableOfContents

Arc 1.x IPv6 patch

Bevezetés

Az ARC 1.x a jövőbeli [http://www.nordugrid.org Nordugrid] grid middleware rendszer alapja lesz. Az ARC 1.x middleware fejlesztésében NIIF Intézet is fontos szerepet vállal a [http://www.knowarc.eu KnowArc] EU IST FP6 projekt keretében. A [http://www.knowarc.eu KnowArc] projekt célkitűzései között az ARC grid middleware modulárissá és szabvnyossá tétele szerepel. Ezt egészítettük ki a Campus IPv6 projekt keretében az ARC middleware IPv6 támogatásával.

A szükséges változtatások

Az ARC grid middleware alapvető kommunikációi a HED modulra épülnek, így ennek a modulnak az IPv6 képessé tétele elegendő ahhoz, hogy middleware nagy egésze (kívéve a a speciálisan optimalizált gridftp-t) IPv6 képes legyen.

A szükséges változtatások 2 fájlra korlátozódtak:

arc-1.x/src/hed/mcc/tcp/MCCTCP.cpp
arc-1.x/src/hed/mcc/tcp/PayloadTCPSocket.cpp

A szerver socket kód részei a arc-1.x/src/hed/mcc/tcp/MCCTCP.cpp fájlban találhatóak. A változtatásai az alábbi patch fájlban találhatóak.

attachment:patch-MCCTCP.cpp.diff

A kliens socket kód IP verzió függetlenre lett módosítva a arc-1.x/src/hed/mcc/tcp/PayloadTCPSocket.cpp fájlban. A változtatásai az alábbi patch fájlban találhatóak.

attachment:patch-PayloadTCPSocket.cpp.diff

IPv6 kompatibilitás használata

A szerver definiciós xml-ben egy új Port6 direktívát vezettünk, ami segítségével szerverenként külön-külön lehet engedélyezni az IPv6 támogatást.

        <Component name="tcp.service" id="tcp">
            <next id="http"/>
            <tcp:Listen><tcp:Port>60000</tcp:Port></tcp:Listen>
            <tcp:Listen><tcp:Port6>60000</tcp:Port6></tcp:Listen>
        </Component>

Mint látható külön-külon lehet szabályozni, hogy IPv4 és IPv6-on milyen portokon működjenek a szerver folyamatok.

A kliens esetében a használatban nem történt jelentős változás. Egyszerűen az IPv6-os címet kell használni a megfelelő definiciókban.

Component name='tcp.client' id='tcp'><tcp:Connect><tcp:Host>::1</tcp:Host><tcp:Port>60000</tcp:Port></tcp:Connect></Component>

Amennyiben domain nevet ad meg a felhasználó az RFC 3484 beállításoktól függően a kliens automatikusan IPv6 vagy IPv4 kapcsolat épít ki.

A jelenlegi implementáció tartalmaz egy apró limitációt. A hostname:port formátumú szintakszist IPv6 esetében nem lehet használni, mivel a : az IPv6 címformátumnak a része. Ezt a limitációt az RFC 2372-ben javasolt [hostname]:port alkalmazásával lehetne kiküszöbölni, de ez jelenleg a IPv6 literal URL-t támogató parser nincsen implementálva.

Demonstráció

A HED IPv6 képességét a HED echo test szerverrel demonstráljuk.

A teszthez alkalmazott konfigurációs fájl: attachment:service.xml

A szerver elindulása és működése:

attachment:service_script.txt

Látható, hogy az HED echo teszt szerver mindkét protokollolt kiszolgálja:

attachment:test_service_netstat.png

A szerver teszteléséhez használt echo test kliens IPv4-es változata: attachment:test_client_ipv4.cpp

Az IPv4 kliens müködése:

A szerver teszteléséhez használt echo test kliens IPv6-es változata: attachment:test_client_ipv6.cpp

Az IPv6 kliens müködése: