I’ve read over Apple’s new API.  (One note: the URL that Tommy sent a link to 
doesn’t have the full documentation of the API yet; many of the types and 
methods still say “No overview available.” If you’re an Apple developer, the 
header files supplied with the macOS 10.14 and iOS 12 beta SDKs in the Xcode 10 
beta contain much fuller versions of the documentation.)

The main difference I’ve found between TAPS and Network.framework is that 
Network.framework doesn’t have a Preconnection object.  Instead, Connection 
objects for outgoing connections are directly created from a constructor, and 
then must have their .start method called before they act.

This part is a relatively minor semantic difference, but more significant is 
how incoming connections are handled.  In Network.framework, there is a 
Listener object with a new_connection handler, and this object can produce 
unlimited numbers of Connections until stopped.  This is unlike TAPS where a 
Listen action consumes a Preconnection, and to receive multiple connections on 
the same port, Listen must be called on multiple cloned Preconnections.

I feel like the Network.framework model is an easier programming model for most 
use cases, but it has the downside that an API user has no way to pace its 
handling of incoming connections.

> On Jun 10, 2018, at 4:02 AM, Michael Welzl <mich...@ifi.uio.no> wrote:
> 
> Hi,
> 
> This - in particular your answer to Michael - is indeed extremely cool! 
> Thanks to you and your colleagues at Apple for pursuing this direction, and 
> thanks for sharing it with the group!
> 
> About this statement in the original email:
> ***
> Either way, we’d love for everyone to take a read through the API and give 
> feedback on how we can continue to evolve things towards a post-sockets and 
> fully TAPS model.
> ***
> 
> I think an obvious answer to this is: the more in line with 
> draft-ietf-taps-interface it is, the better - and where it’s not, it would 
> probably be interesting for the group to know the reasons.
> 
> Cheers,
> Michael
> 
> 
> 
>> On Jun 9, 2018, at 10:54 PM, Tommy Pauly <tpa...@apple.com> wrote:
>> 
>> Hello Michael,
>> 
>> The architecture is designed specifically to allow loading different 
>> protocols. The parameters object is centered around a “protocol stack” 
>> configuration object, which is composed of protocol options for defined 
>> protocol implementations. This only exposes a default stack now, but is 
>> designed to offer the configuration of alternate stacks as well. In this 
>> first version, we’re only letting developers compose stacks with pre-defined 
>> protocols, but I want to allow custom protocol definitions and 
>> implementations going forward—for both simple framers, as well as full blown 
>> transports like SCTP and QUIC! The model of the connection sending and 
>> receiving messages is sufficiently generic to support any of the TAPS 
>> protocols. 
>> 
>> Best,
>> Tommy
>> 
>> On Jun 9, 2018, at 11:38 AM, Michael Tuexen 
>> <michael.tue...@lurchi.franken.de> wrote:
>> 
>>>> On 8. Jun 2018, at 18:29, Tommy Pauly <tpa...@apple.com> wrote:
>>>> 
>>>> Hello TAPS!
>>>> 
>>>> This week we released Network.framework, a new set of transport APIs, as 
>>>> part of the beta for iOS 12 and macOS Mojave.
>>>> 
>>>> This API provides support for connections and listeners using TCP, UDP, 
>>>> TLS, and DTLS; connecting by name or service, with happy eyeballs support 
>>>> for addresses, interfaces, and protocols (for proxies, etc). This provides 
>>>> our basis for “post-sockets” API work. As we define as a working group 
>>>> more of the full TAPS API vision for protocol agility, we'd like on add 
>>>> that support to this framework. 
>>> Hi Tommy,
>>> 
>>> great news!
>>> Is there also a possibility to add new transports to the framework, like
>>> SCTP or QUIC?
>>> 
>>> Best regards
>>> Michael
>>>> 
>>>> Video of the presentation:
>>>> https://developer.apple.com/videos/play/wwdc2018/715/
>>>> 
>>>> Sample implementation of netcat:
>>>> https://developer.apple.com/documentation/network/implementing_netcat_with_network_framework
>>>> 
>>>> Swift and C API:
>>>> https://developer.apple.com/documentation/network
>>>> 
>>>> If you are an iOS or macOS developer, please try out the APIs! Either way, 
>>>> we’d love for everyone to take a read through the API and give feedback on 
>>>> how we can continue to evolve things towards a post-sockets and fully TAPS 
>>>> model. Note that on iOS and tvOS, this framework is currently using a 
>>>> user-space networking stack instead of sockets when applicable.
>>>> 
>>>> Best,
>>>> Tommy
>>>> _______________________________________________
>>>> Taps mailing list
>>>> Taps@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/taps
>>> 
>>> _______________________________________________
>>> Taps mailing list
>>> Taps@ietf.org
>>> https://www.ietf.org/mailman/listinfo/taps
>> 
>> _______________________________________________
>> Taps mailing list
>> Taps@ietf.org
>> https://www.ietf.org/mailman/listinfo/taps
> 
> _______________________________________________
> Taps mailing list
> Taps@ietf.org
> https://www.ietf.org/mailman/listinfo/taps

_______________________________________________
Taps mailing list
Taps@ietf.org
https://www.ietf.org/mailman/listinfo/taps

Reply via email to