GENEVE 형식 이해

일반 네트워크 가상화 캡슐화(GENEVE)는 추가 메타데이터로 원래 패킷을 캡슐화하는 네트워크 캡슐화 프로토콜입니다. 이 추가 메타데이터는 유연하고 확장 가능한 네트워크 가상화를 지원합니다.

다음 다이어그램은 GENEVE 패킷의 헤더 형식을 보여줍니다.

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |Ver|  Opt len  |O|C|   Rsvd.   |         Protocol type         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |        Virtual network identifier (VNI)       |     Rsvd.     |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

다음 표에서는 앞의 다이어그램에 표시된 GENEVE 헤더 필드를 설명합니다.

필드 설명 필드 길이
Ver GENEVE 프로토콜의 버전입니다. 지원되는 유일한 버전은 0입니다. 자세한 내용은 터널 헤더 필드를 참고하세요. 2비트
Opt len 옵션 필드의 길이입니다. 8바이트 고정 터널 헤더를 포함하지 않고 4바이트 배수로 표현됩니다. 자세한 내용은 터널 헤더 필드를 참고하세요. 6비트
O 제어 패킷 비트입니다. 자세한 내용은 터널 헤더 필드를 참고하세요. 1비트
C 중요한 옵션 비트입니다. 자세한 내용은 터널 헤더 필드를 참고하세요. 1비트
Rsvd 전송 시 0이어야 하고 수신 시 무시해야 하는 예약된 필드입니다. 자세한 내용은 터널 헤더 필드를 참고하세요. 6비트
프로토콜 유형 프로토콜 유형은 ethertype: IPv4(0x0800) 또는 IPv6 (0x86DD)를 허용합니다. 16비트
가상 네트워크 식별자 (VNI) 가상 네트워크 요소의 고유 식별자입니다. VNI가 0으로 설정됩니다. 자세한 내용은 GENEVE 옵션을 참고하세요. 24비트
Rsvd 전송 시 0이어야 하고 수신 시 무시해야 하는 예약된 필드입니다. 자세한 내용은 터널 헤더 필드를 참고하세요. 8비트

ULL VPC 네트워크의 패킷 미러링을 위한 GENEVE 옵션

GENEVE 헤더는 옵션에 유형-길이-값(TLV) 형식을 사용합니다. 각 옵션은 유형 식별자, 값의 크기를 나타내는 길이 필드, 값 자체로 인코딩됩니다. 이 형식은 유연성과 확장성을 제공하므로 기존 구현을 중단하지 않고도 새 옵션을 추가할 수 있습니다. 다음 섹션에서는 옵션을 설명합니다. 옵션의 수와 순서가 변경될 수 있으므로 TLV 필드를 기반으로 GENEVE 헤더를 파싱하여 기기 구현의 순방향 호환성을 보장하세요.

ULL 패킷 미러링과 관련된 GENEVE 옵션은 다음과 같습니다.

  • 네트워크 ID (네트워크 쿠키)
  • 타임스탬프
  • 네트워크 안정 ID
  • 기본 IP 주소

네트워크 ID

'네트워크 쿠키'라고도 하는 네트워크 ID 옵션은 ULL 패킷 미러링에서 GENEVE로 캡슐화된 트래픽과 연결된 가상 네트워크를 식별합니다. 이 옵션은 옵션 클래스 0x0132 (Google) 및 유형 0x1 (네트워크 ID)로 식별됩니다.

ULL 패킷 미러링의 경우 네트워크 쿠키가 0으로 설정됩니다. 옵션 데이터는 32비트를 포함하며 처음 31비트는 예약되어 있고 마지막 비트는 원래 패킷의 방향을 나타냅니다.

ULL 패킷 미러링은 수정된 버전의 네트워크 ID 옵션을 사용합니다. 이 버전에서는 방향 비트와 예약된 비트를 제외한 모든 비트가 0으로 설정됩니다. 캡처 지점에 관한 자세한 내용은 네트워크 안정 ID를 참고하세요.

다음 다이어그램은 GENEVE 패킷의 옵션 형식을 보여줍니다.

       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option Class=0x0132 (Google) |    Type=01    |R|R|R|  Len=1  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                            Reserved                         |D|
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

다음 표에서는 위의 다이어그램에 표시된 옵션 필드를 설명합니다.

필드 설명 필드 길이
옵션 클래스 옵션을 정의한 조직 또는 법인을 식별합니다. 0x0132 값은 Google을 정의 항목으로 지정합니다. 16비트
유형 클래스 내 옵션의 유형을 식별합니다. 0x1 값은 네트워크 ID 옵션을 지정합니다. 자세한 내용은 터널 옵션을 참고하세요. 8비트
R 나중에 사용할 수 있도록 예약된 옵션 제어 플래그입니다. 이러한 비트는 전송 시 0이어야 하며 수신 시 무시해야 합니다. 3비트
Len 옵션 페이로드의 길이(4바이트 단위)입니다. 네트워크 ID 페이로드는 32비트 (4바이트)이므로 이 옵션의 길이는 1로 설정됩니다. 5비트
예약됨 전송 시 0으로 설정해야 하며 수신 시 무시해야 합니다. 31비트
D 원래 패킷의 방향을 나타냅니다. 0은 인그레스를 나타내고 1은 원래 미러링된 리소스의 이그레스 패킷을 나타냅니다. 1비트

