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.