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비트
프로토콜 유형 프로토콜 유형은 모든 이더넷 유형을 허용하지만 네트워크 보안 통합은 IPv4(0x0800) 또는 IPv6 (0x86DD)만 허용합니다. 16비트
가상 네트워크 식별자 (VNI) 가상 네트워크 요소의 고유 식별자입니다. 네트워크 보안 통합은 이 필드를 채우지 않으므로 VNI가 0으로 설정됩니다. 자세한 내용은 대역 외 통합 GENEVE를 참고하세요. 24비트
Rsvd 전송 시 0이어야 하고 수신 시 무시해야 하는 예약된 필드입니다. 자세한 내용은 터널 헤더 필드를 참고하세요. 8비트

Google Cloud관련 GENEVE 옵션

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

Google Cloud 에 특정한 GENEVE 옵션은 다음과 같습니다.

  • 네트워크 ID (네트워크 쿠키)
  • 엔드포인트 ID (엔드포인트 쿠키)
  • 프로필 ID

네트워크 ID

'네트워크 쿠키'라고도 하는 네트워크 ID 옵션은 Google Cloud에서 GENEVE로 캡슐화된 트래픽과 연결된 가상 네트워크를 식별합니다. 이 옵션은 옵션 클래스 0x0132 (Google) 및 유형 1 (네트워크 ID)로 식별됩니다. 옵션 데이터는 32비트를 포함하며, 처음 28비트는 불투명 네트워크 ID를 나타냅니다. 나머지 4비트의 목적은 다음 다이어그램과 표에 설명되어 있습니다.

다음 다이어그램은 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=01    |R|R|R|  Len=1  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                     Network cookie                    |R|R|T|D|
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

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

필드 설명 필드 길이
옵션 클래스 옵션을 정의한 조직 또는 법인을 식별합니다. 0x0132 값은 Google을 정의 항목으로 지정합니다. 16비트
유형 클래스 내 옵션의 유형을 식별합니다. 값 0x1은 네트워크 ID 옵션을 지정합니다. 자세한 내용은 터널 옵션을 참고하세요. 8비트
R 나중에 사용할 수 있도록 예약된 옵션 제어 플래그입니다. 이러한 비트는 전송 시 0이어야 하며 수신 시 무시해야 합니다. 3비트
Len 옵션 페이로드의 길이(4바이트 단위)입니다. 네트워크 ID 페이로드는 32비트 (4바이트)이므로 이 옵션의 길이는 1로 설정됩니다. 5비트
네트워크 쿠키 가상 네트워크를 식별하는 불투명 네트워크 쿠키입니다. 28비트
R 향후 구현을 위해 예약되어 있습니다. 전송 시 0으로 설정해야 하며 수신 시 무시해야 합니다. 2비트
T 캡슐화된 패킷의 TLS 오프로드를 나타냅니다. 사용되지 않음. 1비트
D 원래 패킷의 방향을 나타냅니다. 0은 원래 미러링된 가상 머신(VM)의 수신을 나타내고 1은 발신 패킷을 나타냅니다. 1비트

엔드포인트 ID

엔드포인트 ID 옵션('엔드포인트 쿠키'라고도 함)은 Google CloudVM의 네트워크 인터페이스 컨트롤러인 캡처 지점을 고유하게 식별합니다. 이 옵션은 옵션 클래스 0x0132 (Google) 및 유형 2 (엔드포인트 ID)로 식별됩니다. 옵션 데이터는 128비트 불투명 값입니다.

다음 다이어그램은 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=02   |R|R|R|  Len=4  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                                                               +
      |                                                               |
      +                        Endpoint cookie                        +
      |                                                               |
      +                                                               +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

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

필드 설명 필드 길이
옵션 클래스 옵션을 정의한 조직 또는 법인을 식별합니다. 0x0132 값은 Google을 정의 항목으로 지정합니다. 16비트
유형 클래스 내 옵션의 유형을 식별합니다. 0x2 값은 엔드포인트 ID 옵션을 지정합니다. 자세한 내용은 터널 옵션을 참고하세요. 8비트
R 나중에 사용할 수 있도록 예약된 옵션 제어 플래그입니다. 이러한 비트는 전송 시 0이어야 하며 수신 시 무시해야 합니다. 3비트
Len 페이로드의 길이(4바이트 단위)입니다. 엔드포인트 ID 페이로드는 128비트 (16바이트)이므로 이 옵션의 길이는 4로 설정됩니다. 5비트
엔드포인트 쿠키 캡처 지점 (VM NIC)의 불투명 식별자입니다. 128비트

프로필 ID

프로필 ID 옵션은 트래픽에 적용되는 미러링 보안 프로필 그룹을 식별합니다. 이 옵션은 옵션 클래스 0x0132 (Google) 및 유형 3 (프로필 ID)로 식별됩니다. 옵션 데이터는 보안 프로필 그룹의 data_path_id 필드에 해당하는 64비트 식별자입니다. 타겟 기기는 프로필 그룹 식별자를 기반으로 보안 정책을 적용할 수 있습니다.

