Kurumsal Network Kurulumu

LACP Nedir? Link Aggregation ve Port Channel Farkı

LACP nedir, nasıl çalışır? İki switch arasında ölçtüm: kablo kopunca yarım saniye, tek uç susunca 3 ya da 82 saniye. Port channel ve statik bağ farkı.

İlker Pehlivan

LACP (Link Aggregation Control Protocol), iki cihaz arasındaki birden fazla fiziksel bağlantıyı tek bir mantıksal bağlantıda birleştiren ve bunu iki ucun anlaşmasıyla yapan protokoldür. Birleşen bağlantılara port channel ya da link aggregation grubu denir. LACP, gruba hangi portun gireceğine iki uçta birlikte karar verir ve susan bir bağlantıyı gruptan çıkarır. Protokol IEEE 802.1AX standardıdır, eski adıyla 802.3ad.

Bu yazıda iki switch arasında LACP’yi kuruyor ve dört şeyi ölçüyorum:

  1. Kopmayı fark etme. Kablo kopunca ve karşı uç yalnız sustuğunda grup bağlantıyı ne kadar sürede bırakıyor?
  2. Zamanlayıcı. Hızlı ve yavaş zamanlayıcı arasındaki fark kaç saniye?
  3. Uyumsuz uçlar. İki uç pasif kalırsa ya da biri statik kurulursa ne oluyor?
  4. Yük dağıtımı. İki kablo tek bir aktarımı hızlandırıyor mu?

Kümenin benzetmesiyle switch bir süpermarket şubesidir. Spanning Tree yazısında şubenin deposundan satış alanına açılan iki koridoru anlatmıştık: STP ikinci koridorun kapısını kapalı tutar. LACP iki koridoru birlikte açar ve tek bir geniş geçit gibi kullandırır. Depodan çıkan her araba koridorlardan birine verilir. İki uçtaki görevliler de her koridordan düzenli aralıklarla birbirine işaret verir; işaret gelmeyen koridora araba gönderilmez.

LACP benzetmesi: süpermarket şubesinin deposundan açılan iki koridor; soldakinden bir görevli dolu arabayı itiyor ve koridorun ucundaki görevli işaret lambasını kaldırıyor, sağdaki koridorun ucu karanlık ve arabası girişte bekliyor
İki koridor birlikte çalışır; ucundan işaret gelen koridora araba gider, işareti kesilen koridora gitmez. LACP de susan bağlantıyı işaretin kesilmesinden anlar.

Bu yazı kurumsal ağ protokolleri rehberimizin taşıma ve yedeklilik bölümünün ayrıntısıdır ve Kurumsal Network Kurulumu hizmetimizin bir parçasıdır. LACP’yi bir switch’te adım adım kurmayı switch LACP yapılandırması yazımızda anlattık.

LACP Nedir ve Hangi Sorunu Çözer?

İki switch arasına ikinci bir kablo çekmenin iki sebebi olur: kapasite ve yedeklilik. İkinci kablo tek başına ikisini de sağlamaz. İki switch arasındaki iki kablo bir döngü kurar ve STP ikinci kabloyu bloklar; kablo yerinde durur ama yalnız yedekte bekler. Bu davranışı ve nedenini Spanning Tree yazımızın döngü bölümünde ölçtük.

Link aggregation iki kabloyu switch’in gözünde tek bir bağlantıya çevirir. STP artık iki kablo değil, tek bir mantıksal port görür ve bloklayacak bir döngü kalmaz. Kablolardan biri koparsa bağlantı kesilmez, yalnız kapasite düşer. Böylece iki switch arasındaki tek kablo, bir tek hata noktası olmaktan çıkar.

Üç ad aynı konunun farklı katmanlarını anlatır:

  1. Link aggregation tekniğin adıdır: birden fazla fiziksel bağlantıyı tek bir mantıksal bağlantıda toplamak.
  2. Port channel ya da LAG (Link Aggregation Group) sonuçta oluşan arayüzdür. Switch’te Po1 gibi bir adla görünür ve VLAN ayarı üyelere değil bu arayüze yapılır. Cisco dünyasında aynı yapıya EtherChannel denir.
  3. LACP bu grubu kuran anlaşma protokolüdür. Port channel LACP olmadan, iki uca elle yazılarak da kurulabilir; buna statik port channel denir. Aşağıda ikisinin farkını ölçüyorum.

Bağlantıyı yedeklemek, cihazı yedeklemekle aynı iş değildir. LACP iki switch arasındaki kabloları yedekler; ağ geçidi cihazının kendisini yedeklemek başka bir protokolün işidir ve onu VRRP nedir yazımızda ölçtüm.

LACP Nasıl Çalışır? LACPDU, Actor ve Partner

LACP’nin işi bir anlaşmadır ve anlaşma kablonun iki ucundaki portların birbirine gönderdiği küçük çerçevelerle yürür. Bu çerçevelere LACPDU denir. IP kullanmazlar, yönlendirilmezler; hedefleri yalnız kablonun öbür ucunun dinlediği özel bir adrestir (01:80:c2:00:00:02), türleri 0x8809’dur.

Ölçümler için Veri Merkezi’nde iki sanal switch kurdum: vmsw01 ve vmsw02. İkisi de açık kaynak Open vSwitch çalıştırıyor ve aralarında iki bağlantı var. Adlardaki vm, kümenin adlandırma kuralında lokasyon kodudur ve Veri Merkezi’ni gösterir. İki bağlantı LACP’yle tek bir gruba toplandı. vmsw01’in gönderdiği bir LACPDU’yu yakaladım:

Çıktı
20:58:07.866297 LACPv1, length 110
	Actor Information TLV (0x01), length 20
	  System 00:50:56:3a:01:01 (oui Unknown), System Priority 65534, Key 1, Port 2, Port Priority 65535
	  State Flags [Activity, Timeout, Aggregation, Synchronization, Collecting, Distributing]
...
	Partner Information TLV (0x02), length 20
	  System 00:50:56:3a:02:01 (oui Unknown), System Priority 65534, Key 1, Port 2, Port Priority 65535
	  State Flags [Activity, Timeout, Aggregation, Synchronization, Collecting, Distributing]
...
	Collector Information TLV (0x03), length 16
	  Max Delay 0
...
	Terminator TLV (0x00), length 0

Çerçeve iki kimlik taşır. Actor bölümü gönderenin kendisini anlatır. Partner bölümü ise gönderenin karşı uç hakkında bildiklerini aktarır. vmsw01 her çerçevede hem kendini anlatıyor hem de vmsw02’yi doğru tanıdığını söylüyor. Anlaşma bu karşılıklı doğrulamadır.

Satırlardaki alanlar şunlar:

  1. System ve System Priority. Cihazın kimliği. Kimlik bir MAC adresidir; ARP yazımızda anlattığımız donanım adresi. Öncelik, iki uç anlaşmazlığa düştüğünde hangisinin kararının geçerli olacağını belirler.
  2. Key. Portun hangi gruba girebileceğini gösteren anahtar. Aynı anahtarı taşıyan portlar aynı gruba girer.
  3. Port ve Port Priority. Portun numarası ve grupta kalma önceliği.
  4. State Flags. Portun o anki durumu. Activity aktif modda olduğunu, Timeout hızlı zamanlayıcıyı, Synchronization, Collecting ve Distributing ise portun grupta trafik taşıdığını söyler.

Bir port ancak iki taraf da birbirini doğru tanıdığında trafik taşımaya başlar. Tanıma yanlışsa, yani iki kablo farklı cihazlara gidiyorsa ya da anahtarlar uyuşmuyorsa, port gruba girmez. Statik port channel’da bu kontrol yoktur.

LACP Hızlı ve Yavaş Zamanlayıcı: Kopmayı Kim Fark Eder?

Anlaşma kuruldu ve iki kablo trafik taşıyor. Şimdi asıl soru: kablolardan biri çalışmayı bıraktığında ne olur? İlk akla gelen cevap şudur: kablo koparsa port ışığı söner, switch de o portu kendiliğinden gruptan çıkarır. Bu cevap bir durumda doğru, öbüründe değil.

Önce doğru olduğu durumu ölçtüm. Sekiz trafik akışı bağ üzerinden akarken bağlantılardan birini iki uçtan birden kopardım, tıpkı kablo çekilmiş gibi. vmsw01’in bağ durumunu 100 milisaniyede bir kaydettim:

Çıktı
1790542943.811 member port2: enabled
1790542943.999 member port2: disabled

Kabloyu sanal olarak çeken komut döndükten 46 milisaniye sonra port devre dışıydı. O bağlantıya düşen tek akış 186 paket kaybetti, yarım saniyeden az. Burada LACP’nin bir işi yok: iki uçta da bağlantı sinyali kesildi ve switch bunu donanımdan anladı.

Tek Uç Susarsa Port Işığı Yanık Kalır

Zor durum, bağlantının yalnız bir uçta kesilmesidir. İki switch arasına bir medya dönüştürücü girdiyse, bir fiber çiftinin yalnız bir yönü arızalandıysa ya da karşı cihazın yazılımı takıldıysa, bu taraftaki port ışığı yanık kalır. Switch bağlantıyı sağlam sanar ve o kabloya trafik göndermeye devam eder.

Bu durumu kurmak için vmsw02’de bağlantılardan birini kapattım; vmsw01’deki uç açık kaldı. vmsw01 kopmayı ancak vmsw02’den LACPDU gelmeyince anlayabilirdi. Hızlı zamanlayıcıda uçlar saniyede bir LACPDU gönderir ve üç çerçevelik sessizlik, yani 3 saniye, bağlantıyı gruptan düşürür:

Çıktı
1790542752.144 member port2: enabled
1790542752.308 member port2: disabled

vmsw02’nin portu kapattığı an 1790542749.395’ti; vmsw01 bağlantıyı 2,9 saniye sonra gruptan çıkardı. Bu sürede o kabloya düşen altı akış paketlerinin tamamını kaybetti, her biri 1.262 paket. Öbür kablodaki iki akış tek paket kaybetmedi.

Aynı ölçümü yavaş zamanlayıcıyla tekrarladım. Yavaş zamanlayıcıda LACPDU 30 saniyede bir gelir ve bağlantı 90 saniyelik sessizlikten sonra düşer:

Çıktı
1790542872.322 member port2: enabled
1790542872.480 member port2: disabled

Bu kez port 1790542790.873’te kapandı ve vmsw01 bağlantıyı 81,6 saniye sonra bıraktı. Süre 90 değil, çünkü sayaç kopma anında değil son LACPDU’nun geldiği anda başlar; son çerçeve kopmadan yaklaşık 8 saniye önce gelmişti. Yavaş zamanlayıcıyla bu süre 60 ile 90 saniye arasında bir yere düşer. Etkilenen akışların her biri yaklaşık 79 saniye boyunca paketlerini kaybetti.

DurumFark etme süresiKaybın süresi
Kablo koptu, iki uç da bağlantıyı kaybettianında (donanım)yarım saniyeden az
Tek uç sustu, hızlı zamanlayıcı2,9 saniyeyaklaşık 3 saniye
Tek uç sustu, yavaş zamanlayıcı81,6 saniyeyaklaşık 79 saniye

Benzetme burada kopuyor. Markette koridorun karşı ucu tıkansa görevli bunu gözüyle görür. Switch göremez; tıkanıklığı yalnız karşıdan gelen işaretin kesilmesinden anlar ve bunun ne kadar süreceğini zamanlayıcı belirler.

