Trickle

User-land bandwidth control for UNIX-like systems

Why Trickle

Unmanaged Network...

     Low priority: Bulk transfers

     High Priority Transfers: Email, Twitter, Messenger


Unprivileged User...

     Play nice with others 

     Stay under the radar

     

How to Trickle (Goals)

Transparent

Portable

Simple

Trickle Transparancy: Linking and Preloading

Dynamic-linking only

    Shims itself between application & kernel


Preloading

    LD_LIBRARY_PATH (set by trickle)

Trickle Transparancy: Linking and Preloading

Trickle Portable 

Sockets & LIBC

    Tracks: socket(), recv(), write(), send(), select() & poll()

    Legacy: dup() & dup2()

    Not Tracked: Event based sockets - kqueue / epoll / poll


Trickle Simple

Very simple command line:


trickle -u 10 -d 20 ftp


Launch ftp limiting its upload capacity to 10 KB/s, and download capacity at 20 KB/s.

Trickle: Under the hood - Upstream

Given bandwidth limit, Trickle decides to...

    Truncate: 0 or more

    Delay: Don't send for at least X time


Delay blocks sending until bandwidth quota is available

Truncate uses available quota, without exceeding limit

         

Trickle: Under the hood - Downstream

Given bandwidth limit, Trickle decides to...

    Forward packets to application

    Delay: Don't send for at least X time


Depends on TCP behaviors to control remote window size

         

Trickle: Distributed Control

One network host runs a control server (trickled)

     Clients connect to request allocation of bandwidth

     Total bandwidth allocation divide among clients evenly

     Unused allocation returned to pool for other clients


Create a presentation like this one
Share it on social medias
Share it on your own
Share it on social medias
Share it on your own

How to export your presentation

Please use Google Chrome to obtain the best export results.


How to export your presentation

Trickle: Bandwidth Manager

by idahoincolorado

9 views

Public - 4/18/16, 4:55 AM