타임스탬프

타임스탬프 옵션은 캡처 지점 (패킷이 캡처되거나 미러링된 Compute Engine 인스턴스)의 원래 패킷 캡처 시간을 나타냅니다. 이 옵션은 옵션 클래스 0x0132 (Google) 및 유형 0x0f(타임스탬프)으로 식별됩니다.

다음 다이어그램은 GENEVE 패킷의 옵션 형식을 보여줍니다.

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option class=0x0132 (Google) |   Type=0x0f   |R|R|R|  Len=2  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                           Timestamp                           +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

다음 표에서는 위의 다이어그램에 표시된 옵션 필드를 설명합니다.

필드 설명 필드 길이
옵션 클래스 옵션을 정의한 조직 또는 법인을 식별합니다. 0x0132 값은 Google을 정의 항목으로 지정합니다. 16비트
유형 클래스 내 옵션의 유형을 식별합니다. 0x0f 값은 타임스탬프 옵션을 지정합니다. 자세한 내용은 터널 옵션을 참고하세요. 8비트
R 나중에 사용할 수 있도록 예약된 옵션 제어 플래그입니다. 이러한 비트는 전송 시 0이어야 하며 수신 시 무시해야 합니다. 3비트
Len 옵션 페이로드의 길이(4바이트 단위)입니다. 타임스탬프 페이로드는 64비트 (8바이트)이므로 이 옵션의 길이는 2로 설정됩니다. 5비트
타임스탬프 원본 패킷의 캡처 시간으로, 에포크 이후 나노초 단위로 표시됩니다. 나노초 단위의 세분성이 나노초 단위의 정확성을 보장하지는 않습니다. 64비트

네트워크 안정 ID

네트워크 안정화 ID 옵션은 미러링된 인스턴스의 네트워크를 식별합니다. 이 옵션은 옵션 클래스 0x0132 (Google) 및 유형 0x10 (네트워크 안정 ID)로 식별됩니다.

다음 다이어그램은 GENEVE 패킷의 옵션 형식을 보여줍니다. 네트워크 안정화 ID는 프로젝트 번호와 네트워크 ID로 구성됩니다.

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option class=0x0132 (Google) |   Type=0x10   |R|R|R|  Len=4  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                       Project Number                          +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                         Network ID                            +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

다음 표에서는 위의 다이어그램에 표시된 옵션 필드를 설명합니다.

필드 설명 필드 길이
옵션 클래스 옵션을 정의한 조직 또는 법인을 식별합니다. 0x0132 값은 Google을 정의 항목으로 지정합니다. 16비트
유형 클래스 내 옵션의 유형을 식별합니다. 0x10 값은 네트워크 안정 ID 옵션을 지정합니다. 자세한 내용은 터널 옵션을 참고하세요. 8비트
R 나중에 사용할 수 있도록 예약된 옵션 제어 플래그입니다. 이러한 비트는 전송 시 0이어야 하며 수신 시 무시해야 합니다. 3비트
Len 옵션 페이로드의 길이(4바이트 단위)입니다. 네트워크 ID 페이로드는 64비트 (8바이트)이므로 이 옵션의 길이는 4로 설정됩니다. 5비트
프로젝트 번호 프로젝트의 Google Cloud 프로젝트 번호입니다. 64비트
네트워크 ID ULL VPC 네트워크의 ID입니다. 64비트

기본 IP 주소

기본 IP 주소 옵션은 캡처 지점(패킷이 캡처되거나 미러링된 Compute Engine 인스턴스)의 IP 주소를 식별합니다. 이 옵션은 옵션 클래스 0x0132 (Google) 및 유형 0x11 (기본 IP 주소)로 식별됩니다.

다음 다이어그램은 GENEVE 패킷의 옵션 형식을 보여줍니다.

       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option class=0x0132 (Google) |   Type=0x11   |R|R|R|  Len=1  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                       Primary IP Address                      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

다음 표에서는 위의 다이어그램에 표시된 옵션 필드를 설명합니다.

필드 설명 필드 길이
옵션 클래스 옵션을 정의한 조직 또는 법인을 식별합니다. 0x0132 값은 Google을 정의 항목으로 지정합니다. 16비트
유형 클래스 내 옵션의 유형을 식별합니다. 0x11 값은 기본 IP 주소 옵션을 지정합니다. 8비트
R 나중에 사용할 수 있도록 예약된 옵션 제어 플래그입니다. 이러한 비트는 전송 시 0이어야 하며 수신 시 무시해야 합니다. 3비트
Len 옵션 페이로드의 길이(4바이트 단위)입니다. IP 주소 페이로드는 32비트 (4바이트)이므로 이 옵션의 길이는 1로 설정됩니다. 5비트
기본 IP 주소 소스 Compute Engine 인스턴스의 기본 IP 주소입니다. 32비트

GENEVE 헤더 형식

