TCP 융합

TCP fusion

TCP Fusion은 TCP 루프백을 제공하는 기능으로, Oracle의 Solaris-10 및 Solaris-11 운영 체제 TCP(Transmission Control Protocol) 스택과 OpenSolaris 프로젝트의 오픈 소스 코드베이스를 기반으로 하는 여러 소프트웨어 프로젝트에서 구현됩니다.이 아이디어는 동일한 시스템 내의 로컬 루프백 인터페이스에서 클라이언트와 서버 연결이 데이터를 교환하는 데 전체 TCP/IP 프로토콜 스택을 필요로 하지 않는다는 점에서 사소한 것입니다.따라서 두 끝점의 융합으로 더 빠른 데이터 경로를 제공합니다.

소스 코드는 inet/tcp/tcp_fusion.c에 잘 문서화되어 있으며 다음과 같이 명시되어 있습니다.

TCP 퓨전은 TCP 루프백 연결을 위한 프로토콜이 없는 데이터 경로입니다.연결 설정 시 두 개의 로컬 TCP 엔드포인트가 융합됩니다.퓨전이 성공하려면 다양한 조건(tcp_fuse()의 세부 정보 참조)이 충족되어야 합니다.실패하면 일반 TCP 데이터 경로로 되돌아갑니다. 성공하면 두 엔드포인트 모두 tcp_fuse_output()을 전송 경로로 사용합니다. tcp_fuse_output()은 피어의 수신 대기열에 직접 응용 프로그램 데이터를 대기열에 넣습니다. 프로토콜 처리는 필요하지 않습니다.동기화는 squue 및 mutex tcp_non_sq_lock에 의해 처리됩니다.융합이 성공하기 위한 요구 사항 중 하나는 두 엔드포인트가 동일한 신호음을 사용해야 한다는 것입니다.이렇게 하면 다른 쪽에서 데이터를 전송하는 동안 어느 쪽도 사라질 수 없습니다.흐름 제어 정보는 스큐 외부에서 조작되므로 tcp_flow_stopped를 터치할 때 tcp_non_sq_lock을 유지해야 합니다.

이 기능은 Solaris 또는 genunix 커널에 대한 /etc/system 구성 파일을 통해 활성화 또는 비활성화할 수 있으며 필요한 유일한 행은 16진수 TRUE에 대해 "0x1"인 동안 기능을 해제하거나 FALSE로 설정하는 "set ip:do_do_message = 0x0"입니다.

https://github.com/illumos/illumos-gate/blob/master/usr/src/uts/common/inet/tcp/ 을 참조하십시오.