Google 가상 NIC 사용

Google 가상 NIC(gVNIC)는 Compute Engine을 위해 특별히 설계된 가상 네트워크 인터페이스입니다.

Compute Engine에서는 모든 지원되는 공개 이미지에서 gVNIC를 사용할 수 있습니다. 또는 소스에서 Linux 드라이버를 빌드하고 설치할 수 있습니다.

이전에는 Compute Engine에서 실행되는 가상 머신(VM) 인스턴스에서 virtIO 사양을 기반으로 하는 가상 네트워크 인터페이스를 사용했습니다. 네트워킹 성능을 개선하고 추가 기능을 지원하기 위해 Google에서는 gVNIC를 기본 가상 네트워크 인터페이스로 사용합니다. 예를 들어 GPU가 연결된 VM의 분산 워크로드에 사용할 수 있는 50~100Gbps 속도와 같은 더 높은 네트워크 대역폭을 지원하려면 gVNIC가 필요합니다. 또한 VM을 사용할 때 최적의 성능을 목적으로 하는 일부 VM 형태를 다루는 경우 gVNIC가 필요합니다.

시작하기 전에

운영체제 지원

지원되는 운영체제 목록은 운영체제 세부정보를 참조하세요.

지원되지 않는 운영체제에서 사용

현재 지원되지 않는 운영체제에서 gVNIC를 사용하려는 경우 다음 절차에 따라 gVNIC를 수동으로 구성하고 설치할 수 있습니다.

제한사항

  • gVNIC는 메모리 최적화 머신 유형을 사용하는 VM에서 지원되지 않습니다.
  • --network-interface=nic-type=GVNIC 또는 "nicType": "GVNIC" 설정은 현재 인스턴스 템플릿에 대해서는 지원되지 않습니다.
  • 대규모 수신 오프로드(LRO)는 현재 지원되지 않습니다. gVNIC를 사용하는 VM에는 일반 수신 오프로드(GRO)가 기본적으로 사용 설정됩니다. VM에서 GRO를 사용 중지하면 연결 문제가 발생할 수 있으므로 사용 중지하면 안 됩니다.

gVNIC를 사용하는 VM 만들기

gcloud 명령줄 도구 또는 Compute Engine API를 사용하여 VM을 만들 수 있습니다.

gcloud

  1. gVNIC를 지원하는 이미지 또는 이미지 계열을 선택합니다. 자세한 내용은 운영체제 세부정보를 참조하세요.

  2. 이전 단계에서 선택한 이미지 또는 이미지 계열을 사용하여 이미지를 만들고 해당 이미지에 GVNIC 태그를 지정합니다. 이미지를 만들려면 gcloud compute images create 명령어를 사용합니다.

    gcloud compute images create IMAGE_NAME \
        [--source-image-family=SOURCE_IMAGE_FAMILY | --source-image=SOURCE_IMAGE] \
        --source-image-project=SOURCE_IMAGE_PROJECT \
        --guest-os-features=GVNIC
    

    다음을 바꿉니다.

    • IMAGE_NAME: 만들려는 이미지의 이름입니다.
    • SOURCE_IMAGE 또는 SOURCE_IMAGE_FAMILY: 다음 중 하나를 지정합니다.
      • SOURCE_IMAGE: 공개 이미지의 필수 버전입니다. 예를 들면 --image rhel-8-v20210122입니다.
      • SOURCE_IMAGE_FAMILY: 이미지 계열입니다. 이렇게 하면 지원 중단되지 않은 최신 OS 이미지를 사용하여 VM이 생성됩니다. 예를 들어 --image-family rhel-8을 지정하면 Compute Engine이 RHEL 8 이미지 계열에서 최신 버전의 OS 이미지를 사용하여 VM을 만듭니다.
    • SOURCE_IMAGE_PROJECT: 소스 이미지가 포함된 프로젝트의 이름입니다.

    예시

    Compute Engine rhel-8 이미지 계열의 최신 이미지를 사용하여 RHEL 8 이미지를 만들려면 다음 명령어를 실행합니다.

    gcloud compute images create IMAGE_NAME \
        --source-image-family=rhel-8 \
        --source-image-project=rhel-cloud \
        --guest-os-features=GVNIC
    

    IMAGE_NAME를 이미지 이름으로 바꿉니다.

  3. 이전 단계에서 만든 이미지를 사용하여 VM을 만듭니다. VM을 만들려면 gcloud compute instances create 명령어를 사용하고 --network-interface=nic-type=GVNIC 플래그를 지정합니다.

    gcloud compute instances create VM_NAME \
        --zone=ZONE \
        --image=IMAGE_NAME \
        --image-project=YOUR_IMAGE_PROJECT \
        --network-interface=nic-type=GVNIC
    

    다음을 바꿉니다.

    • VM_NAME: 새 VM의 이름입니다.
    • ZONE: VM을 만들 영역입니다.
    • IMAGE_NAME: 이전 단계에서 만든 이미지입니다.
    • YOUR_IMAGE_PROJECT: 이미지가 포함된 프로젝트의 이름입니다.

    예시

    프로젝트 my-project-12345에 있는 my-rhel-8이라는 이미지를 사용하여 us-west1-b 영역에 RHEL 8 VM을 만들려면 다음 명령어를 실행합니다.

    gcloud compute instances create my-rhel-vm \
        --zone=us-west1-b \
        --image=my-rhel-8 \
        --image-project=my-project-12345 \
        --network-interface=nic-type=GVNIC
    

    고려사항

    --network-interface 플래그에는 다음과 같은 하위 수준 플래그가 있습니다.

    • --address
    • --network
    • --network-tier
    • --subnet
    • --private-network-ip

    전체 목록은 --network-interface 플래그를 참조하세요.

  4. Compute Engine에서 VM을 만들었는지, nicType isGVNIC로 설정되었는지 확인합니다.

    gcloud compute instances describe VM_NAME \
       --zone=ZONE
    

    다음을 바꿉니다.

    • VM_NAME: VM의 이름입니다.
    • ZONE: VM이 생성된 영역입니다.

