7ef9bb89d3 
								
							 
						 
						
							
							
								
								TUN-7000: Reduce metric cardinality of closedConnections metric by removing error as tag  
							
							
							
						 
						
							2022-12-07 11:09:16 +00:00  
				
					
						
							
							
								 
						
							
								225c344ceb 
								
							 
						 
						
							
							
								
								TUN-6855: Add DatagramV2Type for IP packet with trace and tracing spans  
							
							
							
						 
						
							2022-10-17 19:45:01 +01:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								f5f3e6a453 
								
							 
						 
						
							
							
								
								TUN-6689: Utilize new RegisterUDPSession to begin tracing  
							
							
							
						 
						
							2022-09-13 14:56:08 +00:00  
				
					
						
							
							
								 
						
							
								e380333520 
								
							 
						 
						
							
							
								
								TUN-6688: Update RegisterUdpSession capnproto to include trace context  
							
							
							
						 
						
							2022-09-08 21:50:58 +00:00  
				
					
						
							
							
								 
						
							
								3e0ff3a771 
								
							 
						 
						
							
							
								
								TUN-6531: Implement ICMP proxy for Windows using IcmpSendEcho  
							
							
							
						 
						
							2022-09-07 19:18:06 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								7ca5f7569a 
								
							 
						 
						
							
							
								
								TUN-6726: Fix maxDatagramPayloadSize for Windows QUIC datagrams  
							
							
							
						 
						
							2022-09-01 21:32:59 +00:00  
				
					
						
							
							
								 
						
							
								e131125558 
								
							 
						 
						
							
							
								
								TUN-6699: Add metric for packet too big dropped  
							
							
							
						 
						
							2022-08-26 16:02:43 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								d2bc15e224 
								
							 
						 
						
							
							
								
								TUN-6667: DatagramMuxerV2 provides a method to receive RawPacket  
							
							
							
						 
						
							2022-08-24 14:56:08 +01:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								278df5478a 
								
							 
						 
						
							
							
								
								TUN-6584: Define QUIC datagram v2 format to support proxying IP packets  
							
							
							
						 
						
							2022-08-12 08:06:56 +00:00  
				
					
						
							
							
								 
						
							
								9de4e88ca6 
								
							 
						 
						
							
							
								
								TUN-6646: Add support to SafeStreamCloser to close only write side of stream  
							
							
							
						 
						
							2022-08-10 20:57:30 +00:00  
				
					
						
							
							
								 
						
							
								f3ba506880 
								
							 
						 
						
							
							
								
								TUN-6499: Remove log that is per datagram  
							
							
							
						 
						
							2022-07-05 18:06:37 +01:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								baed5f4eea 
								
							 
						 
						
							
							
								
								TUN-6308: Add debug logs to see if packets are sent/received from edge  
							
							
							
						 
						
							2022-05-30 14:01:40 +01:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								e56c4532ce 
								
							 
						 
						
							
							
								
								TUN-5697: Listen for UpdateConfiguration RPC in quic transport  
							
							
							
						 
						
							2022-02-18 09:12:39 +00:00  
				
					
						
							
							
								 
						
							
								d07d24e5a2 
								
							 
						 
						
							
							
								
								TUN-5695: Define RPC method to update configuration  
							
							
							
						 
						
							2022-02-03 15:05:46 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								6fa58aadba 
								
							 
						 
						
							
							
								
								TUN-5623: Configure quic max datagram frame size to 1350 bytes for none Windows platforms  
							
							
							
						 
						
							2022-01-11 14:55:43 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								7a55208c61 
								
							 
						 
						
							
							
								
								TUN-5590: QUIC datagram max user payload is 1217 bytes  
							
							
							
						 
						
							2021-12-22 19:53:58 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								8f46065ab5 
								
							 
						 
						
							
							
								
								TUN-5570: Only log RPC server events at error level to reduce noise  
							
							
							
						 
						
							2021-12-20 16:50:24 +00:00  
				
					
						
							
							
								 
						
							
								73a265f2fc 
								
							 
						 
						
							
							
								
								TUN-5488: Close session after it's idle for a period defined by registerUdpSession RPC  
							
							
							
						 
						
							2021-12-09 11:55:34 +00:00  
				
					
						
							
							
								 
						
							
								b73c588254 
								
							 
						 
						
							
							
								
								TUN-5422: Define RPC to unregister session  
							
							
							
						 
						
							2021-12-06 16:37:09 +00:00  
				
					
						
							
							
								 
						
							
								eea3d11e40 
								
							 
						 
						
							
							
								
								TUN-5301: Separate datagram multiplex and session management logic from quic connection logic  
							
							
							
						 
						
							2021-12-06 16:37:09 +00:00  
				
					
						
							
							
								 
						
							
								dd32dc1364 
								
							 
						 
						
							
							
								
								TUN-5299: Send/receive QUIC datagram from edge and proxy to origin as UDP  
							
							
							
						 
						
							2021-12-06 16:37:09 +00:00  
				
					
						
							
							
								 
						
							
								fc2333c934 
								
							 
						 
						
							
							
								
								TUN-5300: Define RPC to register UDP sessions  
							
							
							
						 
						
							2021-12-06 16:37:09 +00:00  
				
					
						
							
							
								 
						
							
								197a70c9c4 
								
							 
						 
						
							
							
								
								Fix typos  
							
							
							
						 
						
							2021-11-12 17:38:06 +02:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								17e3073a17 
								
							 
						 
						
							
							
								
								TUN-4613: Add a no-op protocol version slot  
							
							
							
						 
						
							2021-08-24 15:21:26 +00:00  
				
					
						
							
							
								 
						
							
								e49a7a4389 
								
							 
						 
						
							
							
								
								TUN-4597: Added HTTPProxy for QUIC  
							
							
							
						 
						
							2021-08-04 12:50:18 +00:00  
				
					
						
							
							
								 
						
							
								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