|
The information in this article applies to: - Terminal Services Release 5.0.0.0 and later (3.3.0.8 and later through special arrangement)
- Terminal Concentrator Release 5.0.0.0 and later (3.3.0.8 and later through special arrangement)
SUMMARY This article provides an overview of a feature that enables TS and TC to communicate using 4690 TCC/IP, but without using IP multicast as part of the protocol. Another name for this feature is ‘unicast TCC/IP.’
MORE INFORMATIONBackground- 4690 terminals can optionally be configured to use IP-based ‘Terminal/Controller Communications. The abbreviation for this is TCC/IP. The default protocol for lan-attached terminal is DLC-based (TCC/DLC).
- The pre-connection phase of TCC/IP uses multicast messages generated from the terminal to ‘find’ the currently active controller that is ready to control that terminal. This ‘find’ message is called an XID (exchange ID) and it includes store number and terminal number. A controller configured as primary for a terminal will respond immediately when seeing the first XID message. A controller configured as backup for a terminal will respond after seeing 3 XID messages with no more than 1.5 seconds between each XID. Note that this 1.5 seconds is variable depending on the ack timeout setting.
- An advantage of TCC/IP compared to DLC is that IP is ‘routable’ where DLC is not.
- Most routers, by default, do not pass multicast messages. They must be configured to allow multicast pass-through.
- A negative for some customers is that configuring routers to allow multicast pass-through is difficult or undesirable or, if public networks are involved, nearly impossible.
- This feature of TS/TC allows customers to configure specific Store Controller IP addresses for primary/backup controller pairs in each TS/TC terminal while avoiding the use of multicast addresses.
Terminal Implementation Overview- The TS/TC TCC/IP CDI keyword, tccXIDAddrList, allows the configuration of up to 8 specific IP addresses or host names for use in XID requests. These IP addresses correspond to a list of up to 8 same-store 4690 store controllers that can provide service to the TS/TC terminal(s). Most stores have only 2 controllers so typically only 2 IP addresses/hostnames will be used.
- If host names are specified, a DNS server or “hosts” file must be present to translate the names.
- If TCC/IP is enabled with the ‘tccipEnable’ keyword and if the tccXidAddrList keyword is present and non-null, TS/TC will not use multicast. Instead, when XID ‘finds’ are sent, they will be sent as unicast datagrams to all of the hosts listed.
- Additional information is provided in a later section called ‘TS/TC TCC Over IP User’s Guide’
Controller Side Changes- Because of how 4690 implements the controller side of TCC/IP, a controller component must be installed for unicast TCC/IP to work. An explanation follows.
- The XID requests (described previously) from terminals are sent to port 4691on the controller. The 4690 TCC/IP driver that creates the socket/port happens to create the port in such a way that unicast messages are dropped when sent to that port. Specifically, the 4690 TCC/IP driver uses the multicast IP address (dflt 224.46.90.1) instead of INADDR_ANY (0.0.0.0) when binding the socket to port 4691. Because of the specific IP address on the bind(), only messages destined to that specific IP address are processed.
- We don’t think that IBM did this for a specific reason. The convention for bind() calls is to use INADDR_ANY. IBM TCC/IP uses INADDR_ANY for the other 2 ports that are created for TCC/IP communications. Also some systems (e.g. Windows) won’t allow any value other than INADDR_ANY to be used. We think it is most likely happenstance that IBM used the specific address and are trying to confirm this with IBM.
- To work-around this issue, the simplest and safest solution we could find was to install a controller device driver. What the driver does is very simple: it monitors calls into the IBM tcp/ip driver. If the call is a bind(), and if the bind sockaddr/name specifies the TCC/IP multicast ip addr (dflt 224.46.90.1) and port (dflt 4691), we change the ip addr part to INADDR_ANY(0.0.0.0).
- The reason we do this is so the TCC/IP driver will process requests from unicast senders as well as multicast senders.
- Note that the multicast port is only used by the TCC/IP protocol early in the online sequence. It is used by a TCC/IP terminal to find which controller it should connect to. After the initial exchange of messages to find the controller, the rest of the IBM TCC/IP protocol flows as unicast messages to other ports. This change only affects a very few messages that flow during offline-to-online transitions.
- We (QVS) have no reason to believe that IBM support will have an issue just because we have a driver installed. QVS and other Business Partners, have installed drivers on Store Controllers for lots of reasons over the years (Symbol Wireless, Ethernet Loaders and device drivers for non-IBM hardware type terminals, etc). There's nothing that our driver does that anyone looking at a dump would likely notice or consider a red flag. We use standard 4690 methods to load our driver through the 4690 ‘IPL Command Processor’ feature.
Controller Driver Delivery- The controller driver logic explained above has been integrated into the QVS InSight product. InSight is the QVS platform which is designed to seamlessly extend 4690.
- Unicast TCC/IP enablement is not active in the default installation of InSight. It must be enabled by setting the keyword <unicastTccIpCtlrFeature=”Y”> in the qsa_dir:insight.cdi file. After changing the cdi setting, the controllers must be re-booted.
- To check on the status of the unicast feature, run ‘qsa_bin:insight –status’ from a command prompt.
- The install package for InSight includes a 180 day trial license for the base InSight product which includes the InSight controller and terminal agents as well as a developers toolkit and tools such as the TermView utility and InSight terminal dump formatter. After 180 days, these features will be disabled but the unicast TCC/IP feature will remain active. If desired, the controller and terminal agent features can be disabled by running ‘qsa_bin:insight –disable’ after installation.
- Note about a possible future TCC/IP feature: QVS is evaluating customer requirements for encrypting TCC/IP communications for both TS/TC terminals as well as 4690 OS terminals. By integrating unicast as part of the InSight platform, the infrastructure is largely in place for future implementation of encrypted TCC/IP.
TS/TC TCC Over IP User’s GuideIBM’s current TCC over IP support is restricted to multicast addresses only, a restriction which requires that all network routers between the terminal and the Store Controller be configured (re-configured) to pass multicast requests. With the PRPQ being offered by QVS, the Store Controller need only be visible (“ping-able”) from the TS/TC PC. There are two modes of TCC over IP support included in the TS/TC products: This support is included in both the TS and TC products as part of the standard product offering. Prior to TC Version 3.3.0.8, customers were required to contact QVS to receive the enabling .DLL (TQTR2IP.DLL). This .DLL is shipped with TSF. Multicast TCC over IP support is configured using the following CDI keywords: - tccipEnable - Set this keyword to “1” to use TCC over IP instead of TCC over DLC. The default value is “0” for this keyword; implying TCC over DLC is the default communication stack.
- tccipAckTimeout - This keyword defines the amount of time TS/TC waits to receive a required acknowledgement from the controller. The value is specified in milliseconds and has a default value of 1000 (1 sec). The value specified MUST match the value specified in the controller ADX_SPGM:ADXTCCIF.DAT file.
- tccipTTL - This is the "time to live" value for TCC over IP sessions. This parameter controls the maximum number of routers (hops) that multicast TCC/IP packets will be sent through before being dropped. The default value for this keyword is 1. The value specified MUST match the value in the controller ADX_SPGM:ADXTCCIF.DAT file. This keyword is ignored in unicast mode.
- tccipAckPort - This keyword defines the Ack port value on the Store Controller which is used by the terminal to acknowledge receipt of I-Frame packets from the Store Controller. The default value for this keyword is “4692”. The value specified MUST match the value in the controller ADX_SPGM:ADXTCCIF.DAT file.
- tccipMultiCastPort - This keyword defines the multicast TCC over IP port value on the Store Controller . The value specified is used by TS/TC to send either unicast or multicast ‘find server’ request packets to the Store Controller. The default value for this keyword is “4691”. The value specified MUST match the value in the controller ADX_SPGM:ADXTCCIF.DAT file.
- tccipMultiCastAddr - This keyword defines the multicast TCC over IP address value on the Store Controller. The default Store Controller multicast address is "224.46.90.1". The value specified MUST match the value in the controller ADX_SPGM:ADXTCCIF.DAT file. This keyword is ignored in unicast mode.
- tccipXidAddrList – This keyword defines the list of unicast TCC over IP addresses which the TS/TC PC will use in an attempt to establish communication with the physical Store Controllers in a “same store” configuration. By specifying this keyword, the user is 1) disabling multicast TCC over IP communication and 2) enabling unicast TCC over IP communication. The user may specify up to eight (8) IP addresses or host names in this list, where each value uniquely identifies a Store Controller in the same store. Each entry within this list must be separated by a comma (e.g. TccipXidAddrList = “192.168.1.31, 192.168.2.44, 192.168.4.21,…..”).
- The user can choose to provide Host Names, instead of the dot IP addresses. If the user chooses to specific Host Names for the Store Controller, then 1) the Host Names must be separated by commas, and 2) Host Names and “dot” IP address cannot be mixed for this keyword. To utilize this option for the tccipXidAddrList, the user would specify something like tccipXidAddrList = “Ctlr01CC, Ctlr02DD, Ctlr01EE, ….”)
The following is a sample configuration of CDI keywords to enable multicast TCC over IP for TS or Terminal Concentrator: tccipEnable="1" tccipTTL="" tccipAckPort="" tccipMultiCastPort="" tccipMultiCastAddr=”” tccipAckTimeOut = ""
- Unicast TCC Over IP Support
This support is only available via a PRPQ for both the TS Version 3.3.0.8 and Terminal Concentrator Version 3.3.0.8 products.
Unicast TCC over IP support is configured using some of the same keywords as described under Multicast TCC over IP. The following is a sample configuration of CDI keywords to enable unicast TCC over IP for TS or Terminal Concentrator: tccipEnable="1" tccipAckPort="" tccipAckTimeOut = "" tccipMultiCastPort="" tccipXidAddrList = “192.168.4.31, 192.168.4.44, 192.168.4.21 or tccipXidAddrList = “Ctlr01CC, Ctlr02DD, Ctlr01EE licenseKey=”call QVS to activate this keyword”
If TCC over IP is being configured over a WAN, it will likely be beneficial to increase the tccipAckTimeout value on both the controller and TS or TC machines:
tccipAckTimeOut = "2500" For more information on this parameter, see the documentation in the 4690 controller ADX_SPGM:ADXTCCIF.DAT file. NOTES:- QVS will provide a specific value for the licenseKey =”” keyword to actually enable the unicast TCC over IP support. If unicast is configured and the proper licenseKey value is not in the CDI file, TS / TC will abort.
- If host names are specified, a DNS server or “hosts” file must be present to translate the names.
- If the tccXidAddrList keyword exists and it contains a string, TS/TC will not use multicast. Instead, when XID ‘finds’ are sent, they will be sent as unicast datagrams to each of the IP addresses listed.
- Changing the ackTimeOut parameter also has the effect of increasing the amount of time before offline is detected. The value must be chosen carefully because too small a value can result in excessive retry traffic and/or offline occurrences. Too large a value can result in excessive processing delay’s when frame retries are necessary. Don’t forget that the controller value and TS/TC value must match.
Because of how the 4690 controller implements the controller side of TCC/IP, a controller component must be installed for unicast TCC/IP to work. Additional details on the controller component are provided in a previous section of this document. |