1. Implement a tool that sniffs all incoming traffic and responds with ICMPv6 NA and then Echo Reply to all NS and Echo Request packets, making any IPv6 address on the local network successfully ping6-able. Use Scapy or libdnet. Caveat: Netfluke's sniffing loop seems to be buggy on MacOSX and OpenBSD, crashing or exiting with 'Resource busy'. This may be due to the loop itself, or to libdnet's python bindings. 2. Configure a router (or write a tool) to emit RA for any IPv6 nodes on the local network to route their traffic to a Hurricane Electric tunnel. Ping Google (or somesuch) from a host behind such router. Caveat: no NAT yet, but none needed: HE gives a /64 routing prefix of (globally) routable IPv6 addresses. 3. Test the capacity of a network card's programmable multicast address filter (p. 294-295, Ch. 6.4) by setting filters and trying host response time (e.g., to pings). Extra interrupts to CPU for handling multicast packets should affect either latency or bandwidth (or both) of the host. 4. Experiment with the order and number of chained IPv6 extension headers and options: E.g., hop-by-hop header if any should only follow the IPv6 header; what happens it more than one copy of it occurs there or elsewhere? Same for destination headers and fragment headers. Will these be rejected or accepted by hosts? routers?