Size: 3445
Comment:
|
Size: 3449
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 63: | Line 63: |
Látható, hogy az HED echo teszt szerver mindkét protokollo kiszolgál: | Látható, hogy az HED echo teszt szerver mindkét protokollolt kiszolgálja: |
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:
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: