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