API

  1. gVNIC를 지원하는 이미지 또는 이미지 계열을 선택합니다. 자세한 내용은 운영체제 세부정보를 참조하세요.

  2. 이전 단계에서 선택한 이미지 또는 이미지 계열을 사용하여 이미지를 만들고 해당 이미지에 GVNIC 태그를 지정합니다. 이미지를 만들려면 images.insert 메서드를 사용합니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images
    
    {
      "name": "IMAGE_NAME",
      "sourceImage": "projects/SOURCE_IMAGE_PROJECT/global/images/IMAGE",
    }
    

    다음을 바꿉니다.

    • IMAGE_NAME: 만들려는 이미지의 이름입니다.
    • IMAGE 또는 IMAGE_FAMILY: 다음 중 하나를 지정합니다.
      • IMAGE: 공개 이미지의 필수 버전입니다. 예를 들면 "sourceImage": "projects/debian-cloud/global/images/rhel-8-v20210122"입니다.
      • IMAGE_FAMILY: 이미지 계열입니다. 이렇게 하면 지원 중단되지 않은 최신 OS 이미지를 사용하여 VM이 생성됩니다. 예를 들어 "sourceImage": "projects/debian-cloud/global/images/family/rhel-8"을 지정하면 Compute Engine이 RHEL 8 이미지 계열에서 최신 버전의 OS 이미지를 사용하여 VM을 만듭니다.
    • SOURCE_IMAGE_PROJECT: 소스 이미지가 포함된 프로젝트의 이름입니다.
  3. instances.insert 메서드를 사용하여 gVNIC를 지원하는 이미지로 VM을 만들고 "nicType": "GVNIC" 매개변수를 지정합니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    
    {
     "name": "VM_NAME",
     "networkInterfaces":[
      {
        "network": NETWORK,
        "nicType": "GVNIC",
        "subnet": SUBNET_NAME,
      }
      ],
     "disks": [
       {
         "initializeParams": {
           "sourceImage": "projects/YOUR_IMAGE_PROJECT/global/images/IMAGE"
         },
         "boot": true
       }
     ],
    }
    

    다음을 바꿉니다.

    • PROJECT_ID: VM을 만들 프로젝트의 ID입니다.
    • ZONE: VM을 만들 영역입니다.
    • VM_NAME: 새 VM의 이름입니다.
    • NETWORK: 이 VM의 네트워크 리소스 URL입니다. 네트워크 또는 서브네트워크가 모두 지정되지 않은 경우 기본 네트워크 global/networks/default가 사용됩니다.
    • IMAGE_NAME: 이전 단계에서 만든 이미지입니다.
    • YOUR_IMAGE_PROJECT: 이미지가 포함된 프로젝트의 이름입니다.
    • SUBNET_NAME: 서브넷의 이름입니다. 네트워크는 지정된 서브넷에서 추론됩니다. 이 입력란은 선택 사항입니다.

gVNIC가 사용 설정되어 있는지 확인

Linux

Linux VM 인스턴스에서 다음 명령어를 실행합니다.

sudo lshw -class network

다음과 유사한 결과가 출력됩니다.

*-network
   description: Ethernet interface
   product: Compute Engine Virtual Ethernet [gVNIC]
   vendor: Google, Inc.
   physical id: 4
   bus info: pci@0000:00:04.0
   logical name: eth0
   version: 00
   serial: 42:01:0a:8a:00:04
   width: 32 bits
   clock: 33MHz
   capabilities: msix bus_master cap_list ethernet physical
   configuration: broadcast=yes driver=gve driverversion=1.0.0 ip=10.138.0.4 latency=0 link=yes multicast=yes
   resources: irq:11 memory:c0102000-c0102fff memory:c0101000-c010103f memory:c0000000-c00fffff

Windows

  1. Windows VM 인스턴스에서 기기 관리자를 엽니다.
  2. 네트워크 어댑터 아래에 다음과 같이 표시됩니다. "Google Ethernet Adapter"

문제해결

gVNIC 문제를 해결하려면 Google Virtual NIC 문제 해결을 참조하세요.

다음 단계