Citrix Octoblu Architecture Breakdown
-
Upload
john-moody -
Category
Internet
-
view
220 -
download
0
Transcript of Citrix Octoblu Architecture Breakdown
© 2014 Citrix. Confidential.‹#›
Octoblu connects everything to everything.
Everything is a Node whether a Person, Service, Thing, Sensor, Flow, etc.
Every Node is uniquely addressable with a UUID and accessible with a Token.
JSON addressed by UUID can be sent and received to / from any node.
Flows can automate anything by connecting nodes and adding logic.
Cross-protocol APIs are available for machine-to-machine messaging w/o flows.
Deployed anyway that meets your security and connectivity needs.
© 2014 Citrix. Confidential.‹#›
Architecture Overview
© 2014 Citrix. Confidential.‹#›
Deployed Your Way!
Isolated Deployment
OctobluFlow Engine
Your Gateway Device (s)
OctobluFlow Engine Your Gateway Device (s)
Our Cloud Deployment
Our Cloud
OctobluFlow Engine Your Gateway Device (s)
Your Cloud Deployment
Your CloudOur cloud deployments are cloud portable because they run on node.js in docker containers on VMs.
Even isolated gateways can mesh together because Meshblu supports highly distributed mesh deployments.
Meshblu
Meshblu
Gateblu
Gateblu
Meshblu Gateblu
© 2014 Citrix. Confidential.‹#›
Architecture
© 2014 Citrix. Confidential.‹#›
© 2014 Citrix. Confidential.‹#›
Octoblu• User interface for device and channel
management• User interface for security
configuration of devices• Visual designer for flow design and
deployment• User interface supports mobile tablets• Process monitoring of devices and
flows• BigData analytics and basic machine
learning• Scalable. Deployable as private/public
clouds or on a small appliance
© 2014 Citrix. Confidential.‹#›
Meshblu• Cross-protocol messaging platform (HTTPS,
COAP, MQTT, WebSockets)• Device Registry / Directory• Security authentication with UUID / Token • Security authorization with device ownership,
permissions with whitelists and blacklists• Secure message encryption for devices with
public/private keys• Scalable. Deployable as private/public
clouds or on a small appliance• Open source
© 2014 Citrix. Confidential.‹#›
Gateblu & Mobiblu
• Device plugin manager• Allows device plugins to be
configured and run on the edge• Platform agnostic (Windows,
Linux, Mac, IOS, and Android)• Supports native device protocols
including BLE & AllJoyn• Open source (Gateblu)
© 2014 Citrix. Confidential.‹#›
Flow Engine (Octo)• Flow automation engine that
runs flows in secure containers in Octoblu’s cloud
• Allows custom automations to be run 24 X 7 once deployed
• Can run multiple user automations concurrently
© 2014 Citrix. Confidential.‹#›
Securely – With your encryption or ours. It’s your data after all!!
Payloads can now be encrypted too!
© 2014 Citrix. Confidential.‹#›
Message Routing
© 2014 Citrix. Confidential.‹#›
Meshblu – Device Registration and Message Routing 1. Register Sensor (CoAP)POST coap://meshblu.octoblu.com/devices {"type": "sensor"} => {"uuid":"8f8ad80b-ffae-4495-a63e-81b89ffd9ddf", "type":"sensor"}
2. Register Arduino (Websocket)POST https://meshblu.octoblu.com/devices {"type": "arduino"} = {"uuid":"2daac3bd-9b5a-472b-a78e-4294623e7f35", "type": "arduino"}
3. Register Hue (HTTP)POST https://meshblu.octoblu.com/devices {"type": "hue"} = {"uuid":"91204397-b701-4415-a3c7-190bfd14559d", "type": "hue"}
4. Arduino subscribes to sensor broadcast (Websocket)meshblu.subscribe("8f8ad80b-ffae-4495-a63e-81b89ffd9ddf")
5. Sensor sends broadcast messagecoap POST coap://meshblu.octoblu.com/messages {"fromUUid": "8f8ad80b-ffae-4495-a63e-81b89ffd9ddf", "devices": "*", "payload": {"temp":100}}
6. Arduino queries device registry for hue devicesmeshblu.devices({"type":"hue"}) => [{"uuid":"91204397-b701-4415-a3c7-190bfd14559d","type":"hue"}]
7. Sends direct message to hue: turn greenmeshblu.send({"fromUUid": "2daac3bd-9b5a-472b-a78e-4294623e7f35", "devices": "*", "payload": {"color":"green"}})
© 2014 Citrix. Confidential.‹#›
Meshblu – Device Security 1. Register Arduino (Websocket)POST https://meshblu.octoblu.com/devices {"type": "arduino"} => {"uuid":"2daac3bd-9b5a-472b-a78e-4294623e7f35", "type": "arduino"}
2. Register Hue A (HTTP)POST https://meshblu.octoblu.com/devices {"type": "hue"} => {"uuid":"91204397-b701-4415-a3c7-190bfd14559d", "type": "hue"}
3. Register Hue B (HTTP)POST https://meshblu.octoblu.com/devices {"type": "hue", "discoveryWhitelist": ["e78ed30b-aa8b-41b0-98dc-eac49bb59d28"]} => {"uuid":"17e95928-f361-46a6-89df-82308608e590", "type": "hue", "discoveryWhitelist": ["e78ed30b-aa8b-41b0-98dc-eac49bb59d28"]}
4. Arduino queries device registry for hue devices, only Hue A is returnedmeshblu.devices({"type":"hue"}) => [{"uuid":"91204397-b701-4415-a3c7-190bfd14559d","type":"hue"}]
© 2014 Citrix. Confidential.‹#›
Meshblu – Encrypted Payload 1. Register Gateway with a Public Key (base64 encoded) (Websocket)POST https://meshblu.octoblu.com/devices {"type": "gateway", "publicKey":"LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0NCk1JR2ZNQTBHQ1NxR1NJYjNEUUV...MDRaWndJREFRQUINCi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQ=="} = {"uuid":"6d56961a-5725-4a64-a4f9-d68a8f17216c", "type": "gateway"}
2. Register Arduino owned by Gateway (Websocket)POST https://meshblu.octoblu.com/devices {"type": "arduino", "owner": "6d56961a-5725-4a64-a4f9-d68a8f17216c"} = {"uuid":"2daac3bd-9b5a-472b-a78e-4294623e7f35", "type": "arduino"}
3. Arduino sends Gateway encrypted messageGET https://meshblu.octoblu.com/devices/6d56961a-5725-4a64-a4f9-d68a8f17216c/publickey => {"publicKey" : "LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0NCk1JR2ZNQTBHQ1NxR1NJYjNEUUV...MDRaWndJREFRQUINCi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQ=="}meshblu.send({"fromUUid": "2daac3bd-9b5a-472b-a78e-4294623e7f35", "devices": ["6d56961a-5725-4a64-a4f9-d68a8f17216c"], "payload": {"metadata":"not a secret"}, "encryptedPayload":"U2hoaGhoaGhoaGggc2VjcmV0Cg=="})
© 2014 Citrix. Confidential.‹#›
Octoblu – User Signup and Device Management 1. Sign Up For Octoblu / Create Meshblu device (HTTP)POST https://meshblu.octoblu.com/devices {"type": "user",} = {"uuid":"6d56961a-5725-4a64-a4f9-d68a8f17216c", "type": "user"}
2. Get Device ListGET https://meshblu.octoblu.com/devices => []
3. Register WeMo owned by User (Websocket)POST https://meshblu.octoblu.com/devices {"type": "wemo", "owner": "6d56961a-5725-4a64-a4f9-d68a8f17216c"} = {"uuid":"2daac3bd-9b5a-472b-a78e-4294623e7f35", "type": "wemo"}
4. Connect Twitter5. Create Flow, Tweet to Turn Off Lights6. View status/activity of flow/devices
© 2014 Citrix. Confidential.‹#›
Octoblu – Start an “Octo” 1. Deploy flow, register with MeshbluPOST https://meshblu.octoblu.com/devices {"type": "octoblu:flow"} => {"uuid":"8f8ad80b-ffae-4495-a63e-81b89ffd9ddf", "type":"octoblu:flow"}
2. Start an Octo3. Octo allows node to node communication4. Emit pulse to Octoblu designermeshblu.send({"fromUUid": "8f8ad80b-ffae-4495-a63e-81b89ffd9ddf", "devices": "*", "topic": "pulse", "payload": {"node": "a403a485-25bb-4e8f-9c55-23042b58761c"}}
5. Stop Flow shuts down Octo
© 2014 Citrix. Confidential.‹#›
Core Technologies
Operational Partners