Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
마스터 제목 스타일 편집
Internet of
ThingsDSRC
Jaehoon (Paul) Jeong [email protected]
(OCF: Open Connectivity Foundation)
IoTivity: OCF Open Source Project
KRnet 2016
IoTLab
마스터 제목 스타일 편집
IoTivity OCF Project Participation
Installation & Demo of IoTivity
I
II
III
V
IV
DNSNA: DNS Name Autoconfiguration
for IoT Devices in IoTivity
VI
Conclusion VII
2
마스터 제목 스타일 편집
Introduction to IoTivity
마스터 제목 스타일 편집
Introduction to IoTivity (1/2) AllSeen Alliance vs. OIC (Open Interconnect Consortium)
4
마스터 제목 스타일 편집
Introduction to IoTivity (2/2) OCF (Open Connectivity Foundation)
5
마스터 제목 스타일 편집
Conceptual Architecture of IoTivity
6
DiscoveryDevice
Management
Data
Management
Data
Transmission
Resource Model Security, Privacy, and Management
Framework
Layer
Transports
Layer
Profiles
Layer
Industry Health Business Education Automotive
마스터 제목 스타일 편집
IoTivity Framework
7
Transport
Protocol
IoTivity Base 1
(C API Stack/
Internal)
IoTivity Base 2
(C++ SDK)
Basic
Service
Additional
Service
UDP/IPTCP/IP
(Future)
Future PAN
(Future)
Logger
OCSocket Connectivity libcoap-4.1.1 ocrandom ocmalloc
JSON
Encoder/Decoder OCCoAP (Transport)
OCStack
Resource Manager
(Registration, Discovery, Attribute GET/SET/OBSERVE)
Protocol
Plugin
Manager
Software
Sensor
Manager
Things
Manager
Notification
Manager
REST
Framework
Control/Controllee
Manager
마스터 제목 스타일 편집
IoTivity Stack
RESTful
Using CoAP protocol
Manage through resource
Point to multiple/point topologyUDP / IP
CoAP
IoTivity Base(C SDK)
IoTivity Base(C++ SDK)
Application
UDP / IP
CoAP
IoTivity Base(C SDK)
Application
Resource API
For Unconstrained DevicesResource API
For Constrained Devices
8
마스터 제목 스타일 편집
AllJoyn Stack
Mesh of stars
Manage through BusObject
Using D-Bus protocol
RMI
AllJoyn Router
AllJoyn Core Frameworks
Base Service Frameworks
Application
AllJoyn Software
Frameworks
9
마스터 제목 스타일 편집
IoTivity vs. AllJoyn
Comparison between IoTivity and AllJoyn
IoTivity AllJoyn
Feature RESTful RMI
Protocol CoAP D-Bus
Management Resource BusObject
Topology Point to Point Mesh of Stars
10
마스터 제목 스타일 편집
Protocols for IoTivity
마스터 제목 스타일 편집
CoAP (1/4) Constrained Application Protocol (CoAP)
- IETF Standard in CoRE Working Group: RFC 7252
- CoAP is a specialized web
transfer protocol for use with
constrained nodes/networks.
- URI and content-type support
- Asynchronous message exchanges
- UDP and DTLS for Secure
Transport Layer Protocol.
- CoAP defines 4-type Messages
using a 4-byte, binary, and base
header format with binary options.
12
Application
UDP/DTLS
CoAPMessage
Request / Responses
마스터 제목 스타일 편집
CoAP (2/4) CoAP Message Format
13
Ver (Version): CoAP version number (01) T (Message Type): Confirmable (0), Non-confirmable (1), Acknowledgement
(2), or Reset (3) TKL (Token Length): The length of the variable-length Token field (0-8 bytes) Code: 3-bit class (e.g., request and success response) and 5-bit details Message ID: To detect message duplication and to match messages of type
Acknowledgement/Reset to messages of type Confirmable/Nonconfirmable. Token: The Token value is used to correlate requests and responses.
마스터 제목 스타일 편집
CoAP (3/4) 2 Types of Transmission
- Confirmable: The recipient sends the sender an ACK message
with the same Message ID for the confirmable message.
- Non-Confirmable: A message that does not require reliable
transmission can be sent as a Non-confirmable message.
ServerClient
CON [0x7d34]
Reliable Message Transmission
ACK [0x7d34]
ServerClient
NON [0x01a0]
Unreliable Message Transmission
14
마스터 제목 스타일 편집
CoAP (4/4)
15
CC
C
C
C
Server
Server
Server
Proxy
Internet Constrained Environments
마스터 제목 스타일 편집
6LoWPAN (1/2) IPv6 over Low-Power Wireless Personal Area Networks
- N/W Adaptation Layer between IPv6 Protocol & IEEE 802.15.4
- Encapsulation (RFC 4944) and Header Compression (RFC 6282)
- Neighbor Discovery Optimizations (RFC 6775)
HTTP RTP
TCP UDP ICMP
IP
Ethernet MAC
Ethernet PHY
Application
UDP ICMP
IPv6
6LoWPAN
IEEE 802.15.4 MAC
IEEE 802.15.4 PHY
Application
Transport
Network
Data Link
Physical
16
마스터 제목 스타일 편집
6LoWPAN (2/2) IPv6 over Low-Power Wireless Personal Area Networks
- Sensor nodes use 6LoWPAN over 802.15.4 to create a mesh
network that is connected to an Ethernet-equipped gateway node.
Internet
6LoWPAN Network
Gateway
17
Communications range: 10 meter Transfer rate: 250 kbit/s Frequency bands: 868/915/2450 MHz MAC Protocol: CSMA/CA
마스터 제목 스타일 편집
Procedures of IoTivity
마스터 제목 스타일 편집
Interaction between OIC Client & Server
19
OIC Client
(User)
OIC Server
(Resource)
1. Resource
Registration
2. Light Bulb Resource Discovery (GET)
3. Status Query for Light Bulb (GET)
4. Config Query for Light Bulb (PUT)
5. Status Observation Query (GET)
마스터 제목 스타일 편집
Registering a Resource
ISVServer
AppSDK
ServerWrapper(internal)
OCStack(internal)
[1]Platform.registerResource( )
[2]InProcServer.registerResource( )
[3]OCCreateResource( )
OCStackResult
Failure / Success
Failure / Success
20
마스터 제목 스타일 편집
Discovering a Device/Resource
21
Application
C++ API(SDK)
C API (Stack/Internal)
IoTivityDevice
IoTivityDevice
IoTivityDevice
IoTivityDevice
OIC Client
(Smartphone)
OIC Server
(IoT Devices)
(2) Reply from the
Corresponding IoT
Devices in Unicast
(1) Query in Multicast
(e.g., GET/oc/core?rt=light)
마스터 제목 스타일 편집
ISVClientApp
ClientSDK
ClientWrapper(Internal)
ClientOCStack
(Internal)
[1]resource.get(callback)
[2]InProcClient.get(callback)
[3]OCDoResource()
[12] invoke wrapperAsyncCallbackFunc
ServerOCStack
(Internal)
ServerWrapper(Internal)
ServerSDK
ISVServer
App
[5]call entity handler[6] call OCResource
[7] InProcClient.get()
[8] Return code[9] Return code[10] Return code
[4] GET /light/1
[11] ACK, CONENT
[13] asyncResultHandler
ResourceGet
GetRequest
Call Entity Handler
ReturnResult code
Failure / pending
Querying a Resource State (GET)
22
Client Server
마스터 제목 스타일 편집
Setting a Resource State (PUT) ISV
ClientApp
ClientSDK
ClientWrapper(Internal)
ClientOCStack
(Internal)
[1]resource.put(attributeMap, callback)
[2]InProcClient.setResourceAttributes(attributeMap, callback)
[3]OCDoResource()
[12] invoke wrapperAsyncCallbackFunc
ServerOCStack
(Internal)
ServerWrapper(Internal)
ServerSDK
ISVServer
App
[5]call entity handler
[6] call OCResource
[7] InProcClient.put(attributeMap)
[8] Return code[9] Return code[10] Return code
[4] PUT /light/1
[11] ACK, CHANGED
[13] asyncResultHandler
ResourcePut
PutRequest
Call Entity Handler
ReturnResult code
Failure / pending
23
Client Server
마스터 제목 스타일 편집
ISVClientApp
ClientSDK
ClientWrapper(Internal)
ClientOCStack
(Internal)
[1]resource.observe()
[2]InProcClient.observe()
[3]OCDoResource()
[12] invoke wrapperAsyncCallbackFunc
ServerOCStack
(Internal)
ServerWrapper(Internal)
ServerSDK
ISVServer
App
[5]call entity handler
[6] call OCResource
[7] InProcClient.observe()
[8] Return code[9] Return code[10] Return code
[4] GET /light/1
[11] ACK, CONTENT
[13] asyncResultHandler
ResourceObserve
ObserveRequest
Call Entity Handler
ReturnResult code
Failure / pending
Observing a Resource State (1/2)
24
Client Server
마스터 제목 스타일 편집
Observing a Resource State (2/2) ISV
ClientApp
ClientSDK
ClientWrapper(Internal)
ClientOCStack
(Internal)
[18] invoke wrapperAsyncCallbackFunc
ServerOCStack
(Internal)
ServerWrapper(Internal)
ServerSDK
ISVServer
App
[15] OCNtifyObserves()[16] OCNotifyObservers()
[17] CON, CONTENT
[19] asyncResultHandler
Result Trans Notify Event
[14] Change EventNotification
Cancellation
[20] [21][22] OCCancel()
[23] GET /light/1
25
Client Server
마스터 제목 스타일 편집
Installation & Demo of IoTivity
마스터 제목 스타일 편집
Installation (1/4) Install
- https://www.iotivity.org/documentation/linux/getting-started
$ sudo apt-get install git-core
$ sudo apt-get install scons
$ sudo apt-get install ssh
$ sudo apt-get install build-essential g++
$ sudo apt-get install libglib2.0, scons, unzip, uuid-dev, python-
dev, autotools-dev, libicu-dev, libbz2-dev
27
마스터 제목 스타일 편집
Installation (2/4) Download Libraries
$ tar xzvf boost_1_55_0.tar.gz
$ cd boost_1_55_0/
$ ./bootstrap.sh --with-
libraries=system,filesystem,date_time,thread,regex,log,iostreams,
program_options --prefix=/usr/local
$ sudo apt-get update
$ sudo apt-get install python-dev autotools-dev libicu-dev build-
essential libbz2-dev
28
마스터 제목 스타일 편집
Installation (3/4) $ sudo ./b2 install
$ sudo sh –c ‘echo ‘/usr/local/lib’ >> /etc/ld.so.conf.d/local.conf’
$ sudo ldconfig
29
마스터 제목 스타일 편집
Installation (4/4)
Download IoTivity source code.
Build the IoTivity project for linux.
$ <..iotivity directory..> scons
After build, sample code had made in <iotivity>/out/ directory.
30
마스터 제목 스타일 편집
Demonstration
31
마스터 제목 스타일 편집
IoTivity OCF Project Participation
마스터 제목 스타일 편집
Access the IoTivity Website
33
마스터 제목 스타일 편집
Access Get-Involved Webpage
34
마스터 제목 스타일 편집
DNSNA: DNS Name Autoconfiguration for IoT Devices in IoTivity
마스터 제목 스타일 편집
DNSNA 제안 배경 IoT 디바이스에 대한 네이밍 서비스
- 수많은 IoT 디바이스의 DNS Name 자동설정 및 DNS Naming 서비스
※ 차세대 인터넷 프로토콜인 IPv6를 통한 IoT 디바이스 관리
36
마스터 제목 스타일 편집
IoT 디바이스의 텍스트 리스트 IoT 디바이스의 비주얼 디스플레이
같은 종류의 디바이스 구별의 어려움 같은 종류의 디바이스를 장소로 구분
이동 디바이스의 위치 파악이 불편함 이동 디바이스의 위치 파악이 용이함
기존의 방식(예, AllJoyn) DNSNA: DNS Name Autoconf
Indoor 환경에서의 IoT 디바이스 관리
적용 분야: 아파트, 사무실, 쇼핑몰(이마트), 공장(현대자동차)
Source: Sejun Lee, Jaehoon (Paul) Jeong, and Jung-Soo Park, “DNSNA: DNS Name
Autoconfiguration for Internet of Things Devices”, ICACT 2016, January 2016. 37
마스터 제목 스타일 편집
Comparison between mDNS [RFC 6762] & DNSNA in terms of
DNS Traffic for DNS Name Resolution in a Multi-link Network
DNS Name Resolution at mDNS DNS Name Resolution at DNSNA
DNSNA (based on unicast) has the less number of messages (i.e., less energy
consumption) than mDNS (based on multicast) - Initialization Cost for DNS Name Uniqueness Test
- Service Cost for DNS Name Resolution into IPv6 Addresses.
m : #messages from client node (𝑛𝑐) to designated node (𝑛𝑡)
|E|: #total links
O(|E| + m) O(2ⅹm)
38
마스터 제목 스타일 편집
DNSNA vs. mDNS (RFC6762) Approaches DNSNA[11] mDNS[13,14,15]
Packet Forwarding Unicasting Multicasting
Authoritative
DNS Server Yes
No
(host itself is server)
Naming Scope Global, Local Local
Target Networks Small, Large Small
Socket RAW/IPv6 UDP/IPv6
Host Implementation A little extension of ND mDNS implementation
required
Code Size Hundreds lines Thousands lines
Target Devices IoT Devices Apple Equipment
Message Number
2ⅹ#hops of the path
from client to DNS
server
#links in the network +
#hops from target to
client 39
마스터 제목 스타일 편집
IoT 디바이스 DNS 네이밍 시스템 (1/5) DNS Name Format 1:
unique_id: Unique identifier to guarantee the uniqueness
device_model: Product model of manufacturer name
device_category: Device category name
location: Physical location of the device (e.g., kitchen)
domain_name: Representation and use of domain name (e.g., home, skke.edu)
DNS Name Format 2 (OID):
unique_id: Unique identifier to guarantee the uniqueness
object_identifier: Object Identifier (OID) standardized by ITU-T and ISO/IEC Node Indication ID + Manufacturer ID + Model ID + Serial Number ID
location: Physical location of the device (e.g., kitchen)
domain_name: Representation and use of domain name (e.g., home, skke.edu)
unique_id.object_identifier.location.domain_name
40
마스터 제목 스타일 편집
IoT 디바이스 DNS 네이밍 시스템 (2/5) Time Sequence Diagram of DNSNA
RA
(DNSSL Option)
DAD
Remote Control
by Device Icon
DNS Name
Generation
NI Query (DNS Name?)
NI Reply(DNS Name &
IPv6 Address)
IoT Device Router DNS Server
DNS Dynamic Update(DNS Name & IPv6 Address)
User Device
Get Device List
Put Device List
DNS Query(DNS Name?)
DNS Response
(No Such DNS Name)
1. DNS Name Generation
2. DNS Name Collection
3. DNS Name Registration
4. IoT Device List
Retrieval
41
마스터 제목 스타일 편집
IoT 디바이스 DNS 네이밍 시스템 (3/5)
IoT 디바이스 DNS 네임 자동 생성
DNS Server
Router
Tablet PC Access Point
IPv6 Host
Firesensor
DAD for DNS Name
RA Option (DNS Search List)
DHCP Option (DNS Search List)
DNS Search List:
.home
1
2
3
Firesensor generates its DNS name as
firesensor1.raspberry.firesensor.livingroom.home
42
마스터 제목 스타일 편집
IoT 디바이스 DNS 네이밍 시스템 (4/5)
IoT 디바이스 DNS 네임 등록
DNS Server
Router
Tablet PC Access Point
IPv6 Host
NI Reply (DNS Name & IPv6 Address)
NI Query (DNS Name Collection)
What is your DNS Name?
1
2
3 Dynamic Update
(DNS Name &
IPv6 Address)
My DNS name is
firesensor1.raspberry.firesensor.livingroom.home
Firesensor
43
마스터 제목 스타일 편집
IoT 디바이스 DNS 네이밍 시스템 (5/5)
IoT 디바이스 DNS 네임 관리
1
Get DNS Name
List for Devices
DNS Server
Router
Tablet PC Access Point
IPv6 Host
2Remote Control
by Device Icon
Device List
Firesensor
Firesensor
44
마스터 제목 스타일 편집
(sx, sy)
(rx, ry)
Living Room
Bedroom-1
Bedroom-2
Study Room
Bathroom
Kitchen
Storage
Entrance
Area
위치기반 IoT 디바이스 네이밍 서비스
1
2
3 4
(x0, y0)
(x1, y1)
(x2, y2)
(x3, y3)
Firesensor is known to be located
at Living Room by Localization.
Localization(위치측정기법):
(𝒔𝒙, 𝒔𝒚) = 𝐜𝐢𝐫𝐜𝐮𝐦𝐜𝐞𝐧𝐭𝐞𝐫(𝒙𝟏, 𝒚𝟏,
𝒙𝟐, 𝒚𝟐, 𝒙𝟑, 𝒚𝟑);
(𝒔𝒙, 𝒔𝒚) belongs to Living Room.
Firesensor DNS name becomes
firesensor1.raspberry.firesensor.livingroom.home
Source: Jaehoon (Paul) Jeong et al., “SALA: Smartphone-Assisted Localization
Algorithm for Positioning Indoor IoT Devices”, Springer Wireless Networks, June 2016. 45
마스터 제목 스타일 편집
Conclusion Internet of Things (IoT) will become part of the Internet in
near future.
Open Connectivity Foundation (OCF) will play a role of
the Standardization Hub for IoT Ecosystem.
IoTivity will lead an Open Source Project for IoT.
DNS Name Autoconfiguration (DNSNA) is expected as a
DNS Naming System for IoT devices in IoTivity.
Korea need to lead R&D on Key Components of IoT
Ecosystem through the Collaboration among Industry and
Academia.
46
마스터 제목 스타일 편집
[1] IoTivity, https://www.iotivity.org
[2] OCF, http://openconnectivity.org/
[3] AllSeenAlliance, https://allseenalliance.org/
[4] IoTivity Wiki, https://wiki.iotivity.org/start
[5] 이원석, 차홍기, 전종홍, “사물인터넷 오픈소스 기술 –
IoTivity”, KICS 정보와 통신 열린강좌, 2015년 11월.
[6] RFC 7252: The Constrained Application Protocol (CoAP)
[7] RFC 4944: Transmission of IPv6 Packets over IEEE
802.15.4 Networks
[8] Jaehoon Paul Jeong, Sejun Lee and Jung-Soo Park, “DNS
Name Autoconfiguration for Internet of Things Devices”,
draft-jeong-its-iot-dns-autoconf-00, March 2016.
References
47
마스터 제목 스타일 편집
IoTLab