Linux’ta Link Aggregation ile Ağ Performansını Artırma

network link aggregation cpynet 1

Linux ağ yönetiminde, ağ geçiş kapasitesini (network throughput) maksimize etmek birçok sistem yöneticisi ve ağ mühendisinin ana hedefidir. Bu hedefe ulaşmanın etkili yollarından biri de bağlantı birleştirme kullanımıdır.

Bu dokümanda, Linux ortamlarında iki Ethernet kartını kullanarak bağlantı birleştirmenin nasıl yapılandırılacağını inceleyeceğiz. Debian ve Red Hat Enterprise Linux (RHEL) sistemlerinde bağlantı birleştirme ayarlarına odaklanacağız. Testlerimizi AlmaLinux 8 ve Debian 12 üzerinde gerçekleştirdik.

1. Bağlantı Birleştirme Nedir?

Bağlantı birleştirme, diğer adıyla “bonding” veya “teaming,” birden fazla ağ bağlantısını paralel olarak kullanmamıza olanak tanıyan bir yöntemdir. Bu yöntem, ağ talebinin tek bir Ethernet kartının kapasitesini aştığı ortamlarda özellikle kullanışlıdır.

Bağlantı birleştirme, bant genişliğini artırır ve ağın kesintisiz çalışmasını sağlar. Aynı hızdaki iki bağlantıyı birleştirdiğimizde, ağ kapasitesini etkin bir şekilde iki katına çıkarabiliriz. Ayrıca, birleşik bağlantılardan biri arızalansa bile iletişim devam eder. Bu da yüksek kullanılabilirlik gerektiren kritik sistemler ve uygulamalar için mükemmel bir seçimdir.

1.1. Bağlantı Birleştirme Modlarını Keşfetmek

Her birleştirme modu farklı davranışlar ve avantajlar sunar. İşte en yaygın kullanılan bağlantı birleştirme modları ve kullanım senaryoları:

  • Balance-RR (Round Robin) – Mod 0: Paketleri ardışık olarak tüm bağlantılar üzerinden ileterek yük dengeleme ve hata toleransı sağlar.
  • Active-Backup – Mod 1: Sadece bir bağlantı aktif kalır, diğerleri yedek olarak bekler. Aktif bağlantı arızalandığında, yedek bağlantı devreye girer.
  • Balance-XOR – Mod 2: Kaynak ve hedef MAC adreslerine dayalı olarak birleştirilen bağlantılar üzerinden yük dengelemesi yapar.
  • Broadcast – Mod 3: Tüm iletimler tüm bağlantılardan geçer ve yüksek düzeyde yedeklilik sağlar.
  • 802.3ad (LACP) – Mod 4: Dinamik bağlantı birleştirmeyi destekleyen LACP özellikli anahtarlar gerektirir.
  • Balance-TLB (Adaptive Transmit Load Balancing) – Mod 5: Çıkış trafiğini mevcut yük temelinde dinamik olarak dağıtır.
  • Balance-ALB (Adaptive Load Balancing) – Mod 6: Hem giriş hem çıkış trafiğini optimize ederek yük dengelemesi yapar.

2. Bağlantı Birleştirme Kurulumu

Farklı Linux dağıtımları, bağlantı birleştirme için farklı araçlar ve yapılandırmalar gerektirebilir. Debian tabanlı ve RHEL tabanlı sistemler için aşağıdaki adımları takip ederek güçlü ve yüksek performanslı bir ağ yapılandırması oluşturabiliriz.

2.1. Gereksinimler

Bağlantı birleştirme yapılandırmasına başlamadan önce, Linux sistemimizde yönetici haklarına sahip olduğumuzdan ve her iki Ethernet kartının tanınıp çalıştığından emin olmalıyız. Ayrıca, bağlantı birleştirme için gerekli araçları kurmamız gerekir. Bu araçlar dağıtımdan dağıtıma farklılık gösterebilir.

2.2. Debian Tabanlı Sistemlerde Yapılandırma

Debian ve Ubuntu gibi Debian tabanlı sistemlerde, ilk adım olarak ifenslave paketini kurmamız gerekmektedir. Bu paket, birleştirilmiş arayüzleri yapılandırmak ve yönetmek için kullanılır:

$ sudo apt install ifenslave

Sonrasında, birleştirmek istediğimiz ağ arayüzlerini yapılandırmamız gerekir. Bunun için /etc/network/interfaces dosyasını düzenleyebiliriz:

$ cat /etc/network/interfaces
auto bond0
iface bond0 inet dhcp
slaves eth0 eth1
bond-mode 0
bond-miimon 100
bond-downdelay 200
bond-updelay 200

Yapılandırmayı tamamladıktan sonra ağ hizmetini yeniden başlatarak değişiklikleri uygulayabiliriz:

$ sudo systemctl restart networking

2.3. RHEL Tabanlı Sistemlerde Yapılandırma

RHEL ve AlmaLinux gibi sistemlerde kanal birleştirme arayüzü oluşturmak için /etc/sysconfig/network-scripts/ dizininde bir yapılandırma dosyası oluşturmalıyız:

$ cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
BOOTPROTO=dhcp
BONDING_OPTS="mode=0 miimon=100"

Sonrasında, birleştirilecek ağ arayüzlerinin yapılandırmasını yapmalıyız:

$ cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
MASTER=bond0
SLAVE=yes

$ cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
MASTER=bond0
SLAVE=yes

Ağ hizmetini yeniden başlatarak ayarları uygulayabiliriz:

$ sudo systemctl restart NetworkManager
$ sudo nmcli networking off && sudo nmcli networking on

3. Test ve Doğrulama

Bağlantı birleştirme yapılandırıldıktan sonra, ayarların doğru çalıştığından emin olmak için bazı testler yapmamız gerekir. Aşağıdaki komutlarla durumu kontrol edebiliriz:

$ ip add

Bu komut, bond0 adında birleştirilmiş bir arayüzün aktif olduğunu ve eth0 ile eth1 arayüzlerinin SLAVE durumunda olduğunu gösterecektir.

Ayrıca, ethtool ile birleştirilmiş arayüzün hızını kontrol edebiliriz:

$ ethtool bond0

Bond arayüzünün hızı, birleştirilen Ethernet arayüzlerinin toplam kapasitesine eşit olmalıdır. Örneğin, iki adet 1Gbps Ethernet kartı kullanıyorsanız, hız 2000Mb/s olarak görünecektir.

Son olarak, /proc/net/bonding/bond0 dosyasını kontrol ederek bağ durumunu detaylı inceleyebiliriz:

$ cat /proc/net/bonding/bond0

Bu dosya, her bir slave arayüzün durumu, hızları ve hata sayıları gibi önemli bilgiler içerecektir.

3.1. Örnek Test Sonuçları

Aşağıda, bir testin örnek çıktısı yer almaktadır:

$ ip add
...
1: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UP group default qlen 1000
    link/ether 08:00:27:8c:c1:7c brd ff:ff:ff:ff:ff:ff
2: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UP group default qlen 1000
    link/ether 08:00:27:8c:c1:7c brd ff:ff:ff:ff:ff:ff
14: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 08:00:27:8c:c1:7c brd ff:ff:ff:ff:ff:ff
    inet 192.168.68.174/24 brd 192.168.68.255 scope global dynamic noprefixroute bond0
       valid_lft 5041sec preferred_lft 5041sec

Bu test sonucunda bond0 arayüzünün başarılı bir şekilde çalıştığını ve her iki Ethernet kartının da slave olarak tanındığını görebiliyoruz.


4. Sonuç

Bağlantı birleştirme, Linux’ta ağ performansını ve güvenilirliğini artırmak için güçlü bir özelliktir. Bu dokümanda, iki Ethernet kartını birleştirerek daha yüksek ağ kapasitesine ve hata toleransına sahip bir yapılandırmanın nasıl yapılacağını inceledik.

Önceki Konu

iPerf Kullanarak Ağ Performansı ve Bant Genişliği Ölçümü

Sonraki Konu

Linux’ta GRUB Menüsüne İşletim Sistemi Ekleme Yöntemleri

Bültenimize Abone Olun 📬

En son gönderilerimizin doğrudan e-posta kutunuza gelmesi için e-posta bültenimize abone olun.
Düşüncelerinizi özgür bırakın ✨