Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

TCP 빠른 열기

TCP를 사용하여 보다 효율적인 데이터 교환 빠른 열기

TCP TFO(Fast Open)는 TCP 세션 중에 표준 3방향 연결 핸드셰이크를 통해 최대 1개의 전체 RTT(왕복 시간)를 절약하는 TCP에 대한 업데이트입니다. TFO 지원은 MS-MPC 및 MS-MIC에 대한 것입니다.

표준 3방향 연결 핸드셰이크에는 두 호스트 간의 세 세트의 송수신 메시지와 다음과 같은 SYN(동기화) 및 ACK(승인) 패킷 교환이 포함됩니다.

  1. 호스트 A는 TCP SYN 패킷을 호스트 B에 전송하고, 호스트 B는 이를 수신합니다.

  2. 호스트 B는 SYN-ACK 패킷을 호스트 A에 전송하고, 호스트 A는 이를 수신합니다.

  3. 호스트 A는 호스트 B에 ACK 패킷을 전송하고, 호스트 B는 이를 수신합니다.

표준 TCP에서는 SYN 패킷으로 데이터를 전송할 수 있지만 이 데이터는 3방향 핸드셰이크가 완료될 때까지 전달될 수 없습니다. TFO는 이러한 제약을 제거하고 SYN 패킷의 데이터를 애플리케이션으로 전달할 수 있도록 하여 대기 시간을 크게 개선합니다.

TFO의 핵심 구성 요소는 서버에서 생성하는 메시지 인증 코드(MAC) 태그인 Fast Open Cookie(cookie)입니다. 클라이언트는 하나의 일반 TCP 연결에서 쿠키를 요청한 다음 향후 TCP 연결에 이를 사용하여 핸드셰이크 중에 데이터를 교환합니다.

TFO 옵션은 TFO 쿠키를 요청하거나 보내는 데 사용됩니다. 쿠키가 없거나 비어 있는 경우 클라이언트는 이 옵션을 사용하여 서버에서 쿠키를 요청합니다. 쿠키가 있는 경우 이 옵션은 서버에서 클라이언트로 또는 클라이언트에서 서버로 쿠키를 전달하는 데 사용됩니다.

다음 목록에서는 클라이언트가 TFO 쿠키를 요청하는 방법을 간략하게 설명합니다.

  1. 클라이언트는 쿠키 필드가 비어 있는 TFO 옵션이 있는 SYN을 보냅니다.

  2. 서버는 쿠키를 생성하고 SYN-ACK 패킷의 TFO 옵션을 통해 보냅니다.

  3. 클라이언트는 향후 TFO 연결을 위해 쿠키를 캐시합니다.

그 후, 두 디바이스는 TFO 교환을 수행합니다.

  1. 클라이언트는 TFO 옵션에 데이터 및 쿠키가 포함된 SYN을 보냅니다.

  2. 서버는 쿠키의 유효성을 검사합니다.

    • 쿠키가 유효한 경우 서버는 SYN과 데이터를 모두 확인하는 SYN-ACK를 보냅니다.

      그런 다음 서버는 데이터를 애플리케이션에 전달합니다.

    • 그렇지 않으면 서버는 데이터를 삭제하고 SYN 시퀀스 번호만 승인하는 SYN-ACK를 보냅니다.

나머지 연결은 일반 TCP 연결처럼 진행됩니다. 클라이언트는 쿠키를 획득한 후 (서버에서 쿠키가 만료될 때까지) 많은 TFO 작업을 반복할 수 있습니다. 따라서 TFO는 동일한 클라이언트가 동일한 서버에 여러 번 다시 연결하고 데이터를 교환하는 애플리케이션에 유용합니다.

TFO 구성

이 주제에서는 TCP Fast Open(TFO)의 세 가지 모드에 대해 설명하고 예제를 제시합니다. TFO와 함께 NAT를 사용하는 경우도 다룹니다.

TFO를 위한 세 가지 모드

TFO를 사용하는 데 구성이 필요하지 않습니다. TFO는 기본적으로 활성화되어 있습니다. 기본 모드에서는 모든 TFO 패킷이 서비스 PIC에 의해 전달됩니다. 기본값 외에도 CLI를 통해 구성하는 TFO에 대한 두 가지 다른 모드가 있습니다.

  • TFO 드롭 - 이 모드가 설정되면 TFO 패킷이 전달되지 않습니다.

  • TFO 비활성화 - 이 모드가 설정된 경우, TFO, 데이터 또는 둘 다를 전달하는 모든 SYN 또는 SYN ACK 패킷은 전달되기 전에 TFO와 데이터가 제거됩니다.

TFO 옵션은 서비스 집합별로 활성화됩니다. 서비스 집합은 다음 홉 서비스 집합 또는 인터페이스 스타일 서비스 집합일 수 있습니다. 다음은 인터페이스 스타일 서비스 집합 구성의 예입니다.

이 경우 TFO는 기본적으로 활성화됩니다(TFO 구성 없음). 명령의 show services service-sets statistics tcp 출력은 다음과 같습니다.

TFO 지원 패킷을 삭제하면 다음과 같은 구성 및 출력이 표시됩니다.

TFO 옵션을 제거하면 구성 및 출력이 그에 따라 변경됩니다.

네트워크 주소 변환(NAT) 및 TFO 사용

서비스 집합에 NAT가 구성되어 있고 TFO를 사용하는 경우 APP(주소 풀링 페어링)를 구성해야 합니다. APP를 사용하면 개인 IP 주소를 모든 세션에 대해 NAT 풀에서 동일한 공용 IP 주소에 매핑할 수 있습니다.

APP를 구성하지 않으면 네트워크 주소 변환(NAT)은 이전에 서버로 전송한 것과 동일한 네트워크 주소 변환(NAT) 풀에서 클라이언트에 다른 IP 주소를 제공할 수 있습니다. 서버가 IP 주소를 인식하지 못하고 TFO 옵션을 삭제하고 SYN ACK로 회신하고 클라이언트가 보낸 데이터가 승인되지 않습니다. 따라서 연결이 성공하고 패킷이 손실되지 않더라도 TFO의 이점은 상실됩니다. 그러나 클라이언트가 동일한 IP 주소를 가지고 돌아오면 서버는 이를 인식하고 데이터를 승인합니다. 따라서 항상 TFO를 사용하여 높은 매핑 시간 제한 값으로 APP를 사용하도록 설정합니다.

APP를 구성하려면:

  1. 앱 구성:
  2. 높은 매핑 시간 제한 값을 구성합니다.

MS-DPC 및 MS-PIC 서비스 인터페이스에 대한 단편화 제어 구성

다량의 단편화된 패킷 처리로 인해 서비스 PIC에서 계산 CPU 주기가 과도하게 소비되는 것을 방지하기 위해 두 가지 구성 옵션을 사용할 수 있습니다. 이러한 조각 처리는 DOS 공격에 악용될 수 있습니다. 이 fragment-limit 옵션은 패킷에 대한 최대 조각 수를 설정합니다. 이 수를 초과하면 패킷이 삭제됩니다. 패킷 reassembly-timeout 의 첫 번째 및 최신 조각이 수신된 시점부터 최대 시간을 지정합니다. 수가 초과되면 패킷이 삭제됩니다.

MS-DPC 및 MS-PIC 서비스 인터페이스에 대한 단편화 제어 구성:

  1. 구성 모드에서 계층 수준으로 [edit interfaces interface-name services-options 이동합니다.
  2. 조각 제한을 구성합니다.
  3. 리어셈블리 시간 제한을 구성합니다.

추적 서비스 PIC 작업

추적 작업은 모든 적응형 서비스 작업을 추적하고 로그 파일에 기록합니다. 로그된 오류 설명은 문제를 더 빨리 해결하는 데 도움이 되는 자세한 정보를 제공합니다.

기본적으로 이벤트는 추적되지 않습니다. 또는 [edit services logging] 계층 수준에서 [edit services adaptive-services-pics] 문을 포함 traceoptions 하면 기본 추적 동작은 다음과 같습니다.

  • 중요한 이벤트는 /var/log 디렉터리에 있는 이라는 serviced 파일에 기록됩니다.

  • 서비스된 파일이 128킬로바이트(KB)에 도달하면 추적 파일 3개가 생길 때까지 serviced.0, serviced.2로 이름이 바뀝니다. 그런 다음 가장 오래된 추적 파일(serviced.2)을 덮어씁니다. 로그 파일을 만드는 방법에 대한 자세한 내용은 시스템 로그 탐색기를 참조하세요.)

  • 로그 파일은 추적 작업을 구성하는 사용자만 액세스할 수 있습니다.

추적 파일이 있는 디렉터리(/var/log)는 변경할 수 없습니다. 그러나 다음 문을 포함하여 다른 추적 파일 설정을 사용자 지정할 수 있습니다.

이러한 문을 OR [edit services logging traceoptions] 계층 수준에서 [edit services adaptive-services-pics traceoptions] 포함합니다.

이러한 명령문은 다음 섹션에서 설명합니다.

적응형 서비스 로그 파일 이름 구성

기본적으로 추적 출력을 기록하는 파일 이름이 서비스됩니다. 또는 [edit services logging traceoptions] 계층 수준에서 [edit services adaptive-services-pics traceoptions] 문을 포함하여 file 다른 이름을 지정할 수 있습니다.

적응형 서비스 로그 파일의 수 및 크기 구성

기본적으로 추적 파일의 크기가 128킬로바이트(KB)에 도달하면 추적 파일이 세 개 생길 때까지 .0, .1로 이름이filename 바뀝니다.filename 그런 다음 가장 오래된 추적 파일(filename.2)을 덮어씁니다.

또는 [edit services logging traceoptions] 계층 수준에서 [edit services adaptive-services-pics traceoptions] 다음 문을 포함하여 추적 파일의 수와 크기에 대한 제한을 구성할 수 있습니다.

예를 들어 최대 파일 크기를 2MB로 설정하고 최대 파일 수를 20개로 설정합니다. 추적 작업(filename)의 출력을 수신하는 파일이 2MB에 도달하면 이름이 .0으로 변경filename되고 라는 filename 새 파일이 생성됩니다. filename 새 값이 filename 2MB filename 에 도달하면 .0의 이름이 filename.1로 변경되고 filename 이름이 .0으로 변경filename됩니다. 이 프로세스는 20개의 추적 파일이 생길 때까지 반복됩니다. 그런 다음 가장 오래된 파일(filename.19)을 가장 최신 파일(.0)filename으로 덮어씁니다.

파일 수는 2개에서 1000개까지 가능합니다. 각 파일의 파일 크기는 10KB에서 1기가바이트(GB)까지 가능합니다.

로그 파일에 대한 액세스 구성

기본적으로 로그 파일은 추적 작업을 구성하는 사용자만 액세스할 수 있습니다.

모든 사용자가 모든 로그 파일을 읽을 수 있도록 지정하려면 또는 [edit services logging traceoptions] 계층 수준에서 [edit services adaptive-services-pics traceoptions] 문을 포함 file world-readable 합니다.

기본 동작을 명시적으로 설정하려면 또는 [edit services logging traceoptions] 계층 수준에서 [edit services adaptive-services-pics traceoptions] 문을 포함 file no-world-readable 합니다.

기록할 줄에 대한 정규 표현식 구성

기본적으로 추적 작업 출력에는 기록된 이벤트와 관련된 모든 줄이 포함됩니다.

또는 [edit services logging traceoptions] 계층 수준에서 [edit services adaptive-services-pics traceoptions file filename] 문을 포함 match 하고 일치할 정규식(regex)을 지정하여 출력을 구체화할 수 있습니다.

추적 작업 구성

기본적으로 구성이 traceoptions 있는 경우 중요한 이벤트만 기록됩니다. or [edit services logging traceoptions] 계층 수준에서 [edit services adaptive-services-pics traceoptions] 다음 문을 포함하여 기록할 추적 작업을 구성할 수 있습니다.

표 1 은 적응형 서비스 추적 플래그의 의미를 설명합니다.

표 1: 적응형 서비스 추적 플래그

플래그

설명

기본 설정

all

모든 작업을 추적합니다.

꺼짐

command-queued

명령 대기열 이벤트를 추적합니다.

꺼짐

config

계층 수준에서 [edit services] 구성의 로그 읽기

꺼짐

handshake

핸드셰이크 이벤트를 추적합니다.

꺼짐

init

초기화 이벤트를 추적합니다.

꺼짐

interfaces

인터페이스 이벤트를 추적합니다.

꺼짐

mib

GGSN SNMP MIB 이벤트를 추적합니다.

꺼짐

removed-client

클라이언트 정리 이벤트를 추적합니다.

꺼짐

show

CLI 명령 서비스를 추적합니다.

꺼짐

로그의 끝을 표시하려면 운영 모드 명령을 실행 show log serviced | last 합니다.