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 > >>>> > >>> > >>> > >> > > >