MJ,

Thanks. I see that the requirements for CA is much broader than the original 
mission.

I have also added comments inline below.

Pat



From: MyeongGi Jeong [mailto:[email protected]] 
Sent: Tuesday, March 24, 2015 2:34 AM
To: Lankswert, Patrick; Light, John J; Kesavan, Vijay S; Macieira, Thiago; 
iotivity-dev at lists.iotivity.org
Subject: Re: RE: [dev] IPv6 changes to IoTivity



Dear Pat.

    I attached the file.

    And, I added the comment inline.



MJ.

Best Regards.





------- Original Message -------

Sender : Lankswert, Patrick<patrick.lankswert at intel.com 
<mailto:patrick.lankswert at intel.com> >

Date : 2015-03-23 22:32 (GMT+09:00)

Title : RE: [dev] IPv6 changes to IoTivity



MJ,

Can you share with us the requirements for the CA?  The remaining comments are 
inline below.

To all,

There is a lot of talk about approaches. What worries me is that we are talking 
about how we are going to get what we want BEFORE stating what we want. I want 
a one (no more than two) page description of what we want for Iotivity. Before 
I do it myself, I will ask for volunteers to gather our requirements.

What I want to see is:

*         Features in a phased approach. For example:

o   1st release: Enumeration of interfaces, Selection of interfaces, SLAAC 
support

o   2nd release: Routed discovery

o   ?

*         Justification for each release including use cases that will be 
enabled

*         Matrix of device support

*         No powerpoint or architecture

I am adding this to the DCTG meeting agenda on Tues/PT, Wed/KT. You should 
expect this to be a working meeting.

Pat



From: iotivity-dev-bounces at lists.iotivity.org <mailto:iotivity-dev-bounces 
at lists.iotivity.org>  [mailto:[email protected]] On 
Behalf Of ???
Sent: Saturday, March 21, 2015 1:58 AM
To: Light, John J; Kesavan, Vijay S; Macieira, Thiago; iotivity-dev at 
lists.iotivity.org <mailto:iotivity-dev at lists.iotivity.org> 
Subject: Re: [dev] IPv6 changes to IoTivity



Hi, John, Vijay, Thiago.



Thanks to all for good suggestions and discussions.

I'm the leader of Samsung CA development team.

I'd like to talk with you about the CA design and the current development 
approach.

When we decided that CA layer has to be required for IoTivity,

several kinds of network interfaces and platforms were addressed.

As far as I know, we considered Wifi, Ethernet, BLE and BT for connectivity,

and Linux, Android, Tizen, Arduino for platofrms initially. ( Am I right, Vijay 
? )

To abstract the above connectivitiy types for 4 platforms,

our team started implementing separately according to the platform.

To decouple from the change propagation, we devided the adapters according to 
the connectivity types.

and, we think, Wifi and Ethernet interface may be little different for the 
future things like Arduino.



[PCL, 2015/03/23] Pulling logic into an abstraction to address a particular 
platform is usually a complicating approach. Creating an interface for the 
general behavior and externalizing platform specific behavior is a superior 
software engineering approach. It all falls under separation of concern. There 
are a lot of examples to this. Since I like to use BSD sockets as an example, 
consider:

IP sockets have some sockopts for controlling behavior but are not used to 
controlling the IP stack.

To setup up or query the interfaces, other interfaces are used ie netlink under 
linux, IPHelper under Windows, etc.

NOTE: netlink is expressed as a special socket() under linux which simplifies 
IO management, but it is very different from an IP socket.

>>   We have already designed and implemented general behavior for four kind of 
>> connectivity types(caadapterinterface.h) and we expect it can be effective 
>> for other

        connectivity types  that will be applied to IoTivity in future.  Of 
course, now we are trying to integrate wifi and ethernet adatper to handle IP 
transport,

        but for lite things such as Arduino,  the interface of wifi and 
ethernet is much different. For example, CA Ethernet server 
(caethernetserver.cpp) for Arduino

        uses functions from W5100 class,  whereas CA WiFi server 
(cawifiserver.cpp) uses WiFiUDP class. Similarly there are differences between 
APIs to send data

        in Eth & Wi-Fi client code.  It can be separated in a file with 
preprocessor and Wifi or Ethernet can be selected on compile-time.

        I think, in this case, to satisfy the separation of concern, the 
separation of two connectivity types is more better.

        Please share your idea.

        2015.03.24 @mj



