최신글

Full proxy와 TCP 종료 전파

반응형

Full proxy란

Full proxy는 downstream과 upstream의 세션을 각각 맺습니다. 따라서, proxy는 downstream socket과 upstream socket을 따로 생성합니다.

 

raw tcp을 사용할 때, socket 종료전파

제가 full proxy을 접하게 된 이유가 raw tcp의 생명주기가 궁금했기 때문입니다. raw tcp통신은 http처럼 L7 프로토콜이 아니라 L4 tcp만 가지고 통신할때입니다.

 

Full proxy는 어느 한쪽 socket이 종료되면, 다른편 socket을 종료합니다. 이 과정을 종료 전파(Propagate)라고 부릅니다.

 

envoy proxy의 종료 전파코드는 아래와 같습니다.
https://github.com/envoyproxy/envoy/blob/main/source/common/tcp_proxy/tcp_proxy.cc#L1288-L1350

 

HAproxy의 코드는 아래와 같습니다.
https://github.com/haproxy/haproxy/blob/ac776e3819f9fa54e2a005469e5a423a3d179543/src/stconn.c#L1309-L1314

 

종료되지 않게 구현하려면?

upstream, downstream 생명주기를 분리하고 싶다면, full proxy를 사용하는 것보다는 세션을 관리하는 TCP gateway를 직접 개발해야합니다.

반응형