/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