Linux (Debian) ve Ethernet Arayüz Birleştirme.

Dec 4th, 2009

Linux makinelerde ethernet arayüzlerini birleştirme işlemi yapılabilmektedir. Buna genelde “bonding, trunk, etherchannel” gibi isimler verilmektedir. Arayüzleri birleştirme işlemi sistemin ağ performansını arttırmak için yapılabileceği gibi yedeklilik, sürdürülebilirlik için de yapılabilir.

Burada genelde pekçok anahtarlama cihazında bulunan IEEE 802.3ad standardını kullanacağız. Linux kernel’inde bu mode=4 olarak karşımıza çıkmaktadır.

A. # cat /etc/modprobe.d/arch/x86
alias bond0 bonding
options bonding mode=4 miimon=100 downdelay=200 updelay=200

Buradaki parametreler ile ilgili bilgi için;
# modinfo bonding

komutu ile gerekli bilgi alabilirsiniz. Esasen aynı komut ile pekçok modül hakkında yeterli bilgi alabilirsiniz. Burada önemli olan mode=4 parametresidir. En altta mode’lar için bilgi verilmiştir.

B. # aptitute install ifenslave-2.6

ifenslave-2.6 yazılımı bonding işleminin yapılması için gerekli uygulamasıdır. Linux kernel 2.6 serisi içindir.

C.
# cat /etc/network/interfaces

auto lo eth0 eth1 bond0
iface lo inet loopback

# The primary network interface
#allow-hotplug eth0

iface bond0 inet manual
bond-mode 4
bond-miimon 100
lacp_rate slow
slaves eth0 eth1

Yukarıdaki kod ile A bendinde yazdığız şey benzer anlamlar taşıyor. Yani yukarıda yazmasak da buradaki parametreler ile çalışır. Kısaca bond0 isminde bir arayüz eth0 ve eth1 arayüzleri birleştirilerek oluşturulmuştur. Gönderme yöntemi olarak 2. seviye bilgilerini kullanacaktır. Bu arayüze istersek doğrudan IP verebileceğimiz gibi vlan oluşturarak da kullanabiliriz.

C. Vlan ayarları için;
#cat /etc/modules
8021q

# aptitute install vlan

D. Tekrar arayüz dosyasına;

# Birincil ağ
iface vlan10 inet manual
vlan_raw_device bond0
address 10.0.0.2
netmask 255.255.255.0
network 10.0.0.0
broadcast 10.0.0.255
gateway 10.0.0.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 192.168.1.1
dns-search metu.edu.tr.
# Ikincil ağ
iface vlan20 inet manual
vlan_raw_device bond0
address 10.10.0.1
netmask 255.255.255.0
network 10.10.0.0
broadcast 10.10.0.255

E. Hepsinin çalışması için anahtarlama cihazinda işlem yapılmalıdır. Örnek olarak Alcatel cihaz üzerindeki tanımları vereceğiz.


interface 1/1 alias "LinkAgg 3-1"
interface 1/2 alias "LinkAgg 3-1"

lacp linkagg 3 size 4 admin state enable
lacp linkagg 3 actor admin key 3
lacp agg 1/1 actor admin key 3
lacp agg 1/2 actor admin key 3

vlan 10 802.1q 3
vlan 20 802.1q 3

F. Acaba çalışıyor mu?

Alcatel:

-> show linkagg 3

Dynamic Aggregate
SNMP Id : 40000003,
Aggregate Number : 3,
SNMP Descriptor : Dynamic Aggregate Number 3 ref 40000003 size 4,
Name : ,
Admin State : ENABLED,
Operational State : UP,
Aggregate Size : 4,
Number of Selected Ports : 2,
Number of Reserved Ports : 2,
Number of Attached Ports : 2,
Primary Port : 1/1
LACP
MACAddress : [00:00:01:05:2d:87],
Actor System Id : [00:00:00:00:00:00],
Actor System Priority : 0,
Actor Admin Key : 3,
Actor Oper Key : 3,
Partner System Id : [00:00:00:00:00:00],
Partner System Priority : 0,
Partner Admin Key : 0,
Partner Oper Key : 9

Linux kısmı:


# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.2.5 (March 21, 2008)

Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2 (0)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 200
Down Delay (ms): 200

802.3ad info
LACP rate: slow
Active Aggregator Info:
Aggregator ID: 1
Number of ports: 2
Actor Key: 9
Partner Key: 3
Partner Mac Address: 00:00:01:70:a5:a4

Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:04:0f:e7:90:b6
Aggregator ID: 1

Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:04:0f:e7:90:b7
Aggregator ID: 1

Herşeyin çalıştığını görmüş olduk.

Tüm bu işlemler için starndart kernel kullandığımız varsayılmıştır. Eğer özel bir kernel kullanıyorsak, bonding ve vlan modüllerini eklememiz gerekecektir.

Birleştirme Çeşitleri:

mode olarak geçen birleştirme çeşitleri şöyledir:

  • mode=0
  • Round-robin, yani çalışan arayüzlere sırası ile göndermektedir. Yük paylaşımı ve hata toleransı sağlar.

  • mode=1
  • Aktif-yedek mantığı ile çalışır. Sadece bir arayüz aktiftir. Diğerleri sadece ve sadece asıl olan çalışmaz ise devreye girer. Hata toleransı sağlar.

  • mode=2
  • [(Kaynak MAC adresi XOR hedef MAC adresi) % arayüz sayısı] algoritmasına göre paketleri gönderir. Böylece her hedef için aynı arayüzü seçmiş olur. Yük paylaşımı ve hata toleransı sağlar.

  • mode=3
  • Broadcast çeşididir. Tüm paketleri tüm arayüzlerden gönderir. Hata toleransı sağlar.

  • mode=4
  • IEEE 802.3ad Dynamic link aggregation. Belirtilen standarda göre çalışır. Çalışması için sürücülerinin ethtool desteğinin olması gerekir. Ayrıca anahtarlama cihazı üzerinde de 802.3ad ayarlarının yapılması gerekir.

  • mode=5
  • Bu modda ise toplam yük her arayüzün kendi yüküne göre paylaşılır. Her arayüzün yükü hızına oranla ölçülür. Gelen trafik aktif ilk arayüz tarafından alınır. Eğer bu arayüz çalışmaz ise herhangi diğer bir arayüz aynı MAC adresi ile işlemi devralır. Çalışması için sürücülerinin ethtool desteğinin olması gerekir.

  • mode=6
  • Bu modda ise hem gidiş hemde geliş trafiği yük paylaşımı yapılır ve özel bir anahtarlama cihazı desteği gerektirmez. IPv4 üzerinden bu işlemi gerçekleştirir.

    Tags:
    1. Ömer YÜCE
      Feb 21st, 2010 at 00:17
      Reply | Quote | #1

      Merhabalar hocam.
      Acaba bu anlattıklarını sadece debian içinmi geçerli yoksa ubuntu içinde bunları yapabilirmiyim.
      İyi çalışmalar.

    2. hdemir
      Mar 5th, 2010 at 11:00
      Reply | Quote | #2

      Hayir, bu anlattiklarim tum linux’lar icin gecerlidir. Tabii dosyalarin yerleri belki degisebilir. Ama muhtemelen Ubuntu, Debian türevi olduğu için aynıdır.