RDMA ve RoCE Nedir?

RoCE, son zamanlarda yeniden popüler olan bir konu olarak karşımıza çıkıyor. RoCE’ yi anlayabilmemiz için ilk olarak RDMA’ yı anlamak gerekiyor.

RDMA Nedir?

RDMA’nın açılımı Remote Direct Memory Access olarak karşımıza çıkıyor. Türkçesi Uzatan Doğrudan Bellek Erişimi olarak tanımlayabiliriz.

RDMA ile, verilerin ağ üzerinden iletilirken cihaz belleği arasında doğrudan bir köprü kurularak, veriler bir noktadan bir noktaya direk taşınır. Böylece geleneksel veri transferinden farklı bir algoritma izlendiği için verilerin hızı ve verimliliği artırılmış olur.

Daha iyi anlayabilmek adına, ilk olarak RDMA olmadan bir verinin gönderilmesine bakalım;

  • Verinin Hazırlanması: İlk adımımız karşı tarafa göndereceğimiz verinin hazırlanmasıdır. Bu veri bir karakter, dosya, metin, görsel veya herhangi bir türde olabilir. Gönderilecek veri bellekte uygun bir konumda saklanır.
  • Verinin Arabelleğe Kopyalanması: Gönderici taraf, karşı tarafakopyalanacak veriyi ilk olarak ağ iletişiminin hızlanması için bir arabelleğe alır.
  • Bağlantının Kurulması: Bir verinin A noktasından B noktasına iletilebilmesi için ilk olarak A ve B noktaları arasında bir bağlantı kurulması gerekmektedir.
  • Verinin İletilmesi: Bağlantının kurulmasının ardından verinin ağ üzerinden nasıl gönderileceğine dair bir işlem başlar. Bu işlemler, verinin ağ üzerinde nasıl iletileceği, paketlerin nasıl bölüneceği ve alıcı tarafında bölünen bu paketlerin geri nasıl birleştireceği gibi ayrıntıları barındırır.
  • Verinin Alıcıya Ulaşması: Tüm bu işlemlerin ardından, bölünen veri A noktasından B noktasına ulaştığında, alıcı olan B noktası bu veriyi kabul eder.
  • Veriyi İşle: B noktası (yani alan sunucu) aldığı veriyi işlemek veya saklamak için gerekli işlemleri gerçekleştirir. Buna alıcı karar verir.
  • Bağlantının Kapatılması: Tüm işlemler tamamlandığında, bağlantıyı kapatmak gerekir. Alıcı ve verici paketlerin taşınmasından emin ise bu ağ oturumu kapatılır.

Peki RDMA ile bu verinin yolcuğu nasıl olmaktadır:

  • Verinin Hazırlanması: İlk adımda yine aynı şekilde gönderilecek veri hazırlanmaktadır. Fakat burada RDMA ile gönderim yapılacağı için, bir önceki örnekteki 2. Adım burada uygulanmıyor. Veri direk soğuk birimden alınıp, gönderim için hazırlanıyor.
  • Bağlantının Kurulması: Bu adımda, bir önceki örneğimizin 3. Adımının bir benzeri uygulanıyor. Burada önemli olan her iki tarafında RDMA destekli olması ve bu desteğin açık olması gerekiyor.
    • RDMA bağlantısı şu şekilde kurulur:
      • Gönderenin Bağlantı İsteği (Connection Request): Gönderen sunucu, alıcı ile bir RDMA bağlantısı için istek gönderir.
      • Alıcının Bağlantı Yanıtı (Connection Response): Alıcı, gönderici tarafından iletilen paketi aldığını doğrular ve olumlu veya olumsuz olmak üzere göndericiye bir paket gönderir.
      • Göndericinin Bağlantı Onayı (Connection Confirmation): Gönderen sunucu, alıcının bağlantıyı kabul ettiğine dair, alıcıya bir bağlantı onayı gönderir. Bu paket ile bağlantının resmen kurulduğunu ve veri transferi için her iki tarafında hazır olduğu anlamına gelir.
      • Verinin Aktarılması (Data Transfer): Artık tüm şartlar verinin aktarılması için uygundur. Gönderen sunucu, kendi belleğindeki veriyi, alıcının direk belleğine iletir.
      • Bağlantının Sonlandırılması (Connection Termination): A noktasından B noktasına bir bağlantı isteği geldi. B noktası bu isteğe olumlu döndü ve B noktası, A noktasına artık resmen bir bağlantı olduğunu paylaştı. Bu bağlantının kurulmasından sonra verinin transferi de gerçekleşti. Bağlantıyı genellikle isteği başlatan taraf, yani gönderen sonlandırır ama bu bir zorunluluk değildir. Bağlantıyı her iki tarafta sonlandırabilir.
  • Veriyi Gönderme: Artık bütün işlemler tamam, bağlantı kuruldu. RDMA ile, veri hiç önbelleğe alınmadan göndericiden direk alıcının hedefine veri transferi gerçekleşir. Herhangi bir ara belleğe girmeyen veri, kaynaktan kaynağa kopyalanır.
    RDMA ile verinin gönderilme aşamaları ise şöyledir:
    • İlk Hazırlık (Initialization): İletişim başlamadan önce önceki adımlar sayesinde bir bağlantı kurulmuştur.
    • Verinin Hazırlanması (Preparing Data): Gönderici, iletilecek olan veriyi uygun bir konumda hazırlar. Bu veri, bellek blokları halinde işaretlenir ve işlem için hazırlanır.
    • RDMA İsteği (RDMA Request): Gönderici, hazırladığı bloklar halindeki veriyi alıcıya aktarmak istediğine dair bir istek gönderir. Bu istek içerisinde hangi bellek adreslerinden, nereye veri aktarılacağını içerir.
    • RDMA Hedef İzni Verme (RDMA Permission): Alıcı, gönderici tarafından iletilmek istenen veriler için bellek aktarılmasına dair izin verir.
    • Veri Transferi (Data Transfer): RDMA işlemi başlar. Veriler göndericiden, alıcıya doğrudan taşınır.
  • Verinin İşlenmesi: Alıcı, karşı taraftan aldığı veriyi işlemek veya saklamak için gerekli işlemleri yapar.
  • Bağlantının kapatılması: İletişim tamamlandığında, iki nokta arasında bağlantı sonlandırılır.
    Sonlandırma işlemi ise şöyledir:
    • Bağlantıyı Sonlandırma İsteği (Connection Termination Request): Gönderen sunucudan alıcı olan sunucuya bağlantının sonlandırılmasına dair bir paket gider.
    • Bağlantının Sonlandırma Yanıtı (Connection Termination Response): Alıcı, bir bağlantı sonlandırma isteği geldiğini doğrular. Ardından bir bağlantı sonlandırma yanıtı gönderir.
    • Sonlandırma Onayı (Termination Confirmation): Gönderen sunucu, alıcı tarafından bağlantı sonlandırma isteğini kabul ettiğini doğrulayan son bir paket gönderir. Bu aşamada resmi olarak aradaki bağlantı sonlandırılmıştır.
    • Bağlantı Sonlandırma (Conneciton Termination): Bağlantı sonlandırma onayı geldikten sonra, her iki sunucuda bağlantıyı sonlandırır.

RoCE Nedir?

Genel olarak klasik veri taşıma sürecini ve RDMA ile taşıma sürecini görmüş olduk. RoCE’nin açılımı RDMA over Converged Ethernet olarak karşımıza çıkıyor. Yani RDMA protokolünün ethernet bağlantısı üzerinden gerçekleşmesidir. 

RoCE’nin temel özellikleri ve önemli noktaları ise şöyle;

  • RDMA’yı Ethernet Üzerinden Kullanmak: RoCE sayesinde RDMA’yı ethernet kartları üzerinden kullanabiliyorsunuz. Buda ağ teknolojilerinin yüksek fonksiyonlarını kullanabilmemize yarıyor.
  • Latency Süreleri: RoCE ile yüksek bant genişliği sayesinde yüksek verilerde veya performans gerektiren uygulamalar için oldukça önemli hale geliyor. Örnek olarak veri merkezleri, büyük veri işleme veya yüksek performanslı hesaplamalarda (HPC) oldukça kullanılmaktadır.
  • Converged Ethernet: RoCE, Converged Network altyapısı üzerinde çalışabilmektedir.
  • Veri Merkezleri ve Bulut Ortamları: Sunucu iletişiminin yüksek öneme sahip olduğu ortamlarda performanslı iletişim için oldukça kullanılmaktadır.
  • InfiniBand ile Karşılaştırma: InfiniBand ile RoCE karşılaştırıldığında, düşük gecikme ve yüksek bant genişliği sayesinde bazı uygulamalarda InfiniBand’a alternatif olarak tercih edilebilmektedir.
  • RoCE sürümleri: RoCE’nin RoCEv1 ve RoCEv2 olarak iki adet sürümü vardır. RoCEv1, InfiniBand ağına benzer bir özellik sunarken RoCEv2 daha fazla özellik ekler. Temel olarak farklar:
    • Hızlı Bağlantı (Fast Failover): RoCEv2’yi, RoCEv1’den belki de ayıran en büyük özellik, hızlı bağlantı özelliğidir. RoCEv2 ile, iki nokta arasında bir bağlantı sorunu tespit edildiğinde hızlı bir şekilde alternatif bir bağlantı kurulabilmesini sağlar.
    • Kurulum ve Yönetim: RoCEv2, RoCEv1’e göre daha sadece ve esnek bir kurulum ve yönetim sağlamaktadır.
    • Güvenlik: RoCEv2, RoCEv1’e göre kimlik doğrulama ve güvenlik tarafında daha fazla özellik sunar. RoCEv2’de, RDMA trafiği bir güvenlik mekanizması sayesinde kimlik doğrulama ve veri güvenliği sağlamaktadır. RoCEv1’ise bu konuda daha kısıtlıdır.

      Örnek olarak ise RoCEv2, AES-NI şifreleme algoritmasını kullanır. Bunun dışında RoCEv2, Kerberos veya TLS ile entegre edilebiliniyor.
    • Hedef İstemci İndeksi (Destination Processor Identifier – DPL): RoCEv1’de, hedef işlemciyi belirtmek için IP adresleri ve portlar kullanılmaktadır. RoCEv2’de ise DPL yerine, Global Identifier denilen GID kullanılır. GID’ler daha geniş çaptadır ve benzersizdir.
    • Protokol ve Başlık Formatı: RoCEv1, UDP üzerinden çalışır ve RoCE başlığı olarak UDP başlığı kullanılır. RoCEv1 paketleri IP üzerinden yönlendirilir.

      RoCEv2 ise UDP başlıkları yerine kendi başlıklarını (header) kullanır. IP üzerinden yönlendirilmediği içinde genellikle daha küçük paketler oluşturur.
      Örnek vermek gerekirse; RoCEv1’de ki paketler şu şekildedir:

      Ethernet Header + IP Header + UDP Header + RoCE Header

      RoCEv2’de ise paketler şu şekildedir:

      Ethernet Header + RoCEv2 Header
RoCE Sürümleri

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Social media & sharing icons powered by UltimatelySocial