← rfc/
╔══════════════════════════════════════════════════════════════════════════╗
RFC 11 · network

Ağ Görünür Makinesinin Uygulanması

Yazar
John Heafner, George Hartz
Kurum
Stanford Research Institute (SRI)
Tarih
24 Ağustos 1969
Durum
Koşul bayrakları
Kanal
network/

Genel Bakış

Konu: Bir Ağ Görünür Makinesi (Network Visible Machine) soyutlama katmanı için öneri.

Kavram: Tüm ağ host'larının taklit edebileceği soyut bir makine oluşturarak, ağ genelinde şeffaf program yürütmeyi mümkün kılma.

Vizyon: Kullanıcılar herhangi bir ağ host'una program gönderebilir ve programlar alttaki donanımdan bağımsız olarak özdeş şekilde çalışır.


İçindekiler

  1. Giriş
  2. Problem
  3. Ağ Görünür Makinesi Kavramı
  4. Mimari
  5. Makine İşlemleri
  6. Host Sorumlulukları
  7. Faydalar
  8. Uygulama Yaklaşımı
  9. Önem

Giriş

Arka Plan

Erken ARPANET host'ları çeşitliydi:

Host Donanım Mimari
UCLA IBM System/360 32-bit, big-endian, EBCDIC
SRI PDP-10 36-bit, benzersiz komut seti
UCSB IBM System/360 32-bit, big-endian, EBCDIC
Utah PDP-10 36-bit, benzersiz komut seti
BBN Özel IMP donanımı 24-bit kelime boyutu

Zorluk

Problem: Bir host için yazılmış bir program başka bir host'ta çalışamaz.

İstenilen Durum: Herhangi bir ARPANET host'unda çalışabilecek tek bir program.


Problem

Donanım Uyumsuzlukları

Kelime Boyutu Farklılıkları

IBM System/360:  32-bit kelime
PDP-10:          36-bit kelime (4 işaret biti dahil)
IMP:             24-bit kelime

Etki: Bir boyut için tasarlanmış veri yapıları diğerine uymaz.

Komut Seti Farklılıkları

IBM 360: Karmaşık komut seti (~150 komut)
PDP-10: Farklı komut seti (~200+ komut)
Her biri farklı mimariler için özelleştirilmiş

Etki: Makine kodu taşınabilir değil; her sistem için yeniden derleme gerekir.

Veri Temsili

Tamsayılar: Big-endian vs. little-endian
Floatlar: Farklı boyutlar ve hassasiyetler
Karakterler: ASCII vs. EBCDIC
Dizeler: Uzunluk önekli vs. null-sonlandırılmış

Etki: Host'lar arasında veri formatı dönüşümü gerekir.

Mevcut Çözümler (Hepsi Yetersiz)

Çözüm 1: Kaynak Kod İletimi

Kaynak kodu ağ üzerinden gönder
Her host yerel makine için yeniden derler
Problemler: 
- Derleyiciler farklı; davranış değişir
- Kaynak her zaman mevcut değil
- Yeniden derleme zaman ek yükü

Çözüm 2: Adaptör Programları

Her platform için manuel olarak adaptör yaz
Problemler:
- Emek yoğun
- Hataya açık
- Sürdürmesi zor

Çözüm 3: Kod Paylaşımı Yok

Programların host'a özgü olduğunu kabul et
Problemler:
- Ağ bilişim faydası yok
- Her sitede tekrarlanan çaba
- Bilgi yerel olarak hapsedilmiş

Ağ Görünür Makinesi Kavramı

Temel Fikir

Aşağıdakilere sahip bir soyut makine tanımla:

Her host, bu standart makineyi taklit eden bir "sanal makine" uygulaması sağlar.

Makine Modeli

┌─────────────────────────────────────┐
│    Ağ Görünür Makinesi (NVM)        │
│  - Standart 32-bit kelime boyutu    │
│  - 100+ standartlaştırılmış komut   │
│  - ASCII karakter kodlaması         │
│  - Big-endian veri temsili          │
└─────────────────────────────────────┘
│
┌─────────┼─────────┐
│         │         │
▼         ▼         ▼
┌───────┐ ┌────────┐ ┌────────┐
│IBM 360│ │PDP-10  │ │ Diğer  │
│NVM    │ │NVM     │ │NVM     │
│Motoru │ │Motoru  │ │Motoru  │
└───────┘ └────────┘ └────────┘

Soyutlama Seviyeleri

Seviye 1: Sanal İşlemci

Seviye 2: Veri Temsili

Seviye 3: G/Ç Soyutlaması


Mimari

Önerilen Makine Özellikleri

İşlemci Mimarisi

Yön Spesifikasyon
Kelime Boyutu 32-bit
Adreslenebilir Birimler 8-bit baytlar
Bellek 16MB (adreslenebilir alan)
Kayıtlar 8 genel amaçlı
Program Sayacı 32-bit
Durum Kaydı Koşul bayrakları

Komut Formatı

|||

Komut Türleri:

Tür Sayı Örnekler
Aritmetik 12 ADD, SUB, MUL, DIV
Mantık 8 AND, OR, XOR, NOT
Bellek 6 LOAD, STORE, MOVE
Kontrol 8 JUMP, CALL, RETURN
G/Ç 10 READ, WRITE, OPEN, CLOSE
Özel 6 HALT, NOP, SYNC

Bellek Modeli

Adres Aralığı    Amaç
000000-003FFF    Ayrılmış/İS
004000-FFFFFF    Kullanıcı programı ve verisi

Makine İşlemleri

Temel İşlemler

Aritmetik İşlemler

ADD reg1, reg2       // reg1 ve reg2'yi topla
SUB reg1, reg2       // reg1'den reg2'yi çıkar
MUL reg1, reg2       // Çarp
DIV reg1, reg2       // Böl
MOD reg1, reg2       // Modülo

Bellek İşlemleri

LOAD reg, address    // Bellekten yükle
STORE reg, address   // Belleğe kaydet  
MOVE src, dest       // Bellek bloğunu kopyala

Kontrol Akışı

JUMP address         // Koşulsuz atlama
JUMPE address        // Eşitse atla
JUMPL address        // Küçükse atla
CALL address         // Alt rutini çağır (dönüşü yığına koy)
RETURN               // Alt rutinden dön

G/Ç İşlemleri

READ filehandle      // Dosyadan/cihazdan oku
WRITE filehandle     // Dosyaya/cihaza yaz
OPEN filename        // Dosya aç
CLOSE filehandle     // Dosyayı kapat

Host Sorumlulukları

Her Host'un Sağlaması Gerekenler

1. NVM Yorumlayıcı/Derleyici

Her host şunlardan birini uygulamalıdır:

Seçenek A: Yorumlayıcı

- NVM komutlarını birer birer yürüt
- Anında host komut setine çevir
- Daha yavaş ama uygulaması daha kolay

Seçenek B: Derleyici

- NVM bayt kodunu host makine koduna derle
- Yerel kodu yürüt
- Daha hızlı, daha karmaşık uygulama

Seçenek C: JIT (Tam Zamanında)

- Sık kullanılan kod bölümlerini derle
- Daha az kullanılan kodu yorumla
- Dengeli yaklaşım

2. G/Ç Soyutlama Katmanı

Sanal G/Ç arayüzü sağla:

host'a özgü dosya sistemi ←→ NVM standart G/Ç
host'a özgü cihazlar      ←→ NVM sanal cihazlar
host'a özgü ağ            ←→ NVM ağ arayüzü

3. Veri Türü Eşlemesi

Arasında dönüştürme:

NVM 32-bit tamsayı ←→ IBM 360 32-bit tamsayı
NVM kayan nokta    ←→ Host kayan nokta (muhtemelen farklı hassasiyet)
NVM dizeler        ←→ Host dizeler (muhtemelen farklı kodlama)

4. Hata İşleme

Tutarlı hata kodları ve istisna işleme sağla:

NVM standart hata → Host yorumlama
Host istisnası    → NVM standart hata

Faydalar

Ağ Kullanıcıları İçin

  1. Bir Kez Yaz, Her Yerde Çalıştır
  2. Programı NVM için derle
  3. Herhangi bir ağ host'unda yürüt
  4. Yeniden derleme gerekmez
  5. Standartlaştırılmış Davranış
  6. Tüm host'larda özdeş sonuçlar
  7. Mimari farklılıklarından kaynaklanan sürprizler yok
  8. Öngörülebilir performans
  9. Basitleştirilmiş Geliştirme
  10. Tercih edilen host'ta geliştir
  11. Başka herhangi bir host'a kopyala
  12. Tam kaynak paylaşımı

Ağ İşlemleri İçin

  1. Yük Dengeleme
  2. İşi en az yüklü host'a gönder
  3. İşler her yerde özdeş şekilde yürütülür
  4. Ağ kaynak kullanımını optimize et
  5. Hata Toleransı
  6. Bir host başarısız olursa, işi başka bir host'ta yeniden başlat
  7. Kod yeniden derlemesi yok
  8. Değişiklik olmadan devam et
  9. Kaynak Paylaşımı
  10. İşlem yoğun iş en güçlü host'u kullanabilir
  11. Özel araçlar her yerde kullanılabilir
  12. Hesaplama silolarını yık

Sistem Yöneticileri İçin

  1. Tek Tip Ortam
  2. Ağ genelinde aynı NVM uygulaması
  3. Daha basit kullanıcı desteği
  4. Azaltılmış eğitim yükü
  5. Basitleştirilmiş Sorun Giderme
  6. Her yerde aynı komut seti
  7. Hataları teşhis etmek daha kolay
  8. Yürütmeyi özdeş şekilde izle

Uygulama Yaklaşımı

Faz 1: Tasarım (Şimdi - Eylül)

Faz 2: Kavram Kanıtı (1969 4. Çeyrek)

Faz 3: Optimizasyon (1970 1. Çeyrek)

Faz 4: Entegrasyon (1970 2. Çeyrek)


Zorluklar ve Açık Sorular

Teknik Zorluklar

  1. Performans Ek Yükü
  2. NVM yorumlama 2-10x yavaşlama ekler
  3. Derleme yardımcı olur ama gecikme ekler
  4. Uyumluluk ve hız arasında denge
  5. Kayan Nokta Hassasiyeti
  6. Farklı host'lar farklı hassasiyete sahip
  7. Standartlaştırma gerekli (muhtemelen hassasiyeti azaltma)
  8. Taşınabilirlik sürprizleri çıkarabilir
  9. G/Ç Semantiği
  10. Farklı host'lar farklı dosya sistemlerine sahip
  11. Sanal G/Ç'yi host sistemlerine eşlemek zor
  12. Uç durumlar ve uyumluluk sorunları

Topluluk İçin Sorular

  1. NVM yorumlayıcı mı yoksa derleyici yaklaşımını mı izlemeli?
  2. Ne kadar performans kaybı kabul edilebilir?
  3. Belirli kayan nokta hassasiyetinde standartlaşmalı mıyız?
  4. G/Ç'de host'a özgü özellikler nasıl ele alınmalı?

Önem

RFC 11 devrimci bir kavram önermektedir: şeffaf program dağıtımını mümkün kılan ağ genelinde soyut bir makine.

Tarihsel Önem

Öneri modern teknolojileri öngördü:

  1. Sanal Makineler: VMware, VirtualBox, KVM
  2. Bayt Kod Yorumlama: Java Virtual Machine (JVM), Python
  3. Tam Zamanında Derleme: V8 (JavaScript), Java HotSpot
  4. Konteyner Orkestrasyon: Kubernetes özdeş konteynerleri dağıtma
  5. Bulut Bilişim: "Kodunuzu her yerde çalıştırın" modeli

Mimari İlkeler

RFC 11 temel içgörüyü oluşturdu: soyutlama katmanı dağıtımı mümkün kılar

Modern paralel:

NVM (1969)  → Java (1995) → Konteynerler (2013) → Kubernetes (2014)
Hepsi şeffaf dağıtımı mümkün kılan soyutlama katmanı sağlar

Neden Önemli

RFC 11'de önerilen kavram — şeffaf platformlar arası yürütmeyi mümkün kılan standart soyut makine — modern bilişim altyapısının temelini oluşturdu.


Sonuç

RFC 11'in spesifik Sanal Makine önerisi ARPANET'te hiçbir zaman resmi olarak standartlaştırılmamış olsa da, ağ bilişimi hakkında vizyoner düşünceyi belgeler.

Öneri, gerçek ağ bilişiminin iletişim protokollerinden fazlasını gerektirdiğini; paylaşılan hesaplama soyutlamalarını gerektirdiğini kabul etti.

Bu içgörü onlarca yıl sonra Java'da, sonra konteynerlerde, sonra sunucusuz bilişimde yeniden ortaya çıktı — her seferinde RFC 11'in 1969'da ifade ettiği aynı temel ilkeyi yeniden keşfetti.


Stanford Research Institute

Network Working Group

Ağustos 1969