[PCL, 2015/03/24] If integration so tight that it is controlled with #ifdef?s, 
I may argue that it does not satisfy separation of concern. For instance, if 
someone wants to implement a new transport, do they have to modify the stack? 
If the answer is ?yes?, then the abstraction is not strong and separation of 
concern is lost. If the answer is ?no, then we should be good. Many open source 
libraries support these behaviors, for instance, the openssl library has BIO 
structs for I/O. You can have the libraries write to a standard BIO such as a 
file, socket, memory buffers, etc. simply by setting the BIO for the context. 
You can also easily write a custom BIO. I was able to write a BIO for a 
Bluetooth RFCOMM port such that the upper layers did not know that the bottom 
was an RFCOMM port. All this without, modifying openssl which also means that 
updating openssl to newer version was just a download and compile.



Now, as your suggestion, we are merging the Wifi and Ethernet adapter

and we are also modifing the adapter to support multiple interfaces in our 
local branch.



[PCL, 2015/03/23] Why is the WiFi logic so different from Ethernet logic so 
different that it needs to be merged? Is this because of Arduino? I would like 
to see your proposal for the handling of multiple interfaces before you 
implement it.



>>  Followings are abstracted architecture to revised.

        I think IP transport adapter can handle all IP(v4 and v6 together) 
packets from each platform interfaces.

        And also, it can be handle IP packets from 6loWPAN interface, if the 
6LoWPAN supports similar interfaces with other platforms.

        In addition, network interface selection has to be revised to select 
IP/LE/EDR/XXX

        2015.03.24 @mj









We consider the unified IP interface not only Wifi/Ethernet but also 6loWPAN 
over BLE, THREAD, etc.

I expect that the patchset will be pushed soon.

As Vijay's saying, we will continuesly enhance the CA layer step by step.

I want to discuss continuously about Connectivity Abstraction ..



* John

I agree that the name of EDR/LE adapter might be changed if IP transport 
adapter created instead of wifi/ethernet adapter.

The current names derives from connecitivt type, but we need to change it.

Please review when we push it... 

I'll address the patchset after push



Thanks

Best Regards.

--

MJ





------- Original Message -------

Sender : Light, John J<john.j.light at intel.com <mailto:john.j.light at 
intel.com> >

Date : 2015-03-21 05:12 (GMT+09:00)

Title : Re: [dev] IPv6 changes to IoTivity



Vijay said "My understanding is that the original CA code contributors are 
currently working on merging Ethernet and WiFi into a single implementation."

While this is a necessary first step, it is not sufficient.  The combined 
adapter type (IP?) should combine Ethernet and Wi-Fi, but it should also 
include every other transport that uses a socket interface.  Specifically,
* 6LowPan over BLE
* 6LowPan over 15.4

This brings up one of several naming problems in the Connectivity Abstraction.  
What  CA calls 'BLE'  is really
* GATT over BLE

Since BLE might be used with two different adapters, I suggest we proceed to 
name the adapters after the protocol being used rather than the underlying 
transport.

John Light
Intel Opensource Technology Center OIC Development


-----Original Message-----
From: Kesavan, Vijay S 
Sent: Friday, March 20, 2015 11:02 AM
To: Light, John J; Macieira, Thiago; iotivity-dev at lists.iotivity.org 
<mailto:iotivity-dev at lists.iotivity.org> 
Subject: RE: [dev] IPv6 changes to IoTivity

John,

I agree that there will be platforms with multiple interfaces (some interfaces 
of the same type) and the eventual goal of Iotivity should be to support such 
platforms.  The first modest step towards that is to support Iotivity on 
platform with one interface of type Ethernet, WiFi, BT, BLE and the current 
code/APIs are defined from that perspective.  These APIs have to evolve to 
support multiple interfaces of the same type.  The intent of exposing interface 
type at the API is to allow app-developers to use the information as they see 
fit.  As the APIs evolve to support multiple interfaces, whether interface type 
is included or not is open to discussion (as suggested by Thiago the 
application can use an out-of-band mechanism to find out interface type).

With regards to all your points on the implementation details, I fully agree 
and hope to see them resolved.  My understanding is that the original CA code 
contributors are currently working on merging Ethernet and WiFi into a single 
implementation.

Regards,
--Vijay

-----Original Message-----
From: Light, John J 
Sent: Wednesday, March 18, 2015 8:58 AM
To: Kesavan, Vijay S; Macieira, Thiago; iotivity-dev at lists.iotivity.org 
<mailto:iotivity-dev at lists.iotivity.org> 
Subject: RE: [dev] IPv6 changes to IoTivity

Vijay,

Since Thiago is traveling, I will take a shot at answering this.

The distinction between adapter types is neither necessary nor sufficient, and 
it will degrade our software quality.

The reason it is not necessary is that the distinction between Ethernet and 
Wi-Fi is entirely arbitrary.  The socket model we are using has been carefully 
designed over the decades to hide the differences between Ethernet and Wi-Fi 
and fully support them.  One or the other might need a special case here or 
there, but that can easily be handled in the code.

