communication platform for the internet of things
TRANSCRIPT
COMMUNICATION PLATFORM FOR
THE INTERNET OF THINGS
NEXT INTERNET GROWTH PHASE…
“DURING 2008, THE NUMBER OF THINGS CONNECTED TO THE INTERNET EXCEEDED THE NUMBER OF PEOPLE ON EARTH” SOURCE: CISCO IBSG, JIM CICCONI, ATT&T, STEVE LEIBSON, COMPUTER HISTORY MUSEUM, CNN, UNIVERSITY OF MICHIGAN, FRAUNHOFER
NABTO PRIMARY MARKET
INTERNET OF THINGS (IOT)
IOT = All internet devices other than PC’s, smart phones and tablets such as Alarm-systems, Energy Management, Medical, Industrial Controls, HVAC systems, IP-surveillance, Remote Management and Maintenance
Market size and potential:
Cisco: 50 billion IOT devices in 2020
IDC: 15 billions devices will be connected
to the internet in 2015
Forrester: In 2020 IOT will be 30 times larger than the ”normal Internet”
WHAT & WHO
• Vision – To be the preferred communication platform for the “Internet of things”.
• Product: – A standardized ”device” communication platform
• Value-proposition: – Seamless Remote Access
• Increase end-user value of your product by offering simple remote access • Bridges the gap between current web technology and embedded systems
– Simple Platform • Provides optimization for embedded design to lower software and hardware cost
– Maximum Security • Simple and Secure local and remote access using the highest security protocols
• Customers: – OEMs and System Integrators
VALUE PROPOSITION
Customer Challenges Nabto’s Solution
Limited Remote Access Tedious firewall configuration, Static IP addresses, DHCP setup, port forwarding, Dynamic DNS are some of the methods that can supply this, but to the average user this is very cumbersome.
Seamless Remote Access Nabto offers a simple browser interface using Peer-To-Peer direct communication similar to Skype. The browser interface provides a seamless way to locate, control and manage devices by simply typing a unique identification of the device into the browser: nabto://serial.model.net On local-networks, Nabto also offers easy discovery and autonomous access without being connected to the internet or “cloud”.
Higher Cost Embedded systems like Linux, Windows (CE) and proprietary OS offers IP-stacks and webservers etc. These systems also requires large and high cost CPUs, lots of memory and storage resulting in higher cost and complexity compared to other types of embedded designs.
Lowest cost and simple Nabto is a web technology framework designed for resource constrained devices. Nabto can be executed in very small environments creating a more simplified design, smaller footprint which results in a much lower cost solution.
Security Concerns Web technology was not designed with security in mind. Normal HTTP offers no encryption and the default authentication scheme (basic-authentication) is even non-encrypted.
Higher Security Nabto offers remote access encryption and authentication using SSL, X509 and PKI security protocols.
Limited Platform Support Today, the user-client environment is very heterogeneous with: iPhones, iPods, Android phones, tablets, laptops and other smart phones running on Windows, Macs and Linux are just some examples of clients that users normally expect to be supported with a web browser access or APP support.
Multi-Platform support Nabto offers multiplatform client support for Apple, Windows, Linux and Android platforms. Both generic and specific interfaces can be specified and can easily be deployed along the way according to user demand.
Non-scaling cloud platform In cloud competing platforms, the user-interface computing and database layer resides centrally on a cloud platform resulting in higher cost hosting services.
Higher scaling cloud platform Nabto offers a cloud + P2P platform allowing higher scalability than any known cloud services. With Nabto, the user interface and device logic is a shared computation that takes place between the cloud service which initially mediates the direct peer-to-peer connection between the device and client. After the mediation, the client and device logic shares a direct connection known as peer-to-peer (P2P). Nabto offers both hosting services and direct ownership.
CUSTOMERS
SO WHAT IS IT?
• Basically Nabto is : A cloud system + extra
• Why extra?
– Autonomous operation
– Privacy protection
– Peer2Peer direct connection, similar to “Skype”
WHY WEB TECHNOLOGY FOR DEVICE MANAGEMENT?
• Huge user base
+99% knows how to use a browser
• Huge developer base
Web communication framework is well known
• Huge infrastructure
Install base is +99%
PRODUCT
Browser Nabto
Protocol Plugin
Nabto Device
Interface
Product logic
PC/Smartphone Internet aware device
Nabto Central
Services/ Basestation
It’s a software communication platform
3 parts in Nabto system: - Browser Plugin (Free, downloadable or on CD) - Basestation (hosted service, pure software delivery or hardware appliance, up to 100k devices) - Nabto device interface (pure software delivery offering consumer and industrial grade)
http://
BUSINESS MODEL
Browser Nabto
Protocol Plugin
Nabto Interface
Product logic
PC/Smartphone Internet aware device
Nabto Base
station
$
$
Free
Device manufactures license the platform
3 parts in Nabto system: - Browser Plugin (Free, downloadable or on CD) - Basestation (hosted service, pure software delivery or hardware appliance, up to 100k devices) - Nabto device interface (pure software delivery offering consumer and industrial grade)
THE NABTO TECHNOLOGY SIMPLE, CONNECT AND SECURE
EMBEDDED DESIGN CHALLENGES
• Webservers are big and clumsy: – TCP/IP stack – File system – Threads/scheduling – GIF/JPEG/Templates -> Large firmware – High Network capacity
• High complexity -> errors -> updates -> high price
Web technology was designed for supercomputers at CERN Not embedded devices….!!!
DEVICE SIDE NEEDS
External RAM
UDP stack
System On Chip
What you have What you want
Complex = Costly development Big platform = Costly production Integrated GUI = Costly maintenance
ARM Atom
ColdFire
External Flash
Kernel
TCP/IP Stack
WEB-server
CGI-script Static content Nabto
Data API
Complex and expensive Simple and inexpensive
Simple = Efficient development Small platform = Inexpensive production Decoupled GUI = Easy maintenance
Filesystem
NABTO – BASIC CLOUD SETUP
UDP stack
System On Chip
Device
Nabto Data API
Browser
Device Web Interface logic
PC
Cloud service
HTTP connection Data connection
NABTO – AUTONOMOUS SETUP
UDP stack
System On Chip
Device
Nabto Data API Browser
Basestation
PC
Cloud service
P2P connection
Data connection
Nabto Plugin
Discovery services
1. IMPLEMENT 4 FUNCTIONS
ReadUDP() WriteUDP()
Tick() WebServer()
Nabto Device
Software
Platform Interface
Device platform
UDP/IP stack
Just implement 4 functions -Two just have to be tied to the UDP/IP stack -One just have to be called every second -The last is the data API (explained later)
2. IMPLEMENT HTML-DD
Browser Nabto
Protocol Plugin
Nabto Data API
Embedded Logic
Client Internet aware device
“HTML-Device driver” encapsulates GUI and defines specific data transport interface of the device
HTML Device Driver
Compact simple protocol
HTML DEVICE DRIVER
Just a simple .zip file
• Static content = jpg, png, css, javascript, etc.
• HTML templates
• Mapping : Request URL -> Binary format
• Mapping : Response -> template parameters
MICRO WEB SERVER EXAMPLE
• Web server running on 8 bit Atmel AVR CPU with 2 kB of RAM, 32 kB flash
EXAMPLE : GETTEMPERATURE
<query name="getTemperature" id="0x0a">
<request>
<parameter name="sensorId" type="uint16"/>
<parameter name="filter" type="uint8" default="0"/>
</request>
<response>
<layout template="houseTemperature.tpt"/>
<parameter name="temperature" type=“uint16"/>
</response>
</query>
(Temperature is coded as real temperature * 256)
LIGHT WEIGHT VERSION
Nabto Protocol Plugin
Nabto Data API
Embedded Logic
Internet aware device
Browser
User input - via a nice menu nabto://05924.homeautomation.com/getTemperature?sensor=3
0x0a | 0x00 0x03 | 0x00
Buf[0] : GetTemperature request identifier Buf[0,1] : Sensor identification Buf[3] : Filter identification (see former slide for XML definition)
Request buffer:
WebServe( 0x0a, &Buf[1], 3 )
C call
LIGHT WEIGHT VERSION
Nabto Protocol Plugin
Nabto Data API
Embedded Logic
Internet aware device
Browser
0x16 0x80
Content of houseTemperature.tpt: <html><body> <h1>The temperature is: ${temperature}</h1> </body></html>
Response buffer:
WebServe() function returns response buffer
The temperature is: 22,5
User GUI
HTML rendering Via houseTemperature.tpt
ALL PUT TOGETHER
Browser
Web Interface
Nabto Data API
Embedded Logic
PC Internet aware device
Nabto Base
station
http://
DNS address of the device points to cloudservices 5834.homeautomation.net
Cloud service
nabto://
ALL PUT TOGETHER
Browser Nabto Data API
Embedded Logic
PC Internet aware device
Nabto Base station
Connect Mediation
Cloud service
1 Plugin detection is performed 2 The Nabto plugin is installed 3 HTML DD is downloaded
Nabto Protocol
Plugin P2P nabto://
STUN (RFC 5389, 3489)
Nabto STUN NAT
UDP socket IP1,Port1
UDP socket IPS2,PortS2
UDP socket IPS1,PortS1
UDP socket IP-FW,Port-FW Same for IPS1 and IPS2?
Bind a local UDP socket, and examine its public internet IP and Port
UDP HOLEPUNCHING
Nabto Client
Base station
NAT
MYADDRESS: UDP socket IP-FW1,Port-FW1
Nabto Device
NAT
MYADDRESS: UDP socket IP-FW2,Port-FW2
Transmit this information via the basestation to/from both peers
NO INTERNET – NO PROBLEM
Browser Nabto
Protocol Plugin
Nabto Data
Interface
Embedded Logic
PC Nabto device
2. I’m here : IP address
3. nabto:// connection
NB: LAN can be just a net-cable from Laptop to device
1. Broadcast : are you on LAN?
LOCALIZATION – SAME FIRMWARE
Browser Nabto
Protocol Plugin
Nabto DataAPI
Embedded Logic
PC Internet aware device
Nabto Base
station
nabto://
English HTML-DD
Spanish HTML-DD
French HTML-DD
German HTML-DD
OEM’S – IN SAME FIRMWARE
Browser Nabto
Protocol Plugin
Nabto Data API
Embedded Logic
PC Internet aware device
Nabto Base
station
nabto://
Company HTML-DD
OEM1 HTML-DD
OEM2 HTML-DD
OEM3 HTML-DD
SIMPLE LOGGING, SMS AND EMAIL
Browser Nabto
Protocol Plugin
Nabto DataAPI
Embedded Logic
PC Internet aware device
Nabto Base
station
Log server
Log SMS Email
SMTP gateway
SMS Gateway
CLIENT API
Customer Client
Software
Nabto Protocol Adapter
PC / Smartphone
TCP Port
On demand TCP-Portforwarding
Nabto Protocol Adapter
IP interface
On demand VPN-forwarding Virtual
Network card
Browser
On demand HTTP-proxyforwarding
Nabto Protocol plugin
APP
On demand Low-footprint HTTP
Nabto ClientAPI
Programatic
Remote Procedure Calls Or JSON requests
NABTO – CLIENTAPI - PROGRAM CONNECTION
UDP stack
System On Chip
Device
Nabto Data API Program
Basestation
PC
Cloud service
P2P connection
Data connection
Nabto Client
API
Discovery services
JSON EXAMPLE – PSEUDO CODE
nabtoStartup() h = nabtoOpenSession(email, password) JSON1 = nabtoFetchUrl(h, url) parseAndHandleJSON(JSON1) JSON2 = nabtoFetchUrl(h, url) parseAndHandleJSON(JSON2) … JSON3 = nabtoFetchUrl(h, url) parseAndHandleJSON(JSON3) nabtoCloseSession(h) nabtoShutdown()
NON-PSEUDO
nabto_status_t status; nabto_handle_t session; status = nabtoStartup("."); if (status != NABTO_OK) { ... /* do error handling */ } status = nabtoOpenSession(&session, email, password); char* resultBuffer; size_t resultLen; char* mimeTypeBuffer; status = nabtoFetchUrl(session, url, &resultBuffer, &resultLen, &mimeTypeBuffer); if (strcmp(mimeTypeBuffer, "text/html") == 0) { printBufferAsString(resultBuffer, resultLen); } else { // do other stuff } nabtoFree(resultBuffer); nabtoFree(mimeTypeBuffer); status = nabtoCloseSession(session);
CLIENT API ACCESS TO THE RAW DATAAPI
Client Software
Nabto Client
API (C/C++/C#)
Nabto DataAPI
Embedded Logic
MEMORY FOOTPRINT - EXAMPLES
Nabto - Microdevice requirements
Flash (KB) Memory
(Bytes) uNabto WEB - LAN only (**) 8 512
Remote capability +14 +215
Encryption +10 +1024
Device VPN RM RM
TCP Relay fallback * *
Streaming (WEB only) 20 +2048
Tunnelling * *
RM = Roadmap
* = Depends on the TCP/IP stack
** = Is required
The requirements are estimations based upon measurements on a PIC18 Microchip compiler and IP-stack
COMPARISON
Nabto Cloud competitor
Net device based
PC program / APP
Examples: Axeda, ILS, IO Bridge
Lantronix, Moxa, Digi,
Wiznet Key Features Autonomous LAN operation (Works even if WAN-line is offline)
YES NO Depends DEPENDS
Minimal device architecture YES YES NO DEPENDS Privacy protection YES NO YES YES Central management of user interface YES YES NO NO Minimal latency YES NO Depends YES
Standardized Device Communication Platform
YES NO NO NO
VPN feature YES Possible NO NO Built-in scalability YES Possible NO NO Built-in device management features YES NO NO NO
Minimal firewall knowledge required of end user
YES YES NO NO
Minimal IP knowledge required by end user
YES YES NO NO
RTOS support YES Possible Possible Possible X509 authentication YES Possible Possible NO
Built-in notification service (SMS and Email)
YES NO NO NO
Built-in remote firmware update YES NO NO NO
REAL LIFE EXAMPLE: DANFOSS
Freescale MCF52255 – 64kb RAM 512kb flash
IT’S THAT EASY – NOW YOU GOT
• A simple webserver interface on your device – PC, Tablet, Smart Phones and Handhelds
• Easy local and remote connectivity to your device – Just type the device ID in the browser
• Multi-language and multi-interface GUI
• Optional central services – Remote update
– Storage and logging abillity
www.nabto.com