Shared Memory Communication (SMC), Remote Direct Memory Access (RDMA) kullanarak TCP uygulamalarını hızlandıran ve uygulama değişikliği gerektirmeyen bir çekirdek ağ protokol yığınıdır. Bu konu, SMC'nin senaryonuz için uygun olup olmadığını ve ortamınızın gereksinimleri karşılayıp karşılamadığını belirlemenize yardımcı olur.
Çalışma prensibi
SMC, TCP/IP yığınına paralel çalışır. Paketleri yazılımda işlemek yerine SMC, protokol işlemini alttaki donanıma yükler; verileri uzak paylaşımlı belleği doğrudan okuyup yazarak iletir. Böylece gecikme süresi azalır, CPU yükü düşer ve ağ aktarım hızı artar.
IBM, SMC'yi Linux topluluğuna açık kaynak olarak sunmuştur; Alibaba Cloud Linux 3'te bu teknoloji geliştirilmiştir. SMC, standart soket arayüzleriyle uyumludur. socket() sistem çağrısını yakalayarak soket ailesi ve protokol parametrelerini değiştiren SMC, mevcut TCP uygulamalarının şeffaf şekilde SMC yığınına geçmesini sağlar; kod değişikliği veya yeniden derleme gerekmez. Kurulum talimatları için bkz. SMC kullanma.
SMC iki varyantta sunulur:
SMC over RDMA (SMC-R): RDMA teknolojisini kullanır. Alibaba Cloud Linux 3, elastic Remote Direct Memory Access (eRDMA) tabanlı SMC-R desteği sunar. Bu konudaki tüm içerik SMC-R için geçerlidir.
SMC over Direct Memory Access (SMC-D): Internal Shared Memory (ISM) teknolojisini kullanır.
Bağlantı kurulumu: SMC, standart TCP üç yönlü el sıkışması ile başlar. SYN paketindeki özel bir TCP seçeneği (Kind: 254, Value: 0xE2D4C3D9), eş tarafa SMC yeteneğini bildirir. Her iki taraf da SMC'yi destekliyorsa ilgili RDMA kaynaklarını oluşturur ve bir SMC el sıkışmasını tamamlar. Sonraki tüm veri akışı RDMA üzerinden gerçekleşir. SMC el sıkışması başarısız olursa taraflar otomatik olarak kurulmuş olan TCP bağlantısına geri döner; iletişim kesintisiz devam eder.
İlk SMC bağlantısı kurulduktan sonra SMC, RDMA ağı üzerinde RDMA güvenilir bağlantısı (RC) oluşturur; buna SMC linki denir. Sonraki bağlantılar RDMA kaynak yükünü en aza indirmek için aynı SMC linkini yeniden kullanır. Yeniden kullanım sınırı aşıldığında yeni bir SMC linki oluşturulur. Birden çok SMC linki, RDMA iletimi ve olağanüstü durum kurtarma amacıyla bir SMC link grubu (LGR) oluşturur.
Ön koşullar
Alibaba Cloud Elastic Compute Service (ECS) üzerinde SMC-R kullanmak için:
eRDMA etkinleştirilmiş örnek: Örneğinizde bir eRDMA ağ arabirimi (ERI) yapılandırın. Desteklenen örnek türleri ve yapılandırma adımları için bkz. Kurumsal düzeyde bir örnekte eRDMA'yı yapılandırma.
Çekirdek sürümü 5.10.134-16 veya üzeri olan Alibaba Cloud Linux 3: Çekirdek sürümünüzü kontrol etmek ve güncellemek için bkz. Çekirdek sürümünü değiştirme.
Kullanım senaryoları
SMC aşağıdaki senaryolarda en fazla faydayı sağlar:
Uygulama değişikliği gerekmez: SMC'nin temel avantajı, TCP uygulamalarının kod değişikliği olmadan RDMA'yı kullanabilmesidir. Bir çekirdek protokol yığını olarak SMC, yerel RDMA uygulamalarına kıyasla ek sistem çağrısı ve çekirdek modu/kullanıcı modu veri kopyalama yüküne sahiptir. Mevcut uygulamalarla sorunsuz entegrasyon öncelikli olduğunda SMC idealdir.
Gecikme süresi ve aktarım hızına duyarlı iş yükleri: Donanım yük devretme, protokol işleme gecikme süresini ve CPU yükünü azaltır; doğrudan bellek erişimi ağ aktarım hızını artırır.
İç ağ iletişimi: SMC her iki uç noktanın da desteğini gerektirir; bu durum iç ağlarda kolayca sağlanır. Kısa ağ linkleri gecikme süresi avantajını büyütür.
Ağ yoğunluklu hizmetler: Ağın ana darboğaz olduğu hizmetlerde gecikme süresi ve aktarım hızı iyileştirmeleri en belirgin şekilde görülür.
SMC'nin kullanılmaması gereken durumlar
Aşağıdaki senaryolarda SMC'den kaçının. Çözüm mevcutsa Solution sütununda listelenmiştir.
| Senaryo | SMC'nin performansının düşük olmasının nedeni | Çözüm |
|---|---|---|
| Kısa ömürlü bağlantılar | SMC bağlantı kurulumu; veri akışından önce TCP el sıkışması, SMC el sıkışması ve RDMA kaynaklarının oluşturulmasını içerir. Bu yük, kısa ömürlü bağlantılarda SMC'yi TCP'den daha yavaş hale getirir. | Hangi bağlantıların SMC kullanacağını sınırlamak için smc-ebpf kullanın. Bkz. SMC'yi etkinleştirme ve yapılandırma. |
| Yüksek ani bağlantı oranları | Aynı bağlantı kurulumu yükü, ani bağlantı artışları sırasında kuyruk oluşumuna ve bağlantı kurulumu zaman aşımlarına neden olur. | Hangi bağlantıların SMC kullanacağını sınırlamak için smc-ebpf kullanın. Bkz. SMC'yi etkinleştirme ve yapılandırma. |
| Ağ öğeleri arasından geçen yollar | Bazı ağ öğeleri, tanınmayan TCP Deneysel Seçenekleri içeren SYN/SYN-ACK paketlerini düşürür veya hatalı iletir; bu durum el sıkışması zaman aşımlarına veya bağlantı hatalarına yol açar. Bu sorun internete yönelik hizmetlerde görülebilir. ![]() |
Yolu doğrulamak için aliyunsmc-check syn_check komutunu çalıştırın. Yol başarısız olursa smc-ebpf kullanarak o linkte SMC'yi devre dışı bırakın. Bkz. İletişim linkini kontrol etme. |
| Genel ağ iletişimi | Genel ağlar, SMC el sıkışmalarına müdahale eden ağ öğelerini sıkça içerir (yukarıdaki sorunla aynı). Her iki tarafta da SMC gereksinimlerinin karşılanması zordur; bu durum TCP'ye geri dönüşe neden olur. Ayrıca SMC güvenlik sertleştirmesi içermez ve güvenilmeyen ortamlar için uygun değildir. | — |
| Bellek kısıtlı ortamlar | Her SMC bağlantısı paylaşımlı bellek arabelleklerini önceden ayırır. Varsayılan olarak bir bağlantı her uçta sysctl net.smc.wmem + sysctl net.smc.rmem kadar bellek tüketir. |
SMC kullanımını kısıtlamak için smc-ebpf kullanın veya varsayılan arabellek boyutlarını küçültün. Bkz. SMC'yi etkinleştirme ve yapılandırma ve SMC'yi etkinleştirme ve yapılandırma. |
| Alanlar arası iletişim | Alanlar arası iletim, gecikme süresine yüzlerce mikrosaniye ila birkaç milisaniye ekler; bu durum SMC'nin gecikme süresi avantajını azaltır. Daha yüksek bant genişliği-gecikme çarpımı, bant genişliğini tam kullanmak için daha büyük arabellekler gerektirir ve bellek baskısını artırır. | SMC'nin alanlar arasında kullanılmasını önlemek için Unique Endpoint Identifiers (UEIDs) kullanın. Bkz. SMC'yi etkinleştirme ve yapılandırma. |
Otomatik kontrol aracı
Alibaba Cloud Linux 3, SMC ortam yapılandırmasını, iletişim linklerini ve uçtan uca bağlantıyı doğrulamak için aliyunsmc-check aracını içerir. Bu araç aliyun-smc-extensions paketinin bir parçasıdır.
Paketi yükleme
sudo yum install -y aliyun-smc-extensions
Temel ortamı kontrol etme
Çekirdek sürümünün ve eRDMA cihazının doğru yapılandırıldığını doğrulayın:
aliyunsmc-check basic_check
Örnek çıktı:

İletişim linkini kontrol etme
Yoldaki ağ öğelerinin SMC'ye müdahale etmediğini doğrulayın. <url> yerine hedef URL'yi girin:
aliyunsmc-check syn_check --url <url>
Örnek çıktı:

Link kontrolü başarısız olursa smc-ebpf kullanarak o linkte SMC'yi devre dışı bırakın. Bkz. SMC'yi etkinleştirme ve yapılandırma.
SMC bağlantısını kontrol etme
Geçerli ana bilgisayar ile uzak ana bilgisayar arasında SMC bağlantıları kurulabildiğini doğrulayın. Araç, uzak ana bilgisayara bağlanmak için SSH kullanır.
Yer tutucuları değiştirin:
| Yer tutucu | Açıklama |
|---|---|
<peer ip> |
Uzak ana bilgisayarın IP adresi |
<usr> |
Uzak ana bilgisayardaki kullanıcı adı |
<keyfile> |
SSH özel anahtar dosyasının yolu |
<passwd> |
Uzak ana bilgisayarın parolası |
SSH anahtar dosyası kimlik doğrulaması
aliyunsmc-check connect_check --hosts <peer ip> --user <usr> --key <keyfile>
SSH parola kimlik doğrulaması
aliyunsmc-check connect_check --hosts <peer ip> --user <usr> --pwd <passwd>
Parolasız SSH kimlik doğrulaması
aliyunsmc-check connect_check --hosts <peer ip> --user <usr>
Örnek çıktı:

Sonraki adımlar
SMC kullanma — SMC'yi etkinleştirin,
smc-ebpfaracını yapılandırın ve arabellek boyutlarını ayarlayın
