Before we are too down on NAT implementations, there is a distinction between NAT and NAPT, according to various RFCs and associated documents. NAT means what is says: address translation. NAPT means address and port. You can simply translate addresses and maintain the port, but this means that typically only one internal node can communicate.If you do this, then the protocol is irrelevant, and IL would pass through. In fact, since it has been mentioned, Lucent devices (neƩ Ascend), worked this way until it became apparent that Cisco had implemented NAPT and they rolled out the full monty. They called it "single address translation". Once you choose to translate ports as well, as has been said, you need to understand where the ports are; for TCP and UDP it is in the same place, so they get done. It is completely unsurprising that other protocols aren't. ICMP gets done because it's dull if you can't traceroute and ping. It takes hacks, but it can be done. FTP is depressing. Anyone out there designing protocols: take note, don't embed IP addresses in the stream. Others are as bad, or insoluble: luckily, they are less important, like IRC or RealAudio. On top of this, to create some 'reliability', commerical NAT routers have a list of TCP and UDP ports which they are prepared to translate. 'Known good' if you like. My Pipeline 75 does not do POP3 automatically. I had to tell it to, despite the protestations of the manuals. I looked for a software update, but since Lucent bought them, this doesn't happen any more. Some other products, I understand, refuse straightforward protocols like POP3 despite best efforts. So, the summary is use 9p over TCP, not IL, unless you can rewrite your router. This is becoming easier since both FreeBSD and Linux have WAN drivers, and NAT code. As it happens, all translation in FreeBSD is done using a library, with plug-ins for various awkward protocols. Fix the library, and all the various translators (natd, pppd, pppoed) would all fall into line. Modifying the implementation to do IL would be straightforward I think.