13.2 Connecting to a Server

13.2.1 Locating Server via GDS

If a GDS address (GlobalDiscoveryServers) is defined (see 6.7.2), the GDS is queried to find the Server. If an array of GDS addresses is provided each GDS in the list is tried until the Server is located. If the Server is not found, an error could be reported or the server could be contacted directly.

The Server is located following the standard procedure as defined in OPC 10000-12, i.e., QueryApplications, GetEndpoints, OpenSecureChannel, CreateSession and ActivateSession on the Server Address with the specified SecurityMode (see 9.2.2 for the description of the provided Server information).

Figure 64 - Client connection process

If the Server is the same Server that the ConnectionManager resides on, the EstablishConnections Method may be invoked by vendor-specific means, and all portable node identifiers can be resolved locally.

The Session established by the ConnectionManager shall support the use of authentication and/or encryption. This includes:

Application Authentication based on security mode and policy

The use of Roles (this may require user authentication or specific ApplicationInstance certificates)

If SecurityPolicyUri contains an empty or null string, the EndpointDescription on the Server with the highest SecurityLevel of the ones supported by the ConnectionManager and matching the requested SecurityMode (see 9.2.2) shall be chosen. If it is not an empty or null string, the EndpointDescription matching the requested SecurityMode and SecurityPolicyUri (see 9.2.2) shall be chosen. The complete process, including NodeId resolution, is illustrated in Figure 64.

13.2.2 Connecting to Server via LDS

All devices expose a LocalDiscoveryServer (FindServersOnNetwork) or the Server directly exposes the Discovery Services (FindServers). The Server is located following the standard procedure as defined in OPC 10000-4, (i.e. using FindServers, GetEndpoints, OpenSecureChannel, CreateSession and ActivateSession) on the Server Address with the specified SecurityMode (see 9.2.2 for the description of the provided Server information).

Figure 65 - Client connection process- Local Discovery

If the Server is the same Server that the ConnectionManager resides on, the EstablishConnections Method may be invoked by vendor-specific means, and all portable node identifiers can be resolved locally.

The Session established by the ConnectionManager shall support the use of authentication and/or encryption. This includes:

Application authentication based on security mode and policy.

The use of Roles (this may require user authentication or specific ApplicationInstance certificates)

If SecurityPolicyUri contains empty or null string, the EndpointDescription on the Server with the highest SecurityLevel of the ones supported by the ConnectionManager and matching the requested SecurityMode (see 9.2.2) shall be chosen. If not empty of null string, the EndpointDescription matching the requested SecurityMode and SecurityPolicyUri (see 9.2.2) shall be chosen. The complete process, including NodeId resolution, is illustrated in Figure 65.

13.2.3 Session-less Client connection

The Server can also be accessed via a Session-less Service invocation (illustrated in Figure 66). Session-less Service invocations still access the Server with security but create a one-time connection. This type of connection can only be used by ConnectionManager exchanges that do not require a saved state across multiple invocations. For example, it cannot be used for a ReserveCommunicationIdsCmd since the communication IDs are released when the Session ends.

Figure 66 - Session-less Service invocation