The reason it is not sufficient is that real OIC systems in the industrial 
domain will have multiple instances of various adapters.  For instance, many 
gateway machines will have multiple Ethernet interfaces (eth0, eth1, etc.).  
The current regime of separation by adapter will not provide the features we 
agree are so important in this environment.  The API provides no means of 
distinguishing between those interfaces, and the code provides no means either. 
 Only one case is supported (one Ethernet interface and one WiFi interface), 
and I don't believe that one case is sufficient for the diversity of network 
configurations OIC needs to support.

The reason it will degrade our code is that it unduly complicates the code at 
the lower levels since the distinction is arbitrary.    The complexity of our 
code at the socket level reflects the difficulty of undoing all that design.  
For instance, after choosing to separate Ethernet and Wi-Fi, extraordinary 
effort (both coding and execution) is spent making sure packets aren't received 
in the wrong adapter.  The irony of this code is that if it ever finds that an 
adapter has received the wrong type of packet, it can only drop it on the 
floor, which Is exactly the wrong thing to do.  All of the code would be 
simpler and more maintainable by eliminating the adapter distinction.

In place of distinguishing adapter types, we need to distinguish between and 
allow selection of specific interfaces.  This will add complication, but the 
complexity can be largely countered by removing the distinction between adapter 
types.

If we think of IoTivity as a living code base instead of a static monument, we 
need to eliminate duplication.  Getting rid of the difference between Ethernet 
and Wi-Fi will be a good first step.  Then we need to eliminate the difference 
between single- and multiple-threading, since that duplication has the same 
deleterious effects of software quality.  (I believe minor changes to the 
threading model will allow both to share the same code.)

If we don't make these changes, I don't believe we can support a quality, 
living code base, which I see as essential to our success.

John Light
Intel OTC OIC Development


-----Original Message-----
From: iotivity-dev-bounces at lists.iotivity.org <mailto:iotivity-dev-bounces 
at lists.iotivity.org>  [mailto:[email protected]] On 
Behalf Of Kesavan, Vijay S
Sent: Wednesday, March 18, 2015 8:22 AM
To: Macieira, Thiago; iotivity-dev at lists.iotivity.org <mailto:iotivity-dev 
at lists.iotivity.org> 
Subject: Re: [dev] IPv6 changes to IoTivity

Thiago, 

With regards to your comment:

" whether the distinction between Ethernet and WiFi makes sense at all. Your 
work proves that it doesn't, so I'd like to see the distinction removed from 
the connectivity abstraction branch."

Wondering if you are asking about the distinction between Ethernet and WiFi at 
the OIC API level or the connectivity abstraction layer level or perhaps both?  

At the OIC API level here is why the adaptors types are enumerated separately - 
when findResources returns, application is notified the adaptor type on which 
response was received (application can also select specific adaptor type when 
calling findResources).  If the same resource is found on multiple adaptor 
types, the application can choose which adaptor is appropriate for further 
operations.  For example, application might decide that certain operations can 
only be done on Ethernet or WiFi adaptor and not on WAN adaptors (on account of 
pricing policy), even though they are all IP adaptors.  This assumes that 
connectivity abstraction is able to accurately distinguish between IP adaptors 
(not all OS/platforms support mechanisms to distinguish between Ethernet and 
WiFi).

With regards to why the connectivity abstraction code has separate code paths 
for Ethernet and WiFi, I will defer to the contributors of the code to explain 
the rationale.

Regards,
--Vijay


_______________________________________________
iotivity-dev mailing list
iotivity-dev at lists.iotivity.org <mailto:iotivity-dev at lists.iotivity.org> 
https://lists.iotivity.org/mailman/listinfo/iotivity-dev
_______________________________________________
iotivity-dev mailing list
iotivity-dev at lists.iotivity.org <mailto:iotivity-dev at lists.iotivity.org> 
https://lists.iotivity.org/mailman/listinfo/iotivity-dev




  
<http://ext.samsung.net/mailcheck/SeenTimeChecker?do=a89e2f31c590267ac28f68ff8a9a605d3ff78fb98fa509d0032aa89e99be1a3e88d6974bd2f79a3cb3b9c254041823979dd130b31b023ef15296970253332b3707805447a154a46fcf878f9a26ce15a0>
 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://lists.iotivity.org/pipermail/iotivity-dev/attachments/20150324/e314a265/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image001.png
Type: image/png
Size: 65706 bytes
Desc: not available
URL: 
<http://lists.iotivity.org/pipermail/iotivity-dev/attachments/20150324/e314a265/attachment.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image002.gif
Type: image/gif
Size: 13168 bytes
Desc: not available
URL: 
<http://lists.iotivity.org/pipermail/iotivity-dev/attachments/20150324/e314a265/attachment.gif>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 7198 bytes
Desc: not available
URL: 
<http://lists.iotivity.org/pipermail/iotivity-dev/attachments/20150324/e314a265/attachment.p7s>

Reply via email to