شبکه / سوییچینگ

LACP و EtherChannel: تجمیع لینک

LACP چند لینک فیزیکی را به یک لینک منطقی تبدیل می‌کند؛ پهنای باند بیشتر، ادامه‌ی ارتباط با قطع یک کابل، توزیع ترافیک، کانفیگ Cisco و لینوکس و خطاهای رایج.

نوشته‌ی تیم پیکوگاید آخرین بازبینی فنی: ۴ دقیقه مطالعه
در این صفحه
  1. یک نکته که همه را غافلگیر می‌کند
  2. حالت‌های تشکیل گروه
  3. پیش نیازها
  4. کانفیگ روی Cisco
  5. کانفیگ روی سرور لینوکس (Netplan)
  6. اتصال به دو سوییچ
  7. خطاهای رایج

تجمیع لینک (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.1

mode: 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 آن را پخش نمی‌کند.

منابع

  1. Link aggregation (Wikipedia) en.wikipedia.org
  2. Netplan documentation — YAML configuration netplan.readthedocs.io