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