IPv6ネットワーク上でJXTAを使う.

はじめに

IPv6のネットワーク構築 無線LAN - WebLab.otaで構築したIPv6を使った無線アドホックネットワーク上(ローカルなネットワーク)でJXTAを使ってみる.
いままではjxta-lib-2.4.1を使ってましたが,今回からはjxta-2.5を使う.これはjxta-2.4.1がナゼカシラン,IPv6で動作しないらしいから…

PlatformConfigの設定を変える

まずIPv4上(ルータを介して2台のPCが繋がっているネットワークで,インターネットには繋がっていない)で正常に動作していたjxtaを,そのままIPv6上で動かしてみたが,当然動かなかった.(近隣のピアを発見できない)
最初はランデブーピアがないことが原因ではなかろうか?と思ったが違っていた.


結論からいって,jxtaを動かしたときに自動的に作られる『.cache』の中にある(この.cacheフォルダの中身はwinnyでいうところのノード情報とかを格納している.発見したピア情報とか,アドバタイズメント情報とか,自分のピアの設定とか)PlatformConfigファイルを弄ることで解決できた.

チュートリアルのbidi/JxtaServerPipeExampleを動かすとできるPlatformConfigファイルはこんな感じなのだが…

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jxta:CP>
<jxta:CP type="jxta:PlatformConfig" xmlns:jxta="http://jxta.org">
	<PID>
		urn:jxta:uuid-59616261646162614E50472050325033073B3AF2A50D451190A9F5DB819ED07A03
	</PID>
	<Name>
		JxtaServerPipeExample
	</Name>
	<Desc>
		Created by NetworkManager
	</Desc>
	<Svc>
		<MCID>
			urn:jxta:uuid-DEADBEEFDEAFBABAFEEDBABE0000000905
		</MCID>
		<Parm>
			<jxta:TransportAdvertisement xmlns:jxta="http://jxta.org" xml:space="preserve" type="jxta:TCPTransportAdvertisement">
<Protocol>tcp</Protocol><ConfigMode>auto</ConfigMode><Port start="9701" end="9799">9701</Port><MulticastAddr>224.0.1.85</MulticastAddr><MulticastPort>1234</MulticastPort><MulticastSize>16384</MulticastSize>			</jxta:TransportAdvertisement>
		</Parm>
	</Svc>
	<Svc disabled="true">
		<MCID>
			urn:jxta:uuid-DEADBEEFDEAFBABAFEEDBABE0000000A05
		</MCID>
		<Parm>
			<jxta:TransportAdvertisement xmlns:jxta="http://jxta.org" xml:space="preserve" type="jxta:HTTPTransportAdvertisement">
<Protocol>http</Protocol><ConfigMode>auto</ConfigMode><Port>9700</Port><ProxyOff/><ServerOff/><ClientOff/>			</jxta:TransportAdvertisement>
			<isOff/>
		</Parm>
	</Svc>
	<Svc>
		<MCID>
			urn:jxta:uuid-DEADBEEFDEAFBABAFEEDBABE0000000605
		</MCID>
		<Parm type="jxta:RdvConfig" xmlns:jxta="http://jxta.org" xml:space="preserve" config="adhoc"/>
	</Svc>
	<Svc disabled="true">
		<MCID>
			urn:jxta:uuid-DEADBEEFDEAFBABAFEEDBABE0000000F05
		</MCID>
		<Parm type="jxta:RelayConfig" xmlns:jxta="http://jxta.org" xml:space="preserve">
<client/><server/>		</Parm>
	</Svc>
	<Svc>
		<MCID>
			urn:jxta:uuid-DEADBEEFDEAFBABAFEEDBABE0000000505
		</MCID>
		<Parm type="jxta:PSEConfig" xmlns:jxta="http://jxta.org" xml:space="preserve"/>
	</Svc>
</jxta:CP>

この224.0.1.85ff02::1といったマルチキャストアドレスに変更して立ち上げ直すとIPv6ネットワーク上でJxtaは動いてくれる.(マルチキャストアドレスならなんでもいい…のかどうかは知らないけれど,いろいろ使えるのでff02::1以外でも大丈夫)

適当解説

デフォルトで設定されている224.0.1.85というアドレスは,マルチキャストアドレス ‐ 通信用語の基礎知識に一覧が載っているが,jini-requestが取得しているインターネットワーク制御ブロックのアドレスである.
このアドレスをルータに投げると,そのルータに繋がっているjiniとかjxtaとか(sunのプロジェクト関係かな?)が返事を返してくれる…というものらしい.
このアドレスをIPv6上にマルチキャストしてくれるアドレスに変更すればIPv6ネットワーク上でJxtaは動いてくれる.
(このへんIPv6は便利だよね.ルータ要らないつーのが素敵)