IPV6 May Cause Problem for PSQL 11 Relational Query
IPV6 (Internet Protocol Version 6) is designed to eventually replace IPV4. IPV4 has an IP address like 192.168.1.1. Each segment can have a value from 0 - 255, so the theoretical maximum number of IPV4 addresses is a little over 4 billion. The world is running out of static IPV4 addresses; hence the creation of IPV6, which can accommodate much longer IP addresses so that you can assign a unique address for each household appliance and directly communicate with it from anywhere on the Internet.
Microsoft started providing IPV6 in Vista OS and Windows 2008. At the moment, all Microsoft-supportable Windows operating systems come with IPV6 and IPV4 protocols enabled. Generally speaking, IPV6 takes priority over IPV4. That is to say, if IPV6 communication is available, the system will use IPV6 first. Some IT groups have chosen to disable IPV6 to avoid potential problems. Microsoft advises against that practice and explains that IPV6 can co-exist with IPV4 without causing any problems. But is that so? The following is an article that explains why sometimes IPV6 can cause problems:
In this article, it explains that when an application software tries to look up a DNS server for an IP address, the OS will first attempt to look up the IPV6 address, but the DNS server will choose to ignore it because it does not support the IPV6 address. So the OS will make five attempts before giving up and looking for an IPV4 address, which get a valid response. But this results in a 15-second startup time delay. By disabling the IPV6, the application starts up immediately and thus solves the problem.
PSQL 11 Partially Supports IPV6
In one recent support incident at Netcellent, we also noticed that IPV6 can sometime cause problems. Here is the scenario:
- The user recently purchased a new Windows 10 workstation.
- The user installed the PSQL 11 client on this machine. They were using a PSQL 11 server.
- They can run Elliott fine. They can bring up PSQL 11 Control Center and everything seems to work.
- But when they used Excel Query, it failed.
Our support engineers investigated the problem by pinging the PSQL 11 server. The server IP address that responded was in the IPV6 format. So he chose to disable the IPV6 protocol and that fixed the problem. The reason this fixed the problem is because PSQL 11 only partially supports IPV6. See the following article in PSQL 11 release notes:
In this article, it explains that PSQL 11 supports IPV6 for a Btrieve (transactional engine) and DTI. But it does not support IPV6 with a relational engine. So the question is why does PCC work in the above incident? We believe that is because PCC knows that IPV6 is not supported with a PSQL 11 relational engine, so it chooses to communicate using IPV4. On the other hand, Excel Query may not know that and chooses to communicate in IPV6, which fails.
Solution 1 - Disable IPV6
To disable IPV6, you need to go to Control Center and find the network adapter under the Network area. Right click on the network adapter and choose "Properties." The following window will show up:To disable the IPV6 protocol, un-check the "INternet Protocol VErsion 6 (TPC/IPv6)."
Soluton 2 - Upgrade to PSQL 12
Users may want to consider upgrading to PSQL 12 because its relational engine does support IPV6. See the following article in PSQL 12 release notes:
Are There Any Other Solutions?
Since Microsoft does not recommend disabling IPV6, the question is are there other solutions that can solve this particular issue? Based on our research, you may try the following solutions. But we don't have an environment to confirm these -- they are just theories that you can try:
Possible Soltuion 3 - Use IP Address to Set Up DNS
Most of the time, when you try to set up a client side DNS, in the Server Name/IP box, you will enter the sever name. That server name will later on translate to the IP address through DNS server lookup.
Since we believe the IPV6 may interfere with the DNS server lookup, you should set up the Server Name/IP with an IP address like the following:
Our theory is that this will force the communication to use IPV4 and thus eliminate the IPV6 interference.
Possible Solution 4 - Make IPV4 Take Priority Over IPV6
Through our research, we found that you could make IPV4 take priority over IPV6 by creating or editing a registry value in te following article:
Keep in mind that editing a registry can be dangerous. Making a mistake when using regedit can have devasting results.
EMK