Pratik sonuç şudur: tek uç susma durumunu port ışığı yakalamaz. Port channel’da onu LACP’nin zamanlayıcısı yakalar ve ne kadar sürede yakalayacağını zamanlayıcının hızı belirler. Lab switch’imde portların LACP zaman aşımı fabrikadan LONG, yani yavaş geliyor. Hızlı zamanlayıcı iki uçta da açılmalıdır; switch’te bunun nasıl yapıldığını switch LACP yapılandırması yazımızda gösterdim.

LACP Aktif ve Pasif Mod: İki Uç Susarsa Bağ Kurulmaz

Zamanlayıcı, konuşan iki ucun ne sıklıkla konuştuğunu belirler. Kimin konuşmayı başlatacağını ise mod belirler. Aktif modda port LACPDU’yu kendisi gönderir. Pasif modda yalnız karşıdan LACPDU gelirse cevap verir.

İki switch’teki bağı silip ikisini de pasif modda sıfırdan kurdum. 15 saniye sonra vmsw01’in LACP durumu şöyleydi:

Çıktı
lacp_status: configured
member port1: disabled
member port2: disabled
  status: passive

İki port da devre dışı, grup kurulmamış. Aynı sürede bağlantı üzerinden tek bir LACPDU geçmedi: iki uç da karşıdan bir çerçeve bekledi ve hiçbiri ilk adımı atmadı. Trafik de geçmedi. vmsw01’i aktif moda aldığımda grup birkaç saniye içinde kuruldu ve trafik akmaya başladı.

Kural basittir. Uçlardan en az biri aktif olmalıdır; ikisini birden aktif yapmak en güvenli seçimdir. Lab switch’imde pasif mod hiç yok; port channel’a yalnız aktif ya da statik olarak girilebiliyor. Pasif mod, karşı uç pasif modu destekleyen bir cihaz olduğunda önem kazanır.

LACP ile Statik Port Channel Farkı: Uyumsuz Uçlar Kesinti Verir

Pasif mod en azından iki ucun da LACP konuştuğu bir yanlışlıktır. Daha da kötü senaryo, uçlardan birinin hiç LACP konuşmamasıdır. vmsw01 aktif LACP’de kaldı, vmsw02’yi LACP’siz, statik bir gruba çevirdim. 10 saniye sonra iki taraf durumu farklı gördü:

Çıktı
lacp_status: configured
member port1: disabled
member port2: disabled
  status: active
Çıktı
lacp_status: off
member port1: enabled
member port2: enabled

İlk çıktı vmsw01’in: karşı taraftan LACPDU gelmediği için iki portu da devre dışı bıraktı. İkincisi vmsw02’nin: statik grup anlaşma beklemediği için iki portu da çalışıyor sanıyor ve trafiği gönderiyor. Sonuç tam kesintiydi; iki switch arasındaki 10 ping’in hiçbiri geçmedi.

Bazı switch’ler bu durum için bir geri düşme ayarı sunar: LACP ucu karşısında LACP bulamazsa bağlantılardan birini tek başına açar. Sanal lab switch’inde bu ayarı açtım ve kesinti yine sürdü. vmsw01 kendi seçtiği bağlantıdan dinliyordu, vmsw02 ise trafiği öteki bağlantıdan gönderiyordu. Geri düşme ayarı iki ucun aynı kabloyu seçeceğini garanti etmez.

LACP port channelStatik port channel
Kurulumİki uç anlaşırİki uca elle yazılır
Yanlış kablolamaAnahtar ve kimlik uyuşmazsa port gruba girmezFark edilmez
Tek uç susarsaZamanlayıcıyla fark edilir (lab’da 2,9 ya da 81,6 sn)Grup bunu fark etmez, çünkü anlaşma çerçevesi yoktur
Karşı uç LACP konuşmuyorsaPortlar devre dışı kalırKarşı taraf LACP bekliyorsa kesinti

İki switch de LACP konuşabiliyorsa statik grubu seçmek için bir sebep kalmaz. Statik grup, karşı uç LACP konuşamadığında, örneğin eski bir cihazda başvurulan bir çaredir.

