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 헤더를 파싱하세요.

관련 GENEVE 옵션은 다음과 같습니다. Google Cloud

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

네트워크 ID

'네트워크 쿠키'라고도 하는 네트워크 ID 옵션은 에서 GENEVE 캡슐화된 트래픽과 연결된 가상 네트워크를 식별합니다 Google Cloud. 이 옵션은 옵션 클래스 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은 인그레스를 나타내고 1은 원래 미러링된 가상 머신(VM)의 이그레스 패킷을 나타냅니다. 1비트

엔드포인트 ID

'엔드포인트 쿠키'라고도 하는 엔드포인트 ID 옵션은 VM의 네트워크 인터페이스 컨트롤러인 캡처 지점을 고유하게 식별합니다. Google Cloud 이 옵션은 옵션 클래스 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-관련 메타데이터(예: 네트워크 쿠키)로 주석 처리됩니다.

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

다음 다이어그램은 대역 외 통합에서 관련 GENEVE 옵션이 사용되는 방식을 보여줍니다. Google Cloud

       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

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

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

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

다음 다이어그램은 대역 내 통합에서 관련 GENEVE 옵션이 사용되는 방식을 보여줍니다. Google Cloud

       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 패킷의 크기(바이트)입니다. 자세한 내용은 최대 전송 단위를 참고하세요.

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

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

  • 프로듀서 네트워크 MTU: 프로듀서 네트워크의 MTU는 소비자 네트워크 MTU보다 308바이트 이상이어야 합니다. 이 허용치는 추가 GENEVE 캡슐화를 수용합니다.

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

다음 단계