이 섹션에서는 ULL VPC 네트워크의 패킷 미러링에서 사용하는 GENEVE 헤더 형식을 설명합니다.

IPv4 헤더

GENEVE 패킷 형식은 IPv4를 통해 UDP에서 컴팩트 터널 헤더를 캡슐화합니다. 작은 고정 터널 헤더는 제어 정보와 기본 수준 기능 및 상호 운용성을 제공합니다.

다음 다이어그램은 GENEVE 패킷의 IPv4 헤더 필드를 보여줍니다.

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |Version|  IHL  |Type of service|          Total length         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |         Identification        |Flags|     Fragment offset     |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Time to live | Proto=17 (UDP)|        Header checksum        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                         Source address                        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                      Destination address                      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

다음 표에서는 앞의 다이어그램에 표시된 Google Cloud관련 IPv4 헤더 필드를 설명합니다. 일반적인 IPv4 헤더 필드에 대한 자세한 내용은 RFC 8926을 참고하세요.

필드 설명
Proto=17 (GENEVE의 경우 항상 UDP) 캡슐화된 페이로드가 UDP 프로토콜을 사용함을 나타냅니다.
소스 주소 로컬 서브넷의 게이트웨이 IP 주소입니다.
수신 주소 고객 소유 부하 분산기의 VIP입니다.

UDP 헤더

UDP RFC 0768 헤더는 이더넷 및 IP 주소의 연결 없는 시맨틱을 유지하면서 데이터를 캡슐화합니다. 또한 등가 멀티 경로 (ECMP)를 실행하는 라우터에 엔트로피를 제공합니다.

다음 다이어그램은 UDP 내에 캡슐화된 GENEVE 패킷의 헤더 형식을 보여줍니다.

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |      Source port = <hash>     |   Dest port = 6081 (Geneve)   |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |           UDP length          |          UDP checksum         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

다음 표에서는 이전 다이어그램에 표시된 UDP 헤더 필드를 설명합니다.

필드 설명
소스 포트 전체 16비트 범위에 걸친 불투명 해시입니다. 이 값은 단일 캡슐화된 흐름 (양방향)에 속하는 모든 패킷에서 동일합니다.
대상 포트 GENEVE 트래픽의 지정된 대상 포트 번호로, 6081로 설정됩니다.
UDP 길이 UDP 헤더와 캡슐화된 GENEVE 패킷을 포함한 UDP 데이터그램의 총 길이입니다.
UDP 체크섬 오류 감지에 사용되는 UDP 데이터그램의 체크섬 값입니다.

GENEVE 옵션

ULL VPC 네트워크의 패킷 미러링에 사용되는 Google Cloud별 GENEVE 옵션은 네트워크 쿠키, 타임스탬프, 네트워크 안정 ID, 기본 IP 주소, 공정한 순서 처리 타임스탬프입니다. 자세한 내용은 ULL VPC 네트워크의 패킷 미러링을 위한 GENEVE 옵션을 참고하세요.

다음 다이어그램은 Google Cloud특정 GENEVE 옵션이 ULL VPC 네트워크의 패킷 미러링에 사용되는 방식을 보여줍니다.

       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option Class=0x0132 (Google) |    Type=01    |R|R|R|  Len=1  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                          Network Cookie                     |D|
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option Class=0x0132 (Google) |   Type=0x0f   |R|R|R|  Len=2  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                           Timestamp                           +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option Class=0x0132 (Google) |    Type=0x10   |R|R|R|  Len=4  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                         Project Number                        +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                           Network ID                          +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option Class=0x0132 (Google) |   Type=0x11   |R|R|R|  Len=1  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                       Primary IP Address                      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option Class=0x0132 (Google) |   Type=0x13   |R|R|R|  Len=2  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                Fair order processing timestamp                +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

위 다이어그램의 Opt len는 옵션 필드의 길이를 4바이트의 배수로 나타냅니다. 이 길이에는 8바이트 고정 터널 헤더가 포함되지 않습니다. 자세한 내용은 터널 헤더 필드를 참고하세요.

GENEVE 캡슐화 및 MTU 요구사항

최대 전송 단위(MTU)는 IP 헤더, 레이어 4 프로토콜 헤더, 레이어 4 데이터를 포함하여 이더넷 프레임 안에 들어갈 수 있는 최대 IP 패킷의 크기(바이트)입니다. 자세한 내용은 최대 전송 단위를 참고하세요.

ULL VPC 네트워크의 최대 MTU는 1,500바이트입니다. 하지만 ULL 패킷 미러링에는 GENEVE 캡슐화 오버헤드에 308바이트가 필요합니다. 미러링된 트래픽이 프래그먼트화되지 않고 수집기 인스턴스에 도달하도록 하려면 수집기가 있는 네트워크의 MTU가 최소 1,808바이트(표준 트래픽의 경우 1,500바이트, GENEVE 캡슐화 오버헤드의 경우 308바이트)여야 합니다.

MTU 제한이 GENEVE 캡슐화를 수용하기에 부족하면 패킷이 삭제될 수 있습니다. 이 문제는 가상 네트워크 수준 또는 운영체제에서 발생할 수 있습니다.