eBPF ve TCX ile Güvenilmeyen CI İş Yüklerinde Ağ Gözlemi
Blacksmith, CI iş yüklerinin ağ trafiğini guest VM'e dokunmadan, eBPF ve TCX ile line-rate izleyen bir DNS destekli gözlem sistemi anlatıyor.
Blacksmith, CI işlerinin ağda gerçekte neyle konuştuğunu görmek için guest VM'e hiç dokunmadan çalışan bir gözlem katmanı inşa etti. Her CI işi kendi geçici VM'inde çalışıyor ve tüm trafiği host tarafındaki tek bir veth çiftinden geçiyor; bu da sisteme workload'un göremeyeceği ve etkileyemeyeceği bir gözlem noktası sağlıyor. Tasarımın temel varsayımı basit: guest içindeki her şey düşman kabul ediliyor, bu yüzden hiçbir doğrulama mekanizması guest içinde yaşamıyor.
İsimlendirme sorununu çözmek için host tarafında bir DNS proxy kullanılıyor; iptables DNAT kuralı guest'in port 53 trafiğini bu proxy'ye yönlendiriyor ve her sorguda hangi domain'in hangi IP'ye çözüldüğü kaydediliyor. Böylece ham bir hedef IP, anlamlı bir alan adına bağlanabiliyor. Asıl trafik sayımı ise veth üzerine TCX (Linux 6.6 ile gelen traffic-control kancası) ile eklenen eBPF programları tarafından yapılıyor; her VM için ayrı hash-of-maps yapısında, hedef bazlı byte ve paket sayaçları tutuluyor.
TCX'in tercih edilme nedeni klasik tc/netlink yaklaşımından farklı olarak bir link nesnesi olması: program, agent process'in sahip olduğu bir file descriptor'a bağlı yaşıyor, arayüz kaybolduğunda otomatik ayrılıyor ve ortada yetim tc filtresi kalmıyor. Ayrıca paketler zaten geçtiği tc katmanında çalıştığı için ekstra kopya ya da context switch maliyeti olmadan, neredeyse sıfır overhead ile line-rate gözlem sağlanıyor. Bu, hem yavaş build'lerin kök nedenini bulmak hem de ileride kötü niyetli bağımlılıklara karşı egress politikası uygulamak için sağlam bir temel oluşturuyor.
Bu sentez, kaynağından yapay zeka tarafından üretildi; insan editör ya da elle onay adımı yoktur. Nasıl çalışıyoruz