LACP Yük Dağıtımı: Tek Akış Tek Kablodan Geçer

Kopmalar ve uyumsuzluklar bağın güvenilirliğiyle ilgiliydi. Son soru kapasiteyle ilgili: iki kablo bir aktarımı iki kat hızlandırır mı? Switch her çerçeveyi kablolardan birine bir hesapla verir. Hesap çerçevenin adreslerinden ve portlarından bir sayı üretir; aynı akışa ait çerçeveler hep aynı sayıyı, dolayısıyla aynı kabloyu alır. Bu sayede çerçeveler karşı uca sırası bozulmadan varır.

Bunu iki switch arasındaki bağlantı sayaçlarında ölçtüm. Önce tek bir TCP akışı 8 saniye boyunca veri gönderdi:

Kablo 1Kablo 2
Tek akış, 8 sn2.959.287.446 bayt1.324 bayt
Sekiz akış, 8 sn1.403.672.750 bayt1.447.407.147 bayt

Tek akış 2,96 GB veriyi baştan sona aynı kablodan geçirdi; öteki kablo yalnız LACPDU’ları taşıdı. Sekiz akışta iki kablo da kullanıldı ve bu turda yük neredeyse eşit bölündü. Aynı ölçümü iki kez daha tekrarladım ve birinci kablonun payı üç turda yüzde 49, 39 ve 75 oldu.

Hesap akışları kablolara dağıtır, baytları değil. Hangi akışın hangi kabloya düşeceği bağlantının port numarasına bağlı olduğu için her denemede farklı bir dağılım çıkar. Sanal kartlarda hız sayıları anlamsız olduğu için yalnız bayt dağılımını veriyorum.

Hesabın hangi alanlara bakacağı bir ayardır. Lab switch’im fabrika ayarında MAC adreslerine bakıyor. Bu durumda iki cihaz arasındaki bütün trafik, örneğin bir sunucu ile yedekleme sunucusu arasındaki bütün bağlantılar, tek bir kablodan geçer. IP adresini ve TCP ya da UDP portunu da hesaba katan bir ayar yükü daha iyi dağıtır; switch’te bu seçimi switch LACP yapılandırması yazımızda gösterdim.

İki kablonun kazancı bu yüzden tek bir büyük aktarımın hızı değil, çok sayıda eş zamanlı akışın toplam kapasitesi ve yedekliliktir. Tek akışlı bir aktarımı hızlandırmak istiyorsanız iki kablo yetmez; daha hızlı tek bir bağlantı gerekir.

LACP Kurarken Sık Yapılan Hatalar

Bağ kurulmuyor, beklenen kapasite gelmiyor ya da kopma geç fark ediliyorsa önce şunlara bakın:

  • Yavaş zamanlayıcıda bırakmak. Tek uç sustuğunda lab’da kopma 81,6 saniye fark edilmedi; hızlı zamanlayıcıyla 2,9 saniye.
  • İki ucu pasif bırakmak. Kimse ilk çerçeveyi göndermez, bağ hiç kurulmaz.
  • Bir ucu LACP, öbürünü statik kurmak. LACP ucu portları kapatır, statik uç trafiği gönderir; sonuç tam kesintidir.
  • VLAN ayarını üyelere yapmak. Trunk ve VLAN ayarı port channel arayüzüne yapılır; üyeler gruba girince o ayarı taşır. Trunk’ın ne olduğunu VLAN yazımızın access ve trunk bölümünde anlattık.
  • İki kabloyu iki kat hız sanmak. Tek akış tek kablodan geçer.
  • Kabloları farklı cihazlara takmak. Bir kablo karşıda başka bir switch’e gidiyorsa LACP o portu gruba almaz; statik grupta aynı hata sessiz kalır.

Sonuç: LACP İki Kabloyu Birleştirir, Susanı Zamanlayıcı Yakalar

LACP, iki cihaz arasındaki kabloları tek bir port channel’da birleştiren ve bunu iki ucun karşılıklı anlaşmasıyla yapan standart protokoldür. İki switch arasındaki ikinci kabloyu STP’nin yedekte beklettiği bir yol olmaktan çıkarır, trafik taşıyan bir bağlantıya çevirir. Lab’da kablo koptuğunda grup bağlantıyı yarım saniyeden kısa sürede bıraktı.

Asıl değer, bağlantının yalnız bir uçta sustuğu durumda ortaya çıkar. Bu durumu port ışığı göstermez; port channel’da onu LACP’nin zamanlayıcısı yakalar. Lab’da hızlı zamanlayıcı 2,9 saniyede, yavaş zamanlayıcı 81,6 saniyede yakaladı. Uçlardan biri aktif olmazsa ya da biri LACP konuşmazsa bağ hiç kurulmaz.

Girişteki benzetmeye dönersek: switch, deposundan satış alanına açılan iki koridoru birlikte kullanan bir süpermarket şubesidir ve koridorlar kablolardır. Gerçek bir markette tıkanan koridor gözle görülür; switch’te tek haber kaynağı iki uçtaki görevlilerin birbirine verdiği işarettir: LACPDU. Bu işaretin ne sıklıkla verileceğini, yani hızlı ya da yavaş zamanlayıcıyı, sizin seçmeniz gerekir.

LACP’nin switch kurulumundaki yeri switch yapılandırma rehberimizde duruyor. Gruba giren portların kapısını açık tutan, ikinci kabloyu döngü sanmasın diye STP’nin nasıl davrandığını Spanning Tree yazımızda anlattık.

LACP Hakkında Sık Sorulan Sorular

Aynı şey değil. Port channel, birden fazla fiziksel bağlantının switch'te tek bir mantıksal arayüz olarak görünmesidir. LACP ise bu grubun iki uçta anlaşmayla kurulmasını sağlayan protokoldür. Port channel LACP olmadan, statik olarak da kurulabilir. Lab'da bir ucu LACP, öbürü statik kurduğumda bağ hiç kurulmadı ve trafik tamamen kesildi.
Toplam kapasiteyi artırır ama tek bir bağlantının hızını artırmaz. Her akış bağlantılardan yalnız birine verilir. Lab'da tek bir TCP akışı 2,96 GB veriyi baştan sona aynı kablodan geçirdi, öteki kablo yalnız LACP çerçevelerini taşıdı. Sekiz akışta iki kablo da kullanıldı, ama dağılım her denemede değişti: üç denemede birinci kablonun payı yüzde 49, 39 ve 75 oldu.
Hızlı zamanlayıcıda uçlar saniyede bir LACP çerçevesi gönderir ve 3 saniye sessizlikte bağlantıyı gruptan çıkarır. Yavaşta çerçeve 30 saniyede bir gelir, sınır 90 saniyedir. Lab'da bir uç sustuğunda karşı taraf bunu hızlı zamanlayıcıyla 2,9 saniyede, yavaşla 81,6 saniyede fark etti. Lab switch'im fabrikadan yavaş zamanlayıcıyla geliyor.
Aktif uç LACP çerçevesini kendisi gönderir, pasif uç yalnız karşıdan çerçeve gelirse cevap verir. Bir uç aktifse bağ kurulur. İki uç da pasifse kimse konuşmaz: lab'da sıfırdan pasif kurduğum bağda 15 saniyede tek bir LACP çerçevesi geçmedi ve iki port da devre dışı kaldı. Bazı switch'lerde pasif mod hiç yoktur.
İlker Pehlivan
Yazan

BT Danışmanı | Ağ, Sistem ve Güvenlik Yönetimi

İlker Pehlivan, karmaşık BT altyapılarını ölçeklenebilir ve güvenli sistemlere dönüştürür. Buradaki rehberleri kendi laboratuvarında kurup ölçerek yazar.

LinkedIn

Benzer Makaleler

Kurumsal Network Kurulumu altındaki diğer 114 makale