Skip to content

Modul 06: Elastic Network Interfaces (ENI), EFA for AI/HPC & Prefix Delegation ​

Level: Principal / SME ENI, EFA & AWS VPC CNI High Performance Computing & AI/ML

Dalam arsitektur cloud compute, Elastic Network Interface () adalah komponen virtualisasi yang menghubungkan instans komputasi dengan VPC Data Plane. Perkembangan beban kerja modern—mulai dari high-density container orchestration (Amazon EKS) hingga distributed Large Language Model (LLM) training—menuntut arsitektur antarmuka jaringan khusus: IPv4 Prefix Delegation untuk mengeliminasi batasan kuota IP pod, dan Elastic Fabric Adapter () dengan OS Kernel Bypass untuk komunikasi GPU-to-GPU berlatensi ultra-rendah.

Modul ini mengupas tuntas ENI dan EFA dari PCIe Virtual Functions dan tabel Linux policy routing hingga orkestrasi cluster AI skala enterprise.


Layer 1: Network Interface Architecture & OS Kernel Plumbing ​

1.1 Anatomi ENI pada Level Perangkat Keras (PCIe SR-IOV) ​

ENI bukanlah interface software loopback semata, melainkan sebuah Virtual Function (VF) pada bus PCIe fisik server yang di-expose langsung oleh AWS Nitro SoC ke guest OS:

1.2 Masalah Asymmetric Routing pada Multi-Homed Linux Instances ​

Ketika instance EC2 memiliki lebih dari satu ENI (eth0 dan eth1), Linux kernel secara default hanya memiliki 1 Default Gateway (biasanya diarahkan ke eth0). Hal ini memicu Asymmetric Routing Drop:

Solusi: Source-Based Policy Routing (iprule & iproute2) ​

Untuk mengatasi masalah ini, setiap ENI sekunder harus memiliki tabel routing table independen yang dipetakan berdasarkan alamat IP sumber (source-based policy routing):

bash
# Buat tabel routing terpisah untuk eth1 (Tabel 200)
echo "200 custom_eth1" | sudo tee -a /etc/iproute2/rt_tables

# Tambahkan default route khusus untuk subnet eth1
sudo ip route add 10.100.2.0/24 dev eth1 src 10.100.2.50 table 200
sudo ip route add default via 10.100.2.1 dev eth1 table 200

# Rute seluruh trafik dengan Source IP eth1 melalui Tabel 200
sudo ip rule add from 10.100.2.50/32 table 200
sudo ip rule add to 10.100.2.50/32 table 200

1.3 Elastic Fabric Adapter (EFA) & OS Kernel Bypass ​

Beban kerja AI terdistribusi (LLM pre-training seperti Llama 3 atau DeepSeek) membutuhkan sinkronisasi miliaran bobot tensor gradien (AllReduce collectives) antar ribuan GPU. Protokol TCP standar memiliki overhead CPU dan latensi yang terlalu tinggi untuk kebutuhan ini.

  • Libfabric API (OpenFabrics Interfaces): Antarmuka standar industri yang memungkinkan aplikasi PyTorch/NCCL berkomunikasi langsung dengan kartu hardware EFA.
  • Zero Kernel Context-Switch: Menghindari alokasi memori buffer kernel OS; data disalin langsung dari GPU Memory (VRAM) ke antarmuka jaringan Nitro via GPUDirect RDMA.

1.4 IPv4 Prefix Delegation (RFC 3633 in AWS) ​

Alih-alih mengalokasikan satu IP sekunder per slot ENI, IPv4 Prefix Delegation mengalokasikan satu blok subnet /28 (16 alamat IP) utuh ke setiap slot IP ENI:

Standar ENI Slot Alokasi:
ENI Slot 1 ──> 10.100.1.15 (1 IP Address)

Prefix Delegation Slot Alokasi:
ENI Slot 1 ──> 10.100.1.16/28 (16 IP Addresses: 10.100.1.16 s/d 10.100.1.31)

STANDAR BEST PRACTICE INDUSTRI (SME RECOMMENDATION)

Selalu aktifkan IPv4 Prefix Delegation pada Amazon EKS cluster dengan VPC CNI versi ≥1.9.0. Fitur ini meningkatkan kapasitas jumlah pod per node EC2 hingga 16x lipat tanpa perlu beralih ke tipe instance besar hanya demi mendapatkan kuota ENI yang lebih banyak.


Layer 2: AWS Distributed Underlay & Hyperplane Internals ​

2.1 Tipe-Tipe Attachment ENI ​

  1. Primary ENI (eth0): Terpasang otomatis pada device-index=0 saat instance dibuat. Tidak dapat dicopot (non-detachable) selama instance hidup.
  2. Secondary ENI (eth1..ethN): Antarmuka jaringan tambahan yang dapat dipasang dan dicopot (hot-pluggable) secara dinamis antar instance di AZ yang sama.
  3. Trunk ENI: Digunakan oleh AWS VPC CNI pada instance berbasis Nitro untuk memasang puluhan Branch ENIs melalui satu PCIe interface fisik.

2.2 Mekanisme Source / Destination Check ​

Secara default, kartu AWS Nitro memvalidasi bahwa setiap paket yang keluar atau masuk ke ENI memiliki IP dan MAC address yang persis terdaftar pada database VPC.

Aturan Arsitektural: Untuk instance yang bertindak sebagai NAT Instance, VPN Gateway, atau Third-Party Firewall Appliance, atribut SourceDestCheck WAJIB dimatikan (false).


Layer 3: AWS Resource Deep-Dive & Hard Limits ​

3.1 Formula Kepadatan Pod EKS (Pod Density Calculation) ​

Kapasitas maksimum pod pada satu instance worker node dihitung dengan formula matematis berikut:

Max Pods (Standard)=(Jumlah ENI×(Jumlah IPv4 per ENI−1))+2Max Pods (Prefix Delegation)=(Jumlah ENI×(Jumlah Prefixes per ENI×16))+2

(Catatan: +2 dialokasikan untuk kube-proxy dan aws-node pod host-networking).

3.2 Tabel Perbandingan Kapasitas ENI & EFA per Instance Family ​

Tipe Instance EC2Max ENIsMax IPv4 / ENIMax Pods (Standard)Max Pods (Prefix Delegation)EFA Support
t3.medium3617N/A (Non-Nitro PD)Tidak
c6i.large31029110 Pods (Kubelet Max)Tidak
c6i.4xlarge830234110 / 250 PodsOpsional (1 EFA)
p4de.24xlarge (8x A100 GPU)450198110 / 250 Pods4x EFA (400 Gbps)
p5.48xlarge (8x H100 GPU)850394110 / 250 Pods32x EFA (3,200 Gbps)

Layer 4: Hop-by-Hop Packet Walkthrough & Flow Lifecycle ​

Diagram sequence berikut mendeskripsikan siklus hidup transmisi gradien AI antar GPU Node menggunakan antarmuka EFA & GPUDirect RDMA:


Layer 5: Production Terraform IaC & CLI Blueprints ​

5.1 Terraform Blueprint: Cluster AI/HPC dengan EFA & Cluster Placement Group ​

hcl
# efa-ai-cluster.tf
resource "aws_placement_group" "hpc_cluster" {
  name     = "pg-ai-training-cluster"
  strategy = "cluster" # Menempatkan node pada rack fisik terdekat di AZ yang sama
}

resource "aws_security_group" "efa_sg" {
  name        = "sg-efa-nodes"
  description = "Security Group for EFA inter-node communication"
  vpc_id      = "vpc-0123456789abcdef0"

  # Wajib: Self-referencing ingress rule untuk traffic EFA antar GPU
  ingress {
    from_port = 0
    to_port   = 0
    protocol  = "-1"
    self      = true
  }

  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

resource "aws_network_interface" "efa_interface" {
  subnet_id       = "subnet-0123456789abcdef0"
  security_groups = [aws_security_group.efa_sg.id]
  interface_type  = "efa" # Tipe antarmuka EFA terdedikasi

  tags = {
    Name = "eni-efa-gpu-node-01"
  }
}

resource "aws_instance" "gpu_worker" {
  ami                  = "ami-0123456789abcdef0" # Deep Learning AMI (DLAMI)
  instance_type        = "g5.8xlarge"
  placement_group      = aws_placement_group.hpc_cluster.id

  network_interface {
    network_interface_id = aws_network_interface.efa_interface.id
    device_index         = 0
  }

  tags = {
    Name = "ai-training-worker-01"
  }
}

5.2 Mengaktifkan Prefix Delegation pada AWS EKS VPC CNI ​

bash
# Terapkan konfigurasi Prefix Delegation pada DaemonSet VPC CNI
kubectl set env daemonset aws-node -n kube-system ENABLE_PREFIX_DELEGATION=true
kubectl set env daemonset aws-node -n kube-system WARM_PREFIX_TARGET=1
kubectl set env daemonset aws-node -n kube-system MINIMUM_IP_TARGET=5

# Verifikasi alokasi prefix /28 pada worker node
kubectl describe node <node-name> | grep -A 5 "Allocatable:"

Layer 6: Failure Modes, Edge Cases & SEV-1 Troubleshooting Matrix ​

6.1 Production SEV-1 Incident Matrix ​

Gejala Insiden (Symptoms)Root Cause Analysis (RCA)Perintah Verifikasi & Diagnosa CLILangkah Mitigasi & Resolusi
Paket di-drop saat EC2 bertindak sebagai NAT Gateway / Router software.Atribut SourceDestCheck aktif pada ENI, memicu drop anti-spoofing oleh silikon Nitro.aws ec2 describe-network-interfaces --network-interface-ids <id> --query "NetworkInterfaces[*].SourceDestCheck"Nonaktifkan atribut: aws ec2 modify-network-interface-attribute --network-interface-id <id> --no-source-dest-check.
Worker node EKS gagal scale-out dengan error FailedToAllocateIPAddress.Subnet IPv4 mengalami fragmentasi biner; tidak tersedia blok /28 kontigu (16 IP berturutan) yang bebas.aws ec2 describe-subnets --subnet-ids <id>Pasang Secondary CIDR RFC 6598 bersih atau gunakan subnet khusus berukuran /20 untuk EKS worker nodes.
Job Distributed PyTorch LLM Training hang saat inisiasi NCCL barrier.Security Group node GPU tidak mengizinkan self-referencing ingress untuk port komunikasi internal EFA.nccl-tests / all_reduce_perf -b 8 -e 128M -f 2Tambahkan rule self = true (all traffic permit antar instance di SG yang sama).
Koneksi ke Secondary ENI (eth1) putus saat diakses dari luar subnet.Asymmetric Routing: Response packet dikirim via default gateway eth0 dan di-drop firewall.ip rule show & ip route show table 200Pasang Source-Based Policy Routing (ip rule add from <eth1-ip> table 200).

Layer 7: Principal Architect Tradeoff Framework ​

Matriks Keputusan Arsitektur: Arsitektur Jaringan Antarmuka Komputasi ​

Dimensi ArsitekturalSecondary IP BiasaPrefix Delegation (/28)Overlay CNI (VXLAN)EFA Kernel Bypass
Kepadatan Pod / KontainerRendah (~30 per node)Tinggi (110-250 per node)Tinggi (Tak terbatas VPC)N/A (Dedicated Host)
Overhead Enkapsulasi CPUNol (Wire-speed)Nol (Wire-speed)3-5% CPU (VXLAN)Nol (Hardware Offload)
Tingkat Latensi TransmisiNormal (~50 µs)Normal (~50 µs)Sedang (~70 µs)Ultra Rendah (< 15 µs)
Kebutuhan SubnettingSubnet biasaWajib Subnet Besar (/20)Hanya 1 IP per NodeSubnet biasa + Cluster PG
Use Case UtamaLegacy Apps / Static IPsStandar Produksi EKSMulti-Cloud MeshAI / LLM Distributed Training

Advanced Cloud Network Engineering Mastery Portal • RFC Deep-Dive to AWS Super Enterprise Scale