Subject: Re: route6d feature or bug?
To: None <feico@pasta.cs.uit.no>
From: None <itojun@iijlab.net>
List: current-users
Date: 09/30/1999 00:08:45
>[  zila  ]                       [ server6 ]
>    |                                |
>    |                                |
>    |<=====IPv4 over IPv6 tunnel====>|
>    |                                |
>    <--------IPv6 Ethernetworks------>   (i.e. zila and server6 are not on same link)

>> 	If you receive route update over IPv6 over IPv4 tunnel, that will
>> 	be put onto IPv6 routing table as a route over the tunnel.  This is
>> 	what route6d is for.
>What I saw, was that all routes in the IPv6 routing table changed from
>pointing over the ex0 interface, to the gif0 interface. So, zila tried
>to send (native) IPv6 traffic over the IPv4 over IPv6 tunnel, instead
>of routing the IPv6 traffic directly over the ex0 interface. At least
>that's what i believe happened. At the time I wasn't very eager to
>reproduce the problem. I had to kill route6d, flush the routing table
>and restart it with `-N gif0'.

	Hmm, now I see the problem.

	If you configure IPv4 addresses as physical (outer) address, you are
	configuring it as IPv6 over IPv6 tunnel, as it has IPv6 link-local
	address as logical (inner) address.

	If you configure like below:
	- IPv6 address as physical (outer) address
	- and IPv4 address as logical (inner) address
>95 zila:~> gifconfig gif0
>gif0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1280
>        inet6 fe80:5::250:4ff:feec:b1fa  prefixlen 64 		<---this one
>        inet 192.168.2.2 --> 192.168.2.1 netmask 0xffffff00 
>        physical address inet6 3ffe:2a00:100:3004:250:4ff:feec:b1fa --> 3ffe:2a00:100:3001::2
	you are creating IPv4/6 over IPv6 tunnel, as it has both IPv4 and
	IPv6 address as its inner address (notice inner link-local address).
	Inner can be both protocol families.

	RIPng protocol works with link-local addresses, so ripng would run
	on this interface as it can carry IPv6 packet encapsulated into IPv6
	packet.

	This looks much like caused by a feature for gif interface (that it
	will have inner IPv6 address automatically), not the behavior of
	route6d.

	If you need to disable IPv6 packets to be used as inner, you shold:
	- manually remove inner IPv6 address by using:
		ifconfig gif0 inet6 fe80:xxx -alias
	- or, disable ripng on gif0, by route6d -N gif0.

itojun