주요 콘텐츠로 건너뛰기

STCP는 OpenVOS 17.1부터 타임스탬프, 선택적 승인 및 창 배율 TCP 옵션을 지원합니다. 이렇게 하면 TCP 세그먼트가 삭제되거나 높은 대역폭 지연 연결을 통해 데이터를 보낼 때 보다 효율적인 데이터 흐름을 허용할 수 있습니다(최소 대역폭 * 전체 대기 시간 > 65536). 이러한 변경의 효과는 응용 프로그램에 투명하지만 packet_monitor 사용할 때 알아야 할 몇 가지 사항이 있습니다.

먼저 STCP가 연결 요청을 보내면 TCP(SYN) 세그먼트에 16바이트가 추가로 포함됩니다.

17:41:26.533 Xmit Ether Dst 00:23:54:52:18:6e  Src 00:00:a8:41:34:56 Type 0800
+(IP)
IP   Ver/HL 45, ToS  0, Len   3c, ID a789, Flg/Frg    0, TTL 3c,  Prtl  6
          Cksum  f2f6, Src a4984dd9, Dst a4984d32
TCP from 164.152.77.217.55423 to 164.152.77.50.7777
    seq  3825990103, ack     n.a., window  8192, 20 data bytes, flags Syn.
    X/Off 0a, Flags 02, Cksum b717,  Urg-> 0000
     offset 0  .  .  .  4  .  .  .   8  .  .  .  C  .  .  .  0...4... 8...C...
      0     2  4  5 b4  3  3  6  4   2  8  a 32 2d bc 85  0  <<<4<<<< <<<2-<>
     10     0  0  0  0
2 4 5 b4 옵션 2(최소 세그먼트 크기), 옵션 4 바이트의 총 길이, 값 05 b4 (1460 소수점) (이 바이트는 새가 아닙니다)
3 3 6 옵션 3(창 축척), 옵션 3 바이트의 총 길이, 값 6
4 2 옵션 4(선택적 승인 지원), 총 길이 2바이트
8 a 32 2d bc 85 0 0 0 0 옵션 8 (타임 스탬프), 총 길이 10 바이트, 전송 시간 32 2d bc 85, 반환 시간 0 0 0 0
0 옵션 0(옵션 의 끝)

둘째, 연결 회신(SYN/ACK) 세그먼트에서 전송되는 옵션은 원격 호스트의 SYN 세그먼트에 포함된 내용에 따라 달라집니다. STCP는 연결 요청이 포함된 경우에만 회신에 선택적 승인 지원 옵션이 포함됩니다. 응답에는 연결 요청에 두 가지 옵션도 모두 포함된 경우에만 창 규모 및 타임스탬프 옵션만 포함됩니다.

14:31:32.145 Rcvd Ether Dst 00:00:a8:42:34:56  Src 00:00:a8:42:52:22 Type 0800
+(IP)
IP   Ver/HL 45, ToS  0, Len   3c, ID  44c, Flg/Frg    0, TTL 3c,  Prtl  6
          Cksum  95e6, Src a4984d80, Dst a4984dd9
TCP from 164.152.77.128.65007 to 164.152.77.217.7777
    seq  3289184624, ack     n.a., window  8192, 20 data bytes, flags Syn.
    X/Off 0a, Flags 02, Cksum 91e8,  Urg-> 0000
     offset 0  .  .  .  4  .  .  .   8  .  .  .  C  .  .  .  0...4... 8...C...
      0     2  4  5 b4  3  3  6  4   2  8  a 30 b8 95 1a  0  <<<4<<<< <<<08><
     10     0  0  0  0                                       <<<<

14:31:32.146 Xmit Ether Dst 00:00:a8:42:52:22  Src 00:00:a8:42:34:56 Type 0800
+(IP)
IP   Ver/HL 45, ToS  0, Len   3c, ID    0, Flg/Frg    0, TTL 3c,  Prtl  6
          Cksum  9a32, Src a4984dd9, Dst a4984d80
TCP from 164.152.77.217.7777 to 164.152.77.128.65007
    seq  3172667591, ack 3289184625, window  8192, 20 data bytes, flags Syn Ack.
    X/Off 0a, Flags 12, Cksum 6b81,  Urg-> 0000
     offset 0  .  .  .  4  .  .  .   8  .  .  .  C  .  .  .  0...4... 8...C...
      0     2  4  5 b4  3  3  6  4   2  8  a  1 35 72 23 30  <<<4<<<< <<<<5r#0
     10    b8 95 1a  0                                       8><<

기본적으로 Windows 호스트에는 최대 세그먼트 크기, 창 규모 및 선택적 승인 지원 옵션만 포함됩니다. 연결 요청STCP의 회신에 타임스탬프 옵션이 없으면 타임스탬프 또는 창 배율 옵션이 포함되지 않습니다. 창 옵션에 포함된 1은 NO-OP 옵션이며 옵션 바이트 수를 정수 배수4로 만드는 데 사용됩니다. STCP의 회신에 있는 옵션의 끝에 있는 옵션(0's)의 여러 끝은 동일한 이유입니다.

14:54:02.635 Rcvd Ether Dst 00:00:a8:41:34:56  Src 00:23:54:52:18:6e Type 0800
+(IP)
IP   Ver/HL 45, ToS  0, Len   34, ID  a4f, Flg/Frg 4000, TTL 80,  Prtl  6
          Cksum  0c39, Src a4984d32, Dst a4984dd9
TCP from 164.152.77.50.13478 to 164.152.77.217.7777
    seq  3499417963, ack     n.a., window  8192, 12 data bytes, flags Syn.
    X/Off 08, Flags 02, Cksum 65c8,  Urg-> 0000
     offset 0  .  .  .  4  .  .  .   8  .  .  .  C  .  .  .  0...4... 8...C...
      0     2  4  5 b8  1  3  3  8   1  1  4  2              <<<8<<<< <<<<

14:54:02.636 Xmit Ether Dst 00:23:54:52:18:6e  Src 00:00:a8:41:34:56 Type 0800
+(IP)
IP   Ver/HL 45, ToS  0, Len   30, ID b3d5, Flg/Frg    0, TTL 3c,  Prtl  6
          Cksum  e6b6, Src a4984dd9, Dst a4984d32
TCP from 164.152.77.217.7777 to 164.152.77.50.13478
    seq  3986949958, ack 3499417964, window  8192, 8 data bytes, flags Syn Ack.
    X/Off 07, Flags 12, Cksum 85e0,  Urg-> 0000
     offset 0  .  .  .  4  .  .  .   8  .  .  .  C  .  .  .  0...4... 8...C...
      0     2  4  5 b4  4  2  0  0                           <<<4<<

혼란스러운 부분은 연결이 설정된 후에 옵니다. 다음 패킷에는 데이터 바이트 필드에 13이 있더라도 1바이트의 데이터만 포함됩니다. 처음 12바이트는 타임스탬프 옵션 뒤에 두 개의 NO-OP 옵션입니다. 데이터 바이트는 끝에 0배입니다.

15:02:36.545 Rcvd Ether Dst 00:00:a8:41:34:56  Src 00:00:a8:42:52:22 Type 0800
+(IP)
IP   Ver/HL 45, ToS  0, Len   35, ID  447, Flg/Frg    0, TTL 3c,  Prtl  6
          Cksum  95f2, Src a4984d80, Dst a4984dd9
TCP from 164.152.77.128.60312 to 164.152.77.217.7777
    seq  2814493687, ack 4102208833, window   128, 13 data bytes, flags Push Ack
+.
    X/Off 08, Flags 18, Cksum c9d0,  Urg-> 0000
     offset 0  .  .  .  4  .  .  .   8  .  .  .  C  .  .  .  0...4... 8...C...
      0     1  1  8  a 2a 28 5d 8f  38 9f e0  a  0           <<<<*(]> 8>`<

옵션과 데이터의 차이를 어떻게 알 수 있습니까? X/Off 값은 TCP 헤더의 32비트 단어 수입니다. 옵션이 없는 경우 이 값은 5이므로 값이 8이므로 3개의 32비트 단어 또는 12바이트를 추가했음을 나타냅니다.

이 다음 패킷은 단지 승인, 그것은 데이터가 포함되어 있지 않습니다. 오프셋이 다시 8이므로 12바이트의 옵션이 있고 데이터 길이는 12바이트에 불과합니다.

15:02:39.758 Xmit Ether Dst 00:00:a8:42:52:22  Src 00:00:a8:41:34:56 Type 0800
+(IP)
IP   Ver/HL 45, ToS  0, Len   34, ID  48a, Flg/Frg    0, TTL 3c,  Prtl  6
          Cksum  95b0, Src a4984dd9, Dst a4984d80
TCP from 164.152.77.217.7777 to 164.152.77.128.60312
    seq  4102208833, ack 2814493688, window   128, 12 data bytes, flags Ack.
    X/Off 08, Flags 10, Cksum a751,  Urg-> 0000
     offset 0  .  .  .  4  .  .  .   8  .  .  .  C  .  .  .  0...4... 8...C...
      0     1  1  8  a 38 a0  2 91  2a 28 5d 8f              <<<<8 <> *(]>

다음 패킷은 3블록의 승인 번호가 있는 선택적 승인 옵션을 포함하는 세그먼트의 예입니다. 데이터 바이트로 보고하는 TCP 헤더에서 추가 40바이트((15 ~5) * 4)packet_monitor 를 나타내는 0f의 X/Off 값을 기록합니다.

9:52:39.491 Rcvd Ether Dst 00:00:a8:41:34:56  Src 00:04:96:52:21:6f Type 0800
+ (IP)
IP   Ver/HL 45, ToS 60, Len   50, ID   59, Flg/Frg    0, TTL 35,  Prtl  6
          Cksum  4355, Src 866fc8b9, Dst a4984dd9
TCP from 134.111.200.185.ftp-data to 164.152.77.217.53828
    seq  1652086450, ack 3779437719, window  4096, 40 data bytes, flags Ack.
    X/Off 0f, Flags 10, Cksum c834,  Urg-> 0000
     offset 0  .  .  .  4  .  .  .   8  .  .  .  C  .  .  .  0...4... 8...C...
      0     1  1  8  a  2 9e 86 bd  3c 4b dd 57  1  1  5 1a  <<<<<<<< >K<W<<<<
     10    e1 45 f6 77 e1 45 f8 83  e1 45 f2 5f e1 45 f4 6b  <E<w<E<< <E<_<E<k
     20    e1 45 c9 6f e1 45 cb 7b                           <E<o<E<{

TCP 헤더의 승인 번호가 가장 적다. 엣지 지속적으로 수신 된 바이트의. 선택적 승인 옵션의 데이터 블록은 수신된 데이터 블록을 나타냅니다. 블록 사이의 간격은 수신되지 않은 바이트를 나타냅니다.

packet_monitor 옵션으로 보고하는 대신 옵션을 올바르게 보고하면 훨씬 간단합니다. 버그 stcp-2963그냥 그렇게 할 packet_monitor 있도록 추가되었습니다. 버그는 향후 릴리스에서 수정될 예정이며, 그때까지 X/Off 값에 주의를 기울여야 합니다.

창 축척 옵션이 가장 혼란스러울 가능성이 있습니다. 다음 패킷에는 4096바이트의 수신 창이 표시됩니다.

9:52:38.975 Rcvd Ether Dst 00:00:a8:41:34:56  Src 00:04:96:52:21:6f Type 0800
+ (IP)
IP   Ver/HL 45, ToS 60, Len   34, ID    8, Flg/Frg    0, TTL 35,  Prtl  6
          Cksum  43c2, Src 866fc8b9, Dst a4984dd9
TCP from 134.111.200.185.ftp-data to 164.152.77.217.53828
    seq  1652086450, ack 3779392131, window  4096, 12 data bytes, flags Ack.
    X/Off 08, Flags 10, Cksum a3cf,  Urg-> 0000
     offset 0  .  .  .  4  .  .  .   8  .  .  .  C  .  .  .  0...4... 8...C...
      0     1  1  8  a  2 9e 86 39  3c 4b dc e3              <<<<<>><K<<<

이것은 매우 작은 창이지만 창 크기 조정이 적용되어 크기가 오해의 소지가 있습니다. 어떻게 알 수 있습니까? 알 수 있는 유일한 방법은 초기 연결 설정을 관찰하는 것입니다. 다음 의 경우 SYN 및 SYN-ACK 세그먼트모두 창 크기 조정 옵션을 포함하고, 두 경우 모두 배율 값이 6이므로 위의 세그먼트의 4096(2^12) 창 크기는 6비트로 이동하여 실제 창을 262144(2^18 또는 256K)로 이동하여 262144(2^18 또는 256K)의 실제 창을 제공합니다.

9:52:38.818 Rcvd Ether Dst 00:00:a8:41:34:56  Src 00:04:96:52:21:6f Type 0800
+ (IP)
IP   Ver/HL 45, ToS 60, Len   3c, ID    5, Flg/Frg    0, TTL 35,  Prtl  6
          Cksum  43bd, Src 866fc8b9, Dst a4984dd9
TCP from 134.111.200.185.ftp-data to 164.152.77.217.53828
    seq  1652086449, ack     n.a., window  8192, 20 data bytes, flags Syn.
    X/Off 0a, Flags 02, Cksum 29fd,  Urg-> 0000
     offset 0  .  .  .  4  .  .  .   8  .  .  .  C  .  .  .  0...4... 8...C...
      0     2  4  2 18  3  3  6  4   2  8  a  2 9e 86 11  0  <<<<<<<< <<<<>><
     10     0  0  0  0

9:52:38.819 Xmit Ether Dst 00:13:d4:59:7a:da  Src 00:00:a8:41:34:56 Type 0800
+ (IP)
IP   Ver/HL 45, ToS  0, Len   3c, ID    a, Flg/Frg    0, TTL 3c,  Prtl  6
          Cksum  3d18, Src a4984dd9, Dst 866fc8b9
TCP from 164.152.77.217.53828 to 134.111.200.185.ftp-data
    seq  3779391082, ack 1652086450, window  8192, 20 data bytes, flags Syn Ack
+.
    X/Off 0a, Flags 12, Cksum 3b87,  Urg-> 0000
     offset 0  .  .  .  4  .  .  .   8  .  .  .  C  .  .  .  0...4... 8...C...
      0     2  4  5 b4  3  3  6  4   2  8  a 3c 4b dc cf  2  <<<<<<<< <<<<<K<
     10    9e 86 11  0                                       >><

이러한 옵션은 STCP 매개 변수의 제어 하에 있습니다.

로: list_stcp_params    

STCP 매개 변수:

. . . .
최저 IP 최대 세그먼트 크기 [500-1480] (min_mss) 576
. . . .
최대 송신 창 크기 [4096-107372540] (max_send_ws) 1073725440
최대 거대한 창 [>=0] (max_huge_windows) 0
현재 거대한 창 0
최대 256k 창 [>=0] (max_256k_windows) 25
현재 256k 윈도우 0
. . . . .
TCP RFC-1323 정책 [비활성화/허용/요청] (tcp_rfc_1323_policy) 요청
TCP 요청 창 규모 [0-14] (tcp_window_scale) 6
TCP SACK 정책 [비활성화/허용/요청] (tcp_SACK_policy) 요청

로:

tcp_rfc_1323_policy 옵션은 타임스탬프가 사용되는지 여부를 나타냅니다. 매개 변수 값은 비활성화/허용/요청입니다. 요청기본값은 옵션이 연결 요청 세그먼트의 일부이며 수신된 연결 요청에서 요청된 경우 회신 세그먼트의 일부가 됩니다. 허용 값은 옵션이 연결 요청 세그먼트의 일부가 아니라 수신된 연결 요청에 포함된 경우 회신의 일부가 될 수 있음을 나타냅니다. 비활성화는 옵션이 두 유형의 세그먼트의 일부가 아님을 나타냅니다. 값을 사용하지 않도록 설정하면 창 배율 옵션이 세그먼트의 일부가 아님을 나타냅니다.

tcp_window_scale 옵션은 배율 조정 매개 변수를 제어합니다. 0값은 원격 호스트에게 창 크기 조정이 지원되지만 STCP의 창을 배율조정하지 는 않음을 알려줍니다.

15:48:43.409 Rcvd IP   Ver/HL 45, ToS  0, Len   3c, ID  450, Flg/Frg    0, TTL 3
+c,  Prtl  6
          Cksum  95e2, Src a4984d80, Dst a4984dd9
TCP from 164.152.77.128.65410 to 164.152.77.217.7777
    seq  1987362195, ack     n.a., window  8192, 20 data bytes, flags Syn.
    X/Off 0a, Flags 02, Cksum b8b3,  Urg-> 0000
     offset 0  .  .  .  4  .  .  .   8  .  .  .  C  .  .  .  0...4... 8...C...
      0     2  4  5 b4  3  3  6  4   2  8  a 30 ca ac 69  0  <<<4<<<< <<<0J,i
     10     0  0  0  0                                                       

15:48:48.575 Xmit IP   Ver/HL 45, ToS  0, Len   3c, ID    2, Flg/Frg    0, TTL 3
+c,  Prtl  6
          Cksum  9a30, Src a4984dd9, Dst a4984d80
TCP from 164.152.77.217.7777 to 164.152.77.128.65410
    seq  3853608469, ack 1987362196, window  8192, 20 data bytes, flags Syn Ack.
    X/Off 0a, Flags 12, Cksum c550,  Urg-> 0000
     offset 0  .  .  .  4  .  .  .   8  .  .  .  C  .  .  .  0...4... 8...C...
      0     2  4  5 b4  3  3  0  4   2  8  a  1 47 89 66 30  <<<4<< < <<<<G>f0
     10    ca ac 69  0                                       J,i

tcp_sack_policy 선택적 승인 옵션을 제어합니다. 값을 비활성화, 허용 및 요청할 수 있으며 tcp_rfc_1323_policy 옵션에 대해 정확히 동일한 작업을 의미할 수 있습니다.

마지막으로 창 확장을 지원하면 이전 최대 64K보다 큰 창을 가질 수 있으므로 두 개의 새 창 크기 풀이 만들어졌습니다. 이들은 max_256k_windows 및 max_huge_windows 풀에 반영됩니다. max_256k_windows 또는 max_huge_windows 값을 설정하여 256K 창 또는 더 큰 창을 광고할 수 있는 최대 소켓 수를 조정할 수 있습니다.

max_send_ws 매개 변수는 가능한 최대 원격 호스트의 수신 창이 이제 2^30(107372540은 실제로 2^30 ~ 2^14)이라는 사실을 반영합니다. 지정된 소켓의 경우 최소 max_send_ws 매개 변수가 있는 실제 최대 송신 창 크기와 광고된 원격 호스트는 창 크기를 수신합니다.

© 2024 스트라투스 테크놀로지스.