LACP و EtherChannel: تجمیع لینک
LACP چند لینک فیزیکی را به یک لینک منطقی تبدیل میکند؛ پهنای باند بیشتر، ادامهی ارتباط با قطع یک کابل، توزیع ترافیک، کانفیگ Cisco و لینوکس و خطاهای رایج.
در این صفحه
تجمیع لینک (link aggregation) چند پورت فیزیکی را به یک لینک منطقی تبدیل میکند. دو لینک ۱۰ گیگابیتی بین دو سوییچ، یک لینک ۲۰ گیگابیتی میشوند، و اگر یکی از کابلها قطع شود، ارتباط با پهنای باند کمتر ادامه پیدا میکند. LACP پروتکل استانداردی است که دو طرف با آن توافق میکنند کدام پورتها عضو گروهاند. Cisco به این گروه EtherChannel یا Port-channel میگوید.
یک نکته که همه را غافلگیر میکند
سوییچ برای هر فریم یک hash از آدرسها (MAC، IP یا پورت) حساب میکند و بر اساس آن لینک عضو را انتخاب میکند. همهی فریمهای یک ارتباط hash یکسان دارند، پس ترتیبشان به هم نمیخورد. اگر ترافیک بیشتر بین دو دستگاه ثابت باشد، hash بر اساس MAC همه را روی یک لینک میفرستد؛ برای توزیع بهتر، hash را بر اساس IP و پورت تنظیم کنید.
حالتهای تشکیل گروه
| حالت در Cisco | معنی |
|---|---|
active |
LACP؛ خودش مذاکره را شروع میکند |
passive |
LACP؛ فقط به مذاکره جواب میدهد |
on |
بدون پروتکل؛ گروه اجباری |
desirable و auto |
PAgP، پروتکل اختصاصی Cisco |
حداقل یکی از دو طرف باید active باشد؛ دو طرف passive هیچ وقت گروه نمیسازند. حالت on را استفاده نکنید: اگر طرف مقابل درست تنظیم نشده باشد، هیچ پیامی برای تشخیص خطا وجود ندارد و ممکن است loop بسازد.
پیش نیازها
همهی پورتهای یک گروه باید در هر دو طرف یکسان باشند:
- سرعت و duplex یکسان.
- حالت یکسان (همه access یا همه trunk).
- VLAN یکسان؛ برای trunk، فهرست VLANهای مجاز و native VLAN یکسان.
کانفیگ روی Cisco
interface range TenGigabitEthernet1/1/1 - 2
description Uplink-to-Core
channel-group 1 mode active
interface Port-channel1
switchport mode trunk
switchport trunk allowed vlan 10,20,30تنظیمات VLAN را روی Port-channel1 انجام دهید؛ سوییچ آنها را روی پورتهای عضو اعمال میکند. روش hash را در کل سوییچ تعیین کنید:
port-channel load-balance src-dst-ipبررسی:
show etherchannel summary
show lacp neighborدر خروجی show etherchannel summary، پرچم P یعنی پورت عضو فعال گروه است، I یعنی پورت به تنهایی کار میکند (LACP از طرف مقابل جوابی نگرفته) و s یعنی پورت به دلیل ناهمخوانی تنظیمات کنار گذاشته شده است.
کانفیگ روی سرور لینوکس (Netplan)
برای اتصال یک سرور با دو کارت شبکه به سوییچ با LACP:
network:
version: 2
ethernets:
eno1: {}
eno2: {}
bonds:
bond0:
interfaces: [eno1, eno2]
parameters:
mode: 802.3ad
lacp-rate: fast
transmit-hash-policy: layer3+4
addresses: [10.20.2.10/25]
routes:
- to: default
via: 10.20.2.1mode: 802.3ad همان LACP است. transmit-hash-policy: layer3+4 ترافیک خروجی سرور را بر اساس IP و پورت توزیع میکند. عدد ۳ و ۴ در layer3+4 به لایههای مدل OSI اشاره دارد. روی سوییچ، دو پورت متصل به این سرور را در یک Port-channel با حالت active قرار دهید.
اتصال به دو سوییچ
LACP عادی فقط بین دو دستگاه کار میکند. اگر بخواهید یک سرور به دو سوییچ مختلف وصل شود و با خرابی کامل یک سوییچ هم ارتباطش قطع نشود، دو سوییچ باید خودشان را یک دستگاه نشان دهند؛ با stack، StackWise Virtual، vPC در Nexus یا MLAG در سوییچهای دیگر.
خطاهای رایج
یکی از پورتها suspended است. تنظیمات آن پورت (VLAN، سرعت یا حالت trunk) با بقیهی گروه فرق دارد. تنظیمات را فقط روی Port-channel انجام دهید و پورت را از گروه خارج و دوباره اضافه کنید.
گروه تشکیل نمیشود. یک طرف on و طرف دیگر LACP است، یا هر دو passive. هر دو طرف را active کنید.
یک لینک پر و لینک دیگر خالی است. روش hash برای ترافیک شما مناسب نیست؛ src-dst-ip یا ترکیب IP و پورت را امتحان کنید. اگر ترافیک فقط بین دو دستگاه است، هیچ روش hash آن را پخش نمیکند.
منابع
- Link aggregation (Wikipedia) en.wikipedia.org
- Netplan documentation — YAML configuration netplan.readthedocs.io