NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

kern/56753: Certain VLAN IDs don't work for IPv6 across internal bridges.



>Number:         56753
>Category:       kern
>Synopsis:       Certain VLAN IDs don't work for IPv6
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Mar 16 10:35:00 +0000 2022
>Originator:     Lars-Johan Liman
>Release:        NetBSD 9.2
>Organization:
#-------------------------------------------------------------------------
# Lars-Johan Liman, M.Sc.		 ! E-mail: liman%cafax.se@localhost
# Cafax AB				 ! HTTP  : //www.cafax.se/
# Computer Consultants, Sweden		 ! Voice : +46 8 - 564 702 30
#-------------------------------------------------------------------------
>Environment:
System: NetBSD trough.liman.net 9.2 NetBSD 9.2 (XEN3_DOM0) #0: Wed May 12 13:15:55 UTC 2021  mkrepro%mkrepro.NetBSD.org@localhost:/usr/src/sys/arch/xen/compile/XEN3_DOM0 amd64
Architecture: x86_64
Machine: amd64
>Description:
	This is a strange one ... :-)

	If you have Xen domU clients connected across a bridge(4) in the
	dom0, and want to use IPv6 to communicate between the domUs
	using different VLANs, that works well, EXCEPT if you are
	using VLAN ID 112 or VLAN ID 240 (maybe others too)?

	I note that the bit pattern for numbers 112 and 240 (decimal) are
	0111 0000 and 1111 0000 respectively, meaning that they have
	the sequence x111 0000 in common. We have tested on two
	separate dom0s, and VLAN IDs 100-111 and 113-126 work fine.
	112 does not work, and, after having looked at the bit pattern,
	I also tested 240 which also did not work. We have not tested
	other numbers.
									
	The problem manifests itself in the way that neighbor
	solicitations don't cross the bridge. Tcpdump on the sending
	host shows that they are sent, but no packet is received on
	the receiving host. I believe these are sent using IPv6
	multicast, but I'm not certain of the details. The exact same
	setup works fine with other VLAN IDs.
>How-To-Repeat:
	This is from my head:
	- Start with a dom0 running NetBSD/amd64 9.2-RELEASE
	  XEN3_DOM0 kernel and xen-4.11.4nb2 hypervisor. (The Xen
  	  version seems less relevant here, we have tested two.)
  	- Set up an internal bridge on the dom0.
	  - ifconfig bridge0 create ; ifconfig bridge0 up
  	- Create two amd64 virtual guests (domUs) that both have
	  vif = [ 'bridge=bridge0' ]
  	- Boot the domUs.
	- On each domU do (respectively):
	
	  domU-alpha:
	  - ifconfig xennet0 up
  	  - ifconfig vlan1 create
  	  - ifconfig vlan1 vlan 112 vlanif xennet0
  	  - ifconfig vlan1 10.1.1.1/24 up
    	  - ifconfig vlan1 3ffe:1:1:1::1/64

	  domU-bravo:
  	  - ifconfig xennet0 up
  	  - ifconfig vlan1 create
  	  - ifconfig vlan1 vlan 112 vlanif xennet0
  	  - ifconfig vlan1 10.1.1.2/24 up
    	  - ifconfig vlan1 3ffe:1:1:1::2/64

	- Use tcpdump to look at "icmp6" traffic on vlan1 on both
	  machines.
	  - alpha# tcpdump -n -i vlan1 icmp6 &
	  - bravo# tcpdump -n -i vlan1 icmp6 &

  	- Now try to ping the second from the first:
	  - alpha# ping6 -n 3ffe:1:1:1::2
	  For comparison try
  	  - alpha# ping -n 10.1.1.2
	  
  	- For more comparison, back out of the configuration above,
	  and repeat it with another VLAN ID (e.g., 111). The "ping6"
	  will then work.
	    
    	- Finnally utter the phrase "HUH?! WTF?!". :-)
>Fix:
	Workaround: avoid VLAN IDs 112 and 240 (and others?).
	Fix: no known.



Home | Main Index | Thread Index | Old Index