Horizon CNOS connections
CNOS overview
SNA LU 6.2 supports single-session and parallel-session connections. A parallel-session LU can have multiple concurrently active sessions with a given partner LU. A single-session LU cannot activate another session until the current session is deactivated. SNA CNOS verbs dynamically control the number, activation, and deactivation of parallel sessions between two LUs.
CNOS has no meaning for the TCP/IP protocol, and therefore the features in this appendix are not applicable for connections using a TCP/IP protocol.
This section provides an overview of CNOS terminology and basic operation.
CNOS terminology
Each CNOS command has a source and a target. The source LU is the LU that issues the CNOS request. The target LU is the LU that receives the CNOS request and issues the CNOS reply.
CNOS requests are issued only over control sessions. There are two control sessions for each pair of partner LUs. These sessions are dedicated to regulating the remaining conversational sessions bound between the LU partners. A conversational session is a session used for conversations between user applications.
A CNOS command can apply to all sessions existing between two logical units or just those in a particular mode. A mode is a subset of the sessions between two LUs. All sessions in a mode, by definition, have a common logmode name and common session characteristics.
A logmode names a SNA Communications Server (formerly VTAM) table entry that contains predefined session characteristics that SNA Communications Server uses to establish sessions between two logical units. The CNOS partners' common session characteristics include request unit size, access security, trusted logins, and support for LU 6.2 and the CNOS protocol.
A mode is identified to the LU partners by a mode name which must be unique to the LU it subdefines.
The session limit is the maximum number of concurrent sessions that can exist between two LUs using the same mode.
CNOS session control
The three basic CNOS verbs are INITIALIZE, RESET, and CHANGE:
- INITIALIZE_SESSION_LIMIT changes the session limit from zero to a nonzero number.
- RESET_SESSION_LIMIT changes the session limit to zero.
- CHANGE_SESSION_LIMIT increases or decreases the session limits
Setting session limits
When a CNOS INITIALIZE verb sets a session limit it specifies:
- Source requested maximum session count
- Guaranteed number of source contention winners
- Guaranteed number of target contention winners
Source contention winners means the number of sessions the source has reserved for itself. Target contention winners means the number of sessions the source is willing to reserve for the target.
The target may negotiate these values to meet its requirements and uses several negotiation rules to do so. The target replies to the source with values for the bulleted items above and will indicate whether the values returned have been negotiated.
Deactivating sessions
A CNOS RESET verb specifies:
- Whether the source or target is responsible for session deactivation.
- Whether the reset applies to one or all modes between the local and remote LU.
When one resets the session limit, one of the two LUs must deactivate the sessions between them to make the active session count equal to zero. The RESPONSIBLE parameter of RESET designates who is responsible for deactivating the required number of sessions.
Sessions are deactivated in an orderly manner:
- Conversations are allowed to finish.
- The responsible LU indicates that it will send no new conversation requests by sending a BIS (Bracket Initiation Stop) request.
- The target of this request acknowledges and concurs by sending a BIS reply.
- The responsible LU asks SNA Communications Server to deactivate the session by sending an UNBIND request.
Changing session limits
When a CNOS CHANGE verb increases or decreases session limits, it specifies the same parameters (session count and contention winners) as INITIALIZE. If sessions need to be deactivated to meet the new session limits, CHANGE (like RESET) specifies the node responsible for session deactivation and the modes affected.
CNOS minimum support
Horizon provides the CNOS minimum support set, which includes the components listed below:
- A control-operator transaction program that can issue the CNOS minimum support set verbs
- Presentation services for the control operator program
- Two control sessions for every CNOS LU pair
- The CNOS service transaction program
Minimum support verbs
The CNOS minimum support verbs include the control operator, LU definition, and display verbs shown in <A HREF="Apxe.htm#0_56526" CLASS="XRef">See CNOS verbs with equivalent Model 204 commands</A>. The table also shows the Model 204 commands (presentation) for those verbs:
CNOS verb | Meaning for Model 204 | Model 204 command |
---|---|---|
INITIALIZE_SESSION_LIMIT (send support) | Horizon initiates CNOS communications with a partner LU | START SESSIONGROUP |
INITIALIZE_SESSION_LIMIT(receive support) | Horizon responds to a remote LU's CNOS_INITIALIZE request | -- |
RESET_SESSION_LIMIT (send support) | Horizon shuts down conversation traffic | STOP SESSIONGROUP |
RESET_SESSION_LIMIT (receive support) |
Horizon responds to a remote LU's CNOS RESET request | -- |
RESET_SESSION_LIMIT MODENAME(ALL) |
Horizon lets all conversations for all sessiongroups with a remote to finish, unbinds the sessions, and frees the sessiongroups | STOP REMOTE |
CHANGE_SESSION_LIMIT (receive support) |
Horizon responds to a remote LU's CHANGE_SESSION_LIMITrequest | -- |
DEFINE_TP | Defines Horizon process | DEFINE PROCESS |
DEFINE_LOCAL_LU | Defines Horizon link | DEFINE LINK |
DEFINE_REMOTE_LU | Defines Horizon remote | DEFINE REMOTE |
DEFINE_MODE | Defines Horizon sessiongroup | DEFINE SESSIONGROUP |
DISPLAY_TP | Shows Horizon CNOS process usage | MONITOR PROCESS |
DISPLAY_LOCAL_LU | Shows Horizon CNOS link usage | MONITOR LINK |
DISPLAY_REMOTE_LU | Shows Horizon CNOS remote usage | MONITOR REMOTE |
DISPLAY_MODE | Shows Horizon sessiongroup usage | MONITOR SESSIONGROUP |
Optional verb
Model 204 also provides send support for CHANGE_SESSION_LIMIT, allowing Model 204 user to initiate execution of MODIFY SESSIONGROUP. This functionality is not required as part of the CNOS minimum support set.
Managing the Horizon CNOS network
Setting up Horizon CNOS support requires modifications to the basic Horizon network entity definitions, two CNOS-specific entity definitions, and two SNA Communications Server mode table entry definitions.
Horizon network control commands are modified to apply to CNOS entities and include some functionality not available to non-CNOS Horizon.
Defining CNOS network entities to Model 204
You need to define two CNOS-only network entities, and you need to follow the CNOS-specific syntax for the three basic Horizon network entities.
Remotes and sessiongroups
The following Model 204 intersystem entities are unique to and required for Horizon links with CNOS sessions:
Intersystem entity | Description |
---|---|
Remote | Identifies the remote LU and specifies the local link to which the remote node connects and the login security for the link. |
Sessiongroup | A group of sessions with the same network properties (from a common remote and link) and the same session characteristics (from a common SNA Communications Server logmode entry). |
You request CNOS support by including a remote entity and one or more sessiongroup entity definitions with your link, processgroup, and process definitions.
Links, processgroups, and processes
The basic Horizon entity definitions are documented on the following wiki command pages:
- DEFINE LINK command: Horizon for TCP/IP
- DEFINE LINK command: Horizon for VTAM
- DEFINE PROCESS command: Horizon for TCP/IP and VTAM
- DEFINE PROCESSGROUP command: Horizon for TCP/IP
- DEFINE PROCESSGROUP command: Horizon for VTAM
Defining CNOS support to SNA Communications Server
SNA Communications Server network definition for Horizon CNOS differs from non-CNOS only in the SNA Communications Server mode table entry requirements. Horizon CNOS connections require two mode entries:
- One entry for the characteristics of the CNOS control sessions
- One or more entries for the characteristics of the CNOS conversation sessions
Coding the SNA Communications Server APPL definition
Follow the directions in Chapter 3 for non-CNOS APPL definitions.
Coding the mode table entries
Define a mode entry whose entry name and LOGMODE parameter value is SNASVCMG. You can use the SNASVCMG entry in the default mode table supplied by IBM.
Define one or more mode entries for the CNOS conversation sessions. Make sure each entry has an entry name and LOGMODE parameter value that matches the value of the MODENAME parameter of a DEFINE SESSIONGROUP command.
For each conversation session entry, follow the parameter recommendations in the logon mode table for non-CNOS connections, with one exception:
Specify PSERVIC=X'060200000000000000102300'
Handling CNOS errors
Rejecting a CNOS connection
If you issue an inbound request for an existing process that does not seem (according to the definitions) to have a logical connection with the CNOS connection over which the connection request has come, Model 204 issues the following message:
M204.2837: NO LOGICAL CONNECTION BETWEEN PROCESS %C AND REMOTEID %C
Typical CNOS connection errors
Typically, Model 204 informs you of errors involving the CNOS connection by issuing the 2260 error message that follows. The message suits a variety of error situations by substituting one of multiple qualifying phrases according to the error characteristics.
M204.2260: CONNECTION [INITIALIZATION | CHANGE OF SESSION LIMITS | RESET | RESET OF ALL MODENAMES] WITH [partner-LU] [COMPLETED SUCCESSFULLY | DID NOT COMPLETE] - [qualifier], SOURCE WAS [originating-LU]
Where
Argument | Means... |
---|---|
CONNECTION INITIALIZATION COMPLETED SUCCESSFULLY | Initial intersystem handshake is completed and user procedures can run over the connection. |
CONNECTION CHANGE OF SESSION LIMITS COMPLETED SUCCESSFLLY | By request of one partner, the capacity of the intersystem connection was increased or decreased. |
CONNECTION RESET COMPLETED SUCCESSFULLY | One partner is draining the conversational sessions between the two partners that belong to the relevant SESSIONGROUP. All sessions will be terminated when the drain completes. You must reinitialize the connection to begin another user conversation. |
CONNECTION RESET OF ALL MODENAMES COMPLETED SUCCESSFULLY |
One partner is draining all service and all conversational session for each of the SESSIONGROUPs between the two partners. All sessions will be terminated when the drain completes. You must reinitialize the connection to begin another user conversation. |
partner-LU |
Specifies the name of the conversation partner program. It is the same name used in the DEFINE PROCESS command for the server process at the remote node. |
qualifier |
One of the phrases explained in Message 2260 qualifiers |
originating-LU | Specifies the name of the source program. It is the same name used in the DEFINE PROCESS command for the local server. |
Note: Periodically check that the connection is being set up and shut down as planned.
Qualifying phrase | Meaning |
---|---|
ACCEPT END / INIT END FAILED | An internal error has occurred. |
COMMAND RACE DETECTED | Another CNOS command was in progress when you submitted your START SESSIONGROUP or STOP SESSIONGROUP or STOP REMOTE. Please try again. |
ERROR UNLOCKING SGRD | A serious internal error has occurred. |
MODENAME IN USE BY A PGRD | The MODENAME value in your sessiongroup definition has already been allocated to a processgroup owned by the same link. |
MODENAME IN USE BY AN SGRD | The MODENAME value in your sessiongroup definition has already been allocated to a processgroup owned by the same remote. |
MODENAME NOT DEFINED | The target of the CNOS request could not find a sessiongroup and remote definition that matched the source's START SESSIONGROUP or STOP SESSIONGROUP or STOP REMOTE. |
NEGOTIATED | The target negotiated the source's CNOS request. |
NOT NEGOTIATED | The target accepted the CNOS request as it was and did not attempt to change it. |
OPEN PROCESS FAILED | An internal error has occurred. |
PROTOCOL VIOLATION DETECTED | The CNOS source or target has committed a protocol error (for example, requesting more winners than maximum sessions, not specifying a mode name on a set or reset command, trying to negotiate a reset command, etc.). See "Parallel Session Support" in the SNA Format and Protocol Reference. |
RECEIVE FAILED | An internal error has occurred. |
REMOTE NOT DEFINED | The named remote has no remote entity definition. |
REMOTEID IN USE BY A PGRD | The REMOTEID specified in the remote entity definition was previously allocated to a non-CNOS processgroup. A non-CNOS processgroup may not share a REMOTEID with a remote unless they are owned by different links. |
REMOTEID IN USE BY AN RMTD | The REMOTEID specified in the remote entity definition was previously allocated to another remote owned by the same link. |
RMTD CHAINING ERROR | A serious internal error has occurred. |
RMTD LINK NOT DEFINED | Model 204 is unable to find an entity definition for the link named in the remote entity definition. |
RMTD NOT INIT GCORE FAILED | Model 204 is unable to get the storage necessary to initialize a remote control block. |
RMTD NOT INIT RESET RQ RECVD | A STOP REMOTE has been received for a remote that was already stopped or was never initialized (none of its sessiongroups was ever started) |
SEE PREVIOUS MESSAGE | A bug has occurred. See the previous bug message. |
SEND FAILED | An internal error has occurred. |
SESSION LIMIT AT 0 | The target has refused the source's request because its session limit is already zero. |
SESSIONGROUP ALREADY STOPPED | Model 204 received a STOP SESSIONGROUP request for a sessiongroup that was already stopped (by a previous STOP SESSIONGROUP or STOP REMOTE). |
SESSIONGROUP NOT DEFINED | A. The named sessiongroup has no entity definition. B. The named sessiongroup has no corresponding definition at the remote node that matches the sessiongroup's REMOTEID and MODENAME values. |
SGRD CHAINING ERROR | A serious internal error has occurred. |
SGRD IN LOCK DENIED STATE | A command race occurred and your request was the loser. Please try again. |
SGRD LOCK BY SOURCE | A command race occurred and your request was the loser. Please try again. |
SGRD LOCKED BY TARGET | A command race occurred and your request was the loser. Please try again. |
SGRD NOT INIT GCORE FAILURE | Model 204 is unable to allocate the storage needed to initialize the SGRD. |
SNASVCMG CHAINING ERROR | A serious internal error has occurred. |
SNASVCMG IN USE BY A PGRD | A serious internal error has occurred. |
SNASVCMG NOT DEFINED | A serious internal error has occurred. |
SNASVCMG NOT INIT- GCORE FAIL | Model 204 is unable to allocate the storage needed to initialize the SGRD for SNASVCMG. |
SNASVCMG NOT INIT- RESET RECV | A serious internal error has occurred. |