IBM Support

How to test DDM/DRDA connectivity to IBM i

Troubleshooting


Problem

This document describes how to test DDM/DRDA connectivity (TCP/IP) between two IBM i systems

Diagnosing The Problem

TCP/IP connectivity testing should start with PING, however, PING only tests the ability of the network to pass ICMP traffic. It does not test TCP/IP sockets traffic.
To test TCP/IP socket connectivity to the IBM i DDM/DRDA server,  execute (on IBM i command line):

JAVA CLASS('com.ibm.as400.util.JPing') PARM('<RemoteIBMiName>' '-s' 'as-ddm') CLASSPATH('/QIBM/ProdData/HTTP/Public/jt400/lib/jt400.jar')
Replacing <RemoteIBMiName> with the correct name or IP address of the remote system).

You see messages similar to the following if the test is successful:
Verifying connections to system <RemoteIBMiName>...
Successfully connected to server application:  as-ddm 
Connection verified
Java program completed


Press <enter> to exit java.
If the test is unsuccessful, run it again using the verbose option to get more details:
JAVA CLASS('com.ibm.as400.util.JPing') PARM('<RemoteIBMiName>' '-s' 'as-ddm' '-v') CLASSPATH('/QIBM/ProdData/HTTP/Public/jt400/lib/jt400.jar')
The output for a successful connection looks like the following.
Toolbox for Java - JDBC 4.2 Open Source Software, JTOpen 21.0.1 codebase 5770-SS1 V7R5M0.00 built=2025-02-25 15:58:10 (GMT)
java.home=/QOpenSys/QIBM/ProdData/JavaVM/jdk80/64bit/jre java.vm.vendor=IBM Corporation java.vm.info=JRE 1.8.0 OS/400 ppc64-64-Bi
t Compressed References 20241212_83587 (JIT enabled, AOT enabled)
OpenJ9   - 32d7c6c9a17
OMR      - ab5c961de
IBM      - dd9cff8 java.runtime.version=8.0.8.40 - pap6480sr8fp40-20250123_01(SR8 FP40) java.fullversion=8.0.8.40 - pap6480sr8fp4
0-20250123_01(SR8 FP40)
JRE 1.8.0 OS/400 ppc64-64-Bit Compressed References 20241212_83587 (JIT enabled, AOT enabled)
OpenJ9   - 32d7c6c9a17
OMR      - ab5c961de
IBM      - dd9cff8 java.vm.version=2.9 java.version=1.8.0_441 os.name=OS/400 os.version=V7R5M0
Verifying connections to system RCH760A...
Wed Jun 4 10:39:58:863 CDT 2025  Setting so timeout:  20000
Wed Jun 4 10:39:58:889 CDT 2025  Class com.ibm.as400.access.AS400 was loaded from file:/QIBM/UserData/Java400/ext/jt400.jar!/com/
ibm/as400/access/AS400.class
Wed Jun 4 10:39:58:890 CDT 2025  Detected os.name:  OS/400
Wed Jun 4 10:39:58:891 CDT 2025  Detected os.version:  V7R5M0
Wed Jun 4 10:39:58:891 CDT 2025  Getting system property: 'com.ibm.as400.access.AS400.signonHandler'
Wed Jun 4 10:39:58:891 CDT 2025  Value found in system properties:  'null'
Wed Jun 4 10:39:58:892 CDT 2025  Value found in jt400.properties file: 'null'
Wed Jun 4 10:39:58:892 CDT 2025  Value not found.
Wed Jun 4 10:39:58:892 CDT 2025  Getting system property: 'com.ibm.as400.access.AS400.guiAvailable'
Wed Jun 4 10:39:58:892 CDT 2025  Value found in system properties:  'null'
Wed Jun 4 10:39:58:892 CDT 2025  Value found in jt400.properties file: 'null'
Wed Jun 4 10:39:58:892 CDT 2025  Value not found.
Wed Jun 4 10:39:58:892 CDT 2025  Getting system property: 'com.ibm.as400.access.AS400.mustAddLanguageLibrary'
Wed Jun 4 10:39:58:893 CDT 2025  Value found in system properties:  'null'
Wed Jun 4 10:39:58:893 CDT 2025  Value found in jt400.properties file: 'null'
Wed Jun 4 10:39:58:893 CDT 2025  Value not found.
Wed Jun 4 10:39:58:893 CDT 2025  Getting system property: 'com.ibm.as400.access.AS400.mustUseSockets'
Wed Jun 4 10:39:58:893 CDT 2025  Value found in system properties:  'null'
Wed Jun 4 10:39:58:893 CDT 2025  Value found in jt400.properties file: 'null'
Wed Jun 4 10:39:58:893 CDT 2025  Value not found.
Wed Jun 4 10:39:58:893 CDT 2025  Getting system property: 'com.ibm.as400.access.AS400.mustUseNetSockets'
Wed Jun 4 10:39:58:894 CDT 2025  Value found in system properties:  'null'
Wed Jun 4 10:39:58:894 CDT 2025  Value found in jt400.properties file: 'null'
Wed Jun 4 10:39:58:894 CDT 2025  Value not found.
Wed Jun 4 10:39:58:894 CDT 2025  Getting system property: 'com.ibm.as400.access.AS400.mustUseSuppliedProfile'
Wed Jun 4 10:39:58:894 CDT 2025  Value found in system properties:  'null'
Wed Jun 4 10:39:58:894 CDT 2025  Value found in jt400.properties file: 'null'
Wed Jun 4 10:39:58:894 CDT 2025  Value not found.
Wed Jun 4 10:39:58:894 CDT 2025  Getting system property: 'com.ibm.as400.access.AS400.threadUsed'
Wed Jun 4 10:39:58:895 CDT 2025  Value found in system properties:  'null'
Wed Jun 4 10:39:58:895 CDT 2025  Value found in jt400.properties file: 'null'
Wed Jun 4 10:39:58:895 CDT 2025  Value not found.
Wed Jun 4 10:39:58:898 CDT 2025  Opening socket for service 5 to system...<RemoteIBMiName> port:446
Wed Jun 4 10:39:58:914 CDT 2025  Getting socket login timeout is set:  false
Wed Jun 4 10:39:58:914 CDT 2025  Connect to socket: system '<RemoteIBMiName>', port 446, login timeout 0 ms.
Wed Jun 4 10:39:58:956 CDT 2025  Setting socket options...
Wed Jun 4 10:39:58:956 CDT 2025  Setting so timeout:  20000
Wed Jun 4 10:39:58:957 CDT 2025  Socket properties:
Wed Jun 4 10:39:58:957 CDT 2025      Remote address: <RemoteIBMiName>/172.16.2.191
Wed Jun 4 10:39:58:957 CDT 2025      Remote port:  446

Wed Jun 4 10:39:58:957 CDT 2025      Local address: /172.16.2.130
Wed Jun 4 10:39:58:958 CDT 2025      Local port:  55380
Wed Jun 4 10:39:58:958 CDT 2025      Keep alive:  false
Wed Jun 4 10:39:58:974 CDT 2025      Receive buffer size:  65535
Wed Jun 4 10:39:58:974 CDT 2025      Send buffer size:  65535
Wed Jun 4 10:39:58:974 CDT 2025      So linger:  -1
Wed Jun 4 10:39:58:974 CDT 2025      So timeout:  20000
Wed Jun 4 10:39:58:974 CDT 2025      TCP no delay:  false
Wed Jun 4 10:39:58:974 CDT 2025  Starting an inet socket to as-ddm
Wed Jun 4 10:39:58:975 CDT 2025  Checking for multiple Toolbox versions.
Wed Jun 4 10:39:58:977 CDT 2025  Path of AS400 class:  file:/QIBM/UserData/Java400/ext/jt400.jar!/com/ibm/as400/access/AS400.clas
s
Wed Jun 4 10:39:58:977 CDT 2025  Path of loaded impl class:  file:/QIBM/UserData/Java400/ext/jt400.jar!/com/ibm/as400/access/Sock
etContainerInet.class
Wed Jun 4 10:39:58:978 CDT 2025  Ping DDM: Writing data
Wed Jun 4 10:39:58:978 CDT 2025  Ping DDM: flushing write
Wed Jun 4 10:39:58:978 CDT 2025  Ping DDM: Reading data
Wed Jun 4 10:39:58:979 CDT 2025  Ping DDM: 113 bytes read
Successfully connected to server application:  as-ddm
Connection verified
Java program completed
The section in bold might provide some clues if the issue is in address resolution for a host name.
See details here: Using the JPing Utility

Note that, on the remote system, the idle timer on listening port 446 will be reset when any connection attempt hits the DDM/DRDA server.
To check the idle timer on the remote system, execute :
NETSTAT *CNN
Next, <F15> and set:
Local port range:                   
  Lower value  . . . . . . . .   446
...and press <enter> <enter>

If the DDM/DRDA server was recently contacted, the idle time will be low (since last connect). If it is high, then no connection attempts have reached that service.

An additional test is to simply create a DDM file. For example:
 ===> CRTDDMF FILE(TESTDDM) RMTFILE(QIWS/QCUSTCDT) RMTLOCNAME('1.1.1.1' *IP)    (replacing 1.1.1.1 with correct remote system IP address) and then:
 ===> DSPPFM TESTDDM

An authorization failure (and the idle timer being reset on listening port 446 on remote system) indicates that the connection (but not the authorization) was successful.
Information regarding fixing DDM/DRDA authorization failures can be found here:

[{"Business Unit":{"code":"BU070","label":"IBM Infrastructure"},"Product":{"code":"SWG60","label":"IBM i"},"Component":"","Platform":[{"code":"PF012","label":"IBM i"}],"Version":"All Versions","Edition":"","Line of Business":{"code":"LOB68","label":"Power HW"}}]

Document Information

Modified date:
17 June 2025

UID

ibm10720343