Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

TCP 패스트 오픈

TCP Fast Open을 사용하여 보다 효율적으로 데이터 교환

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

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

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

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

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

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

TFO의 핵심 구성 요소는 서버에서 생성된 MAC(Message Authentication Code) 태그인 Fast Open 쿠키(쿠키)입니다. 클라이언트는 하나의 일반 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 구성

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

TFO를 위한 3개의 형태

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

  • Drop 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(address-pooling paired)를 구성해야 합니다. APP를 사용하면 모든 세션에 대해 NAT 풀의 동일한 공용 IP 주소에 개인 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 파일에 기록됩니다.

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

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

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

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

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

Adaptive Services 로그 파일 이름 구성

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

Adaptive Services 로그 파일의 수 및 크기 구성

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

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

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

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

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

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

모든 사용자가 모든 로그 파일을 읽을 수 있도록 지정하려면 또는 [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 있는 경우 중요한 이벤트만 기록됩니다. 또는 [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 .