Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!news.albasani.net!newsfeed.freenet.ag!news2.euro.net!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.013 X-Spam-Evidence: '*H*': 0.97; '*S*': 0.00; 'algorithm': 0.03; 'level,': 0.07; 'subject:ANN': 0.07; 'behavior,': 0.09; 'machines.': 0.09; 'rfc': 0.09; 'cc:addr:python-list': 0.10; 'received:74.125.82.44': 0.15; '(like': 0.15; 'cases': 0.15; 'arrived': 0.16; 'consciously': 0.16; 'frames': 0.16; 'handshake': 0.16; 'helps.': 0.16; 'margin': 0.16; 'prioritizing': 0.16; 'tcp': 0.16; 'vpn': 0.16; '\xa0what': 0.16; 'wed,': 0.16; 'wrote:': 0.17; 'certainly': 0.17; 'duplicate': 0.17; 'implementing': 0.17; 'jan': 0.18; 'solution.': 0.18; 'email addr:gmail.com>': 0.20; 'sort': 0.21; 'bit': 0.21; 'dropped': 0.22; 'http': 0.22; 'cc:2**0': 0.23; 'work.': 0.23; '(i.e.,': 0.23; 'user.': 0.23; 'cc:addr:python.org': 0.25; 'header:In-Reply-To:1': 0.25; 'common': 0.26; 'am,': 0.27; 'wonder': 0.27; 'message- id:@mail.gmail.com': 0.27; 'falls': 0.29; 'protocols': 0.29; 'ray': 0.29; 'use?': 0.29; 'url:mailman': 0.29; 'case,': 0.29; 'connection': 0.30; 'usually': 0.30; 'error': 0.30; 'sense': 0.31; '(and': 0.32; 'implement': 0.32; 'url:python': 0.32; 'could': 0.32; 'url:listinfo': 0.32; 'received:74.125.82': 0.33; 'real- time': 0.33; 'likely': 0.33; 'received:google.com': 0.34; 'done': 0.34; 'platforms,': 0.35; 'protocol': 0.35; 'said,': 0.35; 'especially': 0.35; "won't": 0.35; 'really': 0.36; 'but': 0.36; 'received:74.125': 0.36; 'url:org': 0.36; 'anything': 0.36; 'should': 0.36; 'uses': 0.37; 'being': 0.37; 'why': 0.37; 'virtual': 0.37; 'data': 0.37; 'subject:: ': 0.38; 'some': 0.38; 'header:Received:5': 0.40; 'url:mail': 0.40; 'your': 0.60; 'high': 0.61; 'kind': 0.61; 'relatively': 0.62; 'situation': 0.62; 'town': 0.62; 'different': 0.63; 'within': 0.64; 'strategy': 0.64; 'video': 0.65; 'sit': 0.65; 'due': 0.66; 'yourself': 0.77; 'introduce': 0.80; '2013': 0.84; 'about,': 0.84; 'burdensome': 0.84; 'category.': 0.84; 'common,': 0.84; 'congestion': 0.84; 'overhead,': 0.84; 'transmitting': 0.84; '\xa0\xa0\xa0\xa0\xa0': 0.84; 'forgotten': 0.91; 'widespread': 0.91 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=liquibits.com; s=google; h=mime-version:sender:x-originating-ip:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; bh=Na1sICH9TPbcPskQgeUKtTNe1J+aSFnyHcwpUDGdTIg=; b=e7amujqCz4ygP/TUb/3ZMMTGL+Y3b45S0LxKblxy2cu+igaleubEfXEnsGC4DRSLrv 3CaSu46rjz3FEotIsGSeyQl5gE1aBUGQGXNd5F7Y2h3yFf/gA4K+8kctDawf2U+WytOO vnAxQ10TyNRZzYsKvdVJrrG5pIRxIwOOfmIfQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:sender:x-originating-ip:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :x-gm-message-state; bh=Na1sICH9TPbcPskQgeUKtTNe1J+aSFnyHcwpUDGdTIg=; b=k3HUZNESY/JE8yxHa9Ce6jF1xNdPZ/pea2Q/3IUO8yFhXTQdh+awpi2rBaY8+p8GIw ppIllmOtNyxLuzOxQlGKUDfqJXEeWl4lrJ1up3TsDKdBMjLMB4BL2bFgG8WL10wyv49C swZKxBt4BmB5n3N4gOEVJwAES/7Pl8P9/jmM8Iu8UMVW8iyOT9awZLfxvBUfaOz8JEL2 ID0Dy91uoQV0GQAhuU+jQYgt7gq9Yp+6BXaJGwt7pDDmLMR0FVeHOxocsMzQPhoCpGos BZOUR0Sses2BrkPNHtGco2ujtKnKeCrnR4OsLyoGxhmZiWyalR1ps98abilVyf9F6VmP 7dkw== MIME-Version: 1.0 Sender: ray@liquibits.com X-Originating-IP: [76.104.190.126] In-Reply-To: References: Date: Wed, 9 Jan 2013 12:04:41 -0800 X-Google-Sender-Auth: Ga9QYoVYCXIqRWw8HSHKhXIL6G0 Subject: Re: ANN: PyDTLS From: rbit To: Neal Becker Content-Type: multipart/alternative; boundary=f46d044306acabf0b304d2e0920e X-Gm-Message-State: ALoCoQnjhgHJjFik1zNTXMb2gTBaLfoU43EFimrZnwXZnepHMWVSQeqchK91b4xsbb4TTcOymtbf Cc: "python-list@python.org" X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 126 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1357761889 news.xs4all.nl 6879 [2001:888:2000:d::a6]:54173 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:36515 --f46d044306acabf0b304d2e0920e Content-Type: text/plain; charset=ISO-8859-1 Neal, A network protocol that is unreliable (i.e., lacks retransmission of dropped packets) and lacks congestion control will certainly never be a common, general purpose protocol, due to the amount of work it imposes on its user. Implementing an AIMD congestion control algorithm is burdensome to an application, and only some use cases (like DNS) won't need congestion control. Use of the Datagram Congestion Control Protocol is a potential way out for applications, but DCCP (RFC 4340) isn't available on some common platforms, like Windows. That being said, if you find yourself in the kind of unique situation that requires a network protocol with characteristics different from TCP (namely prioritizing availability of data over its reliability), and you need network security as well, then RFC 6347 is really the only reasonable game in town over rolling your own solution. The following are some of the main use cases that force applications into datagram protocols: * Minimizing protocol overhead. TCP has relatively high overhead, for example, its 3-way handshake for connection establishment. One can see why DNS uses UDP. * Real-time data streaming. With this use case, it makes no sense to hold arrived data from the application, because prior packets are being recovered through retransmission. Such packets should just be forgotten about, especially if they fall within the margin of the error concealment strategy of the application. Any sort of audio and/or video transmission falls in this category. RTP is usually done over UDP (and is an illustrative use case for RFC 6347). * Anything that operates below the transport layer (layer 4 of the OSI model). Say you're writing a VPN at a virtual Ethernet level, transmitting Ethernet frames among machines. In that case, protocols that either implement reliability (say, HTTP over TCP) or consciously try to avoid it (say, RTP over UDP) sit above you, and you would neither want to duplicate their reliability functions, nor introduce this unwanted behavior, respectively. But you may want security for your VPN. I hope this helps. Ray On Wed, Jan 9, 2013 at 7:08 AM, Neal Becker wrote: > A bit OT, but the widespread use of rfc 6347 could have a big impact on my > work. > I wonder if it's likely to see widespread use? What are likely/possible > use > cases? > > Thank. > > -- > http://mail.python.org/mailman/listinfo/python-list > --f46d044306acabf0b304d2e0920e Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Neal,

A network prot= ocol that is unreliable (i.e., lacks retransmission of dropped packets) and= lacks congestion control will certainly never be a common, general purpose= protocol, due to the amount of work it imposes on its user. Implementing a= n AIMD congestion control algorithm is burdensome to an application, and on= ly some use cases (like DNS) won't need congestion control. Use of the = Datagram Congestion Control Protocol is a potential way out for application= s, but DCCP (RFC 4340) isn't available on some common platforms, like W= indows.

That being said, if you find yourself in the kind of unique situa= tion that requires a network protocol with characteristics different from T= CP (namely prioritizing availability of data over its reliability), and you= need network security as well, then RFC 6347 is really the only reasonable= game in town over rolling your own solution.

The following are some of the main use cases that force applicati= ons into datagram protocols:

=A0=A0=A0 * Minimizing protocol o= verhead. TCP has relatively high overhead,
=A0 =A0 =A0 for example, its = 3-way handshake for connection establishment.
=A0 =A0 =A0 One can see why DNS uses UDP.
=A0=A0=A0 * Real-t= ime data streaming. With this use case, it makes no sense
=A0=A0= =A0=A0=A0 to hold arrived data from the application, because prior packets = are
=A0=A0=A0=A0=A0 being recovered through retransmission. Such p= ackets should just
=A0=A0=A0=A0=A0 be forgotten about, especially if they fall within th= e margin of the error
=A0=A0=A0=A0=A0 concealment strategy of the = application. Any sort of audio and/or video
=A0=A0=A0=A0=A0 transm= ission falls in this category. RTP is usually done over UDP (and
=A0=A0=A0=A0=A0 is an illustrative use case for RFC 6347).
= =A0=A0=A0 * Anything that operates below the transport layer (layer 4 of th= e OSI
=A0=A0=A0=A0=A0 model). Say you're writing a VPN at a vi= rtual Ethernet level, transmitting
=A0=A0=A0=A0=A0 Ethernet frames among machines. In that case, protoco= ls that either
=A0=A0=A0=A0=A0 implement reliability (say, HTTP ov= er TCP) or consciously try to avoid
=A0=A0=A0=A0=A0 it (say, RTP o= ver UDP) sit above you, and you would neither want to
=A0=A0=A0=A0=A0 duplicate their reliability functions, nor introduce = this unwanted
=A0=A0=A0=A0=A0 behavior, respectively. But you may = want security for your VPN.

I hope this helps.

Ray
<= div class=3D"gmail_extra">

On Wed, Jan 9, 2013 at 7:08 AM, Neal Bec= ker <ndbecker2@gmail.com> wrote:
A bit OT, but the widespread use of rfc 6347 could have a big impact on my = work.
I wonder if it's likely to see widespread use? =A0What are likely/possi= ble use
cases?

Thank.

--
http://mail.python.org/mailman/listinfo/python-list

--f46d044306acabf0b304d2e0920e--