[[!meta copyright="Copyright © 2007, 2008, 2010, 2012, 2013 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled [[GNU Free Documentation License|/fdl]]."]]"""]] [[Stefan_Siegl|stesie]] has added IPv6 support to the pfinet [[translator]]. This was [[!GNU_Savannah_task 5470]]. # Implementation Because the IPv4 and IPv6 protocols are quite related to each other (think of mapped IPv4 addresses, etc.), there is no separate [[server|translator]] for IPv6 but support for the latter has been incorporated into the common pfinet. Unfortunately it's a little bit clumsy now to set the [[translator]] up, since it has to be bound to */servers/socket/2* (like before) as well as */servers/socket/26* (for IPv6). To achieve this, you can tell pfinet to install [[active_translators|active]] on specified nodes, using **-4** and **-6** options. This is, you have to install a [[passive_translator|passive]] on */servers/socket/2* that also binds the IPv6 port and vice versa. # Examples Normal IPv4 network setup, address 192.168.7.23/24 and gateway 192.168.7.1. IPv6 address shall be assigned using IPv6 auto-configuration. settrans -fgp /servers/socket/2 ↩ /hurd/pfinet -6 /servers/socket/26 ↩ -i /dev/eth0 -a 192.168.7.23 -m 255.255.255.0 -g 192.168.7.1 settrans -fgp /servers/socket/26 ↩ /hurd/pfinet -4 /servers/socket/2 ↩ -i /dev/eth0 -a 192.168.7.23 -m 255.255.255.0 -g 192.168.7.1 Quite the same, but with static IPv6 address assignment: settrans -fgp /servers/socket/2 ↩ /hurd/pfinet -6 /servers/socket/26 ↩ -i /dev/eth0 -a 192.168.7.23 -m 255.255.255.0 -g 192.168.7.1 ↩ -A 2001:4b88:10e4:0:216:3eff:feff:4223/64 -G 2001:4b88:10e4::1 settrans -fgp /servers/socket/26 ↩ /hurd/pfinet -4 /servers/socket/2 ↩ -i /dev/eth0 -a 192.168.7.23 -m 255.255.255.0 -g 192.168.7.1 ↩ -A 2001:4b88:10e4:0:216:3eff:feff:4223/64 -G 2001:4b88:10e4::1 # Missing Functionality [[!tag open_issue_hurd]] Amongst other things, support for [[IOCTL]]s is missing. ## IRC, freenode, #hurd, 2012-12-12 <braunr> hm, pfinet seems not to support ipv6 well at all :( <pinotree> braunr: really? <braunr> pinotree: i can't manage to set a global address statically and make it communicate with neighbours <braunr> pfinet receives the advertisement (during neighbour discovery) but immediately resends the same solicitation again <gnu_srs> According to the pfinet/README IPv6 support was added in 2007 from Linux 2.2.14 while the rest is from 2.2.12 <braunr> according to me, bugs were added at the same time <braunr> :p <braunr> in addition, ipv6 in linux 2.2 was, uh, not working well either <braunr> even with 2.4, it was still messy <gnu_srs> maybe we should try to upgrade the TCP/IP stack to something 2.6+? <gnu_srs> (a lot of work though) <braunr> we've already had that discussion <gnu_srs> Yes. What is the best way forward, a GSoC task? <gnu_srs> There is one already: http://www.gnu.org/software/hurd/community/gsoc/project_ideas/tcp_ip_stack.html <braunr> personally, i'd advocate resuing code from netbsd ### IRC, freenode, #hurd, 2013-02-23 <braunr> we're beginning to seriously lack ipv6 though <youpi> what is the actual problem? <youpi> (again) <youpi> lack? <youpi> we do have ipv6 working <braunr> i couldn't have it work with public addresses <youpi> uh? <youpi> I believe it worked for me <braunr> yes i told you a few months back <gnu_srs> braunr reported recently that v6 did not work as expected? <youpi> I don't remember about that (and my inbox neither) <braunr> it was only on irc <braunr> routing would be nice to have too <braunr> the stack can do it but we lack the interface <braunr> anyway, there would be benefits on working on it, but what we have now is fine and again, there are priorities <youpi> braunr: it seems ndp doesn't work indeed, I wonder why, it was working for me <braunr> that's what i found too <braunr> there have been other additions to the ipv6 spec over time, i don't know what else we might be lacking <youpi> ndp is elder <braunr> yes ndp isn't lacking <youpi> and pfinet *does* actually do ndp :) <braunr> that's a different issue <braunr> my debugging session ended in the routing code <braunr> and i didn't investigate further <youpi> braunr: it seems the BPF filter on /dev/eth0 doesn't include IPv6 frames <youpi> that'd explain that it worked before but not any more <braunr> oh <braunr> good <braunr> i'd love to assign global addresses to our VMs :) <youpi> ok, it goes through, there is just a remaining multicast join issue <youpi> yep, ethernet_set_multi is empty :) <youpi> ok, enabling ALLMULTI was enough to fix it <youpi> you can ping6 2001:910:1059:2:5054:00ff:fe12:3456 :) Indeed, IPv6 now works properly, and the very machine hosting this wiki (darnassus.sceen.net) can be reached with that protocol. ## IRC, freenode, #hurd, 2013-01-13 <youpi> gnu_srs, gnu_srs1: fyi, I'm having a look at cherry-picking the v6only option from linux ### IRC, freenode, #hurd, 2013-02-23 <gnu_srs> youpi: From when is the Linux 524354b4d086a4f013343d727eaccb7b4c39eb25 commit (IPV6_V6ONLY)? <youpi> which repo? <youpi> I don't have such commit here <gnu_srs> http://git.savannah.gnu.org/cgit/hurd/hurd.git/commit/?id=2b2d7fdc42475019e5ce3eabc9c9673e3c13d89f <gnu_srs> From which release, 2.4.x, 2.6.x? <youpi> it's very old <youpi> 2002 <youpi> it's not in the current linux git tree, but in the "history" tree <youpi> I don't remember its url <braunr> git://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git <braunr> might be even older ## IRC, freenode, #hurd, 2013-04-01 <congzhan`> hi, the ipv6 route works or not? <congzhan`> I can use ipv6 to connect vms, but the vm can't access other host except the router <congzhan`> the ipv6 route -G seems not work for me, anyone make it work? <youpi> I'm using SLAAC <congzhan`> youpi: you mean static config not work? <youpi> I mean automatic config does work <youpi> I don't use static config myself <congzhang> youpi: My ipv6 works now, just because not fully enable ipv6 forwarding and firewall, thank you:)