Imagination at work
CF & IoT Protocol Support
Atul Kshirsagar Senior Engineer, GE Software Dedicated Committer, CF Diego Project May 11, 2015
3
Protocol Landscape – GE Usecase
P Predix
ERP / CRM
Predix Go
L P F L P
Data historian HMI
station Engineering
workstations
Printer Control server (SCADA - MTU)
Serial based radio
Cellular, satellite, mesh, P/ethernet or
serial communication
Control server (SCADA - MTU)
P P
Pump Valve Pump Valve
Pressure sensor
Flow sensor
Level sensor
Pressure sensor
Flow sensor
Level sensor
RTU PLC
Modem gateway
P
Local access
Remote station
Remote station
Modem gateway
F
Modem gateway
HML station
Corporate enterprise network
WAN
Primary control center
Backup control center
Regional control center
Data historian
P MODBUS OPC-UA OPC-UA MTConnect
DDS DDS DDS DDS
DDS
MQTT
S2S
XMPP
HTTP
Binary
PROFINET MODBUS
CDMA FDMA
TDMA
HTTP RMI
SFTP SMTP
AMQP
Asset optimization
Operations optimization
GE | Non-GE
Predix-ready MACHINES and industrial
devices
Industrial Internet apps powered by Predix
Cloud Infrastructure
• Scalable • Elastic • Reliable • Trusted end-to-end
Cloud Foundry
Industrial Microservices Catalog
Application services Infrastructure services
• Built by GE, customers, partners
Machine Embedded
Discover Code Deploy Operate Monetize • BizOps • DevOps • Community
Asset Performance Management (APM) Operations Optimization
Predix* Industrial Internet Platform - Architecture
Predix is a trademark of General Electric Company.
IoT Protocols
IoT Protocols
CF
Go router
App1
App2
App3
mqtt://app1
http://app1
Sensor/Device/Gateway
Cloud Foundry Protocols
App1
App2
MQTT Service
Sensor/Device/Gateway
Go router
App3
http://app1
mqtt://iotservice Service Broker
CF Service
Cloud Foundry Services
Option 1 – Layer 7 Router
• Pluggable architecture for protocol specific proxies
• Routes traffic to protocol specific proxies based on standard ports
• Protocol proxy then routes traffic to appropriate app/instance based on routing table
App n App3 App2 App1
Layer 7 router Layer 7 router
MQTT DDS XMPP
App1 App2 App3 App n
Load Balancer
1883 7400 5222
Option 1 – Layer 7 Router
• Pluggable architecture for protocol specific proxies
• Routes traffic to protocol specific proxies based on standard ports
• Protocol proxy then routes traffic to appropriate app/instance based on routing table
Pros • Standard ports exposed for protocols
• Scalable
• Extensible as more protocol proxies can be added on needed basis
• Router services could be developed
Cons
• Support for each protocol needs to be developed independently
• Difficult for protocol proxies to decipher logical targets
App n App3 App2 App1
Layer 7 router Layer 7 router
MQTT DDS XMPP
App1 App2 App3 App n
Load Balancer
1883 7400 5222
bit 7 6 5 4 3 2 1 0
byte 1 Message type (1) DUP Flag QoS Level RETAIN
byte 2 Remaining length
Fixed Header
Variable Headers for CONNECT
Protocol Name (8 bytes)
Protocol Version (1 byte)
Connect flags (1 byte)
Keep Alive timer (2 bytes)
Header extensions to support protocol specific router plugins requires client-side updates – doesn’t work for IOT!
MQTT Headers
7 6 5 4 3 2 1 0 User
name flag
Password flag
Will RETAIN
Will QoS
Will QoS
Will flag
Clean Session
Reserved
Option 2 – Layer 4 (TCP) Router
• Map external port on router to an app
• Route traffic on mapped port to appropriate app
• Specify mapping of router port to app as part of cf cli
• Mechanisms to detect and report port conflicts App3 App4 App1 App1
Layer 4 router Layer 4 router
Load Balancer
TCP router - 1
App1 App2 App4
1883 5222 5222
1883 5222 5222
TCP router - 2
Load Balancer
App3
5222
51216
Option 2 – Layer 4 (TCP) Router
• Map external port on router to an app
• Route traffic on mapped port to appropriate app
• Specify mapping of router port to app as part of cf cli
• Mechanisms to detect and report port conflicts
Pros • Ability to support almost all layer 7
protocol (including but not limited to IoT protocols)
• Reduced complexity
Cons
• May have to use of non standard ports
• Number of apps that can have non-http traffic is limited
• Number of ports on router ( ~ 64K)
• Number of front end IPs
App3 App4 App1 App1
Layer 4 router Layer 4 router
Load Balancer
TCP router - 1
App1 App2 App4
1883 5222 5222
1883 5222 5222
TCP router - 2
Load Balancer
App3
5222
51216
Layer 4 (TCP) Router - Architecture
Layer 4 (TCP) Router - Architecture
• As apps get placed/moved emit the information to router • Update the tcp router config to forward the traffic to appropriate
host IP/Port
Route TCP traffic
• During Config changes
Zero downtime
Rolling deploy
Layer 4 (TCP) Router – Goals
Load balancing among app instances
• Is the host IP/Port in routing table still reachable
Health checks
• Simultaneous connections • Connection rate
Traffic shaping/limiting
Managing backend ports
Layer 4 (TCP) Router - Goals
• Cloud controller changes
Reserve front end IP/Port combination
• CLI changes
Add/Remove/Show mapping
Application manifest to support new mapping
Layer 4 (TCP) Router – Goals
Summary
Layer 4 (TCP) router to provide IoT protocols (and more) support in CF
1
Will be hosted in cloudfoundry-incubator 2
Feedback/contributions are welcome • IoT usecases • Contact [email protected] or [email protected]
3
Imagination at work
Q&A
General Electric Company reserves the right to make changes in specifications and features, or discontinue the product or service described at any time, without notice or obligation. These materials do not constitute a representation, warranty or documentation regarding the product or service featured. Illustrations are provided for informational purposes, and your configuration may differ. This information does not constitute legal, financial, coding, or regulatory advice in connection with your use of the product or service. Please consult your professional advisors for any such advice. No part of this document may be distributed, reproduced or posted without the express written permission of General Electric Company. GE, Predix�and the GE Monogram are trademarks of General Electric Company. ©2015 General Electric Company – All rights reserved.
Top Related