cthuang
be0305ec58
TUN-6741: ICMP proxy tries to listen on specific IPv4 & IPv6 when possible
...
If it cannot determine the correct interface IP, it will fallback to all interfaces.
This commit also introduces the icmpv4-src and icmpv6-src flags
2022-09-26 11:37:08 +01:00
Devin Carr
f5f3e6a453
TUN-6689: Utilize new RegisterUDPSession to begin tracing
2022-09-13 14:56:08 +00:00
Devin Carr
e380333520
TUN-6688: Update RegisterUdpSession capnproto to include trace context
2022-09-08 21:50:58 +00:00
Chung-Ting Huang
3e0ff3a771
TUN-6531: Implement ICMP proxy for Windows using IcmpSendEcho
2022-09-07 19:18:06 +00:00
cthuang
faa86ffeca
TUN-6737: Fix datagramV2Type should be declared in its own block so it starts at 0
2022-09-05 15:09:53 +01:00
Nuno Diegues
7ca5f7569a
TUN-6726: Fix maxDatagramPayloadSize for Windows QUIC datagrams
2022-09-01 21:32:59 +00:00
João Oliveirinha
e131125558
TUN-6699: Add metric for packet too big dropped
2022-08-26 16:02:43 +00:00
cthuang
59f5b0df83
TUN-6530: Implement ICMPv4 proxy
...
This proxy uses unprivileged datagram-oriented endpoint and is shared by all quic connections
2022-08-24 17:33:03 +01:00
cthuang
d2bc15e224
TUN-6667: DatagramMuxerV2 provides a method to receive RawPacket
2022-08-24 14:56:08 +01:00
cthuang
bad2e8e812
TUN-6666: Define packet package
...
This package defines IP and ICMP packet, decoders, encoder and flow
2022-08-24 11:36:57 +01:00
cthuang
278df5478a
TUN-6584: Define QUIC datagram v2 format to support proxying IP packets
2022-08-12 08:06:56 +00:00
João Oliveirinha
9de4e88ca6
TUN-6646: Add support to SafeStreamCloser to close only write side of stream
2022-08-10 20:57:30 +00:00
cthuang
f3ba506880
TUN-6499: Remove log that is per datagram
2022-07-05 18:06:37 +01:00
Igor Postelnik
3da1c25471
TUN-6381: Write error data on QUIC stream when we fail to talk to the origin; separate logging for protocol errors vs. origin errors.
2022-06-15 13:06:45 +00:00
Nuno Diegues
475939a77f
TUN-6191: Update quic-go to v0.27.1 and with custom patch to allow keep alive period to be configurable
...
The idle period is set to 5sec.
We now also ping every second since last activity.
This makes the quic.Connection less prone to being closed with
no network activity, since we send multiple pings per idle
period, and thus a single packet loss cannot cause the problem.
2022-06-07 12:25:18 +01:00
cthuang
baed5f4eea
TUN-6308: Add debug logs to see if packets are sent/received from edge
2022-05-30 14:01:40 +01:00
Igor Postelnik
2c480a72db
TUN-6280: Don't wrap qlog connection tracer for gatethering QUIC metrics since we're not writing qlog files.
2022-05-24 16:59:03 -05:00
cthuang
e56c4532ce
TUN-5697: Listen for UpdateConfiguration RPC in quic transport
2022-02-18 09:12:39 +00:00
cthuang
d07d24e5a2
TUN-5695: Define RPC method to update configuration
2022-02-03 15:05:46 +00:00
Nuno Diegues
ed2bac026d
TUN-5621: Correctly manage QUIC stream closing
...
Until this PR, we were naively closing the quic.Stream whenever
the callstack for handling the request (HTTP or TCP) finished.
However, our proxy handler may still be reading or writing from
the quic.Stream at that point, because we return the callstack if
either side finishes, but not necessarily both.
This is a problem for quic-go library because quic.Stream#Close
cannot be called concurrently with quic.Stream#Write
Furthermore, we also noticed that quic.Stream#Close does nothing
to do receiving stream (since, underneath, quic.Stream has 2 streams,
1 for each direction), thus leaking memory, as explained in:
https://github.com/lucas-clemente/quic-go/issues/3322
This PR addresses both problems by wrapping the quic.Stream that
is passed down to the proxying logic and handle all these concerns.
2022-02-01 22:01:57 +00:00
cthuang
6fa58aadba
TUN-5623: Configure quic max datagram frame size to 1350 bytes for none Windows platforms
2022-01-11 14:55:43 +00:00
Igor Postelnik
8445b88d3c
TUN-5593: Read full packet from UDP connection, even if it exceeds MTU of the transport. When packet length is greater than the MTU of the transport, we will silently drop packets (for now).
2021-12-22 17:18:22 -06:00
cthuang
7a55208c61
TUN-5590: QUIC datagram max user payload is 1217 bytes
2021-12-22 19:53:58 +00:00
cthuang
ebae7a7024
TUN-5494: Send a RPC with terminate reason to edge if the session is closed locally
2021-12-21 09:52:39 +00:00
cthuang
8f46065ab5
TUN-5570: Only log RPC server events at error level to reduce noise
2021-12-20 16:50:24 +00:00
cthuang
73a265f2fc
TUN-5488: Close session after it's idle for a period defined by registerUdpSession RPC
2021-12-09 11:55:34 +00:00
cthuang
b73c588254
TUN-5422: Define RPC to unregister session
2021-12-06 16:37:09 +00:00
cthuang
eea3d11e40
TUN-5301: Separate datagram multiplex and session management logic from quic connection logic
2021-12-06 16:37:09 +00:00
cthuang
dd32dc1364
TUN-5299: Send/receive QUIC datagram from edge and proxy to origin as UDP
2021-12-06 16:37:09 +00:00
cthuang
fc2333c934
TUN-5300: Define RPC to register UDP sessions
2021-12-06 16:37:09 +00:00
Dimitris Apostolou
197a70c9c4
Fix typos
2021-11-12 17:38:06 +02:00
cthuang
ff7c48568c
TUN-5261: Collect QUIC metrics about RTT, packets and bytes transfered and log events at tracing level
2021-10-21 15:26:57 +01:00
Sudarsan Reddy
17e3073a17
TUN-4613: Add a no-op protocol version slot
2021-08-24 15:21:26 +00:00
Sudarsan Reddy
e49a7a4389
TUN-4597: Added HTTPProxy for QUIC
2021-08-04 12:50:18 +00:00
Sudarsan Reddy
81dff44bb9
TUN-4596: Add QUIC application protocol for QUIC stream handshake
...
- Vendored the capnproto library to cloudflared.
- Added capnproto schema defining application protocol.
- Added Pogs and application level read write of the protocol.
2021-07-15 17:35:25 +00:00