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