Connectivity Guide : A. IPv6 Configuration
 
Share this page                  
IPv6 Configuration
IPv6 Configuration Overview
In most cases, no configuration in Vector is required to implement IPv6 support. It is automatically enabled in the tcp_ip network protocol.
The tcp_ip protocol driver also continues to support IPv4 addresses without any configuration changes needed; the driver will detect and process IPv4 addresses, IPv6 addresses, and both, if present concurrently.
Some versions of operating systems, however, provide no or limited support for IPv6. In some cases, IPv6 support is available, but must be enabled or configured in the operating system before it can be used. On systems with partial or no IPv6 functionality, Vector will adjust automatically to the level of IPv6 support available. On some systems, however, Vector may have difficulty, particularly when starting up or establishing connections.
For those rare situations, configuration parameters can be used to "back out" the IPv6 support, if required, or to restrict TCP support to IPv6 addresses only. These parameters (see Parameters for Controlling IPv6 Support), which are not available in the configuration utilities, must be set with set, ingsetenv, or iisetres commands.
On Windows, the iicvtwintcp utility (see iicvtwintcp Command--Convert wintcp to tcp_ip Protocol Setting) can be used to convert wintcp settings to tcp_ip settings, or to subsequently restore the settings to their previous values.
TCP/IP and Vector Communications
On all platforms, Ingres Net typically uses TCP/IP to communicate between Vector installations. A typical scenario is where applications in the client installation communicate through Ingres Net with the DBMS Server in the server installation. If using JDBC or .NET applications with Vector, then TCP/IP is used to communicate between the JDBC or .NET driver running under the application and the Data Access Server (process iigcd).
On Linux, TCP/IP is typically used to communicate between Vector processes—that is, as the local IPC. The tcp_ip protocol driver used for network communications is used for local communications also. Therefore, if you experience trouble with IPv6 across the network, local communications are likely to have trouble too. If so, basic Vector server processes such as the Name Server (iigcn) and the DBMS Server (iidbms) may not even start.
Parameters for Controlling IPv6 Support
The parameters for controlling IPv6 support are as follows:
II_TCPIP_VERSION environment variable
II_GC_PROT environment variable
ii.hostname.gcX.*.protocol.status (and port) in config.dat, where the gcX server can be gcc, gcd, or jdbc.
II_TCPIP_VERSION Environment Variable--Specify Version of TCP/IP to Use
The II_TCPIP_VERSION environment variable determines the version of IP addresses that the tcp_ip protocol driver uses. It can be set using the ingsetenv command.
Note:  The equivalent configuration parameter in config.dat is tcp_ip.version.
This variable has the following format:
II_TCPIP_VERSION = value
value
Controls which tcp_ip protocol driver or which version of IP addresses to use, as one of the following:
ALL
(Default) Uses both IPv4 and IPv6 addresses.
6
Uses IPv6 addresses only.
4
Windows: Uses only IPv4 addresses with IPv6-capable functions.
Linux: Uses the IPv4-only version of the protocol driver.
46
Linux: Uses only IPv4 addresses with IPv6-capable functions.
II_GC_PROT Environment Variable--Set IPC Protocol
The II_GC_PROT environment variable sets the local interprocess communications (IPC) protocol. You can set this variable using the ingsetenv command.
Note:  II_GC_PROT should be changed only when Vector (including tools such as IVM) is completely shut down; otherwise, failures will occur for Vector shutdown, startup, and connection requests.
This variable has the following format:
II_GC_PROT = protocol
protocol
Specifies the local IPC protocol as one of the following:
TCP_IP
(Default for Linux) Uses the current TCP_IP protocol driver.
Windows: TCP_IP is the only valid value. The default IPC protocol is named pipes.
TCP_IPV4
(Linux only) Uses the previous version of the TCP_IP protocol driver, which supports IPv4 addresses only.
ii.hostname.gcX.*.protocol.status Resource--Set Network Communications Protocol
This resource in config.dat sets the network communications protocol for the designated server (gcX) to the appropriate Vector network protocol driver. The gcX server can be gcc, gcd, or jdbc. The resource can be set by using the iiisetres command.
The format is as follows:
ii.hostname.gcX.*.protocol.status
and
ii.hostname.gcX.*.protocol.port
protocol
Specifies the Vector network protocol driver, which can be one of the following:
tcp_ip
(Default) Uses the current TCP_IP protocol driver.
tcp_ipv4
(Linux only) Uses the previous version of the TCP_IP protocol driver, which supports IPv4 addresses only.
Options for Disabling IPv6 Support
Two approaches can be used to disable IPv6 support:
Restrict the tcp_ip protocol driver to only use IPv4 addresses
Completely back out the enhanced tcp_ip protocol driver and use the old version of the driver.
Use IPv4 Addresses Only
The tcp_ip protocol driver can be restricted to listen and connect only with IPv4 style addresses. (IPv4 is the standard IP version that was used prior to IPv6).
To restrict the tcp_ip protocol driver to use IPv4 addresses only:
Use any one of the following options, which are functionally equivalent:
Set the II_TCP_VERSON operating system variable as follows:
Windows:
set II_TCPIP_VERSION=4
Linux:
set II_TCPIP_VERSION=46
Set the Vector II_TCPIP_VERSION environment variable as follows:
Windows:
ingsetenv II_TCPIP_VERSION 4
Linux:
ingsetenv II_TCPIP_VERSION 46
Set the Vector resource as follows:
If using Ingres Net:
iisetres ii.machine.gcc.*.tcp_ip.version 4
If using Data Access Server:
iisetres ii.machine.gcd.*.tcp_ip.version 4
Back Out IPv6 Support
To completely back out IPv6 support, you must use the old driver, which supports IPv4 only. The old driver is renamed to tcp_ipv4 on Linux. The old driver is expected to be made obsolete in a future release of Vector.
To back out the enhanced tcp_ip Vector protocol driver
1. Back out network protocol for servers with tcp_ip.status = ON
Linux:
iisetres ii.machine.gcc.*.tcp_ip.status OFF        (Linux)
iisetres ii.machine.gcc.*.tcp_ipv4.status ON       (Linux)
iisetres ii.machine.gcc.*.tcp_ipv4.port II         (Linux)
iisetres ii.machine.gcd.*.tcp_ip.status OFF        (All platforms)
iisetres ii.machine.gcd.*.tcp_ipv4.status ON       (Linux)
iisetres ii.machine.gcd.*.tcp_ipv4.port II7        (Linux)
Set the port value to same as that used by the same server for tcp_ip.
2. Back out local IPC protocol (Linux only):
ingsetenv II_GC_PROT tcp_ipv4
3. Back out network and local IPC protocol (Linux only):
set II_TCPIP_VERSION=4
or
ingsetenv II_TCPIP_VERSION 4
Note:  This step is equivalent to steps 1 and 2 above, and is the simplest way to back out to the IPv4-only driver on Linux.
iicvtwintcp Command--Convert wintcp to tcp_ip Protocol Setting
The iicvtwintcp command converts vnode definitions and GCx server protocol settings in config.dat from the deprecated wintcp network protocol to the newer tcp_ip protocol. This utility runs automatically during an upgrade, but can also be run standalone.
A backup file is created (or appended to) that can be used in subsequent iicvtwintcp commands to restore converted protocol entries to their previous settings.
Note:  Dynamic vnodes are not affected by this utility.
The iicvtwintcp command has the following format:
iicvtwintcp [-help] [-verbose] [-noupdate] [-force]
[-action convert_wintcp | convert_tcp_ip | restore]
[-bf filename] [-nf filename]
[-scope all | vnodes | config]
-help
Displays command usage information.
-verbose
Displays each record affected. If not specified, only totals are displayed.
-noupdate
Reports what the impact of running the utility will be, but does not update Name Server or backup files.
If the Name Server is running, the –force parameter must also be used.
When used with the -verbose parameter, produces a report from which the vnode updates can be done manually from one of the Vector network configuration utilities.
-force
Runs iicvtwintcp even if the Name Server or another instance of the program is currently running. A warning message is issued. This parameter is useful with the -noupdate parameter or when running against a copy of the Name Server node file.
Note:  Use this parameter with caution.
-action
Specifies the action to be performed:
convert_wintcp
Converts wintcp to tcp_ip.
convert_tcp_ip
Converts tcp_ip to wintcp.
restore
Restores converted protocol entries back to prior values.
Note:  If no action is specified, displays usage, which prevents unintentional conversion if command with no parameters is entered.
-bf
Specifies the name of the restore (back off) file. If not specified, the default is:
%II_SYSTEM%\ingres\files\name\IINODE_hostname.BK
Can be specified with or without path name. If no path is specified, defaults to %II_SYSTEM%\ingres\files\name.
Note:  Written to as output if -action is convert_wintcp or convert_tcp_ip. Read from as input if -action is restore, and is required for a successful restore operation.
-nf
Specifies the name of the Name Server connection (NODE) file that contains the vnode definitions that will be updated. If not specified, the default is:
%II_SYSTEM%\ingres\files\name\IINODE_hostname
Can be specified with or without path name. If no path is specified, defaults to %II_SYSTEM%\ingres\files\name.
-scope
Converts or restores the following entities:
all
(Default) Vnode definitions and config.dat file
vnodes
Vnode definitions only
config
Config.dat file only
Return codes:
>=0
Indicates the program succeeded, where return code is the number of records modified.
-1
Indicates the program failed.
iicvtwintcp Examples
In these examples of the iicvtwintcp command, the command should be run while the Name Server (iigcn) is stopped.
1. Convert wintcp to tcp_ip in current installation:
iicvtwintcp -action convert_wintcp
2. Restore records converted to tcp_ip back to wintcp:
iicvtwintcp -action restore
3. Convert tcp_ip to wintcp in current installation.
This example is similar to Example 2 except that all tcp_ip records will be set to wintcp, not just the ones that were originally converted by -action convert_wintcp. Such a command is likely to be used if a restore is wanted but the backup file is lost.
iicvtwintcp -action convert_tcp_ip
4. List connection (NODE) information for all vnodes:
iicvtwintcp -action convert_wintcp -noupdate -verbose
IPv6 in the JDBC Driver and .NET Data Provider
No Vector parameters control or restrict IPv6 in the JDBC Driver or the .NET Data Provider. The DAS (server side of the connection) can be configured as documented in Options for Disabling IPv6 Support. However, there are some Java-specific networking system properties that can by set to control the IPv6 behavior in the JDBC Driver (and other Java applications).
To return IPv6 addresses before IPv4 addresses:
java.net.preferIPv6Addresses=true
To restrict driver to IPv4 only:
java.net.preferIPv4Stack=true
Examples of Disabling IPv6 Support
In the following examples, assume: machine=host1, Vector instance ID=AA, startup count is 1 for Ingres Net and Data Access Server.
1. Revert to the old IPv4-only driver
Linux:
ingsetenv II_GC_PROT tcp_ipv4
iisetres ii.host1.gcc.*.tcp_ip.status OFF
iisetres ii.host1.gcc.*.tcp_ipv4.status ON
iisetres ii.host1.gcc.*.tcp_ipv4.port AA
iisetres ii.host1.gcd.*.tcp_ip.status OFF
iisetres ii.host1.gcd.*.tcp_ipv4.status ON
iisetres ii.host1.gcd.*.tcp_ipv4.port AA7
2. Restrict all remote communications to IPv4 addresses only on Windows or Linux:
ingsetenv II_TCPIP_VERSION 4