cmw-dip gateways overview - indico€¦ · cmw mandate & scope cmw-dip gateways overview 6 •...

21
CMW-DIP Gateways Overview CMW – Controls Middleware from BE-CO ALICE workshop, 28th June 2019 Wojciech Sliwinski for the BE-CO CMW team

Upload: others

Post on 02-Jun-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CMW-DIP Gateways Overview - Indico€¦ · CMW mandate & scope CMW-DIP Gateways Overview 6 • Core communication layer -> critical • Reliable communication in distributed system

CMW-DIP Gateways OverviewCMW – Controls Middleware from BE-CO

ALICE workshop, 28th June 2019

Wojciech Sliwinski

for the BE-CO CMW team

Page 2: CMW-DIP Gateways Overview - Indico€¦ · CMW mandate & scope CMW-DIP Gateways Overview 6 • Core communication layer -> critical • Reliable communication in distributed system

CMW – Controls Middleware from BE-CO

CMW-DIP Gateways Overview 2

Page 3: CMW-DIP Gateways Overview - Indico€¦ · CMW mandate & scope CMW-DIP Gateways Overview 6 • Core communication layer -> critical • Reliable communication in distributed system

Our clients: CERN Accelerators

CMW-DIP Gateways Overview 3

Page 4: CMW-DIP Gateways Overview - Indico€¦ · CMW mandate & scope CMW-DIP Gateways Overview 6 • Core communication layer -> critical • Reliable communication in distributed system

CMW System Overview

CMW-DIP Gateways Overview 4

ALICE

Experiments / Tech. Infra.

ATLAS CMS

COMPASS

LHCb

…REMUS

Kickers

Accelerator Equipment

Magnets Instruments Interlocks

Cavities

…Collimators

PMA

High Level Applications

LSA/InCA Sequencer SIS

CESAR

…Conc.

High Level Applications

RBAC

JMS

Directory Service

CMW Services & APIs

Gateway

RDA Proxy

RD

A

DIP – Data Inter-change ProtocolJMS – Java Message ServiceRBAC – Role-Based Access ControlRDA – Remote Device Access

Page 5: CMW-DIP Gateways Overview - Indico€¦ · CMW mandate & scope CMW-DIP Gateways Overview 6 • Core communication layer -> critical • Reliable communication in distributed system

Controls Software Architecture

CMW-DIP Gateways Overview 5

CTRL CTRL

TCP/IP communication

services

TCP/IP communication

services

ETHERN

ET

NETWOR

K

TIMING GENERATIO

N

T

T

T

T

T

T T T T

OPERATOR

CONSOLES

OPERATOR

CONSOLES

FIXEDDISPLAY

S

CE

RN

G

IGA

BIT

E

TH

ER

NE

T

TE

CH

NIC

AL

NE

TW

OR

K

FILE SERVE

RS

APPLICATION SERVERS

SCADA SERVER

S

RT Lynx/OSVME Front

Ends

WORLDFIP

Front EndsPLC

ACTUATORS AND

SENSORS

CRYOGENICS, VACUUM,

ETC…

QUENCH PROTECTION

AGENTS,

POWER CONVERTERS

FUNCTIONS GENERATORS,

BEAM POSITION

MONITORS,

BEAM LOSS

MONITORS,

BEAM INTERLOCKS,

RF SYSTEMS, ETC…

World

FIP

SE

GM

EN

T

PR

OF

IBU

S

FIP

/IO

TCP/IP communication

services

OP

TIC

AL

FIB

ER

S

Presentation Layer

Business Layer

Front End (Back End) Layer

Controls Middleware (CMW)

Controls Middleware (CMW), RMI, JMS

C++ C++

C++ Java

C++ Java

Co

mm

un

icat

ion

CMW Purpose: Reliable and scalabletransport of data between controls processes (Java & C++)

4’000 CMW servers 85’000 devices 2’000’000 IO-points Uses ZeroMQ

Page 6: CMW-DIP Gateways Overview - Indico€¦ · CMW mandate & scope CMW-DIP Gateways Overview 6 • Core communication layer -> critical • Reliable communication in distributed system

CMW mandate & scope

CMW-DIP Gateways Overview 6

• Core communication layer -> critical• Reliable communication in distributed system

• Decentralized (no brokers, etc.) -> scalable

• Centrally managed middleware services• Directory/Naming, RBAC, Proxies, DIP Gateways, …

• Access syntax -> Device-Property model• Device: addressable IO point (e.g. channel, slot, module)

• Device: e.g. LHC.BPM.P5.B1, LHC.BPM.P5.B2

• Property: exposed operation or method

• Property: e.g. Acquisition, Status, Alarm, Setting

• Widely deployed for all CERN accelerators

• Used in all Eqp. groups (3 deps: BE, EN, TE)

GUI Applications

Control Logic

Middleware

Control System

Page 7: CMW-DIP Gateways Overview - Indico€¦ · CMW mandate & scope CMW-DIP Gateways Overview 6 • Core communication layer -> critical • Reliable communication in distributed system

RDA3 – CMW core communication library

CMW-DIP Gateways Overview 7

• Uses ZeroMQ for low-level networking

• Built upon lock-free, async (event driven) architecture

• Operations/Calls: Get, Set, Subscribe• All communication implicitly asynchronous

• Public API for developing clients & servers

• Provided for several platforms• C++ & Java, next Python• Dependencies: ZeroMQ, Boost (C++) • Linux (64-bit), Windows (64-bit)

• Integrated with several frameworks• FESA, FGCD, WinCCOA, LabVIEW, C2MON

• Provides comprehensive diagnostics• Admin GUI, command line tools, Kibana reports

• Exportable -> used in GSI (DE), LG (S. Korea)

Linux/Windows

C++/Javaprocess

CMW-RDA3client

TCP/IP

ZeroMQ

Linux

C++/Javaprocess

CMW-RDA3server

ZeroMQ

Page 8: CMW-DIP Gateways Overview - Indico€¦ · CMW mandate & scope CMW-DIP Gateways Overview 6 • Core communication layer -> critical • Reliable communication in distributed system

RDA3 vs DIP

Context/Area RDA3 DIP

Communication model Peer to peer Peer to peer

Domain Accelerator control system Experiment control system

Access point device/property topic

Paradigm Request/Reply

Publish/Subscribe

Publish/Subscribe

Data type Generic data or exception Generic data + quality

CMW-DIP Gateways Overview 8

Page 9: CMW-DIP Gateways Overview - Indico€¦ · CMW mandate & scope CMW-DIP Gateways Overview 6 • Core communication layer -> critical • Reliable communication in distributed system

CMW Gateway basic architecture

CMW-DIP Gateways Overview 9

CMW DIP

DIP to CMW

RDA3 server

DIP subscriber

CMW to DIP

RDA3 client

DIP publisher

DIP publisher

DIP subscriber

RDA3 client

RDA3 server

publication

Page 10: CMW-DIP Gateways Overview - Indico€¦ · CMW mandate & scope CMW-DIP Gateways Overview 6 • Core communication layer -> critical • Reliable communication in distributed system

CMW-DIP Gateways

Critical: Handshake, Luminosity, RunControl

GW-ALICE GW-ATLAS GW-INJ-GPNDIP

GW-LHC-BPM GW-LHC-CONF GW-LHC-EXP-GPN

GW-LHC-INFO GW-SERVICES GW-BL4S

GW-LHC-BCT GW-LHCB GW-LHC-CRITICAL-EXP

GW-LHCF GW-NORTH GW-CMS

GW-GPNDIP-INJ GW-LHC-BLM GW-LHC-COLLIM

GW-LHC-CRITICAL GW-LHC-GPNDIP GW-RADMON

GW-TOTEM

CMW-DIP Gateways Overview 10

Page 11: CMW-DIP Gateways Overview - Indico€¦ · CMW mandate & scope CMW-DIP Gateways Overview 6 • Core communication layer -> critical • Reliable communication in distributed system

Resources

• General documentation: https://wikis.cern.ch/display/expcomm/

• Publications from the LHC: https://wikis.cern.ch/display/expcomm/DIP+LHC

• CMW Service: https://wikis.cern.ch/display/MW/

• DIP Service: https://readthedocs.web.cern.ch/display/ICKB/DIP+and+DIM

• Emails:

[email protected] (CMW related questions, requests, etc.)

[email protected] (DIP related questions, requests, etc.)

[email protected] (BE-ICS support)

CMW-DIP Gateways Overview 11

Page 12: CMW-DIP Gateways Overview - Indico€¦ · CMW mandate & scope CMW-DIP Gateways Overview 6 • Core communication layer -> critical • Reliable communication in distributed system

Backup slides

CMW-DIP Gateways Overview 12

Page 13: CMW-DIP Gateways Overview - Indico€¦ · CMW mandate & scope CMW-DIP Gateways Overview 6 • Core communication layer -> critical • Reliable communication in distributed system

What are main CMW features?

• Device/Property model

• Basic operations: Get, Set, Subscribe

• Get/Set:

• Synchronous or asynchronous

• Grouping execution by device (default)

• Subscription:

• First-update

• Ordering of notifications

• Multiplexing:

• Cycle selector for requests

• Cycle information for acquisitions

• Rich data types (scalars, N-arrays, structures)

• Authentication and authorization

• Tracing and diagnostics

CMW-DIP Gateways Overview 13

Page 14: CMW-DIP Gateways Overview - Indico€¦ · CMW mandate & scope CMW-DIP Gateways Overview 6 • Core communication layer -> critical • Reliable communication in distributed system

Data flow for RDA3 calls

CMW-DIP Gateways Overview 14

RDA3 client

ZeroMQ

Directory Service

Database

RDA3 server

ZeroMQ

Device1/PropertyA

Device2/PropertyB

DeviceN/PropertyX

RDA3 client

ZeroMQ

RDA3 server

ZeroMQ

Device11/PropertyA

Device22/PropertyB

DeviceNN/PropertyX

[0] Load devices & servers

[2 & 2’] Save

Get & Set calls Subscribe calls

Cache (Devices & Servers)

Page 15: CMW-DIP Gateways Overview - Indico€¦ · CMW mandate & scope CMW-DIP Gateways Overview 6 • Core communication layer -> critical • Reliable communication in distributed system

Example – sync Get call

#include <iostream>

#include <cmw-rda3/client/service/ClientServiceBuilder.h>

...

...

// First create ClientService and keep it for all further communication

auto_ptr<ClientService> client = ClientServiceBuilder::newInstance()->build();

// Get AccessPoint by providing device name & property name

AccessPoint & accessPoint = client->getAccessPoint(”LHC.BPM.P5.B1", ”Acquisition");

// Perform sync GET call

auto_ptr<AcquiredData> acqData = accessPoint.get();

// The resulting data is obtained by calling getData() method on the AcquiredData instance

const Data & data = acqData->getData();

cout << data.toString() << endl;

// Data -> supports scalars, arrays of scalars(1D, 2D, N-D), structures (nested Data)

// Additionally AcquiredData contains also AcquiredContext, which provides meta-data about the call

const AcquiredContext & acqContext = acqData->getContext();

cout << acqContext.toString() << endl;

CMW-DIP Gateways Overview 15

Page 16: CMW-DIP Gateways Overview - Indico€¦ · CMW mandate & scope CMW-DIP Gateways Overview 6 • Core communication layer -> critical • Reliable communication in distributed system

Example – async Get call with callback

#include <iostream>

#include <cmw-rda3/client/service/ClientServiceBuilder.h>

...

class Callback : public AsyncGetCallback

{

public:

void requestCompleted(const RequestHandle & request, auto_ptr<AcquiredData> acqData)

{ cout << acqData->getData().toString() << endl; }

void requestFailed(const RequestHandle & request, auto_ptr<RdaException> exception)

{ cout << exception->what() << endl; }

};

auto_ptr<ClientService> client = ClientServiceBuilder::newInstance()->build();

AccessPoint & accessPoint = client->getAccessPoint(”LHC.BPM.P5.B1", ”Acquisition");

// Perform async GET call with callback

accessPoint.getAsync(AsyncGetCallbackSharedPtr(new Callback()));

// Continue while GET is being performed

...

...

CMW-DIP Gateways Overview 16

Page 17: CMW-DIP Gateways Overview - Indico€¦ · CMW mandate & scope CMW-DIP Gateways Overview 6 • Core communication layer -> critical • Reliable communication in distributed system

Example – async Get call with future

#include <iostream>

#include <cmw-rda3/client/service/ClientServiceBuilder.h>

...

...

auto_ptr<ClientService> client = ClientServiceBuilder::newInstance()->build();

AccessPoint & accessPoint = client->getAccessPoint(”LHC.BPM.P5.B1", ”Acquisition");

// Perform async GET call with future

RdaGetFutureSharedPtr future = accessPoint.getAsync();

// Continue processing while GET is being performed

...

cout << “Is GET completed: ” << future->isDone() << endl;

...

// Perform blocking call until GET data is ready

auto_ptr<AcquiredData> data = future->get();

cout << data->getData().toString() << endl;

CMW-DIP Gateways Overview 17

Page 18: CMW-DIP Gateways Overview - Indico€¦ · CMW mandate & scope CMW-DIP Gateways Overview 6 • Core communication layer -> critical • Reliable communication in distributed system

Example code – sync Set call

#include <iostream>

#include <cmw-rda3/client/service/ClientServiceBuilder.h>

...

...

// First create ClientService and keep it for all further communication

auto_ptr<ClientService> client = ClientServiceBuilder::newInstance()->build();

// Get AccessPoint by providing device name & property name

AccessPoint & accessPoint = client->getAccessPoint(”LHC.BPM.P5.B1", ”Setting");

// Prepare data to be sent to server

// Data -> supports scalars, arrays of scalars(1D, 2D, N-D), structures (nested Data)

auto_ptr<Data> data = DataFactory::createData();

data->append("value", 10);

data->append(”gain", 5.1234);

// Perform sync SET call

accessPoint.set(data);

CMW-DIP Gateways Overview 18

Analogically async Set versions with callback & future

Page 19: CMW-DIP Gateways Overview - Indico€¦ · CMW mandate & scope CMW-DIP Gateways Overview 6 • Core communication layer -> critical • Reliable communication in distributed system

Example – Subscribe call

#include <iostream>

#include <cmw-rda3/client/service/ClientServiceBuilder.h>

...

...

auto_ptr<ClientService> client = ClientServiceBuilder::newInstance()->build();

AccessPoint & accessPoint = client->getAccessPoint(”LHC.BPM.P5.B1", ”Status");

// Perform SUBSCRIBE call

SubscriptionQueueSharedPtr queue = accessPoint.subscribe();

...

// Continue processing while subscription is being established

...

// Blocking wait for a single notification with a timeout of 5000 ms

std::auto_ptr<Notification> notification = queue->poll(5000); // also with no timeout: poll()

cout << “Received notifications count: ” << queue->getQueueSize() << endl;

// Process the received data

auto_ptr<AcquiredData> acqData = notification->get();

cout << acqData->getData().toString() << endl;

CMW-DIP Gateways Overview 19

Analogically Subscribe version with callback

Page 20: CMW-DIP Gateways Overview - Indico€¦ · CMW mandate & scope CMW-DIP Gateways Overview 6 • Core communication layer -> critical • Reliable communication in distributed system

Latency stability measured by BE-CO Timing team

CMW-DIP Gateways Overview 20

Setup: 500B message payload, CCC machines, 1 server/publisher, 1-1100 clients/subscribers

local timelate

ncy

client #

client #client #

late

ncy

Page 21: CMW-DIP Gateways Overview - Indico€¦ · CMW mandate & scope CMW-DIP Gateways Overview 6 • Core communication layer -> critical • Reliable communication in distributed system

Observations from operational use of RDA3

• Great performance for subscriptions (thanks to async transport & internal batching)

• Good scalability for many clients (>1000)

• No more problem of slow clients (solved properly thanks to asynctransport)

• Much smaller footprint (CPU & memory), mainly thanks to zero-copy

• ZeroMQ - no surprises & very reliable!

CMW-DIP Gateways Overview 21

TCP/IP

CORBA

TCP/IP

RDA2 client

CORBA

RDA2 server

ZeroMQ

RDA3 client

ZeroMQ

RDA3 server

RDA2 framework RDA3 framework