While checking the gateway trace file (dev_rd) today I got to see strange entries as:
NiHLGetHostName: implementation doesn’t support IPv6 [nixxhl.cpp 380]
I am using SAP NetWeaver 7.5 and kernel 7.53 with Linux OS.
While trying to decode what the entries meant : NiHLGetHostName: implementation doesn’t support IPv6 , one thing was clear that my system did not support IPv6. It only supported IPv4.But since my system is latest so by default does it need to support IPv6 or not? ( I will leave that to a later blog ). Next thing I did was to search available documentation on IPv6 and it implementation.
I found this link very helpful.It helps in understanding how IPv6 is implemented in SAP.
Excerpt from the link (mentioned above)
IPv6 and SAP
As of SAP NetWeaver 7.0 Enhancement Package 2, SAP supports IPv6. This means that everywhere where IP addresses are specified, both IPv4 and IPv6 addresses can be used. This also applies to host names that use IP-based communication (for example, RFC). Both IPv4 and IPv6 addresses can be defined for these host names in DNS, the local hosts file, or in other naming services.
Next thing for me was to see if IPv6 was activated or not. The parameter for activating IPv6 in SAP is to set the environment variable SAP_IPv6_ACTIVE=1 . This will enable the system to use IPv6 ( setting this variable doesn’t mean you cant use IPv4, you can still use IPv4 ! ).
I came across 2 very good SAP notes which helped in understanding concept. SAP notes:
# 1346768 – Activation of IP Version 6 (IPv6) in Application Server ABAP
# 1854549 – SAP NW 7.31 install failed in IPv6 only env. on AIX >> this is for AIX only!!
By setting the variable I was able to move past the issue.
Now there are some additional steps which I did while trying to figure out how my SAP services ( ICM , dispatcher , gateway ) listened , whether on IPv4 or IPv6.
The command to check this information would be:
netstat -an | grep LISTEN
With this it will list out the ports and the version format as below:
tcp 0 0 0.0.0.0:8008 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3208 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3308 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8108 0.0.0.0:* LISTEN
Here I can see my ICM is listen on 8008 and 8108 (http and https) but its doing it on IPv4! Similarly my dispatcher on 3208 , gateway on 3308.All of them on IPv4!! So here was the solution part.None of my services are listening on IPv6.
By setting the env vaiable SAP_IPV6_ACTIVE=1 ,I managed to solve the issue and there were no longer any entries in the trace file.
This was my ABAP only stack , but some might be using dual stack systems. For JAVA part:
Excerpt from the link :
Environment variable SAP_IPv6_ACTIVE=1 is also valid for AS Java.You also have to set system variable java.net.preferIPv6Addresses to true.The virtual machine has the same name resolution behavior, such as for creating TCP/IP services, as AS ABAP has (see also Java documentation here ). IPv6 is supported as of SAP JVM 6.1
Let me know in case any queries.