z/OSにてTCPトレースを取得し、(Wiresharkで確認可能な)pcap形式で保存


再現性のあるHULFT通信エラーが発生したとします。
通信の状態を詳しく調査するには、z/OSにてTCPトレースを取得することが考えられます。
その場合、本記事の技術が役に立ちます。

ここでは、z/OSにてTCPトレースを取得し、Wiresharkで確認可能なpcap形式へ変換する方法を記載します。


1)準備
1-1) プロシジャライブラリに「コンポーネント・トレース・ライター」の起動プロシジャを作成
図1-1
//CTWTR    PROC                                                         
//IEFPROC  EXEC PGM=ITTTRCWR,REGION=32M                                 
//TRCOUT01 DD DSNAME=prefix.TRC01.D&LYYMMDD..T&LHHMMSS.,                
//         UNIT=SYSDA,VOL=SER=vvvvv1,                                   
//         SPACE=(CYL,(50,50)),DISP=(NEW,CATLG),                        
//         DSORG=PS,RECFM=VB,LRECL=27994,BLKSIZE=0                      
//TRCOUT02 DD DSNAME=prefix.TRC02.D&LYYMMDD..T&LHHMMSS.,                
//         UNIT=SYSDA,VOL=SER=vvvvv2,                                   
//         SPACE=(CYL,(50,50)),DISP=(NEW,CATLG),                        
//         DSORG=PS,RECFM=VB,LRECL=27994,BLKSIZE=0

2) TCPトレース取得開始
2-1) コンポーネント・トレース・ライター開始
図2-1
TRACE CT,WTRSTART=CTWTR

2-2) TCP/IPスタック(TCPIP)に対しコンポーネント・トレース開始(コンポーネント名 SYSTCPDA=パケットトレース)
図2-2
TRACE CT,ON,COMP=SYSTCPDA,SUB=(TCPIP)

2-3) リプライとして、コンポーネント・トレース・ライターの名前(CTWTR)を返す
図2-3
R 7,WTR=CTWTR,END

2-4) V TCPIPにより、TCP/IPスタック名:TCPIP(2つ目のTCPIP)に対し、条件:ポート番号 30000を指定してパケットトレース取得を有効化
図2-4
V TCPIP,TCPIP,PKT,ON,PORTNUM=30000

2-5) TCP/IPスタック(TCPIP)のコンポーネント・トレースの状態/設定を表示
図2-5
D TRACE,COMP=SYSTCPDA,SUB=(TCPIP)


3) 通信エラー再現


4) TCPトレース取得終了
4-1) パケット・トレースを停止
図4-1
V TCPIP,TCPIP,PKT,OFF

4-2) WTR=CTWTRを切断(DISCONNECT)するために、応答(WTOR)を要求
図4-2
TRACE CT,ON,COMP=SYSTCPDA,SUB=(TCPIP)

4-3) 応答(WTOR)を要求により、WTR=CTWTRを切断
図4-3
R 8,WTR=DISCONNECT,END

4-4) SYSTCPDAコンポーネントのトレース収集を終了
図4-4
TRACE CT,OFF,COMP=SYSTCPDA,SUB=(TCPIP)

4-5) CTWTR自体を停止
図4-5
TRACE CT,WTRSTOP=CTWTR


5) コンポーネント・トレースのダンプデータをpcap形式へ変換
5-1) SNIFFER DD文に指定したデータセットへpcap形式のデータを出力
図5-1
//jobname  JOB  ...                                                     
//STEP01   EXEC PGM=IKJEFT01,DYNAMNBR=20,REGION=0M                      
//SYSPROC  DD DSN=SYS1.SBLSCLI0,DISP=SHR                                
//SYSTSPRT DD SYSOUT=*                                                  
//IPCSPRNT DD SYSOUT=*                                                  
//IPCSTOC  DD SYSOUT=*                                                  
//SYSUDUMP DD SYSOUT=*                                                  
//SNIFFER  DD DISP=(,CATLG),                                            
//        DSN=prefix.TRC01.Dyymmdd.Tttmmss.PCAP,                        
//        VOL=SER=vvvvv3,UNIT=SYSDA,SPACE=(CYL,(10,10)),                
//        DCB=(LRECL=8000,RECFM=VB)                                     
//SYSTSIN  DD *,SYMBOLS=JCLONLY                                         
PROFILE MSGID                                                           
%BLSCDDIR VOLUME (vvvvv1)                                               
IPCS NOPARM                                                             
SETDEF DA('prefix.TRC01.Dyymmdd.Tttmmss')                               
CTRACE COMP(SYSTCPDA) OPTIONS((SNIFFER(7000,TCPDUMP) NOREASSEMBLY) +    
JST                                                                    
END

5-2) VIEW、HEX ONにより16進数を表示させ、データ先頭が0xA1B2C3D4であることでpcap形式であることを確認
図5-2






【HULFTファミリー専用お問い合わせフォーム】 HULFTファミリー プロダクト/サービス お問い合わせ