OS in considerations : Windows Server 2008+

We are adding IPv6 support in a complex client-server network application. Server opens many ports for listening, and different types of clients connect to different ports.

We are considering multiple scenarios including :

  • Server on pure IPv6, client on pure IPv6
  • Server on pure IPv4, client on pure IPv4
  • Server on pure Dual-stack, client on pure IPv6
  • Server on pure Dual-stack, client on pure IPv4 (Tunneling we are yet to figure out)

Related to server machine my question is : Is it safe to assume that in production machines, which are Pure IPv6 will still have IPv4 working at OS level ? To rephrase, whether production machines which are Pure IPv6, will still have IPv4 loopback address working in the system ?

Regarding IPv6 I have found stated here that it's mandatory part of OS, and at least there is no way to disable IPv6 loopback. But it's possible for IPv4 using netsh command.

I have two concerns here :

  1. My Server app is written in Java. And if I disable IPv4 at OS level by using netsh interface ipv4 uninstall, most of Java's network apis stop working, as they don't support this configuration yet. Link.

  2. In my server app, there are few ports listening on because they must be accessed from same machine. So should I be worried about those if I make sure that code connects to these sockets using only and not using localhost or ::1 ?

  • Common? Certainly not.
    – Greg Askew
    Mar 5 '17 at 15:33
  • 1
    I have an IPv6 testbed on which I remove from the local interface, leaving only ::1, to identify apps like the one you have described. If you're writing software for the 21st century, you should expect that today either or both may be present, and tomorrow - and the rest of IPv4 - will be gone forever. Mar 5 '17 at 19:00
  • Hi Michael, I agree with you. However the obstacle is Java itself does not support this configuration yet. link, link. Mar 6 '17 at 6:17

Rarely can "safe" assumptions be made about anything. Understand the network and the software you are deploying to it.

It is very uncommon to disable IPv4 to the level of uninstalling it. That is apparent when doing so breaks the network stack of various software entirely, where the network functions couldn't possibly work.

You can still try your software with IPv6 only addressing to see if anything breaks.

For the loopback listener, try using a constant in the programming environment that supports both. For Java, this could be InetAddress.getLoopbackAddress()

  • 1
    Removing IPv4 from Windows is a fully supported configuration beginning with Vista/Server 2008. Anything that Microsoft ships as a Windows feature is expected to work properly in this configuration. Removing IPv6 is not, and never will be, supported. Of course this doesn't mean that third party software you run on Windows will act properly in an IPv6-only environment. That is up to the third party developer. Mar 5 '17 at 18:54
  • @MichaelHampton "and never will be" - never say that. I'm sure there was once a time when Microsoft "never will" support removing IPv4.
    – user253751
    Jan 29 '18 at 1:14
  • @immibis OK, fair enough, but neither of us will likely live long enough to see that century. Jan 29 '18 at 1:36
  • @MichaelHampton There might be reasons other than address exhaustion to move away from IPv6. Nobody knows yet. Perhaps location/identity separation will become an issue (e.g. maybe we'll see clients running Mobile IPv8, and not running IPv6, talking to a traditional IPv6 internet through gateways; still using IPv8 addresses but doing some nontraditional routing and protocol translation)
    – user253751
    Jan 29 '18 at 1:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.