neat - Transport Evolution on top of the BSD's

Video in TIB AV-Portal: neat - Transport Evolution on top of the BSD's

Formal Metadata

neat - Transport Evolution on top of the BSD's
Alternative Title
Transport Evolution on top of the BSD's: A New, Evolutive API and Transport-Layer Architecture for the Internet
Title of Series
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Release Date
Production Year

Content Metadata

Subject Area
Internet Transport is changing, some changes have been incremental updates tomechanisms (e.g., RACK, BBR), others demand new protocol options (e.g., MPTCP)or entirely new protocols (e.g., QUIC, SCTP). However significant changes arestill difficult to deploy - requiring modifications to application code andsupport by the stack. Even when updates happen, the network needs to supportthe new method to allow applications to use it. Long deployment times havemotivated the need to change how protocols are handled in the stack. We reviewthe state of the art in Internet Transport, and the status of deployment in thBSD's and then propose a new direction for the transport interface, developedin the EU NEAT Project, that can ease deployment of new transports across allplatforms. We conclude by showing the advantages and its prospects forstandards adoption.
Internetworking Internetworking Time evolution Universe (mathematics) Projective plane Cuboid Hill differential equation Form (programming)
Point (geometry) Satellite NP-hard Group action Link (knot theory) Multiplication sign Range (statistics) Set (mathematics) Mereology Rule of inference Number Software bug Prototype Goodness of fit Roundness (object) Internetworking Energy level Metropolitan area network Modem Demo (music) Projective plane Bit Überlastkontrolle Cartesian coordinate system Software Telecommunication Website Spacetime Row (database)
Satellite Computer program Context awareness State of matter Code Multiplication sign Insertion loss Bit rate Stack (abstract data type) Software bug Web 2.0 Facebook Mathematics Mechanism design Sign (mathematics) Bit rate Insertion loss Phase transition Network socket Data Encryption Standard Core dump Videoconferencing Series (mathematics) Endliche Modelltheorie Potenz <Mathematik> Simulation Algorithm Structural load Menu (computing) Parameter (computer programming) Bit Überlastkontrolle Control flow Entire function Connected space Band matrix Type theory Computer configuration Steady state (chemistry) Phase transition Buffer solution Normal (geometry) Convex hull Right angle Reduction of order Point (geometry) Metre Slide rule Implementation Socket-Schnittstelle Link (knot theory) Firewall (computing) Transport Layer Security Real number Adaptive behavior Division (mathematics) Device driver Überlastkontrolle Student's t-test Thresholding (image processing) Host Identity Protocol Field (computer science) Automatic differentiation Element (mathematics) Twitter Frequency IP Causality Internetworking Computer hardware Configuration space Implementation Proxy server YouTube Window Mobile Web Dependent and independent variables Validity (statistics) Interface (computing) Projective plane Computer network Line (geometry) Binary file Cartesian coordinate system System call Software Network socket Network topology Case modding Video game Limit set Videoconferencing Communications protocol Window
Axiom of choice Suite (music) Building Context awareness Greatest element Thread (computing) Euclidean vector State of matter Set (mathematics) Open set Quality of service Web 2.0 Facebook Very-high-bit-rate digital subscriber line Network socket Logic Encryption Flag Software framework Endliche Modelltheorie UDP <Protokoll> Information security Physical system Flux Algorithm Clique-width Structural load Parameter (computer programming) Bit Überlastkontrolle Connected space Band matrix Category of being Digital rights management Auditory masking Chain Software framework MiniDisc Right angle Freeware Physical system Spacetime Dataflow Game controller Implementation Socket-Schnittstelle Module (mathematics) Computer file Link (knot theory) Transport Layer Security Connectivity (graph theory) Real number Characteristic polynomial Streaming media Web browser Event horizon Internetworking Energy level Selectivity (electronic) Configuration space Computer architecture Module (mathematics) Standard deviation Information Demo (music) Military base Characteristic polynomial Consistency Interface (computing) Projective plane Group action Cryptography Cartesian coordinate system System call Component-based software engineering Mathematics Error message Software Network socket Communications protocol Abstraction Library (computing)
Computer program Building Context awareness Thread (computing) Code Multiplication sign Source code Real-time operating system Semantics (computer science) Software bug Formal language Direct numerical simulation Fluid statics Web service Different (Kate Ryan album) Stability theory Physical system Arm Block (periodic table) Structural load Software developer Keyboard shortcut Bit Connected space Band matrix Normal (geometry) Right angle E-learning Spacetime Web page Point (geometry) Dataflow Server (computing) Socket-Schnittstelle Momentum Computer file Patch (Unix) Robot Continuous integration Event horizon Number Workload Goodness of fit Latent heat Energy level Selectivity (electronic) Computing platform Computer architecture Demo (music) Interface (computing) Weight Projective plane Multilateration Cartesian coordinate system Software Synchronization Communications protocol Window Library (computing)
that worked great I hope I am Tom Jones I'm a researcher
at Universal Aberdeen I work on Internet transport I currently work on an EU project which is trying to build a new soccer API to replace the one we have and the offers features and deployability and fall over and automation it's really cool before that I'm going to talk about putting boxes on hills so I start working at University
of Aberdeen in 2014 I was hired into the electronics research group where we do cool stuff with satellites and at that point we had gotten involved with the craziest UK funding idea you'll ever hear of it was an interdisciplinary hub called dot rule there the hub was made up of social scientists ecologists biologists transport people and by transport people I mean like cars and buses not you interesting transport and social scientists if you ever want crazy ideas work with the social scientists and it's unreal at a part of that rule we did really strange things so here we have a picture of the internals of the camera trap we built the the project was driven by some sightings on the quarantine Goren mountain range in Scotland there are sightings every year in a month of this really rare birds that people have been trying to track down forever and they want to try and get some idea of what its mating habits were and how often it visited sites and they looked at using commercial camera traps but because we had all this funding we decided to build something a bit more complicated so I think this is one of the very early prototypes where we use microcontrollers and 6lowpan later on we replaced all this with a Raspberry Pi and Arduino camera activation stuff and then we connected it all to our huge satellite modem and we had a satellite link that it hung off and what we did with this is we took it up the biggest man range in Scotland and
this comes with its own problems this marriage is covered in deer not reindeer but there are weaned you actually the normal deer that run wild across here the deer use any rocks or stones they come across too rough against so they can remove their antlers so anything hard on ground level was going to be attacked repeatedly by angry deer so you think okay well you just raised off the ground and you have a flimsy base but the kangaroo mountain range also sees the highest wind speeds in the UK the highest recorded wind speed in United Kingdom was there like the end of last year like 136 miles an hour and I don't know what you can't really see because it's quite small but Sally doesn't have any perforation because it gets to minus 50 C so that would freeze and the dish would stop working but it's just a big kite that you put on a mountain and then it gets like 139 hour winds and stuff gets blown away and and this was really hard to work with this project worked great we could take pictures of mountains we did live demos the bird was never seen again we have no idea what happened to it but the camera took quite a good number of pictures of Heather if you don't know Heather it all looks the same but yeah so we did this and it was it was great fun to do a nice piece of engineering doing this we did a lot of satellite work and we've done satellite work in the past we have a long history of doing it and we started looking at how video applications work over satellite links so satellite links are different than normal links because you're talking to something way up in space you have round trip times of about 750 milliseconds so anything you do is going to see a massive delay and this software that's being written for the internet just isn't prepared for this there bugs in Firefox where you can't use a satellite link that we fixed but just having a strange set of links gives you strange circumstances along with satellite work we do a lot of TCP can TCP congestion control stuff and this is where I start to get involved at a
normal TCP connection has these states that are all time-base we go through slow start we end up in a steady state and any loss we see is gonna cause a big problem to our time slow star is our exponential growth phase for Oh picture somewhere so star is an exponential growth phase and on a satellite link it's being driven by ax on an RTT so when you have a loss down and you have to slow start again up to this slow start threshold you spend a lot of time so when you try and browse the web over satellite link and you have some loss you have elements not load and things get really messed up and it's very hard to keep track of and at this time people decide decide to do TCP video over HTTP so instead of using live protocols that can adapt to loss Netflix and everyone decided that we will use TCP over HTTP because it always works against you firewalls Nats aren't a problem this would be really great but as the research community solved very quickly the HTTP video is very awkward there's a paper a title that I'll never forget confused timid and unstable about the congestion response for YouTube and Netflix as soon as they see loss in the network their honor will slow down this is this doesn't work it you you our fight you know you request the manifest over HTTP which to describes where the next chunk of segments are and you'll download one of these segments and based on the amount of time it takes to get the segment you can decide whether or not to change rates so you could have adaptive video bit rates and and the segments of times so they're they're not going to use the entire playback time so that you can keep a buffer rolling there this leads to very bursty traffic and when we look at this HTTP traffic over satellite links we want to take as much as we can in a chunk so we end up with long periods where our TCP connection isn't doing anything and TCP is defined to close down there because we have a we have a congestion window there yeah so we have a congestion window that describes this the congestion window was just a guess over the Cape a DES about the capability of the network when we enter a period where we're not sending this guest gets worse and worse so we did work on something called new cwv new cwv is an adaptation for rate limited traffic rate limited traffic is when the application is trying to send less than the network can provide and you see WV enhances something called congestion window value validation which is an older RFC and we provide a new method for guessing how much is in the pipe I got involved in this in 2014 the crazy social scientists we had in the project went to India instead of working and I was a bit of a loss of what to do we had PhD students and one of my colleagues raffalo Seki had been working on this and he had an implementation in anis - we done simulation in the lab we had an implementation for Linux there's an issue when you cwv the both linux and freebsd have pluggable congestion control but new cwv needs to do this estimation outside of the congestion control mechanisms so that we've not informated something that is only applicable for new Reno or cubic so that we can do it below the pluggable layer of course nobody wants to mess with the TCP stack like this so it's very hard to deploy so I did this imitation 2014 I pushed that publicly I followed the drafts right now the bug tracker says this but but who knows and I don't know what's next here and is doing a lot of work on the TCP stack there's there's one problem with this and the new zwv needs packet pacing to really get a seen benefit and freebsd doesn't have packet pacing in its network stack yet soon I hear the Randall and Netflix said this wasn't a problem because they had vendor drivers that would do pacing for them so they could take you cwv we start talking about this in 2015 2017 but this is only a month ago so maybe maybe we'll see something soon so this is really just context for how hard it is to do things in the Internet we're trying to deploy a change the congestion control that will give benefit to most people Google or Netflix Facebook can do whatever they want they have all this equipment they can run their own hardware they can run on private networks they don't need these changes they can pay people to do it but anybody who's going to compete with them in the future needs these standardized changes and if we figure out how to do these changes we should be able to deploy them and get them going but it's so hard to get us to move because the ITF doesn't want to do TCP changes if you want to change the value of a field and an IP protocol you're gonna have a horrible time it's going to take forever to get to the ITF no one will deploy in their networks and then it might not work because it just may not work this happened with ecn on the internet to like 6 years to get to the point where we decided we need easy fall back and know we're starting to see cm marks come into the network I I only have the slides I think is hilarious there's someone on Twitter tweeted this and if you press really hard you can get more pockets so the the changes we're proposing with the neat projects come from a couple of core issues one of them is trying to do this but a lot of these problems come from how programmers see the access to the network rather than the reality we have you know someone
connects to a rooster and it goes through the cloud and that you get traffic at the other end and it worked great and it's all fun but in real life there's loads of stuff in the middle that's playing with your traffic that doesn't have this one agenda for what wants to do we have corporate proxies that want to break down TLS or they can see what you're doing people injecting ads firewalls that not necessarily misconfigured but configured in a naive way where will allow TCP port 84 for 3m UDP port 53 nobody uses anything else right but that just completely stopped any deployment of new protocols and of course there's a lot of assumptions about how we get onto the network in the past when we designed TCP it was for a very limited set of network access technologies and the networked access that the network technologies were very homogeneous they were very similar a 56k dial-up link is going to be similar to somebody else's I mean allowing for terrible phone lines it's going to be very similar but mobile technologies like 2g 3G 4G you see wild spikes in latency you see wild spikes in bandwidth you see random loss and the algorithms we have our design to tree loss as a sign of congestion where we can stop sending but everyone will know that they've been on the phone and the car moves four meters and you get a different model of what the network does because the trees in the way anymore and everything works much better and then on top of this we have a socket API and it's crap you're nodding is great all right some code on Windows so the socket buys them very well for the last 35 years longer everything in the Internet is now changed and it's different but the access we have is okay the issue really is that it doesn't offer any way to move away from it and there's no way to move transport protocols if you wanted to do something with like this series of calls that you had to interfaces and you needed to choose between them you have to spend a lot of time right
it's there okay so what bother why not move everything into user space why not and we just do on top of UDP and we'll push it across the network and it'll all work fine and this is this is happening a lot setp which is developed by Michael Tilson in FreeBSD offers a user space implementation that you can run over anything you can get UDP socket on and this is what's being ruled out in web browsers right now so this is a new transport protocol on the Internet and it's running in user space and it works this is what quick tries to do so quick is our quick from Google is a a transport protocol that sits under HTTP 2 and it offers nice reliable streams and you don't have head-of-line blocking between streams and has some cool crypto stuff but if being developed by Google we're three years since it was announced and we have one implementation the the standards bodies moving very slowly they met last week and it's not really going anywhere and we have like Facebook push the draft last year about trying to do this generalized for UDP transport so they can build stuff they're gonna tell anybody about but we have this same problem where big players can do this it's finally they can will and do whatever they want because they have loads of money but nobody else gets to take advantage of this and the openness of the Internet and the web it will really suffer it if we do this and there's also tcp or UDP which is just run sanity and you shouldn't do it so I work on this it's quite complicated this is the picture we sent to the EU last year yeah and don't tell them but we're not gonna do any of this we have a we have a new API for accessing the network its event-driven it's built on top of libuv if you've used the boovie that you know the networking stuff isn't great so we have a Mesa consistent for doing that and we have a system for building and integrating new transport protocols that can run over the Internet so we can run this completely directionally over completely directly over the sockets you have so we can run this over you just if you just have a system with TCP and UDP neat we'll run over this and you'll get some benefits but in all of them we can run on top of transports in userspace so we can take advantage of the user space setp library and if quick becomes a real transport protocol that's usable then we can just plug it into this system because we've built an extensible model for doing this and we have some things that allow us to apply magic to how we create connections over here we have just on the far right we have two information bases that capture stuff about the network and this is all mediated through a policy manager policy manager allows you to direct at a high level what you want from your transports treatment and the the biggest thing we've implanted right now is fallback and homing over SCTP and tcp so you can say at a high level that you want a reliable ordered stream and the policy manager can use information we've captured about previous connections your interfaces whatever else you might have Sdn orchestrators in the network and we can do selection to find the best some values the best transport protocol that is available and is going to work over ipv4 ipv6 TCP SCTP we have this you do one call you get all of this for free applications are a bit smaller they look like this this one has the building and applications work through the API directly into the neat user module using modules made of five pieces we have a framework we have the selection come we have selection components that allow us to operate independent of transport protocol itself we have the policy system we have transport components themselves so we have quite a nice abstract API for this we have an abstraction on top of security protocols so with needs by saying one flag and a policy in providing some certs you can get TLS or D TLS for free with a nice API there's there's no dealing with little of SSL and then we integrate with the network itself not only can we gather information from other connections that happen in the global system but we can gather information from things you have in the network so the characteristic information base we have bottom here and is actually just a set of JSON files on disk that describe um the high speeds you've got in an interface they're successful selection choices on an interface but it can be fed in from other places so we can look up MIBs and we can figure out what TCP congestion control algorithms you have and then provide that for a selection from there or we could integrate with an SDN controller on your network and the Sdn controller can then say I can create stuff for you if you need it by we can we can make a new interface for you and it will work really well when we have all of this implement now we have a we have a demo for one of our partners EMC which does flow selection between small flows and big flows by specifying our file size you say you have a small file and you get at the normal 10 megabit link with low latency specify a high file size and you get given a QoS mark that you set and then you get your traffic directed over a higher latency bit higher bandwidth link and we're showing this to the EU in May so we have demos for this working applications are very simple so the architecture picture is really big and complicated but it really boils down to almost nothing at all our connection state is metered inside of context and we have one context per thread we're working on this right now the with this we can then create floats we have one single primitive for accessing the network and the application can choose its properties it wants to get for a policy the the properties here or as a bit mask which is what we had maybe a year ago we now have properties defined as JSON so you can build more complicated things set up some callbacks and then you do it open and you do an open and neat just handles everything else for you um and this is what it looks like this is how it hooks in further you get your event and you do reads and writes they're they're obviously issues between Datagram and stream protocols but we're an active research project so we're we're trying to resolve all of this so you get a nice API but this is as complicated as we want things to be now you set the property for a security you get D TLS and it works you don't have to figure out your cipher suites or your trust chain we find the most sensible thing to do here youyou want a traffic protocol it's reliable we give you reliable transport protocol and you just do reason writes against it I'll after the last talk I just gave about the
server side if you swap out the open for an accept the court is exactly so obviously that the flow semantics are a bit different because you get given flows instead of having a flow but it's all the same you just get the unconnected event and the code can be kept very very simple and because we're only your project we have commercial partners when I record my fighters EMC another one is Mozilla so I spent all weekend in plenary in Mozilla in Paris and we're trying right now for our debt for a demo session to the EU in May to have Firefox doing selection between SCTP and tcp and for a connection set up we have this running on freebsd if anybody really cares they can bug michael tucks in and you say go away or come back in a week and what we get from this is is incredible though SCTP if you if you don't know you can have a look at it but it offers multihoming and multipath so the demo we have is a file download through HTTP and if you get tcp on your network you get a normal file download if you get SCTP on your network and you have multiple interfaces you get multipath we do CMT so we can share the connections from the application you get twice the bandwidth I think it's awesome may yet some once promised it to the EU so and yeah and Linux and we're developing all this on top of FreeBSD so this is the the main impetus for the talk is that there's nothing FreeBSD specific and any of this we could do this on any platform it turns out because the SCTP static runs on freebsd it's the best place to run it because the hub have sensible networking and it's all easy and things compile properly but we do continuous integration on all the platforms we support if anybody can find a Windows developer we would love one but I don't know them outside and we have builds right now build BOTS that you can find through our github and running on arm FreeBSD heads stable net BSD OS 10 and Ubuntu I bet you as well grain that feels yeah and really you project so we're very open all of the all of the research we're doing is open access and being made available as soon as we can all of the architecture and specifications we have we're releasing as soon as we we have them available as well if you want to read a 60 page document about why and how well stateless all together we have it not interesting will and although the development is happening in real time available we have a public github will take patches from anyone we really want patches from somebody if you feel like fixing our documentation then then we're doing great yeah they though they want us to show that we have convinced other people to use this and it yeah so I don't know how you measure this and yeah so all the course online you can go and have a look it's really easy to check out very few dependencies there are examples for how to drive everything if you have some networking problem that you really want to solve with protocols but you can't trust the network to be reliable this will this will work for it we are a year into development so things are a bit janky later we're gonna do some bindings to pison and maybe go so that you can access this through saner languages and you use everything and but it's all there yeah and that's me I have loads of times for questions can I just repeat that source recorded and I think this is amazing I think we should be keynote live at large UNIX conferences what's the bit you're having the repple no no I'll be trying to avoid threads because there anything is too complicated yeah no I'm aware of I don't so the question is if we have issues with thread pools and libuv and I haven't I haven't seen any traffic in the issues from this I think we'll get more issues as people try and do more but we have Firefox running on this right now so Firefox is a really big thing and it's really really stressed the code we've written it's made it its trip loads of bugs it's been great to do we see it found loads of issues it would be good to know it would be good to have bigger workloads go through we did some performance stuff when we managed to push 6 gigabit through it so it's ok as a networking library there's no issue there they haven't been started if you would like to start it so the problem now is we don't have a stable API so even the example programs we have keep breaking and you don't want to build on top of that especially if you've got to deal with different languages i I'm hoping within the next six months we'll have something stable enough that the demos were building from keep breaking and I think the Firefox work we've done is going to force that to happen because Daniels Steinberg the the curl developer worked for Mozilla for us on this and he's very annoyed every time we change the API so I think we're gonna have to approach this we spent a lot of time so that so the four partners we have we have a tiny norwegian company called sell away we have EMC Mozilla and Cisco and Cisco are very interested in being able to abstractly deal with names and do stuff like connect to a name rather than a service at some point that people from UI or wanted to get rid of port numbers we top them down if you wanted to build something on top of the same networking library that resolved the networking issue you could definitely do it if we have a good DNS library integrated and we have great DNS but if you had a more abstract system I think this would be a nice place to hook into okay cool thank you oh I have heard of this yet so the Rena protocol stack yeah I was asked this when I give this talk last year somewhere else and yeah there's there's tons of work in this space as well this isn't we're not unique in any way there's like five or six different projects that at different levels people will have seen them Brian trammels post sockets draft they picked such a better name than we did yeah so that there's there lots of efforts trying to try to fix this API because this is now being seen as a stumbling block okay thank you very much [Applause]


  449 ms - page object


AV-Portal 3.21.3 (19e43a18c8aa08bcbdf3e35b975c18acb737c630)