From owner-IPv6-jp@jp.freebsd.org  Fri Apr 30 02:58:14 1999
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id CAA67342;
	Fri, 30 Apr 1999 02:58:14 +0900 (JST)
	(envelope-from owner-IPv6-jp@jp.FreeBSD.org)
Received: from pooh.aist-nara.ac.jp (isa420.aist-nara.ac.jp [163.221.74.120])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id CAA67337
	for <IPv6-jp@jp.freebsd.org>; Fri, 30 Apr 1999 02:58:10 +0900 (JST)
	(envelope-from demizu@dd.iij4u.or.jp)
Received: from localhost by pooh.aist-nara.ac.jp (8.8.7/2.8Wb)
	id RAA10932; Thu, 29 Apr 1999 17:58:30 GMT
From: Noritoshi Demizu <demizu@dd.iij4u.or.jp>
To: IPv6-jp@jp.freebsd.org
In-Reply-To: Your message of "Fri, 30 Apr 1999 02:29:49 +0900"
References: <23569.925406989@coconut.itojun.org>
X-Mailer: Mew version 1.69 on Emacs 19.28.1 / Mule 2.3
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Message-Id: <19990430025829V.demizu@dd.iij4u.or.jp>
Date: Fri, 30 Apr 1999 02:58:29 +0900
X-Dispatcher: impost version 0.99i (Apr. 6, 1997)
Lines: 66
Reply-To: IPv6-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+990405
X-Sequence: IPv6-jp 216
Subject: [IPv6-jp 216] Re: tunnel over NAT 
Errors-To: owner-IPv6-jp@jp.freebsd.org
Sender: owner-IPv6-jp@jp.freebsd.org
X-Originator: demizu@dd.iij4u.or.jp

$B$:$$$V$s$`$+$7$K(B tunnel $B$K(B NAT box $B$r1[$($5$;$?$$$J$C$F9M$($?$H$-$K$O!"(B
tunnel setup protocol (UDP) $B$_$?$$$J$N$r:n$C$F!"(B

 Phase I: Request
  1. client $B$,(B upstream $B$K(B setup request message $B$rEj$2$k!#$3$N$H$-!"(B
	src=d, dst=A, proto=UDP, sport=P[d], dport=P[A]
  2. NAT box $B$G=q$-49$($i$l$k!#$=$N7k2L!"(B
	src=B, dst=A, proto=UDP, sport=P[Bd], dport=P[A]
  3. upstream $B$G$O(B msg $B$K=>$C$F(B tunnel $B$rD%$k!#$?$@$7(B IP over UDP $B$K$9$k$N$i!#(B

 Phase II: Reply
  4. upstream $B$O(B client $B$K(B setup reply message $B$rEj$2$k!#$3$N$H$-!"(B
	src=A, dst=B, proto=UDP, sport=P[A], dport=P[Bd]
  5. NAT box $B$G=q$-49$($i$l$k!#$=$N7k2L!"(B
	src=A, dst=d, proto=UDP, sport=P[A], dport=P[d]
  6. client $B$G$O(B msg $B$K=>$C$F(B tunnel $B$rD%$k!#$?$@$7(B IP over UDP $B$K$9$k$N$i!#(B

 Phase III: packet exchange
  case 1: client$B"*(Bupstream
	src=d, dst=A, proto=UDP, sport=P[d], dport=P[A]
  case 2: upstream$B"*(Bclient
	src=A, dst=B, proto=UDP, sport=P[A], dport=P[Bd]

$B$"$H!"(BNAT box $B$,JQ49K:$l$?$H$-$O(B (port unreach$B$J$I(B)$B!"(BRequest & Reply 
$B$+$i$d$j$J$*$7$G$9!#(B

$B$3$N$H$-$N(B "IP over UDP" $B$O!"(Btype field $B$r;}$C$F$$$F!"(B
	1=Request, 2=Reply, 3=$B%Q%1%C%H$r1?$s$G$k$h(B,
$B$N(B 3$B$D$N$$$:$l$G$"$k$+$,6hJL$G$-$k$h$&$J(B format $B$H$7$^$9!#(B
$B%Q%1%C%H$r1?$V$H$-$N$?$a$K(B NextHdr $B%U%#!<%k%I$bI,MW$G$9!#(B
($B3HD%@-$N$?$a(BIPv6$B0J30$b2D$H$9$k$?$a(B)

$BLdBj$O(B "IP over UDP" $B$J$N$G(B gifconfig $B$8$c(B tunnel $BD%$l$J$$$+$b!"!"$C$F(B
$B$H$3$G$9$M!#!#$"!"$"$H(B recvfrom() $B$O(B UDP $B$N(B dst IP addr $B<h$l$J$$$N$G!"(B
IP $B%"%I%l%9$rJ#?t;}$C$F$$$k$H$-$O$"$i$+$8$a%"%I%l%9$r(B bind() $B$7$?(B 
socket $B$rMQ0U$9$k$+!"(BBPF $B$_$?$$$J$N$HJ;MQ$9$k$+$,I,MW$+$b$7$l$^$;$L!#(B

	> upstream (imasy$BB&$N(BKAME$BH"(B)
	>   |A
	>   :	global IPv4 address
	>   |B
	> NAT box
	>   |c
	> ==+==
	>   |d
	> client (imasy$B$N%f!<%6B&$N(BKAME$BH"(B)

# $B?29{$1$F4*0c$$$,F~$C$F$k$+$b$7$l$^$;$s!#$4$a$s$J$5$$!#(B


ps. $B$?$H$($P$3$s$J$s$M!#(B
	+-------+-------+-------+-------+
	/				/
	|	carrier IP header	|
	/				/
	+-------+-------+-------+-------+
	|     sport	|     dport	|
	+-------+-------+-------+-------+
	|    length	|    cksum	|
	+-------+-------+-------+-------+
	| type	|NxtHdr	|  Reserved	|  $B"+MW$9$k$K$3$3$@$1(B
	+-------+-------+-------+-------+
	/				/
	|	carried packet		|
	/				/
	+-------+-------+-------+-------+