다음 다이어그램은 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=03    |R|R|R|  Len=2  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                           Profile ID                          +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

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

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

네트워크 보안 통합을 위한 GENEVE 헤더 형식

이 섹션에서는 네트워크 보안 통합 서비스에서 사용하는 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                      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

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

필드 설명
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

이 섹션에서는 네트워크 보안 통합 서비스, 특히 대역 외 통합에서 사용하는 GENEVE 헤더 형식을 설명합니다. 대역 외 통합은 GENEVE 터널을 사용하여 미러링된 패킷을 캡슐화하고 전송합니다. 패킷은 수집기의 내부 부하 분산기 가상 IP 주소 (VIP)로 주소가 지정되고 네트워크 쿠키와 같은 Google Cloud별 메타데이터로 주석이 추가됩니다.

대역 외 통합에 사용되는 Google Cloud별 GENEVE 옵션은 네트워크 쿠키, 엔드포인트 쿠키, 프로필 ID입니다. 자세한 내용은 Google Cloud관련 GENEVE 옵션을 참고하세요.

다음 다이어그램은 Google Cloud관련 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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |V=0|  Opt len  |O|C|   Rsvd    |         Protocol type         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |        Virtual network identifier (VNI) = 0   |     Rsvd.     |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option class=0x0132 (Google) |    Type=01    |R|R|R|  Len=1  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                     Network cookie                    |R|R|T|D|
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option class=0x0132 (Google) |    Type=02    |R|R|R|  Len=4  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                                                               +
      |                                                               |
      +                        Endpoint cookie                        +
      |                                                               |
      +                                                               +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option class=0x0132 (Google) |    Type=03    |R|R|R|  Len=2  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                           Profile ID                          +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

대역 내 통합 GENEVE

인밴드 통합은 GENEVE 터널을 사용하여 가로채진 패킷을 캡슐화하고 전송합니다. 생산자의 내부 부하 분산기 가상 IP 주소 (VIP)는 네트워크 쿠키와 같은 Google Cloud관련 메타데이터로 주석이 추가된 패킷을 수신합니다.

인밴드 통합은 네트워크 쿠키, 엔드포인트 쿠키, 프로필 ID와 같은 Google Cloud별 GENEVE 옵션을 사용합니다. 자세한 내용은 Google Cloud관련 GENEVE 옵션을 참고하세요.

인밴드 통합은 단방향 GENEVE 터널 두 개로 구성된 논리적 양방향 GENEVE 터널을 사용하여 원래 엔드포인트로 패킷 재주입을 지원합니다. 프로듀서 네트워크 어플라이언스가 패킷을 가로채 검사한 후 패킷을 삭제하거나 다시 삽입할 수 있습니다. 패킷을 다시 삽입하기 위해 어플라이언스는 다음을 실행합니다.

  • 원래 GENEVE 헤더 (동일한 옵션)를 사용하여 패킷을 다시 캡슐화합니다.
  • 외부 IP 헤더에서 소스 주소와 대상 주소를 바꿉니다.
  • 체크섬이 올바른지 확인합니다.

다음 다이어그램은 인밴드 통합에서 Google Cloud별 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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |V=0|  Opt len  |O|C|   Rsvd    |         Protocol type         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |        Virtual network identifier (VNI) = 0   |     Rsvd.     |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option Class=0x0132 (Google) |    Type=01    |R|R|R|  Len=1  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                     Network Cookie                    |R|R|T|D|
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option Class=0x0132 (Google) |    Type=02    |R|R|R|  Len=4  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                                                               +
      |                                                               |
      +                        Endpoint Cookie                        +
      |                                                               |
      +                                                               +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option Class=0x0132 (Google) |    Type=03    |R|R|R|  Len=2  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                           Profile ID                          +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

GENEVE 캡슐화 및 MTU 요구사항

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

Google Cloud 네트워크에서 허용되는 MTU는 8896바이트입니다. 하지만 네트워크 보안 통합의 경우 GENEVE 캡슐화 오버헤드를 위해 396바이트를 유지해야 합니다. 이 보관 요구사항은 소비자 네트워크와 생산자 네트워크 모두에 영향을 미칩니다.

  • 소비자 네트워크 MTU: 소비자 네트워크의 MTU는 8,500바이트를 초과해서는 안 됩니다. 이 한도는 최대 MTU를 초과하지 않고 GENEVE 오버헤드를 위한 충분한 공간을 확보합니다.

  • 생산자 네트워크 MTU: 생산자 네트워크의 MTU는 소비자 네트워크 MTU보다 396바이트 이상 커야 합니다. 이 허용치는 추가 GENEVE 캡슐화를 수용합니다.

GENEVE 캡슐화를 수용할 MTU 한도가 충분하지 않으면 패킷이 삭제될 수 있습니다. 이 문제는 가상 네트워크 수준 또는 VM의 운영체제에서 발생할 수 있습니다.

다음 단계