tag:blogger.com,1999:blog-81562094155248733032024-03-12T21:08:34.139-07:00Barnard Software, Inc.The BSI blog. Thoughts, hints and tips for using BSI products, VSE/ESA and z/VSE.Jeffhttp://www.blogger.com/profile/11567371917298802617noreply@blogger.comBlogger20125tag:blogger.com,1999:blog-8156209415524873303.post-60039542919148574072018-08-08T07:47:00.001-07:002018-09-05T11:16:06.220-07:00z/VSE VTAPE Performance and Tuning<h2>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif; font-size: x-large;"><br /></span></h2>
<h2>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif; font-size: x-large;">z/VSE VTAPE Performance and Tuning</span></h2>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">We recently had a customer contact us asking about z/VSE VTAPE throughput. </span><br />
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">They asked </span><span style="font-family: "arial" , "helvetica" , sans-serif;">"</span><i style="font-family: Arial, Helvetica, sans-serif;">When I FTP data to the machine running our Java VTAPE server I get much
higher throughput than my backups using </i></span><i style="font-family: Arial, Helvetica, sans-serif;">z/VSE VTAPE</i><i style="font-family: Arial, Helvetica, sans-serif;"> can achieve. Why?</i><span style="font-family: "arial" , "helvetica" , sans-serif;">" </span><br />
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">In the process of answering this question, this article resulted in a nice set of network tuning Tips and Tricks for z/VSE.</span><br />
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
</span><br />
<h3>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">How z/VSE VTAPE works ...</span></h3>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
You can not get FTP class throughput using z/VSE's VTAPE due to z/VSE VTAPE's design. Based on wireshark traces we deduce that the Java VTAPE server and
the TAPESRVR job always transfer 'chunks', 1MB by default, of tape data followed by an application level ACK or handshake sequence.
<br />
<br />For example, in the case of writing to a virtual tape (perhaps doing a LIBR backup) the
process begins by reading a chunk, 1MB by default, to examine/process the volume labels. This is
followed by a series of chunks of tape data sent to the VTAPE server.
Between each chunk is an application level ACK or handshake sequence. Likely, the application level ACK from the Java VTAPE server is telling the TAPESRVR job in z/VSE that the data transferred was successfully written to disk. In part, it is the
latency of this application level ACK or handshake sequence that causes
VTAPE to be so slow.
<br />
</span><br />
<h3>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">Tuning Tips and Tricks ...</span></h3>
<span style="background-color: white;"><br /></span>
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
</span><span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">O</span><span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">K</span><span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">, maybe you can not change the design of the VTAPE application but what about tuning the environment for best throughput?</span><br />
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Let's start by admitting that not all of these steps will improve throughput. Some may not even be necessary in your environment but some may help and may help a lot. All of these suggestions are about reducing latency in the VTAPE application or in your network. After all, latency is the bane of network throughput.</span></span><br />
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
</span><br />
<h4>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">Linux vs. Windows</span></h4>
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Lets start by recommending Linux over Windows for running the Java VTAPE server. Our experience shows the Java VTAPE server running under LInux to be faster than when using a Windows machine. Perhaps you are a 'Windows shop' and you have been looking for an opportunity to add a Linux machine to your data center ... Well, here is your chance.</span></span><br />
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Many customers are now beginning to use a Linux on Z image to run their Java VTAPE server, also a very good idea. In fact, with more and more customers using SSL/TLS for all data transfers, using a Linux on Z image for your Java VTAPE server is an excellent idea. Linux on Z using Hipersocket networking is very fast and SSL/TLS is unneeded since data transferred to and from z/VSE never leaves the Z box.</span></span><br />
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
</span><br />
<h4>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">Java Interpret vs. Dynamic Compilation </span></h4>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">Most x86 (32-bit or 64-bit) machines will have a version of Java installed. This version of Java will likely be running in mixed mode. Mixed mode indicates dynamic compilation of Java byte codes is available and will be used. If your Java installation is running in interpret mode, this can cause big slowdowns in throughput and high CPU usage.</span><br />
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">The </span><span style="font-family: "courier new" , "courier" , monospace;">java -version</span><span style="font-family: "arial" , "helvetica" , sans-serif;"> command allows you to verify this.</span></span><br />
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: monospace;"><span style="color: #ff5454; font-weight: bold;">zPDT3:/tmp #</span> java -version
<br />openjdk version "1.8.0_151"
<br />OpenJDK Runtime Environment (IcedTea 3.6.0) (build 1.8.0_151-b12 suse-18.1-x86_64)
<br />OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)</span></span><br />
<span style="background-color: white;"><span style="font-family: monospace;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Recently however, after doing an install of SLES 12 SP2, I found the following Linux Java Server installed ...</span></span><br />
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;"> SLES 12 SP2 </span><br />
<span style="background-color: white; font-family: "courier new" , "courier" , monospace;"> java-1_8_0-ibm<br /> java-1_8_0-openjdk<br /> java-1_8_0-openjdk-headless </span><br />
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;"> All of the above installed by default </span><br />
<span style="background-color: white;"><br /></span>
<span style="background-color: white;">The java -version command displayed this output ...</span><br />
<span style="background-color: white;"><br /></span>
<span style="background-color: white; font-family: "courier new" , "courier" , monospace; font-size: x-small;">jcb@sles12sp2:~> java -version
<br />openjdk version "1.8.0_101"
<br />OpenJDK Runtime Environment (IcedTea 3.1.0) (suse-14.3-s390x)
<br />OpenJDK 64-Bit Zero VM (build 25.101-b13, interpreted mode) </span><br />
<span style="background-color: white;"><br style="font-family: Arial, Helvetica, sans-serif;" /></span>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">The java-1_8_0-openjdk package was being used and running in interpret mode. This was causing throughput problems and very high CPU usage.</span><br />
<span style="background-color: white;"><br /></span>
<span style="background-color: white;">Using yast to remove the <span style="font-family: "arial" , "helvetica" , sans-serif;">java-1_8_0-openjdk </span><b class="moz-txt-star" style="font-family: Arial, Helvetica, sans-serif;"><span class="moz-txt-tag">*</span>and<span class="moz-txt-tag">*</span></b><span style="font-family: "arial" , "helvetica" , sans-serif;"> java-1_8_0-openjdk-headless packages resulted in the SLES 12 SP 2 image using the </span><span style="font-family: "arial" , "helvetica" , sans-serif;">Java-1_8_0-ibm package.</span></span><br />
<span style="background-color: white;"><br /></span>
<span style="background-color: white; font-family: monospace;">jcb@sles12sp2:~> java -version
<br />java version "1.8.0"
<br />Java(TM) SE Runtime Environment (build pxz6480sr3-20160428_01(SR3))
<br />IBM J9 VM (build 2.8, JRE 1.8.0 Linux s390x-64 Compressed References 20160427_301573 (JIT enabled, AOT enabled)
<br />J9VM - R28_Java8_SR3_20160427_1620_B301573
<br />JIT - tr.r14.java.green_20160329_114288
<br />GC - R28_Java8_SR3_20160427_1620_B301573_CMPRSS
<br />J9CL - 20160427_301573)
<br />JCL - 20160421_01 based on Oracle jdk8u91-b14</span><br />
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">The Java VTAPE server now runs compiled and is much faster with </span><span style="font-family: "arial" , "helvetica" , sans-serif;">far lower CPU usage. Testing showed a <b>big</b> increase in throughput with VTAPE backup jobs duration reduced by 50%.</span><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span></span><br />
<h3>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">MTU Sizing</span></h3>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Most networks use the standard Ethernet MTU size of 1500 bytes. However, with the advent of Gigabit Networking Jumbo Ethernet frames appeared. Jumbo Ethernet frames can contain up to 9000 bytes of data. z/VSE's IJBOSA OSA Express driver, provided by IBM, supports Ethernet frames up to 9000 bytes and Hipersocket MFS (Maximum Frame Size) up to 64K. I have found that Linux systems do not like an MTU size of 9000. However, Linux is very happy with an Ethernet MTU of 8960 (8K plus 768 bytes) and a Hipersocket MTU size of 56K. IPv6/VSE, from BSI, also supports these MTU sizes.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Since Jumbo Ethernet Frames contain 6x as much data as a standard Ethernet Frame, throughput can improve dramatically. Hipersocket MTU's of 56K contain 39x more data per frame.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
</span><br />
<h4>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Ethernet</span></span></h4>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">
If your z/VSE system's OSA Express adapter is connected to a Gigabit switch and the machine running the Java VTAPE server is also connected to the same switch then using Jumbo Ethernet frames may be possible. Verify the switch and the NIC being used by the Java VTAPE machine support Jumbo Ethernet frames. If you are using managed Gigabit Ethernet switches remember frame size can often be configured for each switch port.</span><br />
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;"><br />Throughput using Jumbo Ethernet Frames can be much higher.</span><br />
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
</span><br />
<h4>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">Hipersockets</span></h4>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">Based on customer information, I have been told that CSI'S TCP/IP for VSE uses 32K MTU's when using Hipersocket links. And, in this case, defining the Hipersocket link with an MFS of 40K may help throughput. Using an z/VSE MTU of 32K with a Hipersocket MFS of 64K has been shown to cause slowdowns. Likely this is due to forcing Hipersockets to transfer 64K when only 32K of data is being transferred.</span><br />
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">BSI's IPv6/vSE supports maximum size, 64K, MFS definitions for Hipersocket links. Customers have reported Gigabit+ throughput using Hipersocket links.</span></span><br />
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Linux on Z will choose an MTU size just less than the MFS size. In the case of 64K MFS, Linux will use a 56K MTU. IPv6/VSE will use a 56K MTU also.</span></span><br />
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">For example, this BSTTFTPC batch FTP job transferred a 100MB file in 0.673 seconds.</span></span><br />
<pre wrap=""><span style="background-color: white; font-family: "courier new" , "courier" , monospace;">BSTT023I 100M BYTES IN 0.673 SECS. RATE 152M/SEC </span></pre>
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Remember, Hipersockets is a CPU function. So, limiting the available CPU on any machine using Hipersockets can and likely will have an affect on throughput.</span></span><br />
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
</span><br />
<h3>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">TCP Window Scaling</span></h3>
<span style="background-color: white;"><br /></span>
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;">TCP window scaling allows TCP sockets to use larger windows of data. The TCP window is the maximum amount of data that can be sent without being acknowledged by the remote host. CSI's TCP/IP for VSE, I have been told, supports only standard 64K fixed size TCP windows. Our IPv6/VSE product fully supports TCP window scaling. IPv6/VSE's large TCP windows range from 1MB to 8MB in size. This allows IPv6/VSE to send far more data without waiting for the remote host to send an acknowledgement. Since TCP acknowledgements are cumulative a remote host can receive large amounts of data acknowledged with a single </span><span style="font-family: "arial" , "helvetica" , sans-serif;">acknowledgement.</span></span><br />
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;"><br />IPv6/VSE's TCP window scaling can dramatically increase throughput. Reductions in run times of data transfer jobs can be as high a 95%.<br />
</span><br />
<h3>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">Device and Cache Sizing</span></h3>
<span style="background-color: white;"><br /></span>
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">The Java VTAPE server reads and writes virtual tape data from and to file system files. These files may reside on a local SSD, harddrive or a remote SAN, Samba file. The speed at which the Java VTAPE server can read and write file data makes a difference in VTAPE throughput. So, the faster the Java VTAPE server can access the device, the better.</span></span><br />
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">In addition, sizing the amount of memory available to the Linux or Windows system will help. Memory, not actively being used by an application, running on either Linux or Windows, is generally available to cache data in files.</span></span><br />
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">By ensuring the Linux or Windows system has plenty of system memory for caching of file data and using a fast local storage device can really help VTAPE throughput. x86 Intel Linux and Windows images generally have 4GB (or more) of memory these days. Linux on Z, however, can require additional calculations to optimize the size of memory available.</span></span><br />
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">As a starting point for Linux on Z images, try 1GB plus the average size of your virtual tape files. For example, if your VTAPE files average 1GB in size, try starting the 1GB + 1GB = 2GB for Linux on Z system memory. Tune up or down from there.</span></span><br />
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></span>
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;">From the z/VSE TAPESRVR side, the utility you are using to create the virtual output tape is important. For example, trying to improve the performance of a LIBR BACKUP job can be very difficult. Why? z/VSE libraries have fixed length records of 1024 (1K) bytes. While the LIBR program can read multiple blocks in a single I/O, this only occurs if the blocks are contiguous. Accessing a z/VSE library is a very I/O intensive process. Using FCOPY or IDCAMS backup facilities can provide much faster access to data on disk. 3rd party backup and restore utilities are optimized for best disk access performance but still may have options for improving read or write access. For in house, E.g., COBOL, applications should be reviewed for improving read or write access. Specifying VSAM buffer space/counts in the job's JCL can have a dramatic impact on performance and improve throughput.</span></span><br />
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
</span><br />
<h3>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">Linux Sockets</span></h3>
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">The Linux system configuration file /etc/sysctl.conf is used to modify various system defaults. In the case of a Linux system used to host the Java VTAPE server, changing the Linux system default for TCP windows scaling buffer sizes may improve performance. </span></span><br />
<span style="background-color: white;"><br /></span>
<span style="background-color: white; font-family: "courier new" , "courier" , monospace;">net.core.rmem_default = 4096000
<br />net.core.rmem_max = 16777216
<br />net.core.wmem_default = 4096000
<br />net.core.wmem_max = 16777216 </span><br />
<span style="background-color: white;"><span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Modifications made to /etc/sysctl.conf can be activated by restarting the Linux image or by using the </span><span style="font-family: "courier new" , "courier" , monospace;">sysctl -p /etc/sysctl.conf</span><span style="font-family: "arial" , "helvetica" , sans-serif;"> command.<br />
</span></span><br />
<h3>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">z/VSE VTAPE Buffer Size </span></h3>
<span style="background-color: white;"><br /></span>
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">The default 'chunk' size used by VTAPE on z/VSE systems is 1MB. This size can be changed by using the</span><span style="font-family: "courier new" , "courier" , monospace;"> SIR VTAPEBUF=nnM</span><span style="font-family: "arial" , "helvetica" , sans-serif;"> command. The minimum is 1M and the maximum 15M. I do not believe there is any official documentation on this command. It is, however, referenced indirectly in the z/VSE Hints and Tips manual.</span></span><br />
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">SIR VTAPEBUF=1M (default)</span></span><br />
<span style="background-color: white;"><br /></span>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">By default, under z/VSE 5.1+, IPv6/VSE uses 4M TCP windows, Try ... </span><br />
<span style="background-color: white;"><span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">SIR VTAPEBUF=4M</span></span><br />
<span style="background-color: white; font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">Additional performance may be achieved by adding the SHIFT 7 command to the BSTTINET/BSTT6NET stack startup commands under z/VSE 5.1+. This results in using 8M TCP windows. In this case, try ...</span><br />
<span style="background-color: white;"><span style="font-family: inherit;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">SIR VTAPEBUF=8M </span></span><br />
<span style="background-color: white;"><span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Remember, increasing the VTAPEBUF size also increases the amount of 31-bit System GETVIS required by the TAPESRVR partition.</span></span><br />
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></span>
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></span>
<br />
<h3>
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;">VTAPE Compression</span></span></h3>
<span style="background-color: white;">Using the file suffix .zaws invokes zip style data compression within the TAPESRVR partition. While this option does reduce the size of the .aws tape files, it also increases the amount of CPU used by the TAPESRVR partition by a factor of 2x to 3x. It will also reduce the throughput of the VTAPE transfer.</span><br />
<span style="background-color: white;"><br /></span>
<span style="background-color: white;">If you do want to use compressed vtape files, ensure you have plenty of CPU available on the machine running the TAPESRVR job. And, using the fastest CPU you have available to run the Java VTAPE server will help too. </span>
<span style="background-color: white;"><br /></span>
<br />
<h3>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">QDIO or Hipersocket Queue Buffers
</span></h3>
<span style="background-color: white;"><br /></span>
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Linux on Z QDIO Ethernet or Hipersocket buffers can be changed but this is usually not </span><span style="font-family: "arial" , "helvetica" , sans-serif;">necessary<br />On our SLES 12 SP 2 image ...
</span></span><br />
<span style="background-color: white;"><br /></span>
<span style="background-color: white; font-family: "courier new" , "courier" , monospace; font-size: x-small;">sles12sp2:/sys/bus/ccwgroup/drivers/qeth/0.0.0360 # cat buffer_count
<br />128
<br />sles12sp2:/sys/bus/ccwgroup/drivers/qeth/0.0.0360 # cat inbuf_size
<br />64k
</span><br />
<span style="background-color: white;"><br /></span>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">128 x 64K buffers is plenty
</span><br />
<span style="background-color: white;"><br /></span>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">On z/VSE the number of QDIO/Hipersocket input buffers has been
configurable since z/VSE 5.1. Output buffer buffers since z/VSE 6.1. See
the TCP/IP Support manual for more details.
</span><br />
<span style="background-color: white;"><br /></span>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">Additional Input / output queue buffers may
improve TCP/IP performance. </span><br />
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;"><br />The input / output queue buffers can be configured in the IJBOCONF phase.
You may use the skeleton SKOSACFG in ICCF library 59 to configure input /
output queue buffers. The skeleton also describes the syntax of the
configuration statements.
</span><br />
<span style="background-color: white;"><br /></span>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">The z/VSE default is 8 x 64K input buffers and 8 x 64K output buffers. This
default amount requires 1MB of page fixed 31-bit partition GETVIS in the
IPv6/VSE BSTTINET/BSTT6NET stack partition.
</span><br />
<span style="background-color: white;"><br /></span>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">Each additional 8 x 64K input and 8 x 64K output buffers requires 1MB of
additional page fixed 31-bit partition GETVIS. So, if you change the
default buffer counts, remember to change your // SETPFIX statement in your
stack partition JCL.
</span><br />
<span style="background-color: white;"><br /></span>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">For z/VSE, increasing the input/output buffer count to 16 or 32 might be
useful.
</span><br />
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<br />
<h3>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">Linux Fast Path (LFP)</span></h3>
<span style="background-color: white;"><br /></span>
<span style="background-color: white;">For most workloads the default parameters used during LFP startup should be fine. However, there are a couple of values to monitor.</span><br />
<span style="background-color: white;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">INITIALBUFFERSPACE = 512K</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">MAXBUFFERSPACE = 4M</span><br />
IUCVMSGLIMIT = 1024<br />
<span style="background-color: white;"></span>
<span style="background-color: white;"><br /></span>
<br />
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;">These values can be monitored by running </span><span style="font-family: "courier new" , "courier" , monospace;">// EXEC </span></span><span style="font-family: "courier new" , "courier" , monospace;">IJBLFPOP,PARM='INFO nn'</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;"><tt>*** BUFFER MANAGER *** </tt><br /><tt> CURRENTLY USED MEMORY .......... : 524,160 </tt><br /><tt> INITIAL MEMORY SIZE ............ : 524,288 </tt><br /><tt> MAXIMUM MEMORY SIZE ............ : 4,194,304 </tt></span><br />
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> If CURRENTLY USED MEMORY is close to MAXIMUM MEMORY SIZE then you should probably increase the MAXBUFFERSPACE setting. CURRENTLY USED MEMORY may grow over time (up to MAXBUFFERSPACE), as tasks require buffers depending on the socket-workload. </span><span style="font-family: "arial" , "helvetica" , sans-serif;">LFP allocates more buffers (if still below MAXBUFFERSPACE) as needed, but will never shrink the buffer space once allocated. </span><span style="font-family: "arial" , "helvetica" , sans-serif;">All LFP buffer storage is allocated from 31-bit System GETVIS. </span><br />
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">When
LFP is low on buffers, this might cause delays because tasks are put
into a wait until buffers become available again from other tasks, or the in
worst case, socket calls fail due to no more buffers available.</span><br />
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">If lots of concurrent tasks use LFP, you might also watch these lines ...</span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">TASKS WAITING FOR MSGLIMIT ..... : 0 <br />TIMES IN WAIT FOR MSGLIMIT ..... : 0 <br />IUCV MSGLIMIT EXCEEDED ......... : 0 </span><br />
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">If you see TASKS WATING FOR MSGLIMIT, increase the IUCV message limit. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">Remember, this will likely increase buffer usage so you might want to increase buffer space as well.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><i>LFP Tuning Tips courtesy of Ingo Frantzki at the z/VSE laboratory. </i></span><span style="font-size: x-small;"><br /></span><br />
<h3>
<span style="background-color: white;">
Summary</span></h3>
<span style="background-color: white;"><br /></span>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">As with all performance and tuning, will all of these tips and tricks help
your VTAPE throughput? It depends. Your mileage will vary.
</span><br />
<span style="background-color: white;"><br /></span>
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">Remember, make one change at a time, evaluate the results before making
more changes. Be prepared to 'back out' any change if testing results are not satisfactory. </span><br />
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Well, there you have it. If anyone reading this has thoughts or suggestion, just send me an email (jeff@bsiopti.com) and I will incorporate the information into this article.</span></span><br />
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Jeff Barnard</span></span><br />
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">Networking and Security</span><br />
<span style="background-color: white; font-family: "arial" , "helvetica" , sans-serif;">Barnard Software, Inc.</span><br />
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>Jeffhttp://www.blogger.com/profile/11567371917298802617noreply@blogger.com0tag:blogger.com,1999:blog-8156209415524873303.post-87816382818308919502017-06-21T08:22:00.000-07:002017-06-21T08:22:41.993-07:00BSI IPv6/VSE Build 257 and IBM IPv6/VSE 1.3 Preview<h2>
<i><b><br /></b></i></h2>
<h2>
<i><b>Coming soon from BSI and IBM</b></i>
</h2>
<br /><b><span style="font-size: large;">BSI IPv6/VSE Build 257
<br />IBM IPv6/VSE 1.3
</span></b><br />
<br />
<h3>
Highlights
</h3>
<br /><h4>
Improved BSTTFTPS FTP Server Security
</h4>
3 security methods, simplifies migrations
<br /> BSI Standard Security
<br /> IBM BSSTISX Security
<br /> IBM RACROUTE Security
<br />
<br /><h4>
Improved PDF Generation
</h4>
Based on Open Source TXT2PDF product
<br /> Many options to control the conversion and output appearance
<br /> Entirely REXX based
<br /> Full REXX source provided
<br />
<br /><h4>
SSH Secure Copy/Command Facility
</h4>
BSTTSCPY SSH Secure Copy Facility uses a Linux/Windows
<br /> Pass-through image to facilitate an SSH connection to
<br /> remote hosts providing for secure file transfer and
<br /> command execution using SSH.
<br />
<br /><h4>
Encrypted Password Support
</h4>
Passwords no longer stored as clear text on your system
<br /> Encrypted Password Member used by
<br /> BSTTFTPC Batch FTP Client
<br /> BSTTMTPC Batch Email Client
<br /> BSTTREXC Batch Remote Execution Client
<br /> Encrypted BSTTSCTY.T FTP Security Member used by
<br /> BSTTFTPS FTP Server
<br />
<br /><h4>
BSTTFTPC Batch FTP Client Support for EPIC Catalog Access
</h4>
CA-EPIC or BIM/CSI-EPIC
<br /> Eliminates the need to know block/record sizes
<br />
<br /><h4>
BSTTGSTI Utility for TLS Client Certificates
</h4>
Extracts SSL/TLS client Certificate information for TN3270E sessions
<br /> For use with multi-factor authentication and signon to CICS
<br />
<br /><h4>
Explicit FTPS and SMTPS Support
</h4>
Support for AUTH TLS and STARTTLS commands
<br /> BSTTFTPC Batch FTP Client
<br /> BSTTFTPS FTP Server
<br /> BSTTMTPC Batch Email Client
<br />
<br />Implicit FTPS Support still available using BSTTATLS and BSTTPRXY
<br />
<br /><h4>
BSTTPRXY Server Load Balancing
</h4>
Automatically balances connections to multiple servers
<br /> Up to 8 PRXY statements per BSTTPRXY partition
<br /> E.g., Run up to 32 FTP Server connections per BSTTPRXY partition
<br /> E.g., Balance CICS TS web connections between multiple listeners
<br />
<br /><h4>
Performance Improvements
</h4>
Greatly increased parallel time in the BSTTINET/BSTT6NET stacks
<br /> Improves NP Ratio
<br /> Dramatically reduced CPU overhead in SSL/TLS
<br /> Up to 80% less CPU to create a secure socket
<br /> Up to 25% less CPU processing SSL/TLS requests
<br />
<br />
<br /><h4>
Planned availability is fourth quarter, 2017.
</h4>
<br />Contact Teri at BSI for more information
<br /><a class="moz-txt-link-abbreviated" href="mailto:teri@bsitcpip.com">teri@bsitcpip.com</a><br /><br />
<div>
<br /></div>
<div>
<br /></div>
Jeffhttp://www.blogger.com/profile/11567371917298802617noreply@blogger.com0tag:blogger.com,1999:blog-8156209415524873303.post-44514177773893661032016-03-20T16:27:00.000-07:002016-03-23T05:28:46.655-07:00CICS TS Workload Management Using OPTI-WORKLOAD<h2>
Workload Management</h2>
Recently we had a customer request that we update our OPTI-WORKLOAD product to support the latest versions of z/VSE and CICS TS. The updates for supporting the latest z/VSE version was fairly easy and the customer reports that the z/VSE batch workload management works very well on their systems. The customer has a very large number of batch jobs that run throughout the day (and night). Using OPTI-WORKLOAD's facilities allowed them to have multiple balance groups and to have each group balanced based on the resource usage of each job.<br />
<br />
However, updating the CICS/VSE Workload Manager to support CICS TS proved to be more difficult. And, in the process, we learned a bit so we thought we would pass on the information.<br />
<br />
Before diving into CICS TS Workload Management I will review some of the basic features of Barnard Software, Inc.'s OPTI-WORKLOAD product.<br />
<br />
<h3>
VSE/ESA and z/VSE Balancing</h3>
The priority of the partitions/dynamic classes can be set and changed by using the AR PRTY command. When a dynamic class contains more than one allocated dynamic partition, the partitions within the dynamic class are balanced (time sliced). The time slice value can be modified via the MSECS command.<br />
<br />
<h4>
Partition Balancing</h4>
The partition balancing routine inspects the CPU time for each partition of the balancing group and decides how to rearrange the priority of the partitions. VSE/ESA 2.1 (and newer) running the Turbo dispatcher offers a new balancing algorithm. If partition balancing is specified for static and dynamic classes (via equal signs in the PRTY command), static and dynamic partitions will receive the same time slice. Without the Turbo dispatcher a dynamic class (with all its partitions) got the same time slice as a static partition.<br />
<br />
<h3>
OPTI-WORKLOAD Workload Management</h3>
<div>
<br /></div>
OPTI-WORKLOAD introduces the concept of performance groups to VSE/ESA 1.3 (or higher) systems. Performance groups are a group of static partitions and/or dynamic classes with similar performance goals. Once a performance group has been identified, OPTI-WORKLOAD monitors the velocity of work being done by each partition and class. At specified intervals the partition or class achieving the lowest velocity of work is given the highest dispatching priority of those partitions and classes in the performance group. This results in a more equitable allocation of resources and greater overall system throughput.<br />
<br />
<h4>
Velocity of Work</h4>
Velocity of work is calculated by monitoring the number of times the partition is actively using the CPU, actively waiting on I/O, delayed waiting on the CPU and delayed waiting on other resources. Velocity is expressed as the percentage of the time a partition has the resources that it needs available to it. Velocity is not a measure of the quality of the work being done, it is simply a measure of how much of the time resources needed by a partition are available to it.<br />
<br />
<h3>
CICS Workload Management</h3>
<br />
OPTI-WORKLOAD provides a special CICS Workload Management feature. The CICS Workload Manager uses Velocity calculations to manage CICS transaction priorities. Proper CICS Workload Management results in dramatic improvements in CICS response times and throughput.<br />
<br />
The CICS Workload Manager uses Velocity calculations to increase the priority of CICS transactions with low velocity-of-work (or transactions ‘starving’ for resources) and to decrease the priority of CICS transactions with high velocity-of-work (or transactions monopolizing resources).<br />
<br />
The CICS Workload Manager defines a transaction as the work done between sync point requests and<br />
measures the amount of work done by counting the number of KCP requests made by the transaction. On CICS systems where applications do not perform sync point requests for themselves, CICS will automatically issue a sync point request at end of task or when the transaction enters a terminal wait. If a transaction uses more than the specified number of work units (the CICSINT threshold value), it is moved down by one priority increment. At the same time, if a transaction is delayed by a higher priority transaction using all available resources, the delayed transaction is moved up by one priority increment. As transactions enter the CICS system their initial priority defines the its starting position in the CICS Workload Managers management scheme.<br />
<br />
The CICSINT threshold value is normally set to a value about 50% higher than the number of work units used by an average transaction. In this way most CICS transactions enter and leave the system with little, if any, management required. However, when longer running transactions enter the system, the priority of these transactions will float downward while the priorities of transactions competing for resources will float upward. By managing the priorities of the various CICS transaction active in a system, the CICS Workload Manager maximizes throughput resulting in reduced and more consistent response times.<br />
<br />
<h3>
CICS Workload Management Thresholds</h3>
<br />
Five OPTI-WORKLOAD THRESHOLD commands are used to customize the CICS Workload<br />
Management feature. The CICS Workload Manager extracts these threshold values from the OPTI-<br />
WORKLOAD partition. Therefore, the OPTI-WORKLOAD partition should be active before the CICS Workload Management feature is initialized. If the OPTI-WORKLOAD partition is not active initialization will complete and the CICS Workload Manager will enter ‘quiet’ or ‘inactive’ mode. The CICS Workload Manager will synchronize with the OPTI-WORKLOAD partition when it becomes active.<br />
<br />
The THRESHOLD CICSINT nnnn specifies the CICS Workload interval. The default value is 100 work units. Work units are defined as the work done between DFHKCP requests.<br />
<br />
The THRESHOLD PRTYMIN nnn specifies the minimum transaction priority to be managed by the CICS Workload Management feature. Any transaction with a priority less than the minimum will not be managed. The default value is 2.<br />
<br />
The THRESHOLD PRTYMAX nnn specifies the maximum transaction priority to be managed by the CICS Workload Management feature. Any transaction with a priority greater than the maximum will not be managed. The default value is 4.<br />
<br />
The THRESHOLD RUNAWAY nnn specifies the Workload Runaway Task multiplier. Any transaction using more than the RUNAWAY * CICSINT work units is considered a Workload Runaway Task. For example, if the CICSINT is 250 work units and the RUNAWAY is 100, any transaction using more than 25000 work units would be a Workload Runaway Task. The default is 100.<br />
<br />
The THRESHOLD TRIVIAL nnn specifies the trivial transaction work unit limit. Any transaction using less work units than the specification is considered trivial. Trivial transaction are excluded from the non-trivial transaction statistics displayed in the CICS Workload Manager termination statistics. The default is zero.<br />
<div>
<br /></div>
<h3>
CICS TS Workload Management</h3>
<div>
To begin, the CICS TS Performance Guide describes CICS TS transaction priorities like this ...<br />
<br />
The overall priority is determined by summing the priorities in all
three definitions for any given task, with the maximum priority being
255.<br />
<br />
Priority = Terminal priority + Operation priority + Transaction Priority<br />
<br />
The value of the system initialization parameter, PRTYAGE also influences<br />
the dispatching order, for example, PRTYAGE=1000 causes the task's<br />
priority to increase by 1 every 1000ms it spends on the ready queue.<br />
<br />
This is a nice description and basically incorrect.<br />
<br />
With the help of Eugene (Gene) Hudders, a CICS TS internals expert and author the C/Trek CICS TS performance monitor, I found out basically how the CICS TS dispatcher actually works.<br />
<br />
The one-byte task priority is initially calculated as described above. When PRTYAGE=0 (disabled) the 1-byte task priority is converted to an 8-byte priority field with the 1-byte priority in the low order byte. With PRTYAGE=nnnn the 1-byte priority is converted in some way and combined with other information (E.g., transaction arrival time, etc) and stored as an 8-byte priority field.<br />
<br />
This 8-byte priority field becomes the value used to control dispatching of the transaction for the transactions remaining lifetime.<br />
<br />
The CICS TS dispatcher keeps 3 queues of tasks within a CICS TS image. The 1st queue is the Ready queue (also called the Private queue). This is a queue of ready to run tasks in priority sequence. The 2nd queue is the Dispatchable queue (also called the Public queue). This is a queue of dispatchable tasks ordered by queue arrival time. The 3rd queue is the overall task queue. Basically this queue is all tasks that are in the system.<br />
<br />
The CICS TS dispatcher will dispatch tasks from the Ready queue in priority sequence until the queue is empty and "from time to time" (IBM's term) it will add tasks from the Dispatchable queue as it looks for more work. When a task on the waiting/suspend queue is ready to run, it is added to the Dispatchable queue. And the dispatch process continues ...<br />
<br />
Now, this is my own interpretation of how the dispatcher works and some might argue that the 3rd queue is not really a queue at all or that the 2nd queue (Public) is not used on z/VSE (since it has only one QR TCB) but I think it is pretty close to the process the dispatcher uses.<br />
<br />
One more note about the 8-byte transaction priority field, this value can, at times, be modified by CICS TS to ensure quick or delayed dispatching. For example, when a task is first attached (started), its priority is set to a 'very high' value to ensure the initial dispatch of the task is done quickly. This ensures the attach process, including the calls to any Task Related User Exit (Start of Task TRUE) is completed very quickly. After this the task priority is returned to normal. At other times, the dispatcher may add a delay to the dispatch time. For example, if available storage becomes less than certain values, the dispatcher may add a task to the Dispatchable queue but add some number of milli-seconds to its arrival time (remember the Dispatchable queue is ordered by arrival time). This effectively delays dispatching.<br />
<br />
<h4>
Are there problems with this design?</h4>
<div>
Overall the design is quite good. Certainly far better than the old CICS/VSE dispatcher. But there are a couple of issues ...</div>
<div>
<br /></div>
One issue with CICS TS PRTYAGE is that is only increases the priority of a task. To be effective a workload manager must also understand that
heavy resource usage tasks (that should be batch applications) do exist and
when running must have their priority reduced to allow other light resource
tasks a chance to run. </div>
<div>
<br /></div>
<div>
<span style="font-family: inherit;">Also <span id="role_document" style="color: black;">you need to use a very low setting for the PRTYAGE parameter because if
you use the default setting of 32768 (32.768 seconds) then the task's priority would not be increased for
32.768 seconds. If a task had to wait to be dispatched for 32 seconds,
you have a bigger problem than the PRTYAGE parameter is going to help. In fact, in z/OS this parameter's default value has been lowered from 32768 to 1000. </span></span><span style="color: black;"><span style="font-family: inherit;"> I would go further and suggest a value between 250 and 500.</span></span><br />
<span style="color: black;"><span style="font-family: inherit;"><br /></span></span>
<span style="color: black;"><span style="font-family: inherit;">Remember, as the CICS TS dispatcher ages a transaction the priority of the transaction increases <i>until the next successful dispatch of the task</i>. At that point the dispatcher resets the priority back to normal. The affect on the priority by PRTYAGE is temporary. While this makes sense (at least to me) it does show that PRTYAGE has little affect on dispatching <i>unless</i> the CICS TS system is very busy and transactions are backed up waiting to run.</span></span><br />
<span style="color: black;"><br /></span>
<br />
<h3>
<span style="color: black;">OPTI-WORKLOAD to the Rescue</span></h3>
<div>
<span style="color: black;">The CICS Workload Manager in OPTI-WORKLOAD will both decrease and increase the priority of a CICS transaction based, not on time, but on the amount of resources used (work done) by the transaction. These changes in the transaction's priority are permanent until or unless the CICS Workload Manager decides to change the priority again.</span></div>
<div>
<span style="color: black;"><br /></span></div>
<div>
<span style="color: black;">The CICS Workload Manager can manage the workload with or without PRTYAGE active. </span></div>
<div>
<span style="color: black;"><br /></span></div>
<div>
<span style="color: black;">When using the CICS Workload Manager you specify the number of work units that are considered normal. This is the CICSINT value. If a transaction uses less than CICSINT work units nothing is done to its priority. If the transaction does exceed CICSINT work units and its initial priority falls in the management range (PRTYMIN to PRTYMAX) then the transaction will have its priority reduced by one. Over time a long running or heavy resource usage transaction will see its priority gradually lowered until it reaches the PRTYMIN value. At the same time, transactions that are waiting to run but unable to run because high resource usage transactions will see their priority gradually increased until it reaches the PRTYMAX value. The net result is transactions within CICS will have their priority managed up or down based on resource usage achieving maximum throughput. </span></div>
<br />
With the CICS Workload Manager active long running (batch like) transactions no longer block or 'lock out' normal or short running transactions.<br />
<br />
<h3>
Defining Transaction Priorities</h3>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Priority Comment</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">_____________________________________________________________</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">0 Lowest</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">1</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">...</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">...</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">PRTYMIN \ Minimum managed by the Workload Manager</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">... \</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">... |- Range managed by the Workload Manager</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">... /</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">PRTYMAX / Maximum managed by the Workload Manager</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">...</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">...</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">254</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">255 Highest </span></div>
<div>
<br /></div>
<div>
There are many ways to define the initial priority of transaction within CICS. Some basic recommendations are ...</div>
<div>
<br /></div>
<div>
#1, Avoid 0 and 255. These priorities are the lowest and highest. And, often used by CICS housekeeping and utility transactions.</div>
<div>
<br /></div>
<div>
#2, Long running, high resource usage transactions should be defined with a low priority.</div>
<div>
<br /></div>
<div>
#3, Short running, low resource usage transactions should be defined with a high priority.</div>
<div>
<br /></div>
<div>
#4, Mixed usage transactions are difficult to manage without help.</div>
<div>
<br /></div>
<div>
Sometimes obeying these rules is easy. For example, a bank might have a Savings Balance (SBAL) transaction that simply reads a single customer record and displays some information about the customer's account. This is a transaction that should have a high priority. On the other hand, when the branch manager is balancing all the tellers with a TBAL transaction that reads the entire teller file, you have a transaction the needs a low priority.</div>
<div>
<br /></div>
<div>
Sometimes obeying the rules is not so easy. Perhaps you have a 'master' MENU transaction that invokes many functions and may even transfer control to many other transactions. Yet all of these transaction run with the priority of the 'master' MENU transaction. Another example might be a TCP/IP socket transaction that listens for connections. When a connection is made the socket is given to a child transaction for processing. Yet the child transaction might have the same transaction ID as the listener transaction. With these transactions, some are low resource usage transactions and some are high resource usage transactions. Proper management of their priorities is very difficult unless you have a CICS Workload Manager.</div>
<div>
<br /></div>
<div>
When using the OPTI-WORKLOAD CICS Workload Manager the whole process becomes quite simple. For example, define your CICSINT typical transaction work units, PRTYMIN (perhaps 50) and PRTYMAX (perhaps 150).</div>
<div>
<br /></div>
<div>
Rule #2, These transactions get a priority between 1-49</div>
<div>
Rule #3, These transactions get a priority between 151-254</div>
<div>
Rule #4, These transactions get a priority of 100 and are managed.</div>
<div>
<br /></div>
<div>
With proper CICS Workload Management CICS transactions response times are reduced, stabilized and far more consistent. </div>
<div>
<br /></div>
<div>
Well there you have it. Enjoy.</div>
<div>
<br /></div>
<div>
Jeff Barnard</div>
<div>
Barnard Software, Inc.</div>
<br />
<br />
<br />
<br />
<br />
<pre></pre>
</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<br />Jeffhttp://www.blogger.com/profile/11567371917298802617noreply@blogger.com0tag:blogger.com,1999:blog-8156209415524873303.post-49988485191885505332016-01-21T08:04:00.001-08:002016-04-05T15:41:57.516-07:00Comparing SSL/TLS Facilities for z/VSE<h2>
Comparing SSL/TLS Facilities for z/VSE</h2>
<br />
We have recently received a number of questions about the SSL/TLS functionality available for IPv6/VSE. These questions are generally about the differences between IPv6/VSE SSL/TLS functionality and the SSL/TLS functionality available in the SSL for VSE feature of TCP/IP for VSE.<br />
<br />
The question of SSL/TLS support is far more complex that just having an SSL/TLS client that is able to connect to z/VSE.<br />
<br />
Most of the information presented here is also in the IBM publication z/VSE 6.1 TCP/IP Support SC34-2706-00 which provides information about SSL/TLS features available for both IPv6/VSE and TCP/IP for VSE. However, I will try to layout the information in a way that will allow you to easily compare the types of available SSL/TLS support.<br />
<br />
For reference, when we talk about SSL/TLS sockets we are referring to a secure and trusted connection. The word secure means the connection is encrypted. The word trusted means the connection has been authenticated.<br />
<br />
Authentication itself means the certificate presented to the SSL/TLS client by the server has been checked against the Certificate Authority's certificate to verify correctness, expiration, etc. Optionally, the SSL/TLS client can present a certificate to the SSL/TLS server allowing the server to authenticate the client too. This means that the SSL/TLS client and the SSL/TLS server are known to each other and have verified they are authorized to establish a connection.<br />
<br />
The article will also refer to "Control Program Assist for Cryptographic Function" (CPACF). This is a feature of System z machines. The feature is disabled by default. After ordering and installing a System z machine, you much contact IBM to have this feature enabled. The feature provides hardware micro/millicode assist instructions to dramatically improve the performance of encryption and message digest/hash functions. CPACF features discussed in this article require using a z10 or newer machine.<br />
<br />
<h3>
Certification</h3>
<br />
To begin, lets look at the support itself. IPv6/VSE uses the IBM z/VSE port of the Open Source package OpenSSL. The OpenSSL package used by IBM has US government FIPS 142-2 certification and IBM itself updates the OpenSSL port with security patches and makes these updates available to customers in a timely fashion. US government certification of OpenSSL is a time consuming and expensive process where every part of the OpenSSL code is tested for correctness.<br />
<br />
The SSL for VSE feature of TCP/IP for VSE was developed by Connectivity Systems, Inc. (CSI) and is exclusive to TCP/IP for VSE. <i>I could find no information about the certification status of SSL for VSE.</i><br />
<br />
A certified SSL/TLS solution is important because the certification process tests to make sure the SSL/TLS connections are made correctly and that no information is leaked in the process. Certification is far more that just being able to establish a connection or having someone tell you "Hey! I got connected!".<br />
<br />
<h3>
SSL/TLS Connection Types</h3>
IPv6/VSE supports SSLv3, TLSv1 and TLSv1.2 using RSA and Diffie-Hellmann key exchange.<br />
SSL for VSE supports SSLv3 and TLSv1 using RSA key exchange.<br />
<br />
While SSLv3 is supported, it should not be used. SSLv3 is completely broken and is little, if any, better than using plain text socket connections. <i>The IBM OpenSSL port plans to discontinue SSLv3 support in the near future.</i><br />
<br />
While TLSv1 is secure, IPv6/VSE supports TLSv1.2 connections. TLSv1.2 is the current TLS standard and is more secure than TLSv1.<br />
<br />
While both SSL/TLS solutions support RSA keys, IPv6/VSE supports RSA keys sizes up to 4096 bits in length in both software and hardware.<br />
<br />
While the SSL for VSE feature of TCP/IP for VSE Version 2.1 supports these RSA key sizes too, RSA keys sizes of 2048 and 4096 bits require Crypto Express2 (or later) adapter hardware. The SSL for VSE feature of TCP/IP for VSE Version 1.4/1.5 does not support RSA key sizes greater than 1024 bits.<br />
<i><br /></i>
<i>Since RSA keys sizes less than 2048 bits are now deprecated and insecure, the SSL for VSE feature of TCP/IP for VSE Version 2.1 <u>and</u> a Cyrpto Express2 (or later) adapter hardware is required for secure sockets using SSL for VSE.</i><br />
<br />
IPv6/VSE also supports using the more secure Diffie-Hellmann (DH) key exchange. DH key exchange is different method of managing session keys and is more secure than RSA key exchange. <i>SSL for VSE does not support this type of key exchange. </i><br />
<br />
<h4>
Why is DH Important?</h4>
The following diagram shows an SSL session key exchange using
RSA. <br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1zXaWX-u2L4BgqdHCzI7rBZ70U4lUn8AiQ2-2rs_L_JS3DL6Bhmjss6IsyVZxr4_UONUBj7CC7Y7sd1ZAG62fGjQ35qxfFFUlT97arTwxNjLeLo8opnYNWVoZzBZDYacbTJxi078-mhkA/s1600/rsa1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="371" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1zXaWX-u2L4BgqdHCzI7rBZ70U4lUn8AiQ2-2rs_L_JS3DL6Bhmjss6IsyVZxr4_UONUBj7CC7Y7sd1ZAG62fGjQ35qxfFFUlT97arTwxNjLeLo8opnYNWVoZzBZDYacbTJxi078-mhkA/s400/rsa1.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The <i>weak point</i> is that the secret session is part of the SSL session data. The key is
sent from the client to the server, encrypted via the public server RSA key. If the
private server RSA key is compromised, stolen, or broken, the session key is no
longer secure and it is possible to decrypt and read the complete session data. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
Another method of exchanging the session key, is by using Diffie-Hellman. Using
Diffie-Hellman, the session key is never sent over the network and is therefore
never part of the network session data.
The following example shows how the session key is negotiated using DH.
Therefore, the common term is not “exchanging a session key”, but rather
“agreeing on a common session key” through the DH key agreement process.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiolXDyMKWRq9lZM0Ebb020B7phyphenhyphenIqmXPEjb2EvqGOQjnQMECJp0UnY9nfyizRP48am-I_8FYN6EKJu800qpccHURhQ21576PLY893Lsr6ev4bTr398S6c4qatFjtjkohHZVoizXH-Kma4t/s1600/rsa2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="347" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiolXDyMKWRq9lZM0Ebb020B7phyphenhyphenIqmXPEjb2EvqGOQjnQMECJp0UnY9nfyizRP48am-I_8FYN6EKJu800qpccHURhQ21576PLY893Lsr6ev4bTr398S6c4qatFjtjkohHZVoizXH-Kma4t/s400/rsa2.jpg" width="400" /></a></div>
<br />
The important point is that the encryption key is created independently on both
sides. Therefore, it is not possible to reveal the session key from a given recorded
network session later. For simplification, the example does not show how the two
communication partners are authenticated. In practice, DH is mostly used together
with certificate authentication by using RSA.<br />
<br />
DH key exchange is the most secure method currently available and is fully supported by IPv6/VSE. <i>Again, SSL for VSE does not support DH key exchange.</i><br />
<br />
<h4>
Encryption Methods</h4>
Supported by SSL for VSE ...<br />
<span style="font-family: "courier new" , "courier" , monospace;">01 SSL_RSA_WITH_NULL_MD5</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">02 SSL_RSA_WITH_NULL_SHA </span><br />
<span style="font-family: "courier new" , "courier" , monospace;">08 SSL_RSA_EXPORT_WITH_DES40_CBC_SHA </span><br />
<span style="font-family: "courier new" , "courier" , monospace;">09 SSL_RSA_WITH_DES_CBC_SHA </span><br />
<span style="font-family: "courier new" , "courier" , monospace;">0A SSL_RSA_WITH_3DES_EDE_CBC_SHA </span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2F TLS_RSA_WITH_AES_128_CBC_SHA </span><br />
<span style="font-family: "courier new" , "courier" , monospace;">35 TLS_RSA_WITH_AES_256_CBC_SHA </span><br />
<br />
Of these encryption methods 01, 02, 08 and 09 should not be used because they are insecure.<br />
<br />
Supported by IPv6/VSE ...<br />
<span style="font-family: "courier new" , "courier" , monospace;">0A DES-CBC3-SHA </span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2F AES128-SHA </span><br />
<span style="font-family: "courier new" , "courier" , monospace;">35 AES256-SHA </span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3C AES128-SHA256 </span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3D AES256-SHA256 </span><br />
<span style="font-family: "courier new" , "courier" , monospace;">16 </span><span style="font-family: "courier new" , "courier" , monospace;">EDH-RSA-DES-CBC3-SHA</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">33 </span><span style="font-family: "courier new" , "courier" , monospace;">DHE-RSA-AES128-SHA</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">39 </span><span style="font-family: "courier new" , "courier" , monospace;">DHE-RSA-AES256-SHA </span><br />
<span style="font-family: "courier new" , "courier" , monospace;">67 </span><span style="font-family: "courier new" , "courier" , monospace;">DHE-RSA-AES128-SHA256</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6B DHE-RSA-AES256-SHA256 </span><br />
<span style="font-family: "courier new" , "courier" , monospace;">C012 </span><span style="font-family: "courier new" , "courier" , monospace;">ECDHE-RSA-DES-CBC3-SHA</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">C013 </span><span style="font-family: "courier new" , "courier" , monospace;">ECDHE-RSA-AES128-SHA</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">C014 </span><span style="font-family: "courier new" , "courier" , monospace;">ECDHE-RSA-AES256-SHA</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">C027 ECDHE-RSA-AES128-SHA256</span><br />
<br />
<b>Note:</b> The z/VSE 6.1 TCP/IP Support manual states the IPv6/VSE supports method 09 and C011 but these algorithms are insecure and no longer supported.<br />
<br />
IPv6/VSE supports far more encryption methods using both software and hardware.<br />
<h4>
Message Digest/Hash Algorithms</h4>
Each message (packet) transferred using SSL/TLS includes a message digest or hash value. This value is used to verify the data has not been altered. A Message Digest is also used to secure certificates and ensure the certificate has not been altered. Therefore the algorithm used to calculate this value is very important.<br />
<br />
The message digest MD5 is completely broken/insecure and should no longer be used.<br />
The SHA1 family of message digests can be used for secure sockets but should not be used to authenticate certificates. The difference is how long the hash value is used. For secure sockets the hash value is used only for the duration of an SSL/TLS transfer. For certificates the value is used for a long time, perhaps years. This gives hackers far to much time to hack/break the digest key.<br />
The SHA2 family of message digests are current and secure.<br />
The SHA3 family of message digests are also secure and the industry is moving to SHA3.<br />
<br />
IPv6/VSE supports using SHA1 and SHA2. <i>It is planned to add SHA3 in the near future.</i> These values are supported using either software or hardware (CPACF).<br />
SSL for VSE supports using SHA1 and with the introduction of TCP/IP for VSE 2.1 under z/VSE 6.1 SHA2 was added. However, the CPACF hardware on a z10 (or newer machine) must be available and enabled for SHA2 to be used.<br />
<br />
The industry is now using SHA2 and moving to SHA3 to secure certificates and communications.<br />
<br />
<h4>
Sample Connection</h4>
Google Chrome was used to create this blog entry. I used the information available from Chrome to display the type of SSL/TLS connection.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQ-LId-ui2DHeUeEXHS8Y9DSFo5q_Rz067yxPU82s2YuW7LmpSJdGY6FjWDl4eKj6zoE717RhjHDHYE_JxvRb3DLP44mY0F2NU8FapJV9NB3-zBrjsF-j7mh0W_9rSxTYOMB_6ciJqoLQp/s1600/rsa3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQ-LId-ui2DHeUeEXHS8Y9DSFo5q_Rz067yxPU82s2YuW7LmpSJdGY6FjWDl4eKj6zoE717RhjHDHYE_JxvRb3DLP44mY0F2NU8FapJV9NB3-zBrjsF-j7mh0W_9rSxTYOMB_6ciJqoLQp/s400/rsa3.jpg" width="328" /></a></div>
<br />
So, Chrome created a TLSv1.2 secure socket using ECDHE_ECDSA. This is an Elliptic Curve cryptographic session created using DH key exchange. After the key exchange process completed a 128-bit AES key is being used to encrypt each message. IPv6/VSE fully supports this type of TLS session while SSL for VSE does not.<br />
<br />
Viewing the certificate information shows that the certificate's fingerprint or message digest hash uses both SHA-1 and SHA-2 (SHA-256). This allows both older (less secure) and newer (more secure) clients and servers to authenticate the certificate.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYYQFqETbkoHiUF2B3j8lOsVAYeuY0gGWfwFAEOQ2m9NOBCfDrWau9Ud9qFZ8goxGX96-WyqZRabAmRWW-aVpd095XjJr7b9zEv5fwG5dLQsuRwAgI9Jnu35N35QExZco2VEO8yCwJrVV9/s1600/rsa4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYYQFqETbkoHiUF2B3j8lOsVAYeuY0gGWfwFAEOQ2m9NOBCfDrWau9Ud9qFZ8goxGX96-WyqZRabAmRWW-aVpd095XjJr7b9zEv5fwG5dLQsuRwAgI9Jnu35N35QExZco2VEO8yCwJrVV9/s400/rsa4.jpg" width="325" /></a></div>
<br />
<br />
<h3>
Summary</h3>
Maybe the real question is simple.<br />
<br />
Can I get a secure and trusted socket using IPv6/VSE? Yes, easily. Many options exist to provide secure communications using both software and hardware.<br />
<br />
Can I get a secure and trusted socket using the SSL for VSE feature of TCP/IP for VSE?<br />
<br />
Maybe. Only if you ...<br />
<ol>
<li>Are using TCP/IP for VSE 2.1 <i><u>and</u></i></li>
<li>Running on a z10 (or newer) machine <i><u>and</u></i></li>
<li>Have CPACF available and enabled <u><i>and</i></u></li>
<li>Have a Crypto Express2 (or later) adapter</li>
</ol>
<div>
<br /></div>
<div>
Basically, if you need truly secure and trusted socket support I strongly recommend you move to IPv6/VSE.</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<h4>
Credits</h4>
<div>
IBM publication z/VSE 6.1 TCP/IP Support SC34-2706-00</div>
<div>
<br /></div>
<div>
The diagrams in the "Why is DH Important?" section and the text around them was lifted directly from the IBM manual with minor edits to the text by me. Actual credit here is likely to be to Joerg Schmidbauer at the IBM z/VSE lab in Germany. Joerg is the person who did the actual port of OpenSSL to z/VSE. Very impressive stuff if you ask me.</div>
<br />
<br />
<br />
<br />
<br />Jeffhttp://www.blogger.com/profile/11567371917298802617noreply@blogger.com0tag:blogger.com,1999:blog-8156209415524873303.post-52165411471077656382015-08-26T11:16:00.000-07:002015-08-26T11:16:36.466-07:00IPv6/VSE SSH Secure Copy for z/VSE<div style="page-break-before: always;">
<br /></div>
<h2 style="page-break-before: always;">
BSTTSCPY SSH
Secure Copy Facility</h2>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
<span style="font-size: small;">Over the
years, Barnard Software, Inc., has received a number of requests to
provide SSH or SSH like functionality. However, VSE/ESA and z/VSE
does not provide the basic foundation for this type of function.</span></div>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
<span style="font-size: small;">At the same
time we have wondered “What exactly would you do with SSH on
z/VSE?” It is a good question since z/VSE does not have a 'shell'
or interactive command environment. When we ask this question more
often that not we hear “Well, we have to transfer data to someone
that requires we use SSH.” </span></div>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
<span style="font-size: small;">For this we can provide a solution.</span></div>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
<span style="font-size: small;">The
IPv6/VSE BSTTSCPY SSH Secure Copy Facility uses a Linux Pass-through
image to facilitate an SSH connection to remote hosts providing for
secure file transfer using SSH to and from z/VSE.</span></div>
<h2 class="western">
</h2>
<h2 class="western">
SSH
</h2>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
<span style="font-size: small;">SSH is the
standard world wide for secure access to systems.</span></div>
<div class="western">
<span style="font-size: small;">Secure
Shell, or SSH, is a cryptographic (encrypted) network protocol for
initiating text-based shell sessions on remote machines in a secure
way.<br /><br />This allows a user to run commands on a machine's command
prompt without them being physically present near the machine. It
also allows a user to establish a secure channel over an insecure
network in a client-server architecture, connecting an SSH client
application with an SSH server. Common applications include remote
command-line login and remote command execution, but any network
service can be secured with SSH. The protocol specification
distinguishes between two major versions, referred to as SSH-1 and
SSH-2.<br /><br />The most visible application of the protocol is for
access to shell accounts on Unix-like operating systems, but it sees
use on Windows as well. In 2015 Microsoft announced that they would
include native support for SSH in a future release.<br /><br />SSH was
designed as a replacement for Telnet and other insecure remote shell
protocols such as the Berkeley rsh and rexec protocols, which send
information, notably passwords, in plaintext, rendering them
susceptible to interception and disclosure using packet analysis. The
encryption used by SSH is intended to provide confidentiality and
integrity of data over an unsecured network, such as the Internet. </span>
</div>
<h2 class="western">
</h2>
<h2 class="western">
Secure Copy</h2>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
<span style="font-size: small;">Secure copy
or SCP is a means of securely transferring computer files between a
local host and a remote host. It is based on the Secure Shell (SSH)
protocol.</span></div>
<h2 align="left" class="western" style="orphans: 2; widows: 2;">
</h2>
<h2 align="left" class="western" style="orphans: 2; widows: 2;">
SFTP vs. FTPS</h2>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
<span style="font-size: small;">FTPS (also
known as FTP-ES, FTP-SSL and FTP Secure) is an extension to the
commonly used File Transfer Protocol (FTP) that adds support for the
Transport Layer Security (TLS) and the Secure Sockets Layer (SSL)
cryptographic protocols.<br /><br />FTPS should not be confused with the
SSH File Transfer Protocol (SFTP), an incompatible secure file
transfer subsystem for the Secure Shell (SSH) protocol. It is also
different from FTP over SSH, the practice of tunneling FTP through an
SSH connection.</span></div>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
<span style="font-size: small;">In the
past, CSI and IBM have written manuals describing a “Secure FTP
Facility” for z/VSE. This facility is FTPS (FTP using SSL). It is
not SFTP (FTP over SSH). </span><span style="font-size: 12pt;">IPv6/VSE
provides FTPS (FTP over SSL) also.</span></div>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
The Secure Copy facility provided by IPv6/VSE is not SFTP or FTPS.</div>
<br />
<h2 class="western" style="page-break-before: always;">
</h2>
<h2 class="western" style="page-break-before: always;">
Secure Copy
Concepts</h2>
<h2 align="left" class="western" style="orphans: 2; widows: 2;">
<div class="western">
<span style="font-size: 12pt; font-weight: normal;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt; font-weight: normal;">The
following diagram shows how the BSTSTSCPY Secure Copy Facility
transfers data to and from z/VSE using a Linux Pass-through image.</span></div>
</h2>
<h3 class="western">
</h3>
<h3 class="western">
BSTTSCPY using a Linux Pass-through Image</h3>
<h2 align="left" class="western" style="orphans: 2; widows: 2;">
<div class="western">
<span style="font-size: 12pt; font-weight: normal;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt; font-weight: normal;">This is the
basic overview of the IPv6/VSE Secure Copy Facility and the Linux
Pass-through Image.</span></div>
<div class="western">
<span style="font-size: 12pt; font-weight: normal;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt; font-weight: normal;"><br /></span></div>
<div class="western">
<img align="left" border="0" height="216" name="Image1" src="data:image/jpeg;base64,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kniNKOb7C1R1BylqI4c0r+nUs0lDwh2BgkmqPOF0kl2DSdbjhHQicNai8S1B7m0LaYMk6iaPWr/rgNGWvREwSsy6LOBw8O4aLtcBo10nLrdF2uA0a6Tl3hd0eZd+Veuces0Xa4DRrpOXXttIbSojTSVHka5pCTNcfeDbsIU0kqA0Xa4DRrpOXK/s5kHL08i9lSUOJUafeIj7A3dFmfXt3pZGGNrM+96LtcBo10nLrdF2uA0a6Tl3hd0eZd+Veuces0Xa4DRrpOXXt3RZnyaLtcBo10nIaLtcBo10nLlf2cyDl6eRey5dHmQbuizPr270sjDG1mfe9F2uA0a6Tl1ui7XANNKQ9FCCScCKYq38CmKt/ApirfwKYq38CmKt/ApirfwKYq38CmKt/ApirfwKYq38CmKt/ApirfwKYq38CmKt/ApirfwKYq38CmKt/ApirfwKYq38CmKt/ApirfwKYq38CmKt/AphTrpKMjRR6Iq38CmKt/ApirfwKYq38CmKt/ApirfwKYq38CmKt/ApirfwKYq38CmKt/ApirfwKYq38CmKt/ApirfwKYq38CmKt/ApirfwKYq38CmKt/ApirfwKYq38CmKt/ApirfwKYq38CmKt/ApirfwKYq38CmKt/ApgnUxgta1FH5H1mi7XAMIU/BSW0kfRP4C0bipC0bipC0bipC0bipC0bipC0bipC0bipC0bipC0bipC0bipC0bipC0bipC0bipC0bipBC2F0kk3Ds/E+TRdrgNGuk5DRdrgNGuk5cr+zmQcvTyL2V3R5kG7osz69u9LIwxtZn3vRdrgNGuk5daRPt04dgs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qYs++qY5xpmC/jEz6xv7Q0GiPhEVj+JSFY/iUhWP4lIVj+JSFY/iUhWP4lIVj+JSFY/iUhWP4lIVj+JSFY/iUhWP4lIVj+JSFY/iUhWP4lIJaaNRkaKXS5NF2uA0a6TkNF2uA0a6Tlyv7OZBy9PIvZXdHmQRdFmYtG4qQtG4qQtG4qQtG4qQtG4qQtG4qQtG4qQtG4qQtG4qQtG4qQtG4qQtG4qQtG4qQtG4qQShh2konI+6ZeBhjazPkWk3Ff1NA/slpgUfw/AOK55w3E0YpcRBSdYJtNMkc2ZwUg064/j3fRdrgNGuk5feBF0WZ8mi7XAaNdJyGi7XAaNdJy5X9nMg5enkXsrujzIN3RZmKx/EpCsfxKQrH8SkKx/EpCsfxKQrH8SkKx/EpCsfxKQrH8SkKx/EpCsfxKQrH8SkKx/EpCsfxKQS60pwzNdHpGGNrM+SKnnVnCCTMy6OAXzjjizVDpHDwBPa6RJo930Xa4DRrpOX3gbdN00QKBlDtLkQTtIqPYaTCUIKCUlAhou1wGjXScuV/ZzIOXp5F7K7o8yDd0WZ9e3elkYY2sz73ou1wGjXScvvJou1wGjXScuV/ZzIOXp5F7Ll0eZBF0WZ9e3elkYY2sz73ou1wGjXScvvJou1wGjXScuV/ZzIOXp5F7KlstEhSu0Num6aIFAyh2l17d6WRhjazPvei7XAaNdJy+8jaoFHnO38jDETM+0v15aJf3rJJ58AhRR6ajUeXDurd6WRhthaHTUmPYRfH5irfwKYq38CmKt/ApirfwKYq38CmKt/ApirfwKYq38CmKt/ApirfwKYq38CmKt/ApirfwKYq38CmKt/ApirfwKYq38CmKt/ApirfwKYq38CmKt/ApirfwKYq38CmKt/ApirfwKYq38CmGeaSsqEY0vyGjXScvvI3elkYY2sz5W70sjDG1mfdSQ+ikkjj2wFn31TFn31TFn31TFn31TFn31TFn31TFn31TFn31TFn31TFn31TFn31TFn31TFn31TFn31TFn31TFn31TFn31TFn31TFn31TFn31TFn31TFn31TFn31TFn31TFn31TFn31TFn31TFn31TCUIKCUlAi+8jd6WRhjazPlbvSyMMbWZ/wDCzd6WRhjazPlbvSyMMbWZ/wDC1Iv7Fko8uIbIj1pMyPGPK0iPSNyJYeoYJRQOEcTj/wALP7OZBy9PIuXRdrgNGuk5d1f2cyButKbIiVR6RisYxOQrGMTkKxjE5CsYxOQrGMTkKxjE5CsYxOQrGMTkKxjE5CsYxOQrGMTkKxjE5CsYxOQrGMTkKxjE5CsYxOQrGMTkKxjE5CsYxOQrGMTkKxjE5CsYxOQrGMTkKxjE5CsYxOQrGMTkEc6pB04wojRrpOX3kf2cyDl6eRcui7XAaNdJy7q/s5kHL08i73ou1wGjXScvvJpCTj7lLDWH2oe6qlH5/wAcujoj0iIzP9/kGmldqEEk4e1zrsYRgRF4hDzfuq+PXP7OZBy9PIuTW0nm+d5uNPXH5QHN0jjGHunCPz7BA1+NH3T7fgOcpHCNH3TjH4Q7QlSSUqK6MKJxIQUo/wAeier5/AN6o010Q6lfRS2RHS+YUqkZUe0jSZHgGk0HPtP/AI1av07hou1wGjXScvvJpN0rIaVs8eVF0WZ+0ejJdI3S/tDd6WRhjazPrn9nMg5enkXIbqSQT3O0qXxT8B7tNBrp1yi8Y+72CEU13OflEKcSaaXPc4kjP/bAKX0OdNwl0Y6tX4hxVElpc94ufUjwh4doaTBJpSsjMlfAPcyTaCVQNJEUNafiHFuNtmpREkkUzhjAMnFKlIUZwUs+w/x8e4aLtcBo10nL7yOtJ7VoNJRGkIj0jIjL9/nyoQjpK5sigXxiftKvXOIbvSyMMbWZ9c/s5kHL08i73ou1wGjXScvvKu6PMuVN63w9pV65xCL0sjDG1mfXP7OZBy9PIu96LtcBo10nL7yrY973m4/L+OX7My1OF2/7S15e0q9c4hu9LIxoiGmkmSkqOkr/ALGKtjA5irYwOYq2MDmKtjA5irYwOYq2MDmKtjA5irYwOYq2MDmKtjA5irYwOYq2MDmKtjA5hTC0NElXwI5hy9PIu96LtcBo10nL7yqvXOPKq9c4+0q9c4hu9LIwx+eZ9c/s5kHL08iFNUT/AALxBGbLhLUqiSNUT4BtJoUlS46j8IBZFHoKon3fRdrgNGuk5feVN63w5XHHNa6BqjDxiXtKvXOIbvSyMMbWZ9c/s5kHL08iCkm1zpH2o+INLmjuON04pQaypp/OPEaPztOCaX/k1kXhrIPEcYG5Eoqjqh3fRdrgNGuk5feVD6NaoJc1/Ev45HHYRoJNUA+7H3U0YfP+PaVeucQ3elkYY2sz65/ZzILvTyLvei7XAaNdJy+8rLsfeTRh8v5DbsIU0kqA0hUI9GjjqD7uqClEnD+faPSUtETp/wBw5o10IKpEcAhglGqj49c/s5kHL08i73ou1wGjXScvvKw7H3VUYfP+Bo6oQ6NHDUDTCPOKJPy8eAJUY84o1fLw4d2f2cyDl6eRd70Xa4DRrpOX3lcMy1pMjLEGg1F0F6i+BfuI0dEeiZmZ/v8AMaOko+5Sx192f2cyBtNJbMjVS6RCrYwOYq2MDmKtjA5irYwOYq2MDmKtjA5irYwOYq2MDmKtjA5irYwOYq2MDmKtjA5irYwOYq2MDmKtjA5irYwOYq2MDmKtjA5irYwOYq2MDmKtjA5irYwOYq2MDmKtjA5irYwOYq2MDmEc6lBUIwojRrpOX3lcajCmk0xD7UPeTSj8v5CWE6j6LZGf4/z/AMNc8rWk1U/yPt4helLIoJM1nq8T/f6f8NUX2yWWQoNIJCfw/wCUv//EAC0QAAIABQIEBgMBAQEBAAAAAAERACExUfBBYUBQccEQIDCBkbFgofHRcIDh/9oACAEBAAE/If8AxsGYESUMB8M27du3bt27du3bt27du3bt27ViaeABICQOpN/FJqWBnMgd+F7Vq1atWrVq1atWrVq1atW7dhyAIKkQ/XlujIJTK04VBBBBBBBBBBBBBBBBBBBCcEiWE669fwnM3cVaWBJ5SBNBsHfg0EEEEEEEEEEEEEEEEEPnNsUlTvGZs4BImmgAQCQOoN+DrVq1atWrVq1atWrVq1atWk2hAwTAW3/CuGZu8llrmEkAlMnSoipkJjUwRM9AB99oNCOYgSfEB4FCh+niEciAKgLX0eCSwJYHWOK2hxOYk4M7HeOnYge28U/ZJvhACawwGS94C6fFh9/AlNhIaH0rzNnApYJGGJjUx8zDNXXkCwRko/r5E6SMJo2l1HlecOAKow+GSwGS30eqSem9IGi5VDqNsh7dXN8zd42cEhTQFpAyJJ2oOkBJEi7H9hHtE58Quo+DjQJ+13BKfsd0AmdJCPX/APCJkxT6wKCbVcBrYPANIFJBzrEvXkpwtSdBrKDIzsp7JVHueBSwJYCQCKrkS5BCFOFCS5USMHaR0hriC9GT+TiFQZiTQanUSfSJ4ViHS0k+j4MKtREELlyJhKW8GQQBLBGkoO9oOFgbKAgRRP79K8zZwKSBDkGdAQa89SQahaw8IJPJEiLV0UKkiTIi3WfIcFxohklklzN7y0iZMU+sCgm1XDCURABUXRI6/MHDrz2Bm5yuhyi7AAxqQFeqgdtOkQDVCPzCRoTIkJKLWiTaJMlOOoyGh60g4hcEsyaHUJCCpwjoBugHRf8AcEII5sgMDX/TgcIlgHIQgqQDhgAFki26RBAlNdE69TT25vmbvJemmQ4lLAlg+aV6cDeZs45Jgl7EsCOoJFdFAAEBAbcKlge+Ap0AD+iYDEmcDRAx9oAOrZUBL7QY2MCU0s3fDAU8IkJbI0O3IGnbt27du3bt27du3bt27du3bt27du3bs2zN3LrSwJYLzNnApIBU6IyYdIYIJ0WFUGf6XuI2yhb0gFmRvvA4SBNwyAIggmBCkPBdskKw1MCBvKoVuOSwEDQpaAn9IDBhEiFImR+oam2TCI+yIY2kvQt9CObcOGZu5daWBLBeZs4FLhoyMygUjaF4624KmAxkgmBBYlKUS2CzFsc4npA1ckfNiSZ94GNaBTLPyeOSwAHIsqApfaEpi9iAhZ4CvQBP6BgMBNB0QIfbzHjTZRk6AfMSBxISiWLgcBBgSIpjIFfeEkWpMqNJoF7K0A6yc0NRgGt4mEEwkIZ3ySG5lBAOKEww3AL3QY6sSA1apCl5xoOwFq4SY6QH0AJ3GgBFRgBulN4LggBEI0JISHWCFehj+QPjhMGZu5daWBLBeZs5olgSwe4i8tIV5j58NxMzEkoOOhZoG/p5Zg5AJZLHB4yswiIkBHzwXDBME9KmDBZ8jQwmJUBQpvARJsxkM0y1gCoXk0IBr8w+xr8wgSCUgGohj1k88AiinW8Ag4vYrRlSD/wAMJImolCPrEABdESLqbRUMOwAGYIhBWpk4Wk00WgSIW1+EwZm7l1pYEsF5mzmiWBLBkLc58MHgwYMzdy60sCWC8zZzRLAlg6FDSg6bJ8ePscHCSBWkPjm2BwYMGZu5daWBLBeZs5olgSwaD2mTsAz6PGvwno1lfB8/AkU8AiISA1O3r1q1atWrVq1atWrVuwNPCAgFsnQ78gwZm7l1pYEsF5mzm6WBLAgyNvPwLykCaDYO/roIIIIIIIIIIIIIKGYYabc6eBiQCelB0QlmT2ZgQBlSoYqYMBFaFCqBn7QBZmISBM1QDxeDM3cutLAlgvM2czSwJYBSEIKkA4tpZFWbzr4vANGSmSSHsPEYHBgpZyaiISSoIcgAaADc0gFEQMgYAg0ElYQGBSA0q/3i8GZu5daWBLBeZs5mlgSwZm70b4BD3DSZEL9wLAWgMie/MOGDBmbuXWlgSwXmbOZpYEsBYECmSplB+4MObZ6hv6eN8LIozedIHIAgqRD8oPwIk0ILH7EGxhEJSchIdAOX4MGZu5daWBLBeZs5wlgSwJcLzNnNcHDM3cutLAlgvM2c4SQJYEsB5mzmPBu7u7u7u7u7u7u7u7ubSB+pEugv5Mzd42FmMgAUE6SieXIot7RmneBgi0KGJLcCQgPiKvTdDqtAuVVhEGzrAKKWgzHJEsCWC8zZwKSBxMgNZFyaUoLiwESjQkhIdYeCp9hrRGuIwUaAej9lBGX1gADIkRO0AjsNiQA9BJuIQDIZBKIofyBDpbyES6g9B5RCAOdQqJIsMpiKaBbyhHNdOENgofQinGpKzf5waWC7Uz9zGsVeyZex4iwJlA0QM/SNPKU3vfrhRAFhAyXvGcdozjtGcdozjtGcdozjtGcdozjtGcdozjtGcdozjtGcdozjtGcdozjtGcdozjtGcdozjtGcdozjtGcdozjtGcdozjtGcdozjt5Mzd42IgOxNAJTydKGNiW0wLkgjQiWngVKGkOI0EVmJgaZTBKZlekHOdgTQSRIpCvHDFWQxAZZtpByYk1lMinsEPbgksCWCdsHYIBS7EAycUkgpIK1aEjaD06TMkctiqrmB/cUzmXdiQFWNrI0TreUIDAIVLSk279oIuIFAlnoDCK3OBdrR6NBbLRZ6d5mzgUmA6xgI+ZktgGEWQ+wgGYKoK1OsCxOn7aEiFteB3NVMBzoB63icPMAvMVIqmr0pBlB6IURkg0pSdawUNM/Ap+s0HyA47qBAdbeXYlsuEgaA2bhJREv4awniBMBBIMa1oI1B/LA3L3/DUsGBLAlmbuMtLAlg9ykhdBhscyOIkTJLIVsBCpUIB2In8wfZSo0RX+QBfMGwz4ZqakwFLkbE7Uk2cFuKhqg1TT66Dt6d5mz8tS4JYMCWBLM3cutLAlgvM2flqWBLBgSwJZm7lxpYEOF5mz8tSwJYOC2BYsgBkoZC9LtUqVKlSpUqbpOSaK4F4GJCBpEP01SpUqVKlSpUqE08AmSEgNRt46rJwBoTr0g4JZZDH7Q/nI/wA5H+cj/OR/nI/zkf5yP85F4VkNJ7neP5yP85H+cj/OR/nI/wA5H+cj/OR/nI+3no+YTUwdQgHwCRFPAIiEgNTt41uyICSSCR30a68BWrVq1atWrVq3bt2rVpNoRUkB+nAcBwGRFpEiT7PzAYEDkAplj+/EngJMyIoVEvYmA6QgYJoGS9yeF0hfoRLobca3d3d3d3d3d3d3d3d3c27fhphr1rzNnMuEtcZhDRenkQQQQaZkoCTroPUQQQQQQQQQQQ+c2xSVO8NyF65Ib+RBBCcEiGm9+nAXmbOKSwYJ3JJwd5RnHaM47RnHaM47RnHaM47RnHaM47RnHaM47RnHaM47RnHaM47RnHaM47RnHaM47RnHaM47RnHaM47RnHaM47RnHaM57Rtc5NuUZmz1rzNnNuGRt6u8zZwl5mzjEsGBJFzpyHakX78gUpCGWpp4FgtGqYkZAEFR0+vBZx4FVQfA3mbPWvM2c24ZG3q7zNnCXmbPSSwUVvi/k2G54LAkqNHQ05CgyijVSgojTTQ4KUBRD1xFWmTT2E7TgAWfy5BRQKtaG8MYEcROiqwG5KD8AEoIlRTguSgCQBiwZDOYIiSLDIABJUg0+40VTLAS6WRQZTgKcnOpOhYOc6cDeZs9a8zZzbhkbervM2euODQhlkMhC1DevgOSexdABaDrG/ehphrwvM2eilgKItAyT3ty3BgSvM2eteZs5twyNvV3mbOCwXmbPC8zZzZLBgwYErzNnrWSSMiTAXEK1atWrVq1atWrVq1atWrVq1atWrE08ACCWwdTtx1atWrVq1atWrVq1atWrVq1atWrVq1atWrdg0AJKkS+qaexOmQG3roIIIIIIIIIIIIIKCQZYT3OvjeZs8LzNnNksHDBgSvM2eqDeBuYgj3HN0EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEBwYQIBKfJ9QcE3QyiCnL2HAZq1atWrVq1atWrVq3YGnhEwS2RoBbxvM2eF5mziUsHDgggggggggggggggu5hig3Bv4JFqVYn2kAdgTCfuOlIInlJLAOQAYPv1g8yg0YWDiLzNn5HwPM2eF5mziUsHDB2rVq1atWrVq1atW7A0sICISJ0G3gkQwRexih9MQEDZBOQq4CwXAlAgEwAgBXaCdxgmiJB7cReZs/IJCOs0xysZm/gfExkoDOon7fELSAOqA8LzNnNksHDBgSvM2fkt5mzmyWDBwwJXmbPyW8zZ6KWCutkPoWGwiQjrNMcrGZvyzAleZs/JKXEQEmAWfQ+INRhMJcgYH68U4CcLTk9wgnDOl3R7Bw2CaaEVJkftxdatWrVq1atWrVq1atWrVq1atWrVq1atsi9ArsJtGZs/PsCWBKUEiGm9uvGoIIIIIIIIIIIIIIIIIIIIIIIIIIILWNbAU/8ATWBLAlgSwJNwE4WnJ7hDW0l6FvoR4hF0KVQCf0hh4KvQgfoj/jaWA8zZwyRNPCBgWgdBvxdSpUqVKlSpUqVKlSpUqVKlSpUqVKlSpumxJorgXjM2flKWC8zZzJLBeZs/JCygAUl5H7EWwsyqJZ18RDk2VAUvtBZATJQwF5pg5AJZLHB6ythERoR88Clgoooeyf8A9IItw/sUk2zgwPYMjIAXJPbWJhAZRB7RNsoD0xGD3cJg7GsIUlAzQejJe6GRpFaTc/1CPCeRrN/kUTKJvaTBz6Q4yCIZAU2xrwN5mz8kzN3pXwe5t9FQ6E7dbcHgCSwODSNwZkVZ+6g4BEqxXegmRi8l7c+YOOzCAEIYJUtbxcZerIFI6CqiUKJKEJCCBBLWBGRI5ggDKH6SjxzkGhlBUdmVACS6znaSg4yPEEIhStNxwN5mz8kLIAZKGQoMOTZaBv6ePvIvLICvMfPmyNuW8CSWC8zZ+UcMjbzcjblvgklgvM2fku8dvc1mfiIIKbJYUE/bzZG3hwFAUAkgmgEqdx63bt27du3bt27du3ZNoWXJEH6cbgvM2fkuRt48jbzcjbguAZLAQiACAATIlAfMBlVDsJ1ejeCR6UCNxz+oGaFQuge/EXmbPyXIW8Z04zYKmEWqfnzZG3BcCSWDQwTAE95Q/wCDLBVep1D9RerZBA6gkBJULw6O6UakvTXiLzNn5LrgIUsXxJ4bteE0GotjZFWbzr5sjblvAklwvM2fkt8rIozedI368NMNRrxSmt79wWRSA1YEn6eZ4m3NrUqgO/WBY0gAtOYmOhMA/A1akln9nlaWC8zZ+S3xsiqPO8aeUpvc/UXemeH+os9MvY5mSwXmbPyVraa9Cg+iYMTBMJLIj9wAOTa5CX2gkpAhNeZ+zw6RFPCJiWgNDtxfbt27du3bt27du3bt27du3bt27du3btskxIqrk2jM2fkuzXhphOLY2ZRlnaDGAGCCRMz2/wA/8aIoDkZVfIHUMPaFgacwnIB+5/40ChZR16DUUgAHmgV3Nzv/ANS//9oADAMBAAIAAwAAABDzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzwzzzzzzzzzzzSxTzzzzzzzxhzzzzzzyzTzzzzzzzzhzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzyJpapTzzzzxTxRLSArHzzzzzzzzzzzzo4GISQ5HzxTzzzzzzyDDzzzzzzzzzzzzzzzzzzzzzzzzzzzwywwwzzzzzxTxRwwwxzzzzzzzzzzzzyoXSQwwxzzxTzzzzzzzizzzzzzzzzzzxTTzSzzzzzzzzwjzzzzzzzzzzzzxTxTzzzzzzzzzzzzzzzzzQwZzzzzzzxTzzzzzzwDDzyTzzzzzzzzqyT04zzzzzzzzzzzzzzzzzzzzzxTxTzzzzzzzzzzzzzzzzxTzzzzzzzzxTzzzzzzwSjzzxTzzzzzzzwxwzzzzzzzzzzzzzzzzzzzzzzzxTxTzzzzzzzzzzzzzzzzxTzzzzzzzzxTzzzzzzxSjzzhTzzzzzyj6oDzzzzzzzzzzzzzzzzzzzzzzzxTxTzzzzzzzzzzzzzzzzxTzzzzzzzzxTzzzzzyxyzzzxzzzzzzzyyzzzzzzzzzzzzzzzzzzzzzzzzzxTxTzzzzzzzzzzzzzzzzxTzzzzzzzzxTzzzzzzzyxzyzzzzzzzzjTzzzzzzzzzzzzjzzzzzjjTzzzzxTxTDTDTzzzzzzzzzzzzy4ZKDzz4BTxTzzzzzzzyzTzzzzzzzzzjzzzzzzzzzzzzyzzzwrwgJTzzzzxTwT7Aprzzzzzzzzzzzzz53oGzzyjzxTzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzjzzzzzzzzzxTxQxxwzzzzzjzzzzzzzxTzzzzzzzzxTzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzwwwwwwwwwwwzzxzzzxjzzzyxzzzzzzzhzzzzzzwjyzTzzzzzzxzzTzzzzzzzzzzzzzzzzzzzzzzyhzzzzzzzzzzzzzzzzzzyjzzzzzzzzzzzzzyjzzzzzzzzzzzzzzzzzxTzzTzzzzzzzwo+jJDTzzzzzzzzzzzzzzzzzzzzzzzzzyjzzzzzzzzzzzzzyjzzzzzzzzzzzzzyxzzxTyhzzzzzzzzwwwwwzzzzzzzzzzzzzzzxTzzzzzzzzzzyzzzzzzzzzzzzzzwjzzzzzzTzzzzzyjzzzxTyjzzzzzzzjwRnzzzzzzzzzzzzzzzzzz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" width="576" /><br />
<br /></div>
<div class="western">
<span style="font-size: 12pt;"><span style="font-weight: normal;"><br /></span></span></div>
<div class="western">
<span style="font-size: 12pt;"><span style="font-weight: normal;"><br /></span></span></div>
<div class="western">
<span style="font-size: 12pt;"><span style="font-weight: normal;"><br /></span></span></div>
<div class="western">
<span style="font-size: 12pt;"><span style="font-weight: normal;"><br /></span></span></div>
<div class="western">
<span style="font-size: 12pt;"><span style="font-weight: normal;"><br /></span></span></div>
<div class="western">
<span style="font-size: 12pt;"><span style="font-weight: normal;"><br /></span></span></div>
<div class="western">
<span style="font-size: 12pt;"><span style="font-weight: normal;"><br /></span></span></div>
<div class="western">
<span style="font-size: 12pt;"><span style="font-weight: normal;"><br /></span></span></div>
<div class="western">
<span style="font-size: 12pt;"><span style="font-weight: normal;"><br /></span></span></div>
<div class="western">
<span style="font-size: 12pt;"><span style="font-weight: normal;"><br /></span></span></div>
<div class="western">
<span style="font-size: 12pt;"><span style="font-weight: normal;"><br /></span></span></div>
<div class="western">
<span style="font-size: 12pt;"><span style="font-weight: normal;">The BSTTSCPY application running on z/VSE connects to the bsttscpyd
(BSTTSCPY Daemon) running on the Linux Pass-through image. From
there, the bsttscpyd uses SSH to connect to the destination remote
host. Data transferred from BSTTSCPY running on z/VSE to the
bsttscpyd is clear text. The data transferred by SSH is, of course,
encrypted.</span></span></div>
<div align="left" class="western">
<br /></div>
</h2>
<h3 class="western" style="page-break-before: always;">
BSTTSCPY Using
Linux on System z
</h3>
<h2 align="left" class="western" style="orphans: 2; widows: 2;">
<div class="western">
<br /></div>
<div class="western">
<img align="left" border="0" height="228" name="Image2" src="data:image/jpeg;base64,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jyjzzzzzzzzzzzzzzzzyjzzzzzzzzyjzzzzzzyhxTzyTDDDDDDDzzjzzzzzzzzzzzzzxTzzzzzzzzyjyjzzzzzzzzzzzzzzzzyjzzzzzzzzyjzzzzzzyDwDzwjzzzzzzxxqRzzzzzzzzzzzzzxTzzzzzzzzyjyjzzzzzzzzzzzzzzzzyjzzzzzzzzyjzzzzzzyjxDyzDzzzzzzzzzzzzzzzzzzzzzzzxTjDjzzzzzyjyjzzzTzzzzzzzzzzzzyzDjzDzzzDyjzzzzzzzzzDzzzzzzzzzwDzzzzzzzzzzzzxDzwToJi5Tzzzyjyj7jrpzzzzzzzzzzzzzzb3YBzzZTyjzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzxRwwwzzzzzyjyjwgzzzzzzzzzzzzzzyjzyxzzzzzyjzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzhTzzzjzzzzyjzjzzzzzzzzxjzzzzzzyzBDDDDDDDCTzzzzzzzzzjzzzzzzzzzxjzzzzzzzzzzzzyDzzzzzzzzzzzzzzzzzzxTzzzyzzzzzzzzzxTzzzzzzzzzzzzzzzzyjzzzzzzzzzxzbjgbDDzzzzzzzzzzzzzzzzzzzzzzzzzzxTzzzzzzzzzzzzzxTzzzzzzzzzzzzwgjzyjzzhTzzzzzzwoKEJCHzzzzzzzzzzzzzzzDDDDDDDDDDDBjDDDDDDDDDDDDDBTzzzzzjzzzDzzjzzzyjzxTzzzzzzzzzjzzzzzzzzzzzzzzzzzzzzzjTjTzzzzzzzzzzzzzzzzzzzzxzzzzghLjDSzzzxDjzyjzwBzzzzzzxzbHzzzzzzzzzzzzzzzzzzzyx9R6YnzzzzzzzzzzzzzzzzzzzzzzzyhJ7oCTzzzxxzzyjzxDTzzzzzzzzzzzzzzzzzzzzzzzzzzzzzJ47rTjTjzzzzzzzzzzzzzzzzzzzzzywKGJXzzzzzzyzzzzwzzzzzzzzjDDDDDDDDDDDDDDzzzzzzzy4r+1iwb43zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzyzzzzzzzzywwwwwwizzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzjzzzzzzzzzzTzzzzzzzzzzzzzjzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz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" width="576" /><br />
<br /></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt; font-weight: normal;">This is the
recommended configuration.</span></div>
<div class="western">
<span style="font-size: 12pt; font-weight: normal;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt; font-weight: normal;">In this
configuration we suggest using a Hipersockets connection between
z/VSE and the Linux Pass-through image. This is very fast. This
configuration also guarantees no clear text data ever leaves the
System z machine. </span>
</div>
</h2>
<h3>
</h3>
<h3>
Linux Fast Path (LFP)</h3>
<h2 align="left" class="western" style="orphans: 2; widows: 2;">
<div class="western">
<span style="font-size: 12pt; font-weight: normal;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt; font-weight: normal;">IBM's Linux
Fast Path (LFP) can also be used in this configuration. Using LFP,
BSTTSCPY can communicate with bsttscpyd running on the Linux
Path-Tthough image using IUCV.</span></div>
<div class="western">
<span style="font-size: 12pt; font-weight: normal;">LFP also
provides access to z/VM IP Assist which can be used to access the
network on supported System z hardware, providing access to bsttscpyd
running on an x86_64 Linux Pass-through image.</span></div>
<div class="western">
<span style="font-size: 12pt; font-weight: normal;"><br /></span></div>
<div align="left" class="western">
</div>
</h2>
<h3 class="western">
</h3>
<br />
<div class="western">
<img align="left" border="0" height="228" name="Image6" src="data:image/jpeg;base64,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w6pf8bh1S/43Dql/xuHVL/jcOqX/ABuHVL/jcOqX/G4dUv8AjcOqX/G4dUv+Nw6pf8bh1S/43Dql/wAbh1S/43Dql/xuHVL/AI3Dql/xuHVL/jcOqX/G4dUv+Nw6pf8AG4dUv+NwelLkmcZJbf8AUXy6X/mMJOYZz49xH3kf87wqWPkr/A1f1Gff/Pf/APoH/8QALRAAAgECBAQGAwEBAQEAAAAAAREAITFBUfDxMGGBwRBAUHGRoSBgsdFw4ZD/2gAIAQEAAT8hCCuUAwfWa47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXHea47zXPeEALDIZLp+j8EECsV3BgeJBDS/0/FBBBDS/08UENL/T9JQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQSkKoSm2Pv8Ao3C0QQGfgAAVJUXA1ZFqdIoB5LBWcTBdZAqhyYjqId0cAhJQsKRXjTqSYX6leqXWGBNHWoMl/S/yEl1FOyahaySiWLE6KQzM0wjWPBhQ/AwikogjcjKIKy/S9Ay/RvAEidTMg2uQzl4FQJIHiSzUmCwkhmwgxx4IEmy38ES4CCPANf0ysqPeE1c1F4h2uJLMWCKhVA73KEjptY2yji7BZkv4YlLcKqo7n9L0DL/jfBoGX6LwHwNEIgtMA7yzavyGbcjbkbcjbkbcjbkbcjbkbcjbkbcjbkbcjbkbcjbkbcjbkbchb8LlMrCBwqYEkuZ40z1ANKgO/lW1SpUqVKlSpUqVKlSpUqVO3YMwAksZD4/3v0YC/Xyrd3d3d3d3d3d3NjAvsQLsM/w0DL9F4NZzenGlwW4HrOTyCQgPMASXMmue01z2muO01x2mue01z2muO01x2mue01x2muO01x2muO01x2muO01x2muO01x2lLEk4HOX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PPPPLJKDKNPPPPPPPPPPFPPPPPPPPPKPKPPPPPPPPPPPPPPPPPKPPPPPPPPPKPKPPPPPKHFPPJMMMMMMMPMONPPPPPPPPPPPPPFPPPPPPPPPKPKPPPPPPPPPPPPPPPPPPI3vPPPPPPKPKPPPPPKPBPPCPPPPPPPPMiHPPPPPPPPPPPPPFPPPPPPPPPKPKPPPPPPPPPPPPPPPPPKLPPPPPPPPKPKPPPPPLLFPLMPPPPPPPPPPPPPPPPPPPPPPPPFPMONPPPPPKPKPPPPPPPPPPPPPPPPPLMOPMPPPNPKPKPPPPPPPMPPPPPPPPPPAPPPPPPPPPPPPOHPPBGhEFlPPPPKPKNsOqlPPPPPPPPPPPPPCuBiPPDkPKPKPPPPPLPLPPPPPPPPPPPPPPPPPPPPPPPPPPPFHDDDPPPPPKPKLOHHHPPPPPPPPPPPPOPPLnPPPPPKPKPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPPPOPPPPPKPMPPPPPPPPPFPPPPPPPLMGMMMMMMMJPKPPPPPDPKPPPPPPPPPPGPPPPPPPPPPPPOKPPPPPPPPPPPPPPPPPPPFPPPPLPPPPPPPPPFPPPPPPPLPKPPPPPPPKPPPPPPPPPPHJsLBvOPPPPPPPPPPPPPPPPPPPPPPPPPPPFPPPPPPPPPPPPPPFPPPPPPPPPKPPPCCPPKPPMFPPPPPPPCgkYsqPPPPPPPPPPPPPPPMMMMMMMMMMMMGMMMMMMMMMMMMMMHPPPPPOPPPKPPOPPPPKPPFPPPPPPPPPOPPPPPPPPPPPPPPPPPPPPPONONPPPPPPPPPPPPPPPPPPPPPHPPPODptOMOPPPEOPPKPPAHPPPPPPPAOfPPPPPPPPPPPPPPPPPPPKJHPPLPPPPPPPPPPPPPPPPPPPPPPPPKHFvqkKPPPDPPPKPPENPPPPPPPPPPPPPPPPPPPPPPPPPPPPPKHjkjZgfnvPPPPPPPPPPPPPPPPPPPPLujPsfKPPPPPPPOPPDPPPPPPPPMMMMMMMMMMMMMOPPPPPPPPLPsw1igF4iAQBgfPPPPPPPPPPPPPPPPPPPPPKPPPPPPPPPPPPPPPPPPHPPPPPPPPPPPPPLPPPPPPPPLAAsssMIkvkxInPPPPPPPPPPPPPPPPPPPPPPKPPPPPPPOPPPPPPPPPPNPPPPPPPPPPPPPOPPPPPPPPPPMO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" width="576" /><br />
<br /></div>
<br />
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<h3 class="western" style="page-break-before: always;">
</h3>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<h3 class="western" style="page-break-before: always;">
BSTTSCPY Using
x86_64 Intel
</h3>
<div>
<br /></div>
<div class="western">
<br /></div>
<div class="western">
<img align="left" border="0" height="231" name="Image3" src="data:image/jpeg;base64,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" width="576" /><br />
<br /></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;">If you do
not have a Linux on System z machine available to run the bsttscpyd,
you still can use this feature. You can use one of these options.</span></div>
<ol>
<li>
<div class="western">
<span style="font-size: 12pt;">An
x86_64 Intel Linux machine</span></div>
</li>
<li>
<div class="western">
<span style="font-size: 12pt;">A
64-bit Windows 7 (or newer) machine<br />Running either ...</span></div>
<ol>
<li>
<div class="western">
<span style="font-size: 12pt;">64-bit
Cygwin</span></div>
</li>
<li>
<div class="western">
<span style="font-size: 12pt;">Virtual
Box<br />Running an x86_64 Intel Linux image</span></div>
</li>
</ol>
</li>
</ol>
<div class="western">
<br />
<br /></div>
<div class="western">
<span style="font-size: 12pt;">Some
customers have suggested that this is not a 'secure' configuration
and I have been mystified by these comments. </span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;">A good network
administrator can easily make this configuration completely secure.</span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;">First, the
subnet used by the BSTTSCPY facility in z/VSE would be different than
the usual production subnet. E.g., If the production subnet is
192.168.0.0/16 then the subnet used by the BSTTSCPY facility might be
172.16.1.0/24.</span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;">Second, the
NIC's used by the System z machine and the PC would be connected to
the same layer 2 switch. This means traffic from these systems would
never go outside of the switch being used.</span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;">Next,
traffic from these systems would use a special/unique VLAN. </span>
</div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;">And, this
is the key. By using a special VLAN for this traffic, it is
physically separate from all other traffic on the LAN. </span><span style="font-size: 12pt;">This
provides excellent security for the data transfers.</span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<h3 class="western" style="page-break-before: always;">
Why Use a Linux
Pass-through Image?</h3>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
<span style="font-size: small;">The SSH
connections from the Linux Pass-through image use public key
authentication. Public key authentication allows you to login to a
remote host via the SSH protocol without a password and is more
secure than password-based authentication.</span></div>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
<span style="font-size: small;">Password
authentication is not supported and can not be used with the BSTTSCPY
Secure Copy facility.</span></div>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
<span style="font-size: small;">There are
several benefits to using a Linux Pass-through image.</span></div>
<ol>
<li>
<div class="western">
<span style="font-size: small;">SSH
is basic to all Linux OS installations.</span></div>
</li>
<li>
<div class="western">
<span style="font-size: small;">SSH
and Linux are Open Source</span></div>
</li>
<li>
<div class="western">
<span style="font-size: small;">Support
and updates are provided by the Linux distribution </span></div>
<span style="font-size: small;">E.g., SUSE, Red Hat.</span><br />
</li>
<li>
<div class="western">
<span style="font-size: small;">FIPS
140-2 Certification of OpenSSH and OpenSSL</span></div>
</li>
<li>
<div class="western">
<span style="font-size: small;">All
cryptographic overhead is offloaded to the Linux Pass-through
image.<br />CPU overhead of cryptographic functions can be very high.</span></div>
</li>
<li>
<div class="western">
<span style="font-size: small;">No
data is stored on the Linux Pass-through image.</span></div>
</li>
</ol>
<div class="western">
<span style="font-size: small;">The last
item is critical. The Linux Pass-through image is used only for SSH
(and its functionality). No data is stored on the Linux Pass-through
image at any time.</span></div>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
</div>
<div class="western">
The Linux
Pass-through image can be a Linux on System z (zLinux) image, an
x86-64 Intel Linux image or a Windows system hosting a Linux
Pass-through image. When using a Windows host both Cygwin and
VirtualBox Linux images are supported.</div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<h2 class="western" style="page-break-before: always;">
Linux
Pass-through Image</h2>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
<span style="font-size: small;">Once you
have access to the Linux Pass-through image, you will want to create
the user that will run the bsttscpyd daemon. This can be root but it
is not required. Since no data is stored on the Linux Pass-through
image the user used can be a normal user.</span></div>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<h3 class="western">
Authentication</h3>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
<span style="font-size: small;">The SSH
connections from the Linux Pass-through image to destination remote
hosts use public key authentication. Public key authentication allows
you to login to a remote host via the SSH protocol without a password
and is more secure than password-based authentication.</span></div>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
<span style="font-size: small;">Password
authentication is not supported and can not be used with the BSTTSCPY
Secure Copy facility.</span></div>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
<span style="font-size: small;">SSH keys
provide a more secure way of logging into a virtual private server
with SSH than using a password alone. While a password can eventually
be cracked with a brute force attack, SSH keys are nearly impossible
to decipher by brute force alone. Generating a key pair provides you
with two long string of characters: a public and a private key. You
can place the public key on any server, and then unlock it by
connecting to it with a client that already has the private key. When
the two match up, the system unlocks without the need for a password. </span></div>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<h2 class="western" style="page-break-before: always;">
BSTTSCPY</h2>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
<span style="font-size: small;">The basic
structure of the z/VSE BSTTSCPY application is similar to the
IPv6/VSE BSTTFTPC application. Remember, SSH transfers all data in
binary form. So, if translation of the data is necessary you must
tell BSTTSCPY to handle this function.</span></div>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
<span style="font-size: small;">BSTTSCPY
requires IPv6/VSE Build 256pre17 (or later).</span></div>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
<span style="font-size: small;">Feature
code 'S' is required for use of the IPv6/VSE BSTTSCPY application. If
your IPv6/VSE license key does not have feature code 'S' in it, you
will need to contact Barnard Software, Inc. for an updated license
key.</span></div>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
<span style="font-size: small;">The
IPv6/VSE BSTTSCPY application (like BSTTFTPC, BSTTMTPC, etc.)
requires a minimum 8M partition for execution.</span></div>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
<span style="font-size: small;">BSTTSCPY
can use the IPv6/VSE BSTTINET/BSTT6NET TCP/IP stacks as well as the
TCP/IP for VSE TCP/IP stack.</span></div>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<h2>
The Basic Process</h2>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
<span style="font-size: small;">Identify
the stack and connect to the bsttscpyd you want to access.</span></div>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
<span style="font-size: small;">Define the
INPUT or OUTPUT data.</span></div>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
<span style="font-size: small;">Specify
options. E.g., TYPE A (Convert to ASCII) etc. Most of the options
used for a BSTTFTPC FTP client data transfer can be used with
BSTTSCPY also.</span></div>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
<span style="font-size: small;">Define the
destination remote host, userid and port.</span></div>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
<span style="font-size: small;">STOR or
RETR the data.</span></div>
<div class="western">
<span style="font-size: small;"><br /></span></div>
<div class="western">
</div>
<div class="western">
<span style="font-size: 12pt;">And,
finally QUIT. </span></div>
<div class="western">
<span style="font-size: 12pt;"><br /></span></div>
<div class="western">
<span style="font-size: 12pt;">
</span></div>
<h2 style="page-break-before: always;">
Basic JCL</h2>
<div>
<span style="orphans: 2; widows: 2;"></span><br />
<div>
<span style="orphans: 2; widows: 2;"><span style="font-family: Courier New, Courier, monospace;">// EXEC BSTTSCPY,SIZE=BSTTSCPY </span></span></div>
<span style="orphans: 2; widows: 2;">
</span>
<br />
<div>
<span style="orphans: 2; widows: 2;"><span style="font-family: Courier New, Courier, monospace;">ID nn </span></span></div>
<span style="orphans: 2; widows: 2;">
</span>
<br />
<div>
<span style="orphans: 2; widows: 2;"><span style="font-family: Courier New, Courier, monospace;">OPEN ... </span></span></div>
<span style="orphans: 2; widows: 2;">
</span>
<br />
<div>
<span style="orphans: 2; widows: 2;"><span style="font-family: Courier New, Courier, monospace;">* </span></span></div>
<span style="orphans: 2; widows: 2;">
</span>
<div>
<span style="orphans: 2; widows: 2;"><span style="font-family: Courier New, Courier, monospace;">INPUT ...</span></span></div>
<span style="orphans: 2; widows: 2;">
<div>
<span style="font-family: Courier New, Courier, monospace;">TYPE A</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">* </span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">PORT 22 </span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">HOST user@host </span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">STOR file.name </span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">* </span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">QUIT </span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">/* </span></div>
<div style="font-size: 12pt;">
<br /></div>
</span></div>
<div>
<br /></div>
<div>
<span style="font-size: 12pt; orphans: 2; widows: 2;">Just like
BSTTFTPC, BSTTSCPY commands are used in pairs. The INPUT command is
paired with the STOR command and the OUTPUT command paired with the
RETR command.</span></div>
<div>
<span style="font-size: 12pt; orphans: 2; widows: 2;"><br /></span></div>
<h4 align="left" class="western" style="orphans: 2; widows: 2;">
</h4>
<h2>
IPv6/VSE for VSE/ESA and z/VSE</h2>
</div>
<div>
<br /></div>
<div>
More information about the IPv6/VSE SSH Secure Copy facility is available in the IPv6/VSE SSH Secure Copy Supplement Guide. This manual is part of the IPv6/VSE download available from the BSI website. </div>
<div>
<br /></div>
<div>
<a href="http://www.bsitcpip.com/">http://www.bsitcpip.com</a></div>
<div>
<br /></div>
<div>
<br /></div>
Jeffhttp://www.blogger.com/profile/11567371917298802617noreply@blogger.com0tag:blogger.com,1999:blog-8156209415524873303.post-67911366027619506962013-12-06T09:14:00.000-08:002017-08-16T06:32:58.630-07:00z/VSE GbE Throughput Rates<h2>
z/VSE GbE Throughput Rates</h2>
Your new z box just arrived, was installed and now you are up and running on that amazing new z box.<br />
<br />
Wait! Now we have OSA Express Gigabit Ethernet (GbE) adapters connected to our GbE switch! Lets see how fast the new network will run!<br />
<br />
And then disappointment. Sending data to the FTP server on your network isn't much, if any, faster than it was before. What do I do?<br />
<br />
Before you start remember the 1st rule of GbE networking ... Everyone does GbE or no one does. Wait, what does that mean? It means that a GbE networking roll out requires effort and planning because even if you have a new GbE network adapter and GbE switch if you are connected to someone that does not have a GbE network adapter, you must talk at their level (10Mb or 100Mb).<br />
<br />
What do I need to think about?<br />
Switches, Routers, cables and network adapters (just to start).<br />
<br />
OK, what else? What else affects throughput on a GbE network?<br />
<br />
<h3>
TCP Window Size</h3>
The TCP receive window size (rwin) is the amount of data that can be sent to a remote host before the local TCP/IP stack must stop transmitting and wait for an acknowledgement. Believe it or not it is common in the Windows PC world to use 8K or 16K as a receive window size. Normal windows sizes range up to 64K. The solution to this issue is to use TCP Window scaling. z/OS, z/VM, Linux, Windows and IPv6/VSE on z/VSE all support this. However, a Windows PC will use TCP window scaling only if the remote host requests it and the application has requested it (SO_RCVBUF size of the setsockopt() call). On other platforms including Linux, using TCP window scaling is automatic.<br />
<br />
The benefit? With TCP window scaling window sizes can be much larger. 256KB to 8MB are commonly used. This allows far more data to be transmitted before the transmitting host must stop and wait for an ACK from the remote host.<br />
<br />
<h3>
TCP Packet Size</h3>
Typical Ethernet packets are 1500 bytes in length. Sending 1GB of data takes 685,000 packets. Can't we send more data in every Ethernet Frame? Yes, GbE network interfaces support Jumbo Ethernet Frames. Jumbo Ethernet Frames can be up to 9000 bytes in length. That is the official story. The truth is some GbE adapters only support 'Baby' Jumbo Frames. Baby frames are up to 7000 bytes in length. More truth? Lots of adapters support Jumbo frames but of smaller sizes. For example, I have an HP laptop with an R8168 GbE adapter in it. It turns out the R8168 only supports Jumbo Frames of up to 4096 bytes in size. You also have to check the switches used by the GbE adapters, they too must support Jumbo Frames.<br />
<br />
Needless to say, you must check your adapters, everyone of them, before attempting to use Jumbo Ethernet Frames.<br />
<br />
So, why go through all that work? Well, sending 9000 byte frames means that you will send 1/6th as many frames (or about 83% less packets). Sending 9000 bytes frames takes only slightly more time than a sending 1500 byte frames. More data in about the same time means higher throughput. And, since 1/6th as many packets are used to send the same amount of data, less CPU is used to handle the transfer.<br />
<br />
What about my older network adapters? Do I have to change them all? No. Absolutely not. When a host using Jumbo Ethernet Frame establishes a connection to a host that supports only 1500 byte frames (standard frames), smallest wins and the connection will use 1500 byte frames.<br />
<br />
<h3>
Latency</h3>
Latency is a big deal. If you are sending packets through a switch that adds 2ms of latency to each packet, you have a big problem. You are always at the mercy of the slowest hop. Large companies often daisy chain switches for several levels. Each link in the daisy chain adds to the latency involved in sending a packet from one host to another.<br />
<br />
In general this is not a problem but for applications that require bulk data transfer (FTP servers, database servers, etc.) it is best to ensure they are all connected to the same high speed switch.<br />
<br />
<h3>
TCP Retransmission</h3>
TCP re-transmits always slow a transfer. TCP re-transmits at GbE speeds are horrible. Historically network folks would say that as long as you have less than 3% re-transmission you are OK. Not true at GbE speeds.<br />
<br />
1Gb of data is 125,000,000 bytes or 83,333 packets of 1500 bytes each. To transfer that much data in 1 second you much send a packet every 12us (micro-seconds). Since re-transmission is time based, and usually the timer is in the 2ms to 20ms range, even 2ms is a very long time a GbE speeds.<br />
<br />
If your re-transmission rate is 0.1%, which sounds good, you are re-transmitting 83 packets every second. At 2ms per re-transmit you are spending 15-20% of your transfer time waiting on timers instead of transmitting. That alone will reduce your throughput dramatically.<br />
<br />
Fortunately re-transmission on a local subnet should be almost non-existent. Check you network statistics. If you are seeing any re-transmission at all on a local subnet I would suggest looking into the issue. I have seen cases where a failing network adapter was causing a number of problems with network throughput. Dropped packets and re-transmission resulting in throughput issues were the only real indicators of a problem.<br />
<br />
Ethtool, netstat and wireshark will be your friends in helping to locate possible problems in this area.<br />
<br />
<h3>
CPU Speed and Availability</h3>
Until fairly recently there was a one-to-one relationship between a processor and an OS image (Windows, Linux, etc.) running on a PC. With the arrival of virtualization on PC hardware there are now hypervisors (Linux KVM, VMWare, Zen, Hyper-V, etc.) running on the physical hardware and the OS is running inside a virtual machine. The virtual machine actually uses virtual hardware with a virtual CPU, memory, disk and network adapters.<br />
<br />
It is important to remember that a virtual device, and more specifically, a virtual network device is basically a CPU function. The hardware is at some point being emulated by the hypervisor using the physical CPU. All of this emulation takes CPU away from the OS reducing the ability of the OS to get work done.<br />
<br />
Often a hypervisor will be running several OS images requiring the hypervisor to create a virtual network switch with virtual network adapters connected to it. All of this is actually a CPU function. So, emulating a virtual GbE network environment may take more CPU overhead than you might expect. Knowing this, don't be surprised to find that your virtual network adapter is defined as a 100Base-TX adapter instead of a GbE adapter. And, this will effect your throughput.<br />
<br />
Those of us in the mainframe world have been doing this for upwards of 40 years using z/VM, VSwitch, Guest Lan, etc. but this is all fairly new to the PC world.<br />
<br />
Another CPU issue to take into consideration is other activity on the sending or receiving host. If a file transfer is sending data to a remote host and the file transfer is running at a lower priority than other applications on the host there may be CPU availability issues. After all, while a file transfer application uses very little CPU itself, it is important that it have access to the CPU when it is needed to keep the flow data moving. If the file transfer application wants to run but other, higher priority, applications are using the available CPU then the flow of data will slow. The same concept applies to the receiving end of the data transfer too.<br />
<br />
<h3>
A Simple Network</h3>
<br />
<span style="font-family: "courier new" , "courier" , monospace;">+z box---------------------------+</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">| z/VSE --- OSA Express GbE | </span><br />
<span style="font-family: "courier new" , "courier" , monospace;">+--------------------------------+</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> |</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> +--------------+</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> | GbE Switch |</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> +--------------+</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> |</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> +PC box--------------+</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> | Windows |</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> | Linux |</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> +--------------------+</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<br />
<h4>
What could go wrong?</h4>
Its a pretty simple picture. Two machine connected to a high speed GbE switch. Here is another thing to think about. Virtualization. The very simple network diagram above may have many more levels if the z box and the PC box are using virtualization. The z box may be running z/VM and the OSA Express GbE adapter may be the physical part of a VSwitch (virtual switch) being shared by many z/VSE, z/OS, zLinux and CMS images. At the other end of the diagram the same concept may be true of the PC box. It may be running a hypervisor with a virtual switch connecting many OS images (Windows, Linux, etc.) using virtual Network interfaces.<br />
<br />
All of this must be taken into consideration when determining potential network bottlenecks.<br />
<br />
Questions to ask ...<br />
Are all the devices (including virtual devices) used from beginning to end GbE? (<i>Slowest wins</i>)<br />
What TCP window size is being used? (<i>Smallest wins</i>)<br />
What MTU size is being used? (<i>Smallest win</i>s)<br />
Is latency a problem? (<i>Check your ping timings</i>)<br />
Is TCP re-transmission a problem? (<i>Check your network statistics</i>)<br />
Is the application sending data getting the CPU it needs to achieve maximum throughput? (<i>Check priorities</i>)<br />
<br />
Well, there you have it. A few items to think about if your GbE throughput isn't what you want or expect it to be.<br />
<br />
<br />Jeffhttp://www.blogger.com/profile/11567371917298802617noreply@blogger.com0tag:blogger.com,1999:blog-8156209415524873303.post-34346541961242765512012-06-12T04:42:00.000-07:002012-06-12T04:42:05.856-07:00IPv6/VSE Automatic SSL/TLS Sockets<br />
<h2 class="western" style="page-break-before: always;">
SSL without SSL/TLS Programming</h2>
<div>
We often hear customers asking to be able to use SSL/TLS sockets without having to change their applications. Since converting their applications is a lot of work and requires at least a basic understanding of SSL/TLS programming, the conversion of plain text applications to SSL/TLS applications can be daunting to say the least.</div>
<div>
<br /></div>
<div>
IPv6/VSE provides an answer to this problem.</div>
<div>
<br /></div>
<h2 class="western" style="page-break-before: always;">
ATLS Automatic
Transport Layer Security</h2>
Automatic Transport Layer Security is a facility that is similar
to the z/OS AT-TLS (Application Transparent - Transport Layer
Security) facility. When a socket is established, the BSTTATLS
application automatically determines if SSL/TLS is needed (based on
your configuration) and converts the socket to SSL/TLS transparently
to the application.
<br />
<br />
For example, the BSTTFTPS FTP server is running and listening for
connections on port 21. If a clear text FTP client wishes to connect,
they use port 21. The BSTTATLS application is also listening on port
990 (the FTP over SSL port) and when an SSL/TLS connection arrives on
port 990 it is automatically converted to clear text and passed to
the BSTTFTPS FTP server on port 21. This effectively this means that
the BSTTFTPS FTP server is supporting both clear text and
implicit-ftps connections.
<br />
<br />
At the same time, when BSTTMTPC batch Email client attempts to
connect to SMTP.GMAIL.COM on port 25 (SMTP), the BSTTATLS application
automatically converts the outbound socket to a connection to
SMTP.GMAIL.COM on SSL/TLS port 465 (Implicit-SMTPS).<br />
<br />
In both examples, no changes were made to the BSTTFTPS or BSTTMTPC
applications or the JCL used to run these applications.<br />
<br />
BSTTATLS works for both client and server applications and its
operation is completely transparent to the application. The BSTTALTS
application supports both batch and CICS applications written in any
supported API including applications using the ASM SOCKET macro,
EZASMI, EZASOKET and LE/C APIs.<br />
<br />
Using BSTTATLS is very useful if you want to use SSL/TLS to
securely transfer data but do not want to re-code or change your
batch or CICS applications. Your batch or CICS socket applications
continue to run unchanged even though they are now transferring data
using SSL/TLS to remote hosts.<br />
<br />
<h3 class="western">
Design</h3>
The IPv6/VSE TCP/IP stacks run in separate partitions. The IPv4
stack (BSTTINET) runs in one partition and the IPv6 stack (BSTT6NET)
runs in another. The TCP/IP stacks are then coupled together acting
as a single stack. The BSTTATLS application is associated with a
specific stack (BSTTINET or BSTT6NET). When running a typical dual
stack configuration there will be two BSTTATLS application
partitions. One for each TCP/IP stack.<br />
<br />
The reasons for this design are performance, reliability and
robustness. Since the BSTTATLS application is performing SSL/TLS
functionality, the overhead of this functionality is offloaded from
both the TCP/IP stack and the applications BSTTATLS is servicing.<br />
<br />
<br />
<h3 class="western" style="page-break-before: always;">
Operation</h3>
The BSTTATLS application must be started <i>before</i> any of the
applications it is servicing. And, the applications BSTTATLS is
servicing <i>should</i> be shutdown/terminated <i>before</i>
terminating the BSTTATLS application. If the BSTTATLS application is
terminated using the TERMINATE console command, all active sockets
will be abnormally closed before BSTTATLS goes to EOJ.<br />
<br />
To allow jobs to wait for the BSTTATLS application to start up,
use the BSTTWTLS application.<br />
<br />
<br />
<table cellpadding="4" cellspacing="0">
<colgroup><col width="256*"></col>
</colgroup><tbody>
<tr>
<td style="border: 1px solid #000000; padding: 0.04in;" valign="TOP" width="100%">
<span style="font-family: Courier, monospace;">// LIBDEF
PHASE,SEARCH=(<i>bsilib.slib</i>) </span>
<br />
<span style="font-family: Courier, monospace;">// OPTION SYSPARM='00'
</span>
<br />
<span style="font-family: Courier, monospace;">// EXEC BSTTWTLS,SIZE=BSTTWTLS
</span>
<br />
<span style="font-family: Courier, monospace;">/*
</span>
<br />
</td>
</tr>
</tbody></table>
<br /><br />
<br />
The BSTTWTLS application will attempt to verify the BSTTATLS
application is available every 30 seconds. BSTTWTLS will go to EOJ
when the BSTTATLS application is detected. The BSTTWTLS application can be terminated early by issuing a MSG
BSTTWTLS command on the console. No data needs to be entered with the
MSG command.<br />
<br />
<br />
<h3 class="western" style="page-break-before: always;">
ATLS Types</h3>
<table cellpadding="4" cellspacing="0">
<colgroup><col width="128*"></col>
<col width="128*"></col>
</colgroup><tbody>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: 1px solid #000000; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0.04in;" width="50%">
<b>Source</b><br />
</td>
<td style="border: 1px solid #000000; padding: 0.04in;" width="50%">
<b>Destination</b><br />
</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%">
Server
<br />
</td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%">
Accept SSL connection <br />Convert to clear text for local server application<br />
</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%">
Client
<br />
</td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%">
Accept clear text local client connection<br />Convert to SSL/TLS connection for destination<br />
</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%">
<br />
<br />
</td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%">
<br />
<br />
</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%">
IPv4 socket<br />
</td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%">
To IPv4 socket
<br />
</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%">
IPv6 socket<br />
</td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%">
To IPv6 socket<br />
</td>
</tr>
</tbody></table>
<br /><br />
<br />
<h3 class="western">
ATLS Examples</h3>
Accept a clear text connection from BSTTMTPC and convert the
connection to SSL/TLS on port 465. This type of connection is
commonly called <i><b>smtps</b></i>.<br />
Accept an SSL connection on port 443 and convert the connection to
CICS TS Web Services on clear text port 80. This type of connections
commonly called <i><b>https</b></i>.<br />
Accept an SSL connection on port 992 and convert the connection to
clear text on port 23. This type of connection is commonly called
<i><b>telnets</b></i>.<br />
Accept a clear text connection from BSTTFTPC and convert the
connection to SSL/TLS on port 990. This type of connection is
commonly called <i><b>ftps</b></i>.<br />
Accept an SSL connection on port 990 and convert the connection to
clear text on port 21. This type of connection is commonly called
<i><b>ftps</b></i>.<br />
<br />
<br />
<h3 class="western">
Sample ATTLS Commands</h3>
<table cellpadding="4" cellspacing="0">
<colgroup><col width="141*"></col>
<col width="115*"></col>
</colgroup><tbody>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: 1px solid #000000; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0.04in;" width="55%">
Command<br />
</td>
<td style="border: 1px solid #000000; padding: 0.04in;" width="45%">
Description<br />
</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="55%">
OPTION CLIENT<br />
ATTLS 25 TO SMTP.GOOGLE.COM AS 465 SSL<br />
</td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="45%">
Intercept outbound CLIENT connections made to SMTP.GMAIL.COM on
port 25, convert them to SSL connections on port 465
(Implicit-SMTPS).<br />
</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="55%">
OPTION CLIENT<br />OPTION FTP<br />ATTLS 21 TO FTPS.BSIOPTI.COM AS
990 SSL<br />
</td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="45%">
Intercept outbound FTP CLIENT connections made to
FTPS.BSIOPTI.COM on port 21, convert them to SSL connections on
port 990 (Implicit-FTPS).<br />
</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="55%">
OPTION SERVER<br />
ATTLS 23 AS 992 SSL<br />
</td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="45%">
Intercept inbound SERVER connections made on SSL port 992
(Implicit-TELNETS), convert them to clear text connections on port
23.<br />
</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="55%">
OPTION SERVER
<br />
ATTLS 80 AS 443 SSL<br />
</td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="45%">
Intercept inbound SERVER connections made on SSL port 443
(Implicit-HTTPS), convert them to clear text connections on port
80.<br />
</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="55%">
OPTION SERVER
<br />
OPTION FTP
<br />
ATTLS 21 AS 990 SSL<br />
</td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="45%">
Intercept inbound SERVER connections made on SSL port 990
(Implicit-FTPS), convert them to clear text connections on port
21.<br />
</td>
</tr>
</tbody></table>
<br /><br />
<br />
<br />
<br />
<h3 class="western" style="page-break-before: always;">
BSTTATLS JCL</h3>
The following shows sample JCL for using the BSTTATLS proxy
server.<br />
<table cellpadding="4" cellspacing="0">
<colgroup><col width="256*"></col>
</colgroup><tbody>
<tr>
<td style="border: 1px solid #000000; padding: 0.04in;" valign="TOP" width="100%">
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">//
OPTION SYSPARM='66' </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">//
SETPARM IPTRACE='NNNNNNN'</span></div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">//
SETPARM LRGBUF=YES </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">//
LIBDEF *,SEARCH=(ssllib.slib,bsilib.slib)</span></div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">//
EXEC BSTTATLS,SIZE=BSTTATLS</span></div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">ID
66<br />* </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">KEYRING
PRD2.CONFIG<br />DNAME MYCERT<br />SECTYPE TLSV1<br />*<br />OPTION
SERVER<br />ATTLS 23 AS 992 SSL </span>
</div>
<span style="font-family: 'Courier New', monospace;">/*
</span>
<br />
</td>
</tr>
</tbody></table>
<br /><br />
<br />
<h3 class="western">
Partition Size</h3>
The BSTTATLS server application requires a minimum 20M partition
plus 72K for each possible socket to be handled by the BSTTATLS
server.<br />
For example, to support 600 TELNETS sessions, 4 FTPS sessions and
100 HTTPS sessions you will need a 20MB + 51MB = 71MB partition.<br />
<br />
<h3 class="western">
Partition Priority</h3>
The BSTTATLS server is very CPU intensive due to SSL encryption
and decryption processing. The BSTTATLS partition priority should
<i>always be lower</i> than the TCP/IP stack partition.<br />
<br />
<br />
<h3 class="western" style="page-break-before: always;">
BSTTATLS Sample
Configuration</h3>
<br />
<br />
<table cellpadding="4" cellspacing="0">
<colgroup><col width="256*"></col>
</colgroup><tbody>
<tr>
<td style="border: 1px solid #000000; padding: 0.04in;" valign="TOP" width="100%">
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">//
OPTION SYSPARM='00' </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">//
SETPARM IPTRACE='NNNNNNN' </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">//
SETPARM LRGBUF=YES </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">//
LIBDEF *,SEARCH=(ssllib.slib,bsilib.slib)</span></div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">//
EXEC BSTTWAIT,SIZE=BSTTWAIT</span></div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">/*</span></div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">//
EXEC BSTTATLS,SIZE=BSTTATLS</span></div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">ID
00<br />* </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">KEYRING
PRD2.CONFIG<br />DNAME MYCERT<br />SECTYPE TLSV1<br />*</span></div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">*
Convert outbound SMTP connections to Implicit-SMTPS</span></div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">*
but only connections to SMTP.GOOGLE.COM<br />OPTION CLIENT</span></div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">ATTLS
25 TO SMTP.GOOGLE.COM AS 465 SSL</span></div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">*</span></div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">*
Convert Implicit-TELNETS connections to TELNET </span>
</div>
OPTION SERVER<br />
<span style="font-family: 'Courier New', monospace;">ATTLS 23 AS 992 SSL</span><br />
<span style="font-family: 'Courier New', monospace;">*</span><br />
<span style="font-family: 'Courier New', monospace;">* Convert Implicit-HTTPS
connections for CICS TS CWI</span><br />
OPTION SERVER<br />
<span style="font-family: 'Courier New', monospace;">ATTLS 80 AS 443 SSL</span><br />
<span style="font-family: 'Courier New', monospace;">*</span><br />
<span style="font-family: 'Courier New', monospace;">* Convert outbound FTP
connections to Implicit-FTPS</span><br />
<span style="font-family: 'Courier New', monospace;">OPTION CLIENT<br />OPTION
FTP<br />ATTLS 21 TO FTPS.BSIOPTI.COM AS 990 SSL</span><br />
<span style="font-family: 'Courier New', monospace;">*</span><br />
<span style="font-family: 'Courier New', monospace;">* Convert inbound
Implicit-FTPS connections to FTP </span>
<br />
OPTION SERVER
<br />
OPTION FTP
<br />
<span style="font-family: 'Courier New', monospace;">ATTLS 21 AS 990 SSL</span><br />
<span style="font-family: 'Courier New', monospace;">/*
</span>
<br />
</td>
</tr>
</tbody></table>
<br /><br />
<br />
<br />
<br />
<br />
<br />
<br />Jeffhttp://www.blogger.com/profile/11567371917298802617noreply@blogger.com0tag:blogger.com,1999:blog-8156209415524873303.post-84419703210659650282012-05-17T11:24:00.000-07:002012-05-17T11:24:33.880-07:00IPv6/VSE SSL Programming<br />
<h2>
IPv6/VSE SSL Programming</h2>
<div>
Before you start writing your
application, let's look at how SSL programming works.</div>
<div style="margin-bottom: 0in;">
<br /></div>
<div style="margin-bottom: 0in;">
The SSL protocol begins with a
“handshake.” During the handshake, the client authenticates the
server,</div>
<div style="margin-bottom: 0in;">
the server optionally authenticates the
client, and the client and server agree on how to encrypt and</div>
<div style="margin-bottom: 0in;">
decrypt information.</div>
<div style="margin-bottom: 0in;">
<br /></div>
<div style="margin-bottom: 0in;">
X.509 certificates are used by both the
client and server when securing communications using System</div>
<div style="margin-bottom: 0in;">
SSL. The client must verify the
server's certificate based on the certificate of the Certificate
Authority (CA) that signed the certificate or based on a self-signed
certificate from the server. The server must verify the client's
certificate (if requested) using the certificate of the CA that
signed the client's certificate. The client and the server then use
the session keys and begin encrypted communications.</div>
<div style="margin-bottom: 0in;">
<br /></div>
<h2 class="western">
Using the IPv6/VSE GSK SSL API</h2>
<div style="margin-bottom: 0in;">
The figure on the next page describes
the basic structure of the elements needed in your System SSL source
program. These elements are:</div>
<div style="margin-bottom: 0in;">
<br /></div>
<ol>
<li><div style="margin-bottom: 0in;">
A socket() call to obtain a socket
descriptor.</div>
</li>
<li><div style="margin-bottom: 0in;">
A gsk_initialize() call to set up
the application's environment for secure communications. In most
cases, this means extracting and verifying the certificate from the
specified key database file to be used by the application (to
eventually authenticate itself to the peer system in later
processing).</div>
</li>
<li><div style="margin-bottom: 0in;">
Socket calls to activate a
connection (a connect() call for a client program or bind(),
listen(), and</div>
<div style="margin-bottom: 0in;">
accept() calls for a server program).</div>
</li>
<li><div style="margin-bottom: 0in;">
A gsk_secure_soc_init() call to
initiate the SSL handshake negotiation of the cryptographic</div>
<div style="margin-bottom: 0in;">
parameters. gsk_secure_soc_init()
initiates the handshaking process. The z/VSE application</div>
<div style="margin-bottom: 0in;">
programmer does not have to write the
"handshaking" function. This is a function of the SSL
support. gsk_secure_soc_init() makes calls to the user supplied
*skwrite() and *skread() routines.</div>
</li>
<li><div style="margin-bottom: 0in;">
A gsk_secure_soc_write() call to
encrypt data and pass it to the user supplied *skwrite() routine for
transmission.</div>
</li>
<li><div style="margin-bottom: 0in;">
A gsk_secure_soc_read() call to
read data by calling the user supplied *skread() routine, to decrypt
the data, and to return the decrypted data.</div>
</li>
<li><div style="margin-bottom: 0in;">
A gsk_secure_soc_close() call to
disable System SSL support for the socket.</div>
</li>
<li><div style="margin-bottom: 0in;">
A close() call to destroy the
connected sockets.</div>
<div style="margin-bottom: 0in;">
<br /></div>
<div style="margin-bottom: 0in;">
<br /></div>
</li>
</ol>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi50sicaLk64qZ5rPr6udQKQCJy8efAM_pPOagzYnQgYFnionajLPLG3QkeUeOWEfHAg6KiM56tskfof3XOBLoG1uOXbRx82Y4RdOH7tUKIso1c04zV5NlPM52PmhbhTGg2lhxLpoz8kOP2/s1600/789lak.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi50sicaLk64qZ5rPr6udQKQCJy8efAM_pPOagzYnQgYFnionajLPLG3QkeUeOWEfHAg6KiM56tskfof3XOBLoG1uOXbRx82Y4RdOH7tUKIso1c04zV5NlPM52PmhbhTGg2lhxLpoz8kOP2/s1600/789lak.png" /></a></div>
<div style="margin-bottom: 0in;">
<br /></div>
<div style="margin-bottom: 0in;">
</div>
<h3>
SSL Handshaking</h3>
<div>
The type of SSL handshake used determines the level of security used in the connection. </div>
<div>
<br /></div>
<div>
Normally a server application uses handshake mode 1 and a client application uses handshake mode 0. This type of handshaking is normally used by a web browser connecting to a web server. The type of connection created is both secure (encrypted) and trusted (authenticated via certificates). However, often certificate authentication is not necessary if all you are interested in is a secure (encrypted) connection. In this case, the client application would use handshake mode 3. This type of SSL connection is used by a TN3270E client connecting via SSL to an SSL proxy server. The connection is secure (encrypted) but not trusted (in the SSL sense of the word). Trust is not necessary since the user will be logging on to a host application and the host application (CICS) will authenticate the user.</div>
<div style="margin-bottom: 0in; page-break-before: always;">
<br /></div>
<table cellpadding="4" cellspacing="0">
<colgroup><col width="109*"></col>
<col width="147*"></col>
</colgroup><tbody>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: 1px solid #000000; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0.04in;" width="42%">Handshake</td>
<td style="border: 1px solid #000000; padding: 0.04in;" width="58%">Description</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="42%"><span style="font-size: x-small;">GSK_AS_CLIENT: (0) </span>
</td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="58%"><span style="font-size: x-small;">Client receives server's public key and cert.
<br />Client authenticates server's public key and cert. <br />Client
checks its local CA-cert file to authenticate. <br />DNAME = Dummy
RSA key and CA-cert for authentication *(1) </span>
</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="42%"><span style="font-size: x-small;">GSK_AS_SERVER: (1)</span></td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="58%"><span style="font-size: x-small;">Server sends its public key and cert to client.
<br />DNAME = Public RSA key and cert *(1) </span>
</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="42%"><span style="font-size: x-small;">GSK_AS_SERVER_WITH_CLIENT_AUTH: (2)</span></td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="58%"><span style="font-size: x-small;">Server sends its public key and cert to client.
<br />Client authenticates server's public key and cert. <br />Client
checks its local CA-cert file to authenticate. <br />DNAME = public
RSA key and cert AND CA-cert for authentication Client sends its
public key and cert to server. <br />Server authenticates client's
public key and cert. <br />Server checks its local CA-cert file to
authenticate. <br />DNAME = public RSA key and cert AND CA-cert for
authentication </span>
</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="42%"><span style="font-size: x-small;">GSK_AS_CLIENT_NO_AUTH: (3)</span></td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="58%"><span style="font-size: x-small;">Client receives server's public key and cert.
<br />Client accepts server's pubic key and cert without
authentication. <br />DNAME not used! no RSA key or cert required. </span>
</td>
</tr>
</tbody></table>
<div style="margin-bottom: 0in;">
<br /></div>
<div style="margin-bottom: 0in;">
*(1) In the case of a server and client
running on the same system they can use the same DNAME file
(identical RSA key and cert - self-signed). <br />
<br />
A typical web
(HTTP) server is (1) and the browser is (0). <br />
<br />
CICS TS web
services with client authentication is (2). <br />
<br />
SSL tunneling
(SMTPS or TELNETS) is a (3) connecting to a (1). <br />
<br /></div>
<br />
<div style="margin-bottom: 0in; page-break-before: always;">
IPv6/VSE
provides access to secure sockets (SSL) through the LE/C, EZASMI and
EZASOKET APIs. The various GSK function calls provide simple access
to OpenSSL secure socket routines.
</div>
<div style="margin-bottom: 0in;">
<br /></div>
<div style="margin-bottom: 0in;">
For information about calling OpenSSL
routines directly please refer to the IBM OpenSSL programming manual.
Directly calling OpenSSL routines is available only to C language
applications.</div>
<div style="margin-bottom: 0in;">
<br /></div>
<div style="margin-bottom: 0in;">
For detailed information about the
EZASMI GSK macro calls and HLL EZASOKET GSK calls, refer to the IBM
z/OS System Secure Sockets Layer Programming SC24-5901-00 manual.</div>
<div style="margin-bottom: 0in;">
<br /></div>
<h2 class="western">
GSK Functions Provided</h2>
<div lang="en-US" style="margin-bottom: 0in;">
<br /></div>
<table cellpadding="4" cellspacing="0">
<colgroup><col width="128*"></col>
<col width="128*"></col>
</colgroup><tbody>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: 1px solid #000000; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0.04in;" width="50%"><b>Function</b></td>
<td style="border: 1px solid #000000; padding: 0.04in;" width="50%"><b>Description</b></td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%">GSKINIT</td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%">GSK Initialize</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%">GSKSSOCINIT</td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%">GSK Secure Socket Initialize</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%">GSKSSOCREAD</td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%">GSK Secure Socket Read</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%">GSKSSOCWRITE</td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%">GSK Secure Socket Write</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%">GSKSSOCCLOSE</td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%">GSK Secure Socket Close</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%">GSKSSOCRESET</td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%">GSK Secure Socket Reset</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%">GSKUNINIT</td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%">GSK Uninitialize</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%">GSKFREEMEM</td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%">GSK Free Memory</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%">GSKGETCIPHINF</td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%">GSK Get Cypher Information</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%">GSKGETDNBYLAB</td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%">GSK Get DName By Label</td>
</tr>
</tbody></table>
<br />
<br />
<h2 class="western" style="page-break-before: always;">
Basic Design</h2>
<table cellpadding="4" cellspacing="0" rules="COLS">
<colgroup><col width="128*"></col>
<col width="128*"></col>
</colgroup><tbody>
<tr valign="TOP">
<td style="border-bottom: none; border-left: 1px solid #000000; border-right: none; border-top: 1px solid #000000; padding-bottom: 0in; padding-left: 0.04in; padding-right: 0in; padding-top: 0.04in;" width="50%"><span style="font-family: 'Courier New', monospace;"><b>Non-SSL Simple Server</b></span></td>
<td style="border-bottom: none; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000; padding-bottom: 0in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0.04in;" width="50%"><span style="font-family: 'Courier New', monospace;"><b>Non-SSL Client</b></span></td>
</tr>
<tr valign="TOP">
<td style="border-bottom: none; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%"><span style="font-family: 'Courier New', monospace;"><span style="font-size: x-small;">EZASMI
TYPE=INITAPI<br /> EZASMI TYPE=SOCKET<br /> EZASMI
TYPE=BIND<br /><br />ACPT EZASMI TYPE=ACCEPT<br /><br />READ EZASMI
TYPE=READ<br /> EZASMI TYPE=WRITE<br /> B READ<br /><br />EOD
EZASMI TYPE=CLOSE (Accept socket)<br /> B ACPT</span></span><br />
<span style="font-family: 'Courier New', monospace;"><span style="font-size: x-small;"><br />EOJ
EZASMI TYPE=CLOSE (Listen socket)<br /> EZASMI TYPE=TERMAPI</span></span><br />
<span style="font-family: 'Courier New', monospace;"><span style="font-size: x-small;">EOJ</span></span><br />
<span style="font-family: 'Courier New', monospace;"><span style="font-size: x-small;"><br /></span></span></td>
<td style="border-bottom: none; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding: 0in 0.04in;" width="50%"><span style="font-family: 'Courier New', monospace;"><span style="font-size: x-small;">EZASMI
TYPE=INITAPI<br /> EZASMI TYPE=SOCKET<br /><br /><br /> EZASMI
TYPE=CONNECT<br /><br /> EZASMI TYPE=WRITE<br /> EZASMI
TYPE=READ<br /><br /><br /><br /><br /><br /> EZASMI TYPE=CLOSE<br />
EZASMI TYPE=TERMAPI<br /> EOJ </span></span>
</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: none; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%"><span style="font-family: 'Courier New', monospace;"><b>SSL Simple Server</b></span></td>
<td style="border-bottom: none; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding: 0in 0.04in;" width="50%"><span style="font-family: 'Courier New', monospace;"><b>SSL Simple Client</b></span></td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%"><span style="font-family: 'Courier New', monospace;"><span style="font-size: x-small;">EZASMI
TYPE=INITAPI<br /><i> EZASMI TYPE=GSKINIT</i><br /> EZASMI
TYPE=SOCKET<br /> EZASMI TYPE=BIND<br /><br />ACPT EZASMI
TYPE=ACCEPT<br /><i> EZASMI TYPE=GSKSSOCOPEN</i><br /><br />READ
<i>EZASMI TYPE=GSKSSOCREAD</i><br /> <i>EZASMI
TYPE=GSKSSOCWRITE</i><br /> B READ<br /><br />EOD <i>EZASMI
TYPE=GSKSSOCCLOSE</i><br /> EZASMI TYPE=CLOSE (Accept socket)<br />
B ACPT</span></span><br />
<span style="font-family: 'Courier New', monospace;"><span style="font-size: x-small;"><br />EOJ
EZASMI TYPE=CLOSE (Listen socket)</span></span><br />
<span style="font-family: 'Courier New', monospace;"><span style="font-size: x-small;"><i>EZASMI
TYPE=GSKUNINIT</i><br /> EZASMI TYPE=TERMAPI</span></span><br />
<span style="font-family: 'Courier New', monospace;"><span style="font-size: x-small;">EOJ</span></span></td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%"><span style="font-family: 'Courier New', monospace;"><span style="font-size: x-small;">EZASMI
TYPE=INITAPI</span></span><br />
<span style="font-family: 'Courier New', monospace;"><span style="font-size: x-small;"><i>EZASMI
TYPE=GSKINIT</i><br /> EZASMI TYPE=SOCKET<br /><br /><br /> EZASMI
TYPE=CONNECT<br /><i> EZASMI TYPE=GSKSSOCOPEN</i></span></span><br />
<br />
<br />
<span style="font-family: 'Courier New', monospace;"><span style="font-size: x-small;"><i>EZASMI
TYPE=GSKSSOCWRITE</i><br /> <i>EZASMI TYPE=GSKSSOCREAD</i><br /><br /><br />
EZASMI TYPE=GSKSSOCCLOSE<br /><br /><br /><br /> EZASMI
TYPE=CLOSE<br /><i> EZASMI TYPE=GSKUNINIT</i><br /> EZASMI
TYPE=TERMAPI<br /> EOJ </span></span>
</td>
</tr>
</tbody></table>
<div lang="en-US">
<br />
<br /></div>
See the IPv6/VSE SSL Installation, Programming and User's Guide for full details on the SSL GSK API.Jeffhttp://www.blogger.com/profile/11567371917298802617noreply@blogger.com0tag:blogger.com,1999:blog-8156209415524873303.post-7549092057203260792012-05-01T08:09:00.000-07:002012-05-01T08:09:19.369-07:00Using the BSI SSL Proxy Server<br />
<h2 class="western" style="page-break-before: always;">
BSTTPRXY SSL
Proxy Server</h2>
The BSTTPRXY SSL proxy server allows non-SSL server applications
running in z/VSE to accept connections from SSL based client
applications. Or, BSTTPRXY will allow non-SSL client applications to
connect to SSL based server applications.<br />
<br />
The BSTTPRXY SSL proxy server will also proxy IPv4 connections to an IPv6 destination or IPv6 connections to an IPv4 destination.<br />
<br />
<br />
<h3 class="western">
Proxy Types</h3>
<table cellpadding="4" cellspacing="0">
<colgroup><col width="128*"></col>
<col width="128*"></col>
</colgroup><tbody>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: 1px solid #000000; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0.04in;" width="50%"><b>Source</b></td>
<td style="border: 1px solid #000000; padding: 0.04in;" width="50%"><b>Destination</b></td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%">Accept clear text connection</td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%">Proxy to clear text connection</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%">Accept SSL connection
</td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%">Proxy to SSL connection
</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%">Accept clear text connection
</td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%">Proxy to SSL connection
</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%">Accept SSL connection
</td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%">Proxy to clear text connection</td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%"><br />
<br /></td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%"><br />
<br /></td>
</tr>
<tr valign="TOP">
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%">Accept IPv4 or IPv6 connection</td>
<td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%">Proxy to IPv4 or IPv6 connection
</td>
</tr>
</tbody></table>
<br />
<br />
<br />
<h3 class="western">
Proxy Examples</h3>
Accept a clear text connection from BSTTMTPC on port 25 and proxy
the connection to an SMTP server listening on SSL port 465. This type
of connection is commonly called <i><b>smtps</b></i>.<br />
<br />
Accept an SSL connection on port 443 and proxy the connection to
CICS TS Web Services on clear text port 80. This type of connections
commonly called <i><b>https</b></i>.<br />
<br />
Accept an SSL connection on port 992 and proxy the connection to
the BSTTVNET TN3270E server on clear text port 23. This type of
connection is commonly called <i><b>telnets</b></i>.<br />
<br />
Accept a clear text connection from BSTTFTPC on port 21 and proxy
the connection to an FTP server listening on SSL port 990. This type
of connection is commonly called <i><b>ftps</b></i>.<br />
<br />
Accept an SSL connection on port 990 and proxy the connection to
the BSTTFTPS FTP server on clear text port 21. This type of
connection is commonly called <i><b>ftps</b></i>.<br />
<br />
<br />
<h3 class="western" style="page-break-before: always;">
BSTTPRXY
Examples</h3>
<h4 class="western">
<b>BSTTVNET TN3270E Server</b></h4>
<b>x3270</b><br />
<span style="color: black;"><span style="font-family: 'Liberation Serif', serif;"><span style="font-size: small;">x3270
is an IBM 3270 terminal emulator for the X Window System and Windows.
It runs on most Unix-like operating systems -- e.g., Linux, Mac OS X,
Solaris and Cygwin. It also runs natively on Windows. </span></span></span>
<br />
<span style="color: black;"><span style="font-family: 'Liberation Serif', serif;"><span style="font-size: small;"><i>X3270
is distributed as source code, and can be used for free</i></span></span></span><span style="color: black;"><span style="font-family: 'Liberation Serif', serif;"><span style="font-size: small;">.
See</span></span></span><span style="color: black;"><span style="font-family: 'Liberation Serif', serif;"><span style="font-size: small;">
</span></span></span><a href="http://x3270.bgp.nu/"><span style="color: black;"><span style="text-decoration: none;">http://x3270.bgp.nu</span></span></a><br />
<div style="margin-bottom: 0in;">
x3270 runs over
a TELNET connection, emulating either an IBM 3279 (color) or 3278
(monochrome). It supports:</div>
<ul>
<li><div style="margin-bottom: 0in;">
The full TN3270E protocol</div>
</li>
<li><div style="margin-bottom: 0in;">
SSL/TLS (via the OpenSSL library)
for encrypted sessions</div>
</li>
<li><div style="margin-bottom: 0in;">
APL2 characters</div>
</li>
<li><div style="margin-bottom: 0in;">
Non-English character sets,
including Hebrew and DBCS Chinese and Japanese</div>
</li>
<li><div style="margin-bottom: 0in;">
IND$FILE file transfer</div>
</li>
<li><div style="margin-bottom: 0in;">
NVT mode (emulating a color xterm)</div>
</li>
<li><div style="margin-bottom: 0in;">
A pop-up keypad for 3270-specific
keys</div>
</li>
<li><div style="margin-bottom: 0in;">
A scrollbar</div>
</li>
<li><div style="margin-bottom: 0in;">
Printer session integration</div>
</li>
<li><div style="margin-bottom: 0in;">
Extensive debugging and scripting
facilities</div>
</li>
</ul>
<div style="margin-bottom: 0in;">
<br /></div>
<table cellpadding="4" cellspacing="0">
<colgroup><col width="256*"></col>
</colgroup><tbody>
<tr>
<td style="border: 1px solid #000000; padding: 0.04in;" valign="TOP" width="100%"><div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;"><span style="font-size: x-small;">Command
format:</span></span></div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;"><span style="font-size: x-small;">X3270
[prefix:]...[LUname@]hostname[:port]</span></span></div>
<div style="margin-bottom: 0in;">
<br /></div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;"><span style="font-size: x-small;">E.g.,</span></span></div>
<span style="font-family: 'Courier New', monospace;"><span style="font-size: x-small;">x3270
L:192.168.1.238:992</span></span></td>
</tr>
</tbody></table>
<div style="margin-bottom: 0in;">
<br /></div>
Prepending an L: onto hostname causes x3270 to first create an SSL
tunnel to the host, and then create a TN3270 session inside the
tunnel.<br />
<br />
<br />
<div style="margin-bottom: 0in;">
<br /></div>
<table cellpadding="4" cellspacing="0">
<colgroup><col width="256*"></col>
</colgroup><tbody>
<tr>
<td style="border: 1px solid #000000; padding: 0.04in;" valign="TOP" width="100%"><div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">//
OPTION SYSPARM='66' </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">//
SETPARM IPTRACE='NNNNNNN' </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">//
LIBDEF *,SEARCH=(ssllib.slib,bsilib.slib)</span></div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">//
EXEC BSTTPRXY,SIZE=BSTTPRXY</span></div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">ID
66
<br />KEYRING PRD2.CONFIG</span></div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">DNAME
BSICERT<br />SECTYPE TLSV1<br />OPTION SERVER </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">PROXY
TCP V4 992 SSL * TO V4 23 TXT * LOCALHOST </span>
</div>
<span style="font-family: 'Courier New', monospace;">/*
</span>
</td>
</tr>
</tbody></table>
<br />
<h4 class="western">
</h4>
<br />
<br />
<br />
<div>
The above example executes the BSTTPRXY SSL proxy server in SERVER mode, accepting SSL connections on port 992 (implicit telnets) and proxies the connection in clear text to port 23. Port 23 is being used by BSTTVNET to accept connections to the TN3270E server.</div>
<div>
<br /></div>
<div>
The KEYRING parameter indicates the RSA key and certificate to be used by the BSTTPRXY server is located in PRD2.CONFIG and the DNAME parameter indicates BSICERT.PEM is the member name.</div>
<div>
<br />
<br />
<h4 class="western">
BSTTMTPC Mail Transport Client
</h4>
The following sample JCL shows BSTTMTPC connecting to the BSTTPRXY
server on port 25 (SMTP) and sending an email.<br />
<div style="margin-bottom: 0in;">
<br /></div>
<table cellpadding="4" cellspacing="0">
<colgroup><col width="256*"></col>
</colgroup><tbody>
<tr>
<td style="border: 1px solid #000000; padding: 0.04in;" valign="TOP" width="100%"><div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">//
EXEC BSTTMTPC,SIZE=BSTTMTPC </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">ID
00 </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">OPEN
127.0.0.1 25 </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">*
</span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">EHLO
gmail.com </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">AUTH
LOGIN jeffrey.webmail ???????? </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">MAIL
From: <jeffrey.webmail@gmail.com> </jeffrey.webmail@gmail.com></span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">RCPT
To: <jeff@bsiopti.com> </jeff@bsiopti.com></span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">SUBJ
Subject: Test Email </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">ORGA
Organization: Barnard Software, Inc.</span></div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">*
</span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">DATA
</span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">*
</span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">QUIT
</span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">/*
</span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">This
is a test email text. </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">See
http://www.bsiopti.com </span>
</div>
<div style="margin-bottom: 0in;">
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">Jeff
</span>
</div>
<span style="font-family: 'Courier New', monospace;">/*
</span>
</td>
</tr>
</tbody></table>
<br />
<br />
<br />
The following sample BSTTPRXY JCL shows the proxy server accepting
connections on port 25 (SMTP) and proxying the connection to
smtp.gmail.com port 465. This configuration uses SMTPS or SMTP
through an SSL tunnel. Note: The KEYFILE parameter must specify an
RSA key/certificate member with a valid RSA key and certificate.
However, the certificate is not used.<br />
<div style="margin-bottom: 0in;">
<br /></div>
<table cellpadding="4" cellspacing="0">
<colgroup><col width="256*"></col>
</colgroup><tbody>
<tr>
<td style="border: 1px solid #000000; padding: 0.04in;" valign="TOP" width="100%"><div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">//
EXEC BSTTPRXY,SIZE=BSTTPRXY,PARM='TRAP(OFF)/' </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">ID
00 </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">*
</span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">KEYRING
PRD2.CONFIG </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">KEYFILE
ZVSE51 </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">SECTYPE
TLSV1</span></div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">*
</span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">OPTION
CLIENT </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">*
74.125.157.108 IS SMTP.GMAIL.COM </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">PROXY
TCP V4 25 TXT * TO V4 465 SSL * 74.125.157.108 </span>
</div>
<span style="font-family: 'Courier New', monospace;">/*
</span>
</td>
</tr>
</tbody></table>
<h4 class="western">
CICS TS Web Interface</h4>
The following sample BSTTPRXY JCL shows the proxy server accepting
connections on port 443 (HTTPS) and proxying the connection to the
CICS TS Web Server on port 8080.
<br />
<div style="margin-bottom: 0in;">
<br /></div>
<table cellpadding="4" cellspacing="0">
<colgroup><col width="256*"></col>
</colgroup><tbody>
<tr>
<td style="border: 1px solid #000000; padding: 0.04in;" valign="TOP" width="100%"><div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">//
EXEC BSTTPRXY,SIZE=BSTTPRXY,PARM='TRAP(OFF)/' </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">ID
00 </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">*</span></div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">KEYRING
PRD2.CONFIG </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">KEYFILE
CICSTS </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">SECTYPE
TLSV1 </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">*<br />OPTION
SERVER</span></div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">*
</span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">PROXY
TCP V4 443 SSL * TO V4 8080 TXT * 127.0.0.1 </span>
</div>
<span style="font-family: 'Courier New', monospace;">/*
</span>
</td>
</tr>
</tbody></table>
<br />
<br />
<br />
<br />
<h4>
BSTTFTPC Batch FTP Client</h4>
The following sample JCL shows BSTTFTPC connecting to the BSTTPRXY
server on port 2121 (FTP) and sending commands to a remote host FTP
server on port 990(FTPS). BSTTPRXY supports Implicit-FTPS where the
command connection is automatically encrypted using TLS.<br />
<div style="margin-bottom: 0in;">
<br /></div>
<table cellpadding="4" cellspacing="0">
<colgroup><col width="256*"></col>
</colgroup><tbody>
<tr>
<td style="border: 1px solid #000000; padding: 0.04in;" valign="TOP" width="100%"><div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">//
EXEC BSTTFTPC,SIZE=BSTTFTPC,OS390,TASKS=ANY</span></div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">ID
00 </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">OPEN
127.0.0.1 2121 </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">PBSZ
0 </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">PROT
P </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">USER
jcb </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">PASS
bsi </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">PWD
</span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">STAT
</span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">QUIT
</span>
</div>
<span style="font-family: 'Courier New', monospace;">/*
</span>
</td>
</tr>
</tbody></table>
<br />
<br />
<br />
The BSTTFTPC JCL/commands looks pretty typical but notice the PBSZ
0 and PROT P commands that immediately follow the OPEN command. These
two commands, exactly as shown, must immediately follow the OPEN
command. When using an Implicit-FTPS connection the command
connection is automatically encrypted. The PBSZ 0 and PROT P commands
tell the remote host FTP server that any data transfer done should
also be encrypted. If these two commands are missing any data
transfer will be done in clear text mode.<br />
<br />
<br />
The following sample BSTTPRXY JCL shows the proxy server accepting
connections on port 2121 (FTP) and proxying the connection to
192.168.1.60 port 990. This configuration uses FTPS or FTP through an
implicit SSL tunnel. Note: The KEYFILE parameter must specify an RSA
key/certificate member with a valid RSA key and certificate. Port
mapping, for the FTP data connection, is handled automatically by
BSTTPRXY.<br />
<div style="margin-bottom: 0in;">
<br /></div>
<table cellpadding="4" cellspacing="0">
<colgroup><col width="256*"></col>
</colgroup><tbody>
<tr>
<td style="border: 1px solid #000000; padding: 0.04in;" valign="TOP" width="100%"><div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">//
EXEC BSTTPRXY,SIZE=BSTTPRXY,PARM='TRAP(OFF)/' </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">ID
00 </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">*
</span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">KEYRING
PRD2.CONFIG </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">KEYFILE
BSICERT </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">SECTYPE
TLSV1 </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">*<br />OPTION
FTP<br />OPTION CLIENT <br />*
</span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">PROXY
TCP V4 2121 TXT * TO V4 990 SSL * 192.168.1.60</span></div>
<span style="font-family: 'Courier New', monospace;">/*
</span>
</td>
</tr>
</tbody></table>
<br />
<br />
<h4>
BSTTFTPS FTP Server</h4>
The following sample BSTTPRXY JCL shows the proxy server accepting
connections on port 990 (Implicit-FTPS) and proxying the connection
to 192.168.1.60 port 21 (FTP). This configuration uses FTPS or FTP
through an implicit SSL tunnel. Note: The KEYFILE parameter must
specify an RSA key/certificate member with a valid RSA key and
certificate. Port mapping, for the FTP data connection, is handled
automatically by BSTTPRXY.<br />
<br />
<br />
<br />
<table cellpadding="4" cellspacing="0">
<colgroup><col width="256*"></col>
</colgroup><tbody>
<tr>
<td style="border: 1px solid #000000; padding: 0.04in;" valign="TOP" width="100%"><div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">//
EXEC BSTTPRXY,SIZE=BSTTPRXY,PARM='TRAP(OFF)/' </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">ID
00 </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">*
</span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">KEYRING
PRD2.CONFIG </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">KEYFILE
BSICERT </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">SECTYPE
TLSV1 </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">*<br />OPTION
SERVER<br />* </span>
</div>
<div style="margin-bottom: 0in;">
<span style="font-family: 'Courier New', monospace;">PROXY
TCP V4 990 SSL * TO V4 21 TXT * 127.0.0.1</span></div>
<span style="font-family: 'Courier New', monospace;">/*
</span>
</td>
</tr>
</tbody></table>
<br />
<br />
<br />
This example assumes you also are running the BSTTFTPS FTP server
listening on port 21.<br />
To test this function of BSTTPRXY we used the Linux LFTP FTP
client. The LFTP client connected to BSTTPRXY using the 'lftp -d -u
userid,password -p 990 ftps://192.168.1.238' command. The LFTP client
connected to the BSTTPRXY server using an SSL connection on port 990.
BSTTPRXY then proxied the connection to the BSTTFTPS FTP server on
port 21.
<br />
<br />
The IPv6/VSE SSL proxy server is simple and easy to use. In addition to the examples shown in this post, many other types of connections can be proxied including MQSeries, DB2 UDB connections, etc.
<br />
<br />
<br /></div>Jeffhttp://www.blogger.com/profile/11567371917298802617noreply@blogger.com0tag:blogger.com,1999:blog-8156209415524873303.post-84295371163554130372012-04-27T05:51:00.000-07:002012-04-27T05:51:29.365-07:00SSL Support in IPv6/VSE<h2 class="western" style="page-break-before: always;">
</h2>
<h2 class="western">
<span class="Apple-style-span" style="font-size: small;">SSL Support in IPv6/VSE</span></h2>
<div>
<span class="Apple-style-span" style="font-size: small;">Barnard Software, Inc. is pleased to announce that their IPv6/VSE product now provides SSL (Secure Socket Layer) support! Our new SSL support became available with GA Build 252. GA Build 252 is now available on our download page.</span></div>
<div>
<span class="Apple-style-span" style="font-size: small;"><br />
</span></div>
<div>
<span class="Apple-style-span" style="font-size: small; font-weight: normal;">The initial release of IPv6/VSE did not contain any cryptographic facilities. During the 2011 GSE conference last October, in Berlin Germany,. BSI made a Statement of Direction indicating the SSL and IPSec features would be added to IPv6/VSE. </span></div>
<div>
<span class="Apple-style-span" style="font-size: small; font-weight: normal;"><br />
</span></div>
<div>
<span class="Apple-style-span" style="font-size: small; font-weight: normal;">IPv6/VSE SSL facilities will be released in two phases. </span></div>
<div>
<span class="Apple-style-span" style="font-size: small; font-weight: normal;"><br />
</span></div>
<div>
<span class="Apple-style-span" style="font-size: small; font-weight: normal;"><i>Phase One</i> will provide the BSI SSL Proxy Server that runs in a z/VSE partition. The BSTTPRXY server application will provide support for telnets (TN3270E over SSL), SMTPS (SMTP over SSL), HTTPS (HTTP over SSL) and FTPS (Implicit FTP over SSL) and more. IPv6/VSE also provides the SSL GSK API for use by customer and 3rd party vendor software. The GSK API is available using EZASOKET/EZASMI or LE/C interfaces. The only restriction is that this API is currently only available to LE batch applications. </span><br />
<br />
For IPv6/VSE users running on z/VSE 5.1 (or higher) support is provided for CPACF hardware cryptographic instructions and Crypto-Express adapters to improve performance.</div>
<div>
<span class="Apple-style-span" style="font-size: small; font-weight: normal;"><br />
</span></div>
<div>
<span class="Apple-style-span" style="font-size: small; font-weight: normal;"><i>Phase Two</i> will remove the LE requirement providing support for both batch and CICS applications We also plan to provide explicit (Built in) SSL support for BSTTVNET (TN3270E server), BSTTMTPC (SMTP Client), BSTTFTPS (FTP server) and BSTTFTPC (batch FTP client).</span></div>
<div>
<span class="Apple-style-span" style="font-size: small; font-weight: normal;"><br />
</span></div>
<div>
<b><i>Phase One of IPv6/VSE's SSL support is now available!</i></b></div>
<div>
<span class="Apple-style-span" style="font-size: small;"><b><i><br /></i></b></span></div>
<h2 class="western">
<span class="Apple-style-span" style="font-size: small;">System Requirements</span></h2>
<div style="margin-bottom: 0in;">
<span class="Apple-style-span" style="font-weight: normal;"><span class="Apple-style-span" style="font-size: small;">IPv6/VSE's Secure Sockets Layer (SSL) support uses the IBM z/VSE OpenSSL1.0.0 port. The IBM OpenSSL port was done using z/VSE C/VSE compiler permitting support for back level versions of z/VSE and VSE/ESA. The OpenSSL port became available with z/VSE 5.1. BSI IPv6/VSE customers have special options to enable IPv6/VSE's SSL support on back level releases of VSE/ESA and z/VSE. </span></span></div>
<div style="margin-bottom: 0in;">
<span class="Apple-style-span" style="font-weight: normal;"><span class="Apple-style-span" style="font-size: small;"><br />
</span></span></div>
<h3 class="western">
<span class="Apple-style-span" style="font-size: small;">CPACF </span></h3>
<div style="margin-bottom: 0in;">
<span class="Apple-style-span" style="font-weight: normal;"><span class="Apple-style-span" style="font-size: small;">The IBM OpenSSL port will take advantage of the System z's CP Assist for Cryptographic Function (CPACF) when running under z/VSE 5.1 (or higher). These CP Assists dramatically reduce CPU overhead involved when using cryptographic functions. Users of the z890, z990, z9, z10, z114, z196 (and newer processors) should have the no-charge enablement feature installed. This feature must be ordered to enable CPACF. z/VSE systems without CPACF will use system CPU resources to perform cryptographic functions.</span></span></div>
<div style="margin-bottom: 0in;">
<span class="Apple-style-span" style="font-weight: normal;"><span class="Apple-style-span" style="font-size: small;"><br />
</span></span></div>
<h3 class="western">
<span class="Apple-style-span" style="font-size: small;">Crypto Express Adapters </span></h3>
<div style="margin-bottom: 0in;">
<span class="Apple-style-span" style="font-weight: normal;"><span class="Apple-style-span" style="font-size: small;">The IBM OpenSSL port will take advantage of the System z Crypto Express adapters supported by z/VSE 5.1 (or higher). Usage of Crypto Express adapters dramatically reduces the amount of CPU required to establish a secure socket connection. z/VSE 51 (or higher) systems without Crypto Express adapters </span></span> (or back level systems) will use system CPU resources to establish a secure socket connection.</div>
<div style="margin-bottom: 0in;">
<span class="Apple-style-span" style="font-weight: normal;"><span class="Apple-style-span" style="font-size: small;"><br />
</span></span></div>
<h3 class="western">
<span class="Apple-style-span" style="font-size: small;">Restrictions</span></h3>
<span class="Apple-style-span" style="font-weight: normal;"><span class="Apple-style-span" style="font-size: small;">Currently the IPv6/VSE SSL suport is in Phase One. </span></span>Any application can make
use the IPv6/VSE SSL Proxy server. This includes both batch and CICS, LE
and non-LE applications. Also, any user or 3rd party LE conforming batch
application can use the EZASOKET/EZASMI or LE/C GSK SSL API provided by IPv6/VSE. Non-LE based batch applications, CICS/VSE and CICS TS applications are currently not supported by the Phase I GSK SSL API. This restriction will be removed in a future build.<br />
<span class="Apple-style-span" style="font-weight: normal;"><span class="Apple-style-span" style="font-size: small;"><br />
</span></span><br />
<h2 class="western" style="page-break-before: always;">
BSTTPRXY SSL Proxy Server</h2>
The BSTTPRXY SSL proxy server allows non-SSL server applications running in z/VSE to accept connections from SSL based client applications. Or, BSTTPRXY will allow non-SSL client applications to connect to SSL based server applications.<br />
<br />
<br />
<br />
<h3 class="western">
Proxy Types</h3>
<table cellpadding="4" cellspacing="0"><colgroup><col width="128*"></col> <col width="128*"></col> </colgroup><tbody>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: 1px solid #000000; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0.04in;" width="50%"><b>Source</b></td> <td style="border: 1px solid #000000; padding: 0.04in;" width="50%"><b>Destination</b></td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%">Accept clear text connection</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%">Proxy to clear text connection</td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%">Accept SSL connection </td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%">Proxy to SSL conneIPv6/VSE SSL Supportction </td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%">Accept clear text connection </td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%">Proxy to SSL connection </td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%">Accept SSL connection </td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%">Proxy to clear text connection</td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%"><br />
<br /></td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%"><br />
<br /></td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="50%">Accept IPv4 or IPv6 connection</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="50%">Proxy to IPv4 or IPv6 connection </td> </tr>
</tbody></table>
<br />
<br />
<br />
<h3 class="western">
Proxy Examples</h3>
Accept a clear text connection from BSTTMTPC on port 25 and proxy the connection to an SMTP server listening on SSL port 465. This type of connection is commonly called <i><b>smtps</b></i>.<br />
<br />
Accept an SSL connection on port 443 and proxy the connection to CICS TS Web Services on clear text port 80. This type of connections commonly called <i><b>https</b></i>.<br />
<br />
Accept an SSL connection on port 992 and proxy the connection to the BSTTVNET TN3270E server on clear text port 23. This type of connection is commonly called <i><b>telnets</b></i>.<br />
<br />
Accept a clear text connection from BSTTFTPC on port 21 and proxy the connection to an FTP server listening on SSL port 990. This type of connection is commonly called <i><b>ftps</b></i>.<br />
<br />
Accept an SSL connection on port 990 and proxy the connection to the BSTTFTPS FTP server on clear text port 21. This type of connection is commonly called <i><b>ftps</b></i>.<br />
<br />
<h2>
IPv6/VSE SSL Support</h2>
<div>
There you have it. IPv6/VSE SSL support is now available and supports SSL sockets for virtually any z/VSE application.</div>
<div>
<br /></div>Jeffhttp://www.blogger.com/profile/11567371917298802617noreply@blogger.com0tag:blogger.com,1999:blog-8156209415524873303.post-30933575790735358102012-01-19T11:18:00.000-08:002012-01-19T11:20:58.110-08:00IPv6/VSE<b>IPv6/VSE</b><br />
<br />
IPv6 news is everywhere these days. The availability of z/VSE 4.2.2 (and newer releases) provides the foundation of z/VSE's IPv6 support. Combine this with IBM's new TCP/IP solution, IPv6/VSE, which provides a <b><i>single product solution for both IPv4 and IPv6 TCP/IP communications</i></b> and you have a powerful way to take z/VSE into the future.<br />
<br />
<br />
<span style="color: black;"><span style="font-size: small;">You</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">are</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">probably</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">already</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">hearing</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">about</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">IPv6</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">on</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">z/VSE.</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">Why?</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">Your</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">ISP</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">is</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">converting</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">to</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">IPv6</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">and</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">makes</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">it</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">available</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">to</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">you.</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">With</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">the</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">IPv4</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">address</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">block</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">exhaustion,</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">new</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">blocks</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">of</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">IPv4</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">addresses</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">are</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">now</span></span><span style="color: black;"><span style="font-size: small;"> almost impossible </span></span><span style="color: black;"><span style="font-size: small;">to</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">get.</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">Your</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">customers</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">or</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">business</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">partners</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">require</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">IPv6</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">connections.</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">Government</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">organizations</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">may</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">only</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">allow</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">IPv6</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">capable</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">devices</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">and</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">applications</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">to</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">participate</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">in</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">bidding.</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">The</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">US</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">Department</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">of</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">Defense</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">(DoD),</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">for</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">example,</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">only</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">allows</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">products</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">that</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">are</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">on</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">the</span></span><span style="color: black;"><span style="font-size: small;"> “</span></span><span style="color: black;"><span style="font-size: small;">Unified</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">Capabilities</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">Approved</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">Products</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">List</span></span><span style="color: black;"><span style="font-size: small;">” </span></span><span style="color: black;"><span style="font-size: small;">(UC</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">APL)</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">for</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">its</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">advertised</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">bidding.</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">This</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">list</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">is</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">used</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">by</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">procurement</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">offices</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">in</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">the</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">DoD</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">and</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">the</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">U.S.</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">Federal</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">agencies</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">for</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">ongoing</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">purchases</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">and</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">acquisitions</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">of</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">IT</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">equipment.</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">Also,</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">keep</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">this</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">in</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">mind,</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">as</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">new</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">standards</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">are</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">developed</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">IPv6</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">is</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">usually</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">mandated.</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">For</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">example,</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">4G</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">mobile</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">devices</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">are</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">mandated</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">to</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">use</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">IPv6</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">and</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">IPv4</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">support</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">is</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">deprecated.</span></span><br />
<span style="color: black;"><span style="font-size: small;"><br />
</span></span><br />
<span style="color: black;"><span style="font-size: small;">IPv6</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">support</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">in</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">z/VSE</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">began</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">with</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">z/VSE</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><span style="color: black;"><span style="font-size: small;">4.2.2.</span></span><br />
<span style="color: black;"><span style="font-size: small;"><br />
</span></span><br />
<h3 class="western">
<span style="color: black;">IBM IPv6/VSE</span><span style="color: black;"> </span><span style="color: black;">Version</span><span style="color: black;"> </span><span style="color: black;">1</span><span style="color: black;"> </span><span style="color: black;">Release</span><span style="color: black;"> </span><span style="color: black;">1</span></h3>
<span style="color: black;">IBM</span><span style="color: black;"> </span><span style="color: black;">licensed</span><span style="color: black;"> </span><span style="color: black;">IPv6/VSE</span><span style="color: black;"> </span><span style="color: black;">from</span><span style="color: black;"> </span><span style="color: black;">Barnard</span><span style="color: black;"> </span><span style="color: black;">Software,</span><span style="color: black;"> </span><span style="color: black;">Inc.for worldwide distribution</span><span style="color: black;"> </span><span style="color: black;">as</span><span style="color: black;"> </span><span style="color: black;">their</span><span style="color: black;"> </span><span style="color: black;">TCP/IP</span><span style="color: black;"> </span><span style="color: black;">product</span><span style="color: black;"> </span><span style="color: black;">solution</span><span style="color: black;"> </span><span style="color: black;">for</span><span style="color: black;"> </span><span style="color: black;">the</span><span style="color: black;"> </span><span style="color: black;">future</span><span style="color: black;"> </span><span style="color: black;">(IPv6/VSE</span><span style="color: black;"> </span><span style="color: black;">is</span><span style="color: black;"> </span><span style="color: black;">a</span><span style="color: black;"> </span><span style="color: black;">registered</span><span style="color: black;"> </span><span style="color: black;">trademark</span><span style="color: black;"> </span><span style="color: black;">of</span><span style="color: black;"> </span><span style="color: black;">Barnard</span><span style="color: black;"> </span><span style="color: black;">Software,</span><span style="color: black;"> </span><span style="color: black;">Inc.).</span><span style="color: black;"> </span><span style="color: black;">IBM's</span><span style="color: black;"> </span><span style="color: black;">IPv6/VSE</span><span style="color: black;"> </span><span style="color: black;">announcement</span><span style="color: black;"> </span><span style="color: black;">(210-066)</span><span style="color: black;"> </span><span style="color: black;">was</span><span style="color: black;"> </span><span style="color: black;">made</span><span style="color: black;"> </span><span style="color: black;">on</span><span style="color: black;"> </span><span style="color: black;">April</span><span style="color: black;"> </span><span style="color: black;">6,</span><span style="color: black;"> </span><span style="color: black;">2010.</span><span style="color: black;"> </span><span style="color: black;">The</span><span style="color: black;"> </span><span style="color: black;">availability</span><span style="color: black;"> </span><span style="color: black;">of</span><span style="color: black;"> </span><span style="color: black;">IBM's</span><span style="color: black;"> </span><span style="color: black;">IPv6/VSE</span><span style="color: black;"> </span><span style="color: black;">allows</span><span style="color: black;"> </span><span style="color: black;">z/VSE</span><span style="color: black;"> </span><span style="color: black;">users</span><span style="color: black;"> </span><span style="color: black;">to</span><span style="color: black;"> </span><span style="color: black;">participate</span><span style="color: black;"> </span><span style="color: black;">in</span><span style="color: black;"> </span><span style="color: black;">an</span><span style="color: black;"> </span><span style="color: black;">IPv6</span><span style="color: black;"> </span><span style="color: black;">network</span><span style="color: black;"> </span><span style="color: black;">and</span><span style="color: black;"> </span><span style="color: black;">bring</span><span style="color: black;"> </span><span style="color: black;">the</span><span style="color: black;"> </span><span style="color: black;">benefits</span><span style="color: black;"> </span><span style="color: black;">of</span><span style="color: black;"> </span><span style="color: black;">IPv6</span><span style="color: black;"> </span><span style="color: black;">functionality</span><span style="color: black;"> </span><span style="color: black;">to</span><span style="color: black;"> </span><span style="color: black;">z/VSE</span><span style="color: black;"> </span><span style="color: black;">users.</span><br />
<span style="color: black;"><br />
</span><br />
<span style="color: black;">While</span><span style="color: black;"> </span><span style="color: black;">the</span><span style="color: black;"> </span><span style="color: black;">product</span><span style="color: black;"> </span><span style="color: black;">is</span><span style="color: black;"> </span><span style="color: black;">named</span><span style="color: black;"> </span><span style="color: black;">IPv6/VSE,</span><span style="color: black;"> </span><span style="color: black;">the</span><span style="color: black;"> </span><span style="color: black;">product</span><span style="color: black;"> </span><span style="color: black;">supports</span><b><i><span style="color: black;"> </span><span style="color: black;">both</span><span style="color: black;"> </span><span style="color: black;">IPv4</span><span style="color: black;"> </span><span style="color: black;">and</span><span style="color: black;"> </span><span style="color: black;">IPv6</span><span style="color: black;"> </span></i></b><span style="color: black;"><b><i>communications</i></b>.</span><span style="color: black;"> </span><span style="color: black;">IPv6/VSE</span><span style="color: black;"> </span><span style="color: black;">provides</span><span style="color: black;"> </span><span style="color: black;">a</span><span style="color: black;"> </span><span style="color: black;"><i>full-function</i></span><span style="color: black;"><i> </i></span><span style="color: black;"><i>IPv4</i></span><span style="color: black;"><i> </i></span><span style="color: black;"><i>stack</i></span><span style="color: black;"><i> </i></span><span style="color: black;"><i>and</i></span><span style="color: black;"><i> </i></span><span style="color: black;"><i>applications</i></span><span style="color: black;"> </span><span style="color: black;">as</span><span style="color: black;"> </span><span style="color: black;">well</span><span style="color: black;"> </span><span style="color: black;">as</span><span style="color: black;"> </span><span style="color: black;">a</span><span style="color: black;"> </span><span style="color: black;">full-function</span><span style="color: black;"> </span><span style="color: black;">IPv6</span><span style="color: black;"> </span><span style="color: black;">stack</span><span style="color: black;"> </span><span style="color: black;">and</span><span style="color: black;"> </span><span style="color: black;">applications.</span><span style="color: black;"> </span><span style="color: black;">Both</span><span style="color: black;"> </span><span style="color: black;">TCP/IP</span><span style="color: black;"> </span><span style="color: black;">stacks</span><span style="color: black;"> </span><span style="color: black;">(IPv4</span><span style="color: black;"> </span><span style="color: black;">and</span><span style="color: black;"> </span><span style="color: black;">IPv6)</span><span style="color: black;"> </span><span style="color: black;">can</span><span style="color: black;"> </span><span style="color: black;">be</span><span style="color: black;"> </span><span style="color: black;">run</span><span style="color: black;"> </span><span style="color: black;">together,</span><span style="color: black;"> </span><span style="color: black;">individually</span><span style="color: black;"> </span><span style="color: black;">or</span><span style="color: black;"> </span><span style="color: black;">even</span><span style="color: black;"> </span><span style="color: black;">stand</span><span style="color: black;"> </span><span style="color: black;">alone.</span><span style="color: black;"> </span><span style="color: black;">IBM's</span><span style="color: black;"> </span><span style="color: black;">IPv6/VSE</span><span style="color: black;"> </span><span style="color: black;">supports</span><span style="color: black;"> </span><span style="color: black;">both</span><span style="color: black;"> </span><span style="color: black;">IPv4</span><span style="color: black;"> </span><span style="color: black;">and</span><span style="color: black;"> </span><span style="color: black;">IPv6</span><span style="color: black;"> </span><span style="color: black;">protocols</span><span style="color: black;"> </span><span style="color: black;">and</span><span style="color: black;"> </span><span style="color: black;">has</span><span style="color: black;"> </span><span style="color: black;">been</span><span style="color: black;"> </span><span style="color: black;">available</span><span style="color: black;"> </span><span style="color: black;">since</span><span style="color: black;"> </span><span style="color: black;">May</span><span style="color: black;"> </span><span style="color: black;">28,</span><span style="color: black;"> </span><span style="color: black;">2010.</span><br />
<span style="color: black;"><br />
</span><br />
<br />
<span style="color: black;">IPv6/VSE</span><span style="color: black;"> </span><span style="color: black;">IPv4</span><span style="color: black;"> </span><span style="color: black;">and</span><span style="color: black;"> </span><span style="color: black;">IPv6</span><span style="color: black;"> </span><span style="color: black;">Support</span><span style="color: black;"> </span> <br />
<table cellpadding="4" cellspacing="0" style="width: 673px;"><colgroup><col width="152"></col> <col width="95"></col> <col width="97"></col> <col width="295"></col> </colgroup><tbody>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: 1px solid #000000; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0.04in;" width="152"><b>IPv6/VSE</b><b> </b><b>Application</b></td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: 1px solid #000000; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0.04in;" width="95"><b>IPv4</b><b> </b><b>Support</b></td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: 1px solid #000000; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0.04in;" width="97"><b>IPv6-Enabled</b></td> <td style="border: 1px solid #000000; padding: 0.04in;" width="295"><b>Description</b></td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="152">BSTTFTPS</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="95">Yes</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="97">Yes</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="295">FTP Server</td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="152">BSTTFTPC</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="95">Yes</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="97">Yes</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="295">FTP Client</td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="152">BSTTVNET</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="95">Yes</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="97">Yes</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="295">TN3270E Server with DIRECT/LPR printing</td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="152">BSTTNTPS</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="95">Yes</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="97">Yes</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="295">Network Time Protocol Server</td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="152">BSTTNTPC</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="95">Yes</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="97">Yes</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="295">Network Time Protocol Client</td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="152">BSTTSLOG</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="95">Yes</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="97">Yes</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="295">System Logger Client</td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="152">BSTTMTPC</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="95">Yes</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="97">Yes</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="295">Mail Transport Protocol Client</td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="152">BSTTREXC</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="95">Yes</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="97">Yes</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="295">Remote Execution Client</td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="152">BSTTPING</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="95">Yes</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="97">Yes</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="295">Batch PING Utility</td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="152">BSTTGZIP</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="95">Yes</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="97">Yes</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="295">GZIP Data Compression</td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="152">REXX Automation</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="95">Yes</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="97">Yes</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="295">REXX Automation Support </td> </tr>
</tbody></table>
<br />
<br />
IPv6/VSE Support for IBM Applications<br />
<table cellpadding="4" cellspacing="0" style="width: 673px;"><colgroup><col width="236"></col> <col width="419"></col> </colgroup><tbody>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: 1px solid #000000; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0.04in;" width="236"><b>Application</b><b> </b> </td> <td style="border: 1px solid #000000; padding: 0.04in;" width="419"><b>Supported</b><b> </b><b>by</b><b> </b><b>IPv6/VSE</b></td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="236">CICS TS Web Services</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="419">Yes</td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="236">CICS TS Listener</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="419">Yes</td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="236">VTAPE</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="419">Yes</td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="236">Connector Server</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="419">Yes</td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="236">DB2 Server and DB2 Client</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="419">Yes</td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="236">MQSeries</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="419">Yes</td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="236">MQ Client</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="419">Yes</td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="236">PSF/VSE</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="419">Yes</td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="236">Linux Fast Path</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="419">Yes</td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="236">VSAM Redirector</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="419">Yes</td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="236">VSE Health Checker</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="419">Yes</td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="236">VSE Script Server</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="419">Yes</td> </tr>
<tr valign="TOP"> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in; padding-top: 0in;" width="236">VSE Navigator</td> <td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in; padding-top: 0in;" width="419">Yes</td> </tr>
</tbody></table>
<br />
<br />
Virtually all 3<sup>rd</sup> party software vendors are now working with IPv6/VSE and support their customers using IPv6/VSE with their products.<br />
<br />
<h3 class="western">
<span style="color: black;">IPv6</span><span style="color: black;"> </span><span style="color: black;">Programming</span><span style="color: black;"> </span><span style="color: black;">Interfaces</span></h3>
<span style="color: black;">Existing</span><span style="color: black;"> </span><span style="color: black;">APIs</span><span style="color: black;"> </span><span style="color: black;">have</span><span style="color: black;"> </span><span style="color: black;">been</span><span style="color: black;"> </span><span style="color: black;">extended.</span><span style="color: black;"> </span><span style="color: black;">The</span><span style="color: black;"> </span><span style="color: black;">Assembler</span><span style="color: black;"> </span><span style="color: black;">SOCKET</span><span style="color: black;"> </span><span style="color: black;">macro</span><span style="color: black;"> </span><span style="color: black;">API</span><span style="color: black;"> </span><span style="color: black;">has</span><span style="color: black;"> </span><span style="color: black;">been</span><span style="color: black;"> </span><span style="color: black;">extended</span><span style="color: black;"> </span><span style="color: black;">to</span><span style="color: black;"> </span><span style="color: black;">support</span><span style="color: black;"> </span><span style="color: black;">IPv6</span><span style="color: black;"> </span><span style="color: black;">addressing</span><span style="color: black;"> </span><span style="color: black;">and</span><span style="color: black;"> </span><span style="color: black;">64-bit</span><span style="color: black;"> </span><span style="color: black;">virtual</span><span style="color: black;"> </span><span style="color: black;">storage</span><span style="color: black;"> </span><span style="color: black;">addresses.</span><span style="color: black;"> </span><span style="color: black;">The</span><span style="color: black;"> </span><span style="color: black;">EZASOKET</span><span style="color: black;"> </span><span style="color: black;">and</span><span style="color: black;"> </span><span style="color: black;">EZASMI</span><span style="color: black;"> </span><span style="color: black;">API</span><span style="color: black;"> </span><span style="color: black;">have</span><span style="color: black;"> </span><span style="color: black;">also</span><span style="color: black;"> </span><span style="color: black;">been</span><span style="color: black;"> </span><span style="color: black;">extended.</span><span style="color: black;"> </span><span style="color: black;">EZASOKET/EZASMI</span><span style="color: black;"> </span><span style="color: black;">support</span><span style="color: black;"> </span><span style="color: black;">for</span><span style="color: black;"> </span><span style="color: black;">GETADDRINFO,</span><span style="color: black;"> </span><span style="color: black;">FREEADDRINFO,</span><span style="color: black;"> </span><span style="color: black;">NTOP</span><span style="color: black;"> </span><span style="color: black;">and</span><span style="color: black;"> </span><span style="color: black;">PTON</span><span style="color: black;"> </span><span style="color: black;">with</span><span style="color: black;"> </span><span style="color: black;">the</span><span style="color: black;"> </span><span style="color: black;">new</span><span style="color: black;"> </span><span style="color: black;">address</span><span style="color: black;"> </span><span style="color: black;">family</span><span style="color: black;"> </span><span style="color: black;">of</span><span style="color: black;"> </span><span style="color: black;">AF_INET6</span><span style="color: black;"> </span><span style="color: black;">is</span><span style="color: black;"> </span><span style="color: black;">available.</span><span style="color: black;"> O</span><span style="color: black;">f</span><span style="color: black;"> </span><span style="color: black;">course,</span><span style="color: black;"> </span><span style="color: black;">the</span><span style="color: black;"> </span><span style="color: black;">LE/C</span><span style="color: black;"> </span><span style="color: black;">Socket</span><span style="color: black;"> </span><span style="color: black;">API</span><span style="color: black;"> </span><span style="color: black;">has</span><span style="color: black;"> </span><span style="color: black;">been</span><span style="color: black;"> </span><span style="color: black;">IPv6-enabled</span><span style="color: black;"> </span><span style="color: black;">too.</span><br />
<span style="color: black;"><br />
</span><br />
<span style="color: black;">The</span><span style="color: black;"> IBM </span><span style="color: black;">IPv6/VSE</span><span style="color: black;"> </span><span style="color: black;">Programming</span><span style="color: black;"> </span><span style="color: black;">Guide</span><span style="color: black;"> has </span><span style="color: black;">all</span><span style="color: black;"> </span><span style="color: black;">the</span><span style="color: black;"> </span><span style="color: black;">details</span><span style="color: black;"> </span><span style="color: black;">on</span><span style="color: black;"> </span><span style="color: black;">the</span><span style="color: black;"> </span><span style="color: black;">IPv6-enablement</span><span style="color: black;"> </span><span style="color: black;">features</span><span style="color: black;"> </span><span style="color: black;">in</span><span style="color: black;"> </span><span style="color: black;">these</span><span style="color: black;"> </span><span style="color: black;">API's.</span><br />
<span style="color: black;"><br />
</span><br />
<br />
<h3 class="western">
SSL and IPSec</h3>
During the 2011 GSE conference (October 2011 in Berlin Germany) Barnard Software, Inc. (BSI) issued a Statement of Direction that indicated BSI would make available both SSL and IPSec solutions for IPv6/VSE in a future release. At the time of the writing of this article the SSL support was undergoing beta test. Availability of these additions to IPv6/VSE is expected to become generally available (GA) during 2012.<br />
<br />
<h2 class="western">
Summing it up</h2>
There you have it. z/VSE is IPv6 ready with IBM's IPv6/VSE. IBM's IPv6/VSE provides <span style="color: black;"><i><b>both</b></i></span><span style="color: black;"> </span><span style="color: black;">a</span><span style="color: black;"> </span><span style="color: black;"><i>full-function</i></span><span style="color: black;"><i> </i></span><span style="color: black;"><i>IPv4</i></span><span style="color: black;"><i> </i></span><span style="color: black;"><i>stack</i></span><span style="color: black;"><i> </i></span><span style="color: black;"><i>and</i></span><span style="color: black;"><i> </i></span><span style="color: black;"><i>applications</i></span><span style="color: black;"> </span><span style="color: black;">as</span><span style="color: black;"> </span><span style="color: black;">well</span><span style="color: black;"> </span><span style="color: black;">as</span><span style="color: black;"> </span><span style="color: black;">a</span><span style="color: black;"> </span><span style="color: black;">full-function</span><span style="color: black;"> </span><span style="color: black;">IPv6</span><span style="color: black;"> </span><span style="color: black;">stack</span><span style="color: black;"> </span><span style="color: black;">and</span><span style="color: black;"> </span><span style="color: black;">applications.</span><span style="color: black;"> IPv6/VSE is a </span><span style="color: black;">single</span><span style="color: black;"> </span><span style="color: black;">product</span><span style="color: black;"> </span><span style="color: black;">providing</span><span style="color: black;"> </span><span style="color: black;">a</span><span style="color: black;"> </span><span style="color: black;">complete</span><span style="color: black;"> </span><span style="color: black;">solution,</span><span style="color: black;"> </span><span style="color: black;">TCP/IP</span><span style="color: black;"> </span><span style="color: black;">stacks,</span><span style="color: black;"> </span><span style="color: black;">IPv6-enabled</span><span style="color: black;"> </span><span style="color: black;">applications</span><span style="color: black;"> </span><span style="color: black;">and</span><span style="color: black;"> </span><span style="color: black;">programming</span><span style="color: black;"> </span><span style="color: black;">interfaces.</span><span style="color: black;"> </span><span style="color: black;">With</span><span style="color: black;"> </span><span style="color: black;">IPv6/VSE</span><span style="color: black;"> </span><span style="color: black;">your</span><span style="color: black;"> </span><span style="color: black;">z/VSE</span><span style="color: black;"> </span><span style="color: black;">system</span><span style="color: black;"> </span><span style="color: black;">is</span><span style="color: black;"> </span><span style="color: black;">IPv4</span><span style="color: black;"> </span><span style="color: black;">and</span><span style="color: black;"> </span><span style="color: black;">IPv6</span><span style="color: black;"> </span><span style="color: black;">ready</span><span style="color: black;"> </span><span style="color: black;">to</span><span style="color: black;"> </span><span style="color: black;">go.</span>Jeffhttp://www.blogger.com/profile/11567371917298802617noreply@blogger.com0tag:blogger.com,1999:blog-8156209415524873303.post-65110453303800909862010-10-11T05:27:00.000-07:002010-10-11T05:27:39.060-07:00Optimizing Hipersockets in z/VSE<span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">Let's review a bit about the z/VSE Hipersockets network interface ...</span><br />
<div><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"><br />
</span> </div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">Hipersockets is a synchronous method of transferring data. The sending data transfer does not complete until the data is received by the destination. This is a big factor. If the destination system is busy this can have a large impact on throughput.</span> </span><br />
<div><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"><br />
</span> </div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">Hipersockets is very much is a CPU function. In general, the faster the CPU, the faster the Hipersocket interface can operate. Limiting CPU on an LPAR or virtual machine (VM) limits throughput.<br />
<br />
Are all Hipersocket hosts using the same large MTU? The maximum MTU size of a Hipersockets network interface is determined by the frame size specified in the IOCP Configuration of the IQD CHPID through the OS parameter.<br />
<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"> OS Frame Size vs. Maximum MTU:<br />
OS = 00 : MTU = 8KB<br />
OS = 40 : MTU = 16KB<br />
OS = 80 : MTU = 32KB<br />
OS = C0 : MTU = 64KB</span><br />
<br />
Choose the OS parameter carefully. The value you choose will be transferred for every transfer even if there is only 1 byte to transfer.</span> </span></div></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"><br />
</span> </span></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">And, now to continue ...</span></span></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"><br />
</span> </span></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">If you read my last posting about TCP/IP throughput rates you know that the first limitation to throughput is the size of the TCP/IP stack's transmit buffer. BSI customers can adjust this value using the SBSIZE stack startup parameter. Setting the SBSIZE to 65024 (SBSIZE 65024, the maximum value) may help throughput using a Hipersocket network interface. </span><i><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">Warning: Changing this value may actually reduce throughput. Your mileage will vary and testing is required to optimize this value. Do not change this value without contacting BSI first.</span></i></span></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><i><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"><br />
</span> </i></span></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">Set the MTU size of the Hipersocket network interface to 57216. This is the maximum value allowed and is specified on the LINK statement in the stack startup commands.</span></span></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"><br />
</span> </span></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">Now we have ...</span></span></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">A 64K transmit buffer</span></span></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">A 56K MTU</span></span></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"><br />
</span> </span></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">The TCP Receive Window and Maximum Segment Size are not directly controllable by customers. However, when using Hipersockets, the TCP Receive Windows should be 64K and the MSS will be slightly less than the MTU size. All of this provides the framework for having the maximum possible data sent in each packet.</span></span></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"><br />
</span> </span></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">In my posting on 'Care and Feeding of Your z/VSE TCP/IP Stack' I talk about keeping the stack fed. You keep the stack fed by making sure that when it wants data to send, there is data in the transmit buffer. One way to do this is to use large application buffers (for example 1MB in size). Fill a large buffer with data and issue a single socket send request to transfer the data. When you are using a Hipersocket network interface with a 64K transmit buffer and a 56K MTU, using a 64K buffer to send data into the stack is not as efficient as using a 1M send buffer.</span></span></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"><br />
</span> </span></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">When you are using the BSI BSTTFTPC batch FTP application, you can tell BSTTFTPC to use large buffer socket send operations by specifying<br />
// SETPARM MAXBUF=YES in the BSTTFTPC JCL.</span></span></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"><br />
</span> </span></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">Are there any other limitations on throughput? Maybe.</span></span></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"><br />
</span> </span></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">The IBM IJBOSA driver is used to access the Hipersocket network interface. Is IJBOSA a limitation to performance? In general, no. IJBOSA's design is good. However, understanding some of the workings of the IJBOSA routine can help you to understand overall Hipersocket performance picture.</span></span></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"><br />
</span> </span></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">The TCP/IP stack can send multiple packets into the IJBOSA routine in a single call. Currently the BSI TCP/IP stack supports sending up to 8 packets in a single call. Why was the number 8 chosen? Because</span></span><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"> IJBOSA </span></span><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">provides for a default of 8 buffers (I know of no way to change the number of IJBOSA buffers used).</span></span></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"><br />
</span> </span></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">If the stack attempts to send packets to IJBOSA and all of the its buffers are in use, the IJBOSA routine returns a return coding indicating the Hipersocket device is busy. At this point the TCP/IP stack must wait and send the packets again. The BSI TCP/IP stack does this by simply dropping the packets and allowing normal TCP retransmission to resend the packets in 10ms to 20ms. This retransmission delay allows the buffer busy condition to clear. You can see increasing the number of IJBOSA buffers may help throughput by reducing retransmission delays. However, this is only true if the machine receiving the data does so in an efficient and timely fashion. If the receiving machine is busy for some reason increasing the number of IJBOSA buffers available will not help transfer rates.</span></span></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"><br />
</span> </span></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">Because TCP throughput is limited by the size of the TCP Receive Window (64K), only 2 buffers are likely being used for each bulk data socket. The IJBOSA's 8 buffers provides for 4 high speed bulk data transfer sockets operating at the same time. I suspect that for most customers, 8 buffers is plenty.<br />
</span></span><br />
<span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"></span></span><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; line-height: 18px;">Still, the question remains, how can I tell if Hipersocket busy conditions are a problem for me?</span><br />
<span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; line-height: 18px;"><br />
Well, first, look for this message on the z/VSE console ...</span><br />
<span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; line-height: 18px;">R1 0497 0S39I ERROR DURING OSA EXPRESS PROCESSING,REASON=0046 CUU=xxxx<br />
This message is output by the IJBOSA routine the first time a busy condition is encountered. Remember, this message is output only once and will let you know a busy condition occurred.<br />
<br />
Since the BSI TCP/IP stack's track TCP retransmission activity, the TCP retransmit counter can be used as a proxy for determining the number of Hipersocket busy conditions. To display the TCP/IP stack statistics you can use the IP LOGSTATS command.</span><br />
<span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; line-height: 18px;"></span><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; line-height: 18px;"><br />
For example, </span><br />
<span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"></span><br />
<span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">- MSG BSTTINET,D=IP LOGSTATS</span><br />
<span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">- Run your job that uses the Hipersocket network interface</span><br />
<span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">- MSG BSTTINET,D=IP LOGSTATS</span><br />
<span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">- MSG BSTTINET,D=SEGMENT * $$ LST CLASS=...<br />
<br />
Look in the BSTTINET SYSLST log output and locate these messages ...<br />
</span><br />
<span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">From the 1st IP LOGSTATS command ...</span><br />
<span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">01-Oct-2010 10:33:15 F6 BSTT613I TcpOutSegs: 0</span><br />
<span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">01-Oct-2010 10:33:15 F6 BSTT613I TcpRetransSegs: 0</span><br />
<span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"><br />
From the 2nd IP LOGSTATS command ...<br />
<span class="Apple-style-span" style="font-family: 'Times New Roman';"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">01-Oct-2010 10:33:15 F6 BSTT613I TcpOutSegs: 1563218</span></span></span><br />
<span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">01-Oct-2010 10:33:15 F6 BSTT613I TcpRetransSegs: 4493</span><span class="Apple-style-span" style="white-space: pre-wrap;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"> </span></span></span><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; line-height: 18px; white-space: pre-wrap;"><br />
</span><br />
<span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; line-height: 18px; white-space: pre-wrap;">The TCP retransmission rate is about 0.28%. Any rate under 1% is probably acceptable. Having 4493 segments retransmitted results in a delay of about 45 and 90 seconds. This probably sounds like a lot of time but to achieve this level of retransmission activity I had to run 4 batch FTP jobs concurrently, each running 18 minutes. Eliminating the retransmission would reduce the run time of each batch FTP by only about 15 to 20 seconds.</span><br />
<span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"></span><br />
<span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"></span><br />
<span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"></span><br />
<span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; white-space: pre-wrap;"><br />
</span></div></span></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;">Well, there you have it, an optimized Hipersockets network interface.</span></span></div><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-family: 'trebuchet ms', verdana, arial, sans-serif; line-height: 18px;"><span class="Apple-style-span" style="font-size: small;"><br />
</span></span></div>Jeffhttp://www.blogger.com/profile/11567371917298802617noreply@blogger.com0tag:blogger.com,1999:blog-8156209415524873303.post-7879016652199776242010-09-24T13:28:00.000-07:002013-12-05T07:29:33.162-08:00The Care and Feeding of Your z/VSE TCP/IP StackI recently suggested to a customer that they might get better throughput with their application by changing the priority so that the application was running higher priority than the TCP/IP stack partition. I received a questioning response. Really? Doesn't the stack always run higher priority than the applications it services? My answer was, nice rule but not always true.<br />
<div>
<br /></div>
<div>
By way of explanation, we can look at throughput as the care and feeding of your application or of the TCP/IP stack. </div>
<div>
<br /></div>
<div>
Feeding the TCP/IP stack is something you do when your application is sending data. Your application feeds the TCP/IP stack data. The data is queued into the stack's transmit buffer. Keeping the transmit buffer full makes sure the stack always has data to transmit. Once the stack has taken all the data sent and queued it into the transmit buffer, the application's send request is posted.</div>
<div>
<br /></div>
<div>
You can see that if the stack is busy and your application is running lower priority than the stack, your application may not get dispatched to send more data until a later time. It is possible that the stack will transmit all the data in the transmit buffer before your application can send more data. This leaves the the transmit buffer empty and can reduce throughput.</div>
<div>
<br /></div>
<div>
One way to ensure the stack has data available to queue into the transmit buffer is to use large send buffers. Large send buffers (for example, 1MB send buffers) can help keep the stack's transmit buffer full of data to send. Using large send buffers is most helpful when you are using network interfaces that have large MTU sizes, like a Hipersockets network interface. </div>
<div>
<br /></div>
<div>
Feeding your application is something the TCP/IP stack does. When data arrives from the network it is placed in the stack's receive buffer and the application is posted that data is available. The application must then issue a read for the data. If the application is running lower priority than the stack it may be some time before the application actually gets to run to read and process the data. In fact, in the worst case, the stack's receive buffer may actually become full forcing the stack to close the TCP window and stopping the data flow from the remote host.</div>
<div>
<br /></div>
<div>
Wow, it sounds like I should run all my applications higher priority than the TCP/IP stack. <i>No, not at all</i>. In practice, only bulk data transfer applications run into these types of problems. </div>
<div>
<br /></div>
<div>
The general rule of running the stack higher priority than the applications it services would apply to almost all applications. For example, interactive and multi-user applications like CICS TS, your TN3270E server and even DB2 (as examples) actually benefit from having the TCP/IP stack running at a higher priority. </div>
<div>
<br /></div>
<div>
In addition, applications that are primarily sending data out into the network generally show little throughput increase by running higher priority than the TCP/IP stack. Keeping the stack's transmit buffer full is generally pretty easy even if your application is running lower priority than the TCP/IP stack. However, this assumes that the application has access
to the CPU when it is needed to allow it to keep the stack's transmit
buffer full.</div>
<div>
<br /></div>
<div>
What does this leave? Perhaps a batch FTP retrieving data from the network, your FTP server partition or the IBM VTAPE (TAPESRVR) partition might benefit from running higher priority than the TCP/IP stack partition. </div>
<div>
<br /></div>
<div>
So there you have it. You can make a case for running some applications higher priority than the TCP/IP stack.</div>
Jeffhttp://www.blogger.com/profile/11567371917298802617noreply@blogger.com0tag:blogger.com,1999:blog-8156209415524873303.post-40811564419462242132010-09-24T08:01:00.000-07:002010-09-24T15:03:43.686-07:00z/VSE TCP/IP Throughput RatesI receive a number of queries about TCP/IP transfer (or throughput) rates every year. So, I thought I would make some comments about the issue.<div><br /></div><div>At a high level, the concept is simple. The sending application sends data to a receiving application. Great! So, how much data can we send and how fast?</div><div><br /></div><div>Basically, we would like to send as much data as possible in every request. Sounds simple, so lets start there. I allocate a large buffer, perhaps 1MB, in my application, fill it with data and send it all to the TCP/IP stack in a single request.</div><div><br /></div><div>OK, the TCP/IP stack probably can not handle all that data at once, so lets look at how the request is broken down. First, the application's data is queued into a transmit buffer within the TCP/IP stack partition. The TCP/IP transmit buffer is probably limited to 32K to 64K in size. So, the size of the transmit buffer is the 1st limitation.</div><div><br /></div><div>Once the data has been queued into the transmit buffer, the stack can begin the process of creating a packet to transmit the data. The 2nd limitation is the MTU (Maximum Transmission Unit) of the network interface being used. On a typical Ethernet network this is probably 1500 bytes. If you have z/VSE connected to a Gb (Gigabit) network you can take advantage of jumbo Ethernet frames which have an MTU size of 9000 bytes. If you are using a Hipersocket interface then the MTU size can move up to as much as 64K.</div><div><br /></div><div>Well, assuming a 32K transmit buffer and an OSA Express QDIO Gb network interface, the stack will take about 9000 bytes (less headers, etc.) from the transmit buffer to create a packet. But, wait, can we really send 9000 bytes? Maybe, there are 2 more factors to consider.</div><div><br /></div><div>The 3rd limitation is the MSS (Maximum Segment Size) negotiated by the local and remote host's TCP/IP stack when the socket was created. For example, if the sending TCP/IP stack supports an 8K MSS and the receiving TCP/IP stack supports only a 1500 byte MSS ... Guess what? The 1500 byte MSS wins.</div><div><br /></div><div>The 4th limitation is the amount of space (number of bytes) available in the remote host's TCP Receive Window. TCP uses a 64K window to manage data transmission. Up to 64K of data can be transmitted to the remote host without waiting for an acknowledgement. Each byte of data sent must be acknowledged by the remote host. When an ACK packet is sent the sequence number of the last byte of data received and size of the current TCP Receive Window included. The sending TCP/IP stack can not send more data than will fit into the currently advertised TCP Receive Window.</div><div><br /></div><div>Wow. OK, we started with 1MB of data being sent to the stack, 32K was queued into the transmit buffer. Now, of the 32K available in the transmit buffer the amount of data sent in a single packet is the smaller of the MTU size, Maximum Segment Size and the TCP Receive Window size.</div><div><br /></div><div>As an example, if the MTU is 9000, TCP Receive Window 64K and MSS 1500, guess what? The amount of data sent in a single packet is 1500 bytes (less headers, etc.). Our 32K transmit buffer full of data will take around 22 packets to transmit.</div><div><br /></div><div>As the packets are transmitted, the local TCP/IP stack is also watching for ACK packets from the remote host TCP/IP stack. The sooner the ACK packet arrives from the remote host, the sooner the local stack can begin or continue transferring data. The big factor here? Network speed and the number of hops needed to get the packet to its destination. In a word? Latency.</div><div><br /></div><div>Having a high speed network is wonderful but latency can kill performance. You are always at the mercy of the slowest link.</div><div><br /></div><div>I will discuss this more in another posting when I revisit using Hipersockets in z/VSE and consider some of the performance issues involved in optimizing throughput over a Hipersocket network interface.</div><div><br /></div><div><br /></div><div><br /></div><div><br /></div>Jeffhttp://www.blogger.com/profile/11567371917298802617noreply@blogger.com0tag:blogger.com,1999:blog-8156209415524873303.post-67602368654828174882009-02-02T17:53:00.000-08:002009-02-02T18:28:36.843-08:00CICS TS Performance (Part 2)I ran into a problem implementing the changes I wrote abut in my last posting.<br /><br />Seems CICS uses two types of VTAM RECEIVE requests. The RECEIVE OPTCD=ANY only solves half the problem. There are times CICS switches the LU being used into CS (Continue Specific) mode. A this point CICS uses RECEIVE OPTCD=SPEC. The buffer size used for these requests is not a SIT parameter.<br /><br />The solution to the problem of setting the RECEIVE OPTCD=SPEC buffer size is to set the CICS TYPETERM IOAREALEN to 32767. Also, you must cold start CICS to have this take effect. The default value for the IBM supplied TYPETERMs appears to be a value ranging from 256 to 512 (but I admit I did not check all of them).<br /><br />With RAMAX set to 32767 and the TYPETERM IOAREALEN set to 32767 all CICS RECEIVEs (ANY and SPEC) will use large buffers. Storage used for these buffers is located in 31-bit storage.<br /><br />With virtual storage being cheap these days, the better trade off is to use large buffers and eliminate the CPU overhead/dispatching/etc involved with CICS doing multiple RECIEVE operations.<br /><br />From the CICS Performance Guide ...<br /><br />4.3.1 Terminal input/output area (TYPETERM IOAREALEN or TCT TIOAL)<br /><br />If you are using VTAM, the IOAREALEN keyword of an RDO TYPETERM resource definition determines the initial size of the terminal input/output area (TIOA) to be passed onto a transaction for each terminal. The syntax for IOAREALEN is ({0|value1},{0|value2}). This operand is used only for the first input message for all transactions.<br /><br />4.3.1.1 Effects<br /><br />When value1,0 is specified for IOAREALEN, value1 is the minimum size of the terminal input/output area that is passed to an application program when a RECEIVE command is issued. If the size of the input message exceeds value1, the area passed to the application program is the size of the input message.<br /><br />When value1, value2 is specified, value1 is the minimum size of the terminal input/output area that is passed to an application program when a RECEIVE command is issued. Whenever the size of the input message exceeds value1, CICS will use value2. If the input message size exceeds value2, the node abnormal condition program sends an exception response to the terminal.<br /><br />One value defining the minimum size is used for non-SNA devices, while two<br />values specifying both the minimum and maximum size are used for SNA devices.<br /><br />...<br /><br />To verify this I modified these TYPETERMs for testing ...<br /><span style="font-family: monospace;"> </span>E G(VSETYPE)<br /><pre wrap=""> ENTER COMMANDS<br /> NAME TYPE GROUP<br />+ VSE3277 TYPETERM VSETYPE<br /> VSE3278Q TYPETERM VSETYPE<br /> VSE32782 TYPETERM VSETYPE<br /> VSE32783 TYPETERM VSETYPE<br /> VSE32784 TYPETERM VSETYPE<br /> VSE32785 TYPETERM VSETYPE<br /> VSE3279G TYPETERM VSETYPE<br /> VSE32792 TYPETERM VSETYPE<br /> VSE32793 TYPETERM VSETYPE</pre>IOAREALEN was set as follows ...<br />APPLICATION FEATURES<br />BUildchain ==> No No | Yes<br />USerarealen ==> 255 0-255<br />Ioarealen ==> 32767 , 00000 0-32767<br />UCtran ==> Tranid No | Yes | Tranid<br /><br />Since these are non-SNA TN3270(E) sessions I modified only the first value. In fact, for SNA sessions the process is more complex.<br /><br />After changing the value for the TYPETERMs we use I ran some traces. Sure enough the IOAREALEN is used for the buffer size on RECEIVE OPTCD=SPEC for non-SNA sessions. Actually, if you are interested, the value you specify is rounded up based on some algorithm. Specifying 32767 actually causes CICS to issue a RECEIVE for x'800C' (32780) bytes.<br /><br />Since most CICS 3270 access these days is through a TN3270E server, the actual VTAM communication is really just program-to-program (PLU-to-SLU). Sessions involved are non-SNA. I understand increasing buffer sizes for SNA sessions would probably be another more involved solution.<br /><br />I would set RAMAX=32767 and change the non-SNA TYPETERMs to specify IOAREALEN=32767<br /><br />So, there you have it.Jeffhttp://www.blogger.com/profile/11567371917298802617noreply@blogger.com0tag:blogger.com,1999:blog-8156209415524873303.post-57141949980019155722008-10-28T06:26:00.000-07:002008-10-28T07:10:21.883-07:00CICS TS PerformanceIn the process of debugging a problem for a customer I found that CICS TS was doing this ...<br /><br />. VTAM RECEIVE ANY is issued for a length of 256 bytes<br /><br />. At some point later the receive is completed and the RPL EXIT scheduled<br />. RPL EXIT executes issuing a VTAM CHECK Macro<br />. RPL EXIT processes the 1st 256 bytes of data<br />. RPL EXIT allocates a buffer for the remaining input bytes<br />. RPL EXIT issues a VTAM RECEIVE SPECific to read the remaining bytes.<br />. RPL EXIT completes<br /><br />. VTAM has data available to complete RECEIVE Specific<br />. RPL EXIT is scheduled<br />. RPL EXIT executes issuing a VTAM CHECK macro<br />. RPL EXIT processed the remaining data and posts CICS <br />. RPL EXIT issues a RESETSR to change the CS/CA mode back to Continue Any<br />. RPL EXIT completes<br /><br />Thinking that this process was messy and a lot of CPU overhead I discovered the RAPOOL and RAMAX SIT parameters. The RAPOOL parameter controls the number of RECEIVE ANY RPL CICS has available. The default is 50 and is fine for most systems. The RAMAX value is the size of the RECEIVE ANY buffer. The default is 256 and is terrible. Since these buffers are allocated out of 31-bit storage using a value of 8096 is much better. 8096 is a good value for a 3270 receive buffer. Virtually any 3270 input will fit into this buffer with a single RECEIVE request. And, after all 50 x 8K is only 400K of 31-bit buffer space.<br /><br />After changing RAPOOL=50,RAMAX=8096 I looked into the performance again.<br /><br />. VTAM RECEIVE ANY is issued for a length of 8096 bytes<br /><br />. At some point later the receive is completed and the RPL EXIT scheduled<br />. RPL EXIT executes issuing a VTAM CHECK Macro<br />. RPL EXIT processes the all of the input data and posts CICS<br />. RPL EXIT completes<br /><br />You can see the process is much shorter, fewer VTAM macros are used and several passes through the dispatcher and waits are eliminated. I would estimate a 60% reduction (or more) in CPU usage for this process too.<br /><br />For those of you still running CICS/VSE 2.3 try RAPOOL=10,RAMAX=8096 and you will still see the improvement.<br /><br />Enjoy.<br /><br />Regards,<br />JeffJeffhttp://www.blogger.com/profile/11567371917298802617noreply@blogger.com0tag:blogger.com,1999:blog-8156209415524873303.post-18052601566035435752008-08-19T09:54:00.000-07:002008-08-19T11:47:50.243-07:00Simple Network Tuning for the Mainframe SysprogThere have been some interesting postings on the VSE-L list this week about throughput to Windows based PCs. So, I thought I would cover some basic network tuning points.<br /><br />First, use Ethereal/Wireshark (free open source packet sniffer) to get a trace of the data transfer (E.g., FTP) you are interested in tuning. This trace will tell you a lot about the data transfer.<br /><br />Now look at the size of the packets being transferred. In the old days of the Internet (dial-up days) it was common to use packets of 576 bytes. In fact, all TCP/IP stacks are required to handle this size packet. However, now that Ethernet is pretty much the standard, look for 1500 byte packets. 1500 bytes includes the 40 byte IP header and 1460 bytes of data. I am ignoring the 18 byte Ethernet header in these numbers.<br /><br />If the 2 hosts (mainframe and PC) have Gigabit Ethernet adapters AND they are connected to a Gigabit switch then you might expect to see jumbo Ethernet frames. Jumbo Ethernet frames are usually 9000 bytes.<br /><br />In a bulk data transfer you will normally see a bunch of packets of the same size. If this size is not 1500 bytes then either the MTU size is set incorrectly or the MSS (Maximum Segment Size) is not correct. Usually it is the MSS that is incorrect. When 2 hosts establish a connection connection (socket) each host sends what it wants to use as a segment size. The smallest value wins! Windows PC's like to a segment size of 536 for some types of applications (E.g., web servers). If the MSS is set to 536 bytes it will take 2.7 of these smaller packets to send as much data as can be contained in a single packet with an MSS of 1460 bytes.<br /><br />The next item to look for is the TCP Window size. This value should be something close to 64K minus one (65535). Windows always wants to use a TCP window size that is an exact multiple of the segment size. With an MSS of 1460 you can get 44 segments in a 64K TCP window. The actual size is 1460 * 44 = 64240 (x'FAF0).<br /><br />These two values are set by registry entries and there are various scripts and utilities available around the net that will set these values for you. <br /><br />Another source of throughput problems is TcpAckFrequency.<br /><br />When Windows receives a packet it will wait for 200ms for another packet to arrive before sending an ACK. Why? Windows hopes that it can send a single ACK for both packets. Why does this slow down a transfer? 200ms is a very long time at network speeds. Why would this come into play at all for an FTP? If a host is sending data and has sent one packet but there is not enough space available in the TCP Window to send the next packet, the sender will wait for an ACK of the data already sent. At the same time, Windows is waiting for 200ms for another packet to come in. This does not have to happen very often for these 200ms delays to add up.<br /><br />Couple of good web pages to look at are ...<br />http://smallvoid.com/article/winnt-nagle-algorithm.html<br />http://support.microsoft.com/kb/Q328890<br /><br />If you follow the instructions on these web pages you can add a registry entry for TcpAckFrequency Full_DWORD = 1. This will disable the 200ms ACK delay Windows uses as a timer for delayed ACK processing. I have seen disabling this feature result in a 10x improvement in throughput. Your mileage will vary!<br /><br />The last two items to look at for data transfer throughput are your CPU and memory. If data transfer rates are important get the fastest CPU you can afford and the maximum amount of memory your motherboard will support. If Windows has lots of memory it will cache the data from the transfer in memory and not spend time writing the data to disk until the transfer has finished.<br /><br />Well, there you have basic network tuning for the mainframe system programmer.Jeffhttp://www.blogger.com/profile/11567371917298802617noreply@blogger.com0tag:blogger.com,1999:blog-8156209415524873303.post-14541326809619096172007-10-09T09:50:00.000-07:002007-10-09T10:01:16.840-07:00Hipersockets in VSE/ESA and z/VSEHipersockets very much is a CPU function. In general, the faster the CPU, the faster the transfer.<br /><br />Random thoughts ...<br /><br />The processor and processor level you have. Both make a difference.<br />Is your microcode current for the processor you have?<br /><br />Are any of the LPARs being used CPU limited?<br />Hipersockets is a CPU (microcode) function. Limiting CPU on an LPAR limits throughput.<br /><br />Hipersockets is a synchronous method of transferring data. Sending data does not complete until the data is received. This is a big factor. If the receiving system is busy ...<br /><br />QDIO is asynchronous. This does effect throughput. Testing I have done shows that QDIO OSA Express can be faster than using a Hipersocket connection. <br /><br />Is z/VM in the picture?<br />If so, what z/VM and is it current?<br />There are APARs effecting Hipersocket performance under z/VM.<br /><br />VSE. What version of VSE/ESA or z/VSE?<br />There are APARs related to performance for VSE/ESA 2.7 (DY46197 comes to mind).<br />This may or may not apply to z/VSE.<br /><br />Are the hosts using Hipersocket devices on a separate subnet?<br /><br />Are all Hipersocket hosts using the same large MTU<br />The maximum MTU size of a Hipersockets is determined in the IOCP Configuration of the IQD CHPID through the OS parameter.<br /><br />Maximum MTU:<br />OS = 00 : MTU = 8K<br />OS = 40 : MTU = 16KB<br />OS = 80 : MTU = 32KB<br />OS = C0 : MTU = 56KB<br /><br />Choose the OS parameter carefully. The value you choose will be transferred for every transfer even if there is only 1K to transfer.<br /><br />What is the PRTY of the FTP client/server partition?<br />Is it higher PRTY than the stack?<br />Are other batch jobs competing for CPU time?<br /><br />What is the access method being used?<br />POWER is slowest, VSAM fastest.<br /><br />What other jobs are running on the system? LPARs?<br />Other activity uses CPU that could be used by Hipersockets.Jeffhttp://www.blogger.com/profile/11567371917298802617noreply@blogger.com0tag:blogger.com,1999:blog-8156209415524873303.post-28706720530792891512007-10-04T12:26:00.000-07:002007-10-04T12:38:18.048-07:00Activating CWS on a z/VSE 3.1.1 SystemThis blog will show the steps I went through to activate CICS Web Services on a base install z/VSE 3.1.1 system. The process is pretty simple and here is what I did ...</span></p> <p style="margin-bottom: 0in;"><span style="font-family:Arial, sans-serif;">First, I installed z/VSE 3.1.1 from the z/VSE 3.1.1 refresh tapes. Since this was done on a z/VM system, I created a new z/VSE 3.1.1 virtual machine with 2 3390-3's to handle this. After completing the z/VSE 3.1.1 install I did some basic customization and started the POWER RDR and LST devices. Now I can submit jobs from CMS.</span></p> <p style="margin-bottom: 0in;"><span style="font-family:Arial, sans-serif;">I submitted a job from my CMS user to define a new sublibrary called PRD2.TCPIP. Then, I submitted the INSTTOOL.JOB TCP/IP-TOOLS installion job and released the job to run. I installed TCP/IP-TOOLS into the new PRD2.TCPIP sublibrary.</span></p> <p style="margin-bottom: 0in;"><span style="font-family:Arial, sans-serif;">To startup the TCP/IP stack, I did the usual things. Defined the network interface, Cataloged the BSTTPARM.A license member, etc. and brought up the BSTTINET TCP/IP stack. Once the stack was up and running (tested using the MSG BSTTINET,D=IP PING ... command) I brought up our BSTTFTPS FTP server.</span></p> <p style="margin-bottom: 0in;"><span style="font-family:Arial, sans-serif;">Next I used the CMS FTP client to FTP into my new z/VSE 3.1.1 system. Once there, I FTP'ed the CICSICCF JCL from the POWER RDR queue to my CMS user. This is a simple way to get the currently running JCL.</span></p> <p style="margin-bottom: 0in;"><span style="font-family:Arial, sans-serif;">At this point, I used xedit to edit the CICS JCL and added the * $$ JOB and * $$ EOJ which POWER does not store in its data file.</span></p> <p style="margin-bottom: 0in;"><span style="font-family:Arial, sans-serif;">Then I added the following JCL to the CICS job ...</span></p> <p style="margin-bottom: 0in;"><span style="font-family:Arial, sans-serif;">1) // OPTION SYSPARM='00' Stack ID<br />2) Added PRD2.TCPIP first in the LIBDEF SEARCH chain<br />3) Added the BSTTWAIT JCL</span></p> <p style="margin-bottom: 0in;"><span style="font-family:Arial, sans-serif;">// EXEC BSTTWAIT,SIZE=BSTTWAIT<br />/*</span></p> <p style="margin-bottom: 0in;"><span style="font-family:Arial, sans-serif;">Note: BSTTWAIT sets the VSE JCL return code. RC=0 indicates the BSTTINET TCP/IP stack is up and available. RC=8 indicates the TCP/IP stack was not started within 10 minutes. If you want to be able to wait more than 10 minutes using BSTTWAIT, use VSE conditional JCL to re-execute the step if the return code is equal to 8.</span></p> <p style="margin-bottom: 0in;"><span style="font-family:Arial, sans-serif;">4) Add TCPIP=YES to the CICS SYSIPT overrides on both // EXEC DFHSIP steps</span></p> <p style="margin-bottom: 0in;"><span style="font-family:Arial, sans-serif;">Now your CICS TS JCL is ready to go. However, a couple of more things to do before you bring up CICS TS CWS for the first time.</span></p> <p style="margin-bottom: 0in;"><span style="font-family:Arial, sans-serif;">Now logon to your current CICSICCF system to copy and activate the TCPIP CEDA entries.</span></p> <p style="margin-bottom: 0in;"><span style="font-family:Arial, sans-serif;">From a CEDA display ...</span></p> <p style="margin-bottom: 0in;"><span style="font-family:Arial, sans-serif;">COPY GROUP(DFH$SOT) TCPIPSERVICE(HTTPNSSL) TO(BSI$SOT)<br />ALTER GROUP(BSI$SOT) TCPIPSERVICE(HTTPNSSL)<br />Change the Portnumber if desired (I used 8080)</span></p> <p style="margin-bottom: 0in;"><span style="font-family:Arial, sans-serif;">And finally<br />ADD GROUP(BSI$SOT) LIST(VSELIST) AFTER(TCPIP)</span></p> <p style="margin-bottom: 0in;"><span style="font-family:Arial, sans-serif;">At this point we need to create an ASCII/EBCDIC conversion table. This JCL was taken directly from the IBM manual. You will need to modify it as necessary for you system.</span></p><pre wrap="">* $$ JOB JNM=DFHCNV,CLASS=8,LDEST=(,BARNARD),PDEST=(,BARNARD) <br />* $$ LST JSEP=0,CLASS=O <br />* $$ PUN JSEP=0,CLASS=O <br />// JOB DFHCNV <br />// LIBDEF *,CATALOG=PRD2.CONFIG <br />// LIBDEF SOURCE,SEARCH=(PRD1.BASE,PRD1.MACLIB) <br />// OPTION CATAL,LIST <br />// EXEC ASMA90,SIZE=(ASMA90,64K),PARM='EXIT(LIBEXIT(EDECKXIT)),SIZE(MAXC<br /> -200K,ABOVE)' <br /> DFHCNV TYPE=INITIAL <br /> DFHCNV TYPE=ENTRY,RTYPE=PC,RNAME=DFHWBHH,USREXIT=NO, X<br /> SRVERCP=037,CLINTCP=437 <br /> DFHCNV TYPE=SELECT,OPTION=DEFAULT <br /> DFHCNV TYPE=FIELD,OFFSET=0,DATATYP=CHARACTER,DATALEN=32767, X<br /> LAST=YES <br /> DFHCNV TYPE=ENTRY,RTYPE=PC,RNAME=DFHWBUD,USREXIT=NO, X<br /> SRVERCP=037,CLINTCP=437 <br /> DFHCNV TYPE=SELECT,OPTION=DEFAULT <br /> DFHCNV TYPE=FIELD,OFFSET=0,DATATYP=CHARACTER,DATALEN=32767, X<br /> LAST=YES <br /> DFHCNV TYPE=FINAL <br /> END <br />/* <br />// IF $MRC GT 4 THEN <br />// GOTO NOLINK <br />// EXEC LNKEDT <br />/. NOLINK <br />/* <br />/& <br />* $$ EOJ <br /><br /></pre><p style="margin-bottom: 0in;"><br /><span style="font-family:Arial, sans-serif;">Now you are ready to shutdown your original CICSICCF partition and bring up your new CICSICCF JCL that will include CWS support.</span></p> <p style="margin-bottom: 0in;"><br /><span style="font-family:Arial, sans-serif;">To test the CWS interface using this command from your web browser ...<br />http://192.168.1.228:8080/CICS/CWBA/DFH$WB1A<br />Of course, you will have to change the IP address to reflect your system's IP address.</span></p> <p style="margin-bottom: 0in;"><span style="font-family:Arial, sans-serif;">When I entered the above URL in my Firefox browser I received this response ...</span></p> <p style="margin-bottom: 0in;"><span style="font-family:Arial, sans-serif;">DFH$WB1A on system DBDCCICS successfully invoked through CICS Web Support on CICS Transaction Server for VSE/ESA.</span></p> <p style="margin-bottom: 0in;"><span style="font-family:Arial, sans-serif;">Enjoy! </span> </p>Jeffhttp://www.blogger.com/profile/11567371917298802617noreply@blogger.com0tag:blogger.com,1999:blog-8156209415524873303.post-88026394811039420002007-10-04T11:03:00.000-07:002007-10-04T11:11:08.306-07:00Barnard Software, Inc. BlogThis is the first post to the BSI blog. I plan to post here from time to time with thoughts, hints and tips for using BSI products. I will also comment on VSE/ESA and z/VSE topics too.<br /><br />As a first thought, I am going to install CICS TS Web Services (CWS) on a z/VSE 3.1.1 base system from scratch and writeup the steps I go through to do it.<br /><br />I welcome comments and suggestions on the subjects I write about and ideas for future subjects.Jeffhttp://www.blogger.com/profile/11567371917298802617noreply@blogger.com0