CF & IoT Protocol Support Atul Kshirsagar Senior Engineer, GE Software Dedicated Committer, CF Diego Project May 11, 2015 Imagination at work
Agenda Protocol landscape in Industrial application Multi protocol Router Proposed router implementation 2
Protocol Landscape GE Usecase Regional control center Backup control center Data historian Primary control center HMI station Engineering workstations Control server (SCADA - MTU) RMI HTTP Corporate enterprise network P SFTP Modem gateway SMTP WAN Predix Control server (SCADA - MTU) CDMA P TDMA Printer FDMA HTTP DDS S2S AMQP MQTT XMPP Binary HML station Predix Go Data historian Asset optimization Operations optimization ERP / CRM P PLC P Serial based radio Cellular, satellite, mesh, P/ethernet or serial communication P RTU PROFINET MODBUS Modem Modem MODBUS OPC-UA gateway gateway OPC-UA MTConnect DDS Level sensor Valve Pump DDS DDS DDS Local L P F access L P Pressure sensor Remote station Flow sensor Level sensor Valve Pressure sensor Remote station Pump Flow sensor F Predix
Predix Industrial Internet Platform - Architecture Asset Performance Management (APM) Industrial Internet apps powered by Predix Operations Optimization Discover Code Deploy Operate Monetize BizOps DevOps Community Predix-ready MACHINES and industrial devices Machine Embedded Industrial Microservices Catalog Application services Infrastructure services Built by GE, customers, partners GE Non-GE Cloud Foundry Cloud Infrastructure Scalable Elastic Reliable Trusted end-to-end
IoT Protocols
IoT Protocols
Cloud Foundry Protocols CF App1 http://app1 Go router App2 Sensor/Device/ Gateway mqtt://app1 App3
Cloud Foundry Protocols App2 App3 http://app1 Go router App1 CF Service Sensor/Device/ Gateway mqtt://iotservice MQTT Service Service Broker
Multi-protocol Router Imagination at work
Option 1 Layer 7 Router Pluggable architecture for protocol specific proxies Routes traffic to protocol specific proxies based on standard ports Each proxy determines the logical destination Protocol proxy then routes traffic to appropriate app/instance based on routing table Load Balancer 1883 7400 5222 Layer 7 router MQTT DDS XMPP App1 App2 App3 App n
Option 1 Layer 7 Router Pluggable architecture for protocol specific proxies Routes traffic to protocol specific proxies based on standard ports Each proxy determines the logical destination Protocol proxy then routes traffic to appropriate app/instance based on routing table Load Balancer 1883 7400 5222 Layer 7 router MQTT DDS XMPP App1 App2 App3 App n 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 Raw TCP connections not supported
MQTT Example Fixed Header bit 7 6 5 4 3 2 1 0 byte 1 Message type (1) DUP Flag QoS Level RETAIN byte 2 Remaining length Variable Headers for CONNECT Protocol Name (8 bytes) Protocol Version (1 byte) Connect flags (1 byte) Keep Alive timer (2 bytes) 7 6 5 4 3 2 1 0 User name flag Pass word flag Will RETAIN Will QoS Will QoS Will flag Clean Session Reserved Header extensions to support protocol specific router plugins requires client-side updates doesn t work for IOT!
Option 2 Layer 4 Router Port address translation Map external port on router to an app Route traffic on mapped port to appropriate app Specify mapping of router port to container port as part of `cf push` Mechanisms to detect and report port conflicts 1883 Load Balancer 51216 51217 51218 Layer 4 router 1883 5222 App1 App2 App3
Option 2 Layer 4 Router Port address translation Map external port on router to an app Route traffic on mapped port to appropriate app Specify mapping of router port to container port as part of `cf push` Mechanisms to detect and report port conflicts 1883 Load Balancer 51216 51217 51218 Layer 4 router 1883 5222 App1 App2 App3 Pros Ability to support almost all layer 7 protocol Ability to support raw TCP connections Reduced complexity Cons Use of non standard ports Number of apps that can have nonhttp traffic is limited Number of ports on router ( ~ 64K)
Layer 4 Router
Layer 4 Router L4-router* router routing table route-emitter* layer 4
Layer 4 Router What Needs to Change Cloud controller changes to support new port mapping Application manifest to support new mapping CLI changes to parse and send new mapping to CC CLI changes to show new route/port mapping
Summary 1 Layer 4 router to provide multi protocol support in CF 2 Will be hosted in cloudfoundry-incubator 3 Feedback/contributions are welcome No contribution is small Contact atul.kshirsagar@ge.com or vineet.banga@ge.com
Q&A Imagination at work