With PR #2719 : http://people.apache.org/~oknet/quic_and_udp.2017103118.png


2017-10-21 10:23 GMT+08:00 Chao Xu <ok...@apache.org>:

> Here is a diagram for UDP core : http://people.apache.org/~
> oknet/quic_and_udp.2017102020.png
>
> - Oknet
>
> 2017-10-17 15:33 GMT+08:00 Masaori Koshiba <masa...@apache.org>:
>
>> Thank you for ideas around QUICNetVConnection. It looks like well
>> organized
>> design!
>>
>> > The QUIC has a handshake progress that is just like the TCP has the
>> 3-ways handshake progress.
>> > The tcp socket fd is returned by accept() only after handshake done.
>> > Thus, the QUICConnection should be created and returned after handshake
>> done.
>>
>> I'm worry about this. Because current QUIC specs (tls-mapping) says
>> handshake use stream 0.
>> So handshake needs to be build on frame reordering (stream) and loss
>> detection. This is why current quic-latest branch implements QUICHandshake
>> as a QUIC Application.
>>
>> - Masaori
>>
>> I'm glad to hear that you'll come to Tokyo :)
>>
>> 2017年10月17日(火) 15:33 Chao Xu <ok...@apache.org>:
>>
>> > Here is the url for the diagram :
>> > http://home.apache.org/~oknet/QUIC.201710171429.png
>> >
>> > 2017-10-17 14:33 GMT+08:00 Chao Xu <ok...@apache.org>:
>> >
>> >> Here is the url for the diagram :
>> >> http://home.apache.org/~oknet/QUIC.201710171429.png
>> >>
>> >> 2017-10-17 14:25 GMT+08:00 Chao Xu <ok...@apache.org>:
>> >>
>> >>> /cc dev
>> >>>
>> >>> @Masaori , I will join the QUIC Hack-a-thon in next January at Tokyo
>> and
>> >>> apply my visa right way.
>> >>>
>> >>> Attached the new diagram. In my opinion, it is the comparison between
>> >>>  TCP and QUIC.
>> >>>
>> >>> - The `QUIC Connection` is the same as `TCP Connection`
>> >>> - A tcp socket fd is allocated by linux kernel for `TCP Connection`
>> >>> - A QUICConnection object is allocated by iocore for `QUIC Connection`
>> >>> - The `QUICConnection qcon` is equivalent to `int tcp_socket_fd`
>> >>>
>> >>> The QUIC has a handshake progress that is just like the TCP has the
>> >>> 3-ways handshake progress.
>> >>> The tcp socket fd is returned by accept() only after handshake done.
>> >>> Thus, the QUICConnection should be created and returned after
>> handshake
>> >>> done.
>> >>>
>> >>> The QUICConnection handle the quic transaction as a State Machine to .
>> >>> It is managed by QUICNetHandler.
>> >>>
>> >>> There is a acceptQueue inside the QUICNetHandler, a QUICNetVC is
>> created
>> >>> and initialized with a QUICConnection from the acceptQueue one by one.
>> >>>
>> >>> If a packet attached to an existing QUICConnection, it will be pushed
>> >>> into the readyQueue.
>> >>>
>> >>> Similar to PollCont, it returns a set of QUICNetVC from readyQueue to
>> >>> implement a `QUICPollCont`.
>> >>>
>> >>> Override the `net_read_io` and `load_buffer_and_write` in the
>> QUICNetVC,
>> >>> it will be managed by NetHandler just like SSLNetVC.
>> >>>
>> >>>
>> >>> [image: 内嵌图片 3]
>> >>>
>> >>>
>> >>> Oknet Xu
>> >>>
>> >>> ---------- Forwarded message ----------
>> >>> From: Masaori Koshiba <masa...@apache.org>
>> >>> Date: 2017-10-13 20:01 GMT+08:00
>> >>> Subject: Re: Talk about the QUICNetVConnection
>> >>> To: Chao Xu <ok...@apache.org>, Masakazu Kitajo <mas...@apache.org>,
>> >>> sc...@apache.org
>> >>>
>> >>>
>> >>> Would you mind if I add dev@trafficserver.apache.org to CC?
>> >>> This should be discuss in public :)
>> >>>
>> >>> BTW, do you guys come to next ATS summit in this month or QUIC
>> >>> Hack-a-thon in next January?
>> >>>
>> >>> - Masaori
>> >>>
>> >>> 2017年10月13日(金) 20:41 Chao Xu <ok...@apache.org>:
>> >>>
>> >>>> Hi Masaori and Masakazu,
>> >>>>
>> >>>> I have talked with @scw00, in my opinion, it is better to make the
>> >>>> QUIConnection as a member of QUICNetVConnection.
>> >>>>
>> >>>> According to the design of UnixNetVConnection and NetVConnection, the
>> >>>> `get_socket()` return the physical socket descriptor and a
>> `Connection`
>> >>>> object as a member of UnixNetVConnection.
>> >>>>
>> >>>> The class Connection is a interface for the physical socket
>> descriptor.
>> >>>>
>> >>>> [image: image.png]
>> >>>>
>> >>>>
>> >>>> To the design of QUICNetVConnection, the `QUICConnection` object is
>> the
>> >>>> physical socket descriptor.
>> >>>>
>> >>>> And the `UDPConnection` object is the physical socket descriptor of
>> >>>> `QUICConnection`.
>> >>>>
>> >>>>
>> >>>> ```
>> >>>> class QUICNetVConnection : public UnixNetVConnection, public
>> >>>> QUICConnection
>> >>>> ```
>> >>>>
>> >>>> to
>> >>>>
>> >>>> ```
>> >>>> class QUICNetVConnection : public UnixNetVConnection
>> >>>> {
>> >>>>     QUICConnection _qconn;
>> >>>> ...
>> >>>> ```
>> >>>>
>> >>>> and
>> >>>>
>> >>>> ```
>> >>>> class QUICConnection : public QUICPacketTransmitter, public
>> >>>> QUICFrameTransmitter, public QUICFrameHandler
>> >>>> {
>> >>>>     UDPConnection *_udp_con;
>> >>>> ...
>> >>>> ```
>> >>>>
>> >>>> Finally, the QUICNetVConnection will inherits NetVConnection directly
>> >>>> and managed by QUICNetHandler.
>> >>>>
>> >>>> Oknet Xu
>> >>>>
>> >>>
>> >>>
>> >>
>> >
>>
>
>

Reply via email to