5rc6 + Win7 IPv6 stateless autoconf issue

I’ve been having some issues getting IPv6 stateless autoconfiguration working reliably with a RB750G with 5rc6. Dont think it particular to 5rc6 as I’ve previously observed the same results on 4.13 & 4.16, but since 5rc6 is the latest IPv6 updated, thought I’d post here.

The Win7 laptop I’m testing with has all the MS privacy (Temp addr) & addr randomization nonsense turned off, and all native OS v6 tunneling disabled (teredo, 6to4, ISATAP). Also same results via wireless (external AP) or directly connected via Ethernet to RB750G.

LAN side v6 addressing on the RB750G as follow (global addr obfuscated) …

#    ADDRESS                                     INTERFACE                     ADVERTISE
0  G 2001:xxxx:xxxx:xxxx:20c:42ff:fe70:d61/64    ether1                        Yes     
3 DL fe80::20c:42ff:fe70:d61/64                  ether1                        No

and ND settings at default as follows …

0   interface=ether1 ra-interval=3m20s-10m ra-delay=3s mtu=unspecified reachable-time=unspecified retransmit-interval=unspecified ra-lifetime=30m hop-limit=64 
     advertise-mac-address=yes advertise-dns=no managed-address-configuration=no other-configuration=no

1  D prefix=2001:xxxx:xxxx:xxxx::/64 interface=ether1 on-link=yes autonomous=yes valid-lifetime=4w2d preferred-lifetime=1w

Now if I boot the RB then start the Win7 laptop, I get this …

Wireless LAN adapter Wireless Network Connection:

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Intel(R) WiFi Link 5100 AGN
   Physical Address. . . . . . . . . : 00-24-D6-07-5F-AE
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
   Link-local IPv6 Address . . . . . : fe80::224:d6ff:fe07:5fae%12(Preferred)
   IPv4 Address. . . . . . . . . . . : 192.168.168.100(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Lease Obtained. . . . . . . . . . : 28 December 2010 10:33:15 PM
   Lease Expires . . . . . . . . . . : 31 December 2010 10:33:15 PM
   Default Gateway . . . . . . . . . : 192.168.168.1
   DHCP Server . . . . . . . . . . . : 192.168.168.1
   DHCPv6 IAID . . . . . . . . . . . : 218113238
   DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-12-6C-8D-98-00-24-E8-BC-7D-69
   DNS Servers . . . . . . . . . . . : 192.168.168.1
   NetBIOS over Tcpip. . . . . . . . : Enabled

Note, no IPv6 global addr or default route recieved. Performing a ‘ipconfig /renew6’ does not help (with Wireshark see the Router Soliciations being sent by Win7 but RB not responding). The strange items above are the DHCPv6 entries (5rc6 doesnt support DHCPv6 yet?).

The Win7 laptop is using the RB for v4 DHCP with a static binding, maybe somehow this is where is confusion is coming from? I did find a way to force it to work, if I add ether1’s local-link IPv6 addr with ADVERTISE=Yes, Win7 immediatedly updates with the correct/desired configuration …

Wireless LAN adapter Wireless Network Connection:

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Intel(R) WiFi Link 5100 AGN
   Physical Address. . . . . . . . . : 00-24-D6-07-5F-AE
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
   IPv6 Address. . . . . . . . . . . : 2001:xxxx:xxxx:xxxx:224:d6ff:fe07:5fae(Preferred)
   Link-local IPv6 Address . . . . . : fe80::224:d6ff:fe07:5fae%12(Preferred)
   IPv4 Address. . . . . . . . . . . : 192.168.168.100(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Lease Obtained. . . . . . . . . . : 28 December 2010 10:12:19 AM
   Lease Expires . . . . . . . . . . : 31 December 2010 10:17:27 PM
   Default Gateway . . . . . . . . . : fe80::20c:42ff:fe70:d61%12
                                       192.168.168.1
   DHCP Server . . . . . . . . . . . : 192.168.168.1
   DNS Servers . . . . . . . . . . . : 192.168.168.1
   NetBIOS over Tcpip. . . . . . . . : Enabled

So my question is, has anyone else experienced such IPv6 stateless autoconfig anomolies between ROS & Win7? Are there any workarounds or is this possibly a bug (ROS or Win7)?

Do you have any ports on the RB750G slaved to a master port (i.e., are you using the chipset), and is the Windows client connected to such a port?

There (was? is?) a bug in ROS that caused radvd message failures on such ports. It works for a bit, and then fails hard and sends no further advertisements. Running all ports as routed ports and using real switches cause everything to work again. I’ll see if I can dig up the relevant old threads.

Edit: there you go: http://forum.mikrotik.com/t/rb-450g-ipv6-problem-partial-solution/34431/1
If you find you still have the same issue please open a ticket with support referencing forum threads and the tickets mentioned in the thread linked above.

If your issues are different please post your exact setup and enable radvd debug messages to the logs so things can be traced down.

Hi fewi,

Thanks for the link to the thread … seems like this is a long running saga.

Yes the ports used for direct connect & ext. AP are both slaves of ether1. I swapped it so that the AP is now on ether1, other ports still slaved (dont have ext switch atm). But after 2 power cycles of RB & laptop, problem still persists.

Only way I can get it to work is to use my ‘overwrite dynamically create local-link address with same one where advertise=yes’ trick. This would indicate unlike in the thread, where the issue seems hw based, this is probably sw?

Will try the radvd debug tomorrow to see what it says, and also check for long workability i.e. RAs stop after < 24h.

Cheers.

You are confusing something. You cannot set advertise to link-local address,
only to global ones. And you NEED to enable advertising on global address for
others to receive one.

And v5.0rc6 specifically has a fix for the problem mentioned in other topic.

Straight from the CHANGELOG:
*) handle correctly IPv6 address on bridged or switched interfaces;

Hi normis,

After I overwrite the dynamically created local-link entry (with Winbox), both local-link & global addresses on ether1 have advertise=Yes …

#    ADDRESS                                     INTERFACE                     ADVERTISE
0  G 2001:xxxx:xxxx:xxxx:20c:42ff:fe70:d61/64    ether1                        Yes     
6  L  fe80::20c:42ff:fe70:d61/64                 ether1                        Yes

I also agree, advertise=Yes should not have to be set on the local-link addr, but its the only way I’ve found to ‘wake up’ ether1 to start working (responding to Router Solicit messages). It has now been several hours since last doing it, and its still working. When doing a ipconfig /renew6 on the Win7 I see in Wireshark the RB750G responding …

No.     Time        Source                Destination           Protocol Info
    151 24.023767   fe80::224:d6ff:fe07:5fae ff02::2               ICMPv6   Router solicitation

Frame 151 (70 bytes on wire, 70 bytes captured)
Ethernet II, Src: IntelCor_07:5f:ae (00:24:d6:07:5f:ae), Dst: IPv6mcast_00:00:00:02 (33:33:00:00:00:02)
Internet Protocol Version 6
Internet Control Message Protocol v6
    Type: 133 (Router solicitation)
    Code: 0
    Checksum: 0x0f7a [correct]
    ICMPv6 Option (Source link-layer address)
        Type: Source link-layer address (1)
        Length: 8
        Link-layer address: 00:24:d6:07:5f:ae

No.     Time        Source                Destination           Protocol Info
    152 24.109702   fe80::20c:42ff:fe70:d61 ff02::1               ICMPv6   Router advertisement

Frame 152 (110 bytes on wire, 110 bytes captured)
Ethernet II, Src: rb750g.home (00:0c:42:70:0d:61), Dst: IPv6mcast_00:00:00:01 (33:33:00:00:00:01)
Internet Protocol Version 6
Internet Control Message Protocol v6
    Type: 134 (Router advertisement)
    Code: 0
    Checksum: 0x3284 [correct]
    Cur hop limit: 64
    Flags: 0x00
    Router lifetime: 1800
    Reachable time: 0
    Retrans timer: 0
    ICMPv6 Option (Source link-layer address)
        Type: Source link-layer address (1)
        Length: 8
        Link-layer address: 00:0c:42:70:0d:61
    ICMPv6 Option (Prefix information)
        Type: Prefix information (3)
        Length: 32
        Prefix length: 64
        Flags: 0xc0
        Valid lifetime: 2592000
        Preferred lifetime: 604800
        Prefix: 2001:xxxx:xxxx:xxxx::

BTW, if I reboot the RB750G with this ‘bogus’ entry, it comes up not working again. I have to recreate the procedure, remove manual local-link addr entry, reboot so dynamically created one is there, then overwitre it with duplicate where advertise=yes.

EDIT: More info from radvd debug …

11:14:42 radvd,debug received Router Solicitation on  interface=ether1 
11:14:42 radvd,debug sending Router Advertisement on ether1 
11:14:42 radvd,debug adding link-layer address option, mac-address=00:0C:42:70:0D:61 
11:14:42 radvd,debug adding prefix=2001:xxxx:xxxx:xxxx::/64 
11:14:42 radvd,debug sendmsg failed on ether1 (fe80::20c:42ff:fe70:d63): Invalid argument 
11:15:22 system,info IPv6 address added by admin 
11:15:23 radvd,debug sending Router Advertisement on ether1 
11:15:23 radvd,debug adding link-layer address option, mac-address=00:0C:42:70:0D:61 
11:15:23 radvd,debug adding prefix=2001:xxxx:xxxx:xxxx::/64 
11:15:34 radvd,debug received Router Solicitation on  interface=ether1 
11:15:34 radvd,debug sending Router Advertisement on ether1 
11:15:34 radvd,debug adding link-layer address option, mac-address=00:0C:42:70:0D:61 
11:15:34 radvd,debug adding prefix=2001:xxxx:xxxx:xxxx::/64

RB750G & Win7 power-cycled, ipconfig /renew6 tried at 11:14:42 which failed with ‘Invalid argument’, manual local-link entry added at 11:15:22, after which all working.

When it happens, try to disable/enable ether1 and see if it helps.

Hi mrz,

Yes disabling/enabling ether1 also wakes up radvd, but then breaks IPv6 routing between LAN & 6to4 tunnel (probably due to ether1 also being my PPPoE inf).

BTW figured out the advertise=yes is not neccessary, simply adding the local-link addr (over-writing the DL entry with a L one) is enough to wake up radvd.

EDIT: not that I expected any difference (no mention in Changelog), 5rc7 exhibits same ‘Invalid argument’ issue as 5rc6.

Bug will be fixed in RC8.

Wow, I’m glad I found this. I got an RB750G last spring specifically for the purpose of an HE tunnel, and kept banging my head against the wall with it, and got little useful support on the forums, and gave up. (Running MacOS here.)

Having read this, I went to the beta code, 5.0rc11, and without changing a thing in the configs that people told me had to be broken the tunnel came up and RAs are going out the local interfaces. I feel vindicated!

Out of curiosity, though, how do you add or remove interfaces from the bridge group? I haven’t yet managed to find any documentation on it.

bridge:

to create bridge:
/interface bridge

to add ports:
/interface bridge ports

switch:
/interface ethernet set master-port=

note only 1 port can be set as master port.