0 Members and 1 Guest are viewing this topic.

AuthorTopic: ทำความรู้จักและตั้งค่า EtherChannel บน Cisco Catalyst Switch  (Read 1792 times)

Offline admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 725
  • Total Like : 0
    • https://www.facebook.com/pages/Phuket-ITcom/148070628616802
    • https://www.youtube.com/channel/UCq5x3hDkhcqJU4QXOE5adTQ
    • Email
« on: 03, 03, 2014, 13:34:09 »
ทำความรู้จักและตั้งค่า EtherChannel บน Cisco Catalyst Switch
Configure EtherChannel on Cisco Catalyst Switch



          EtherChannel หรือที่เรียกว่า Link Aggregation นั้นเป็นคุณสมบัติที่ทำให้สามารถรวมหลาย ๆ อินเทอร์เฟสแบบ Physical เข้าด้วยกันเป็นอินเทอร์เฟสแบบ Logical เพียงอันเดียวได้ ใช้เพื่อแก้ปัญหาความคับคั่ง (Congestion) ในการใช้งานระบบเครือข่าย หรือใช้แก้ปัญหาเมื่อมีปริมาณการใช้งานระบบเครือข่ายมากเกินไปจนทำให้การรับ-ส่งข้อมูลทำได้ช้า เสมือนเป็นการเพิ่มเส้นทางข้อมูลขึ้น จากเส้นทางเดียวเป็นหลาย ๆ เส้นทาง เพื่อที่จะทำการ Shared Traffic ไปในหลาย ๆ เส้นทางนั่นเอง พร้อมทั้งยังเป็นการทำ Redundant ในกรณีที่มีบาง Link ที่เป็นสมาชิกของ EtherChannel เกิดมีปัญหาขึ้นมาได้อีกด้วย

          การใช้งาน EtherChannel นี้ สามารถใช้งานได้ทั้งบน Switch, Router หรือ Server ก็ได้ แต่ในวันนี้ จะขอแนะนำการตั้งค่าบน Cisco Catalyst Switch เพียงอย่างเดียวก่อนนะครับ แต่ก่อนที่จะเข้าสู่เนื้อหา ขอเคลียร์ความเข้าใจผิดบางอย่างที่เคยได้ยินมาก่อนนะครับ ว่าเจ้า EtherChannel เนี่ย เป็นการเพิ่ม Bandwidth ในการส่งข้อมูลไปยังปลายทาง ซึ่งขอบอกไว้ตรงนี้เลยนะครับ ว่าไม่จริง แต่จะด้วยเหตุผลใด ก็ขอให้เพื่อน ๆ ติดตามบทความนี้ดูนะครับ

          ที่ว่า EtherChannel ไม่ได้เป็นการเพิ่ม Bandwidth นั้นก็เนื่องมาจาก ในการส่งข้อมูลไปยังอุปกรณ์ฝั่งตรงข้ามของ EtherChannel นั้น จะมีการเลือกเส้นทางที่จะใช้ส่งข้อมูลตามเงื่อนไขเพียงเส้นทางเดียวเท่านั้น เพราะฉะนั้น ถ้าแต่ละเส้นทางมี Bandwidth เท่ากับ 100 Mb เมื่อทำ EtherChannel โดยใช้ 2 Link แล้ว Bandwidth ก็ไม่ได้เพิ่มเป็น 200 Mb แต่อย่างใด (เนื่องจากในแต่ละ Link ก็ยังมี Bandwidth เท่ากับ 100 Mb เช่นเดิม) ในการที่จะใช้งาน EtherChannel ให้ได้เห็นผลลัพธ์อย่างชัดเจนนั้น จึงจะต้องใช้กับระบบเครือข่ายที่มีความคับคั่ง (Congestion) ที่ค่อนข้างสูง เพื่อที่จะได้ใช้ EtherChannel นี้ไปช่วยในการ Shared Load เพื่อลดค่า Congestion ลง ซึ่งถ้านำ EtherChannel ไปใช้กับเครือข่ายที่ไม่ได้มีการใช้งานในปริมาณที่มากแล้ว ก็อาจจะไม่เห็นความแตกต่างในการใช้งานเท่าไร แต่ประโยชน์ของ EtherChannel นั้นยังมีมากกว่าการลดค่า Congestion ลง นั่นก็คือเป็นการสำรองเส้นทางระหว่างอุปกรณ์ที่ใช้ในการทำ EtherChannel ทั้งสองฝั่งนั่นเอง ถ้าเกิดกรณีที่ Link ใดมีปัญหาขึ้นมา ก็ยังมี Link อื่น ๆ ที่สามารถใช้ในการส่งข้อมูลต่อไปได้นั่นเอง

          สำหรับเงื่อนไขที่นำมาใช้ในการตัดสินใจว่าจะส่ง Packet ไปในเส้นทางใดนั้น สามารถเลือกได้จาก Mac Address, IP Address หรือ Layer 4 Port Number และสามารถกำหนดได้ทั้ง Source, Destination หรือทั้ง Source และ Destination มาใช้ในการคำนวนเพื่อที่จะตัดสินใจว่าจะส่ง Packet ไปในเส้นทางใดได้ โดยเมื่อทำการเลือกเงื่อนไขใดแล้วเงื่อนไขนั้นก็จะนำไปใช้กับทุก ๆ EtherChannel ที่มีการใช้งานอยู่บนสวิตซ์ตัวนั้น และการที่จะเลือกว่าจะใช้เงื่อนไขใดก็ควรพิจารณาตามแต่ละสถานการณ์ไป เช่น ถ้าปลายทางที่จะส่งข้อมูลไปมีเพียงแห่งเดียว โดยอาจจะเป็น Server เพียงตัวเดียว ก็จะมี Mac Address เดียว ถ้าใช้เงื่อนไข Destination Mac Address ในการพิจารณา Packet ก็จะถูกส่งไปในเส้นทางเดียวเสมอ ซึ่งถ้าใช้เงื่อนไข Source Mac Addrss ในการพิจารณาเลือกเส้นทางก็จะให้ผลลัพธ์ในการทำ Load Sharing ที่ดีกว่า (โดย Default สวิตซ์จะพิจารณาเลือกเส้นทางจาก Source Mac Address)

          เมื่อได้ทำการกำหนดเงื่อนไขแล้ว สวิตซ์จะนำข้อมูลตามที่กำหนดในเงื่อนไขมาประมวลผลโดยใช้ Hash Algorithm ที่เป็นแบบเฉพาะของแต่ละโปรโตคอล เพื่อที่จะใช้ในการเลือกว่าจะส่ง Packet นี้ไปในอินเทอร์เฟสใดที่เป็นสมาชิกของ EtherChannel นี้ โดยผลลัพธ์ของการประมวลผล จะออกมาเป็นค่าตั้งแต่ 0 ถึง 7 นี่จึงเป็นเหตุผลที่ทำให้แต่ละ EtherChannel สามารถมีอินเทอร์เฟสที่เป็นสมาชิกได้สูงสุดเพียง 8 อินเทอร์เฟสเท่านั้น โดยในแต่ละอินเทอร์เฟสนั้นจะมีหน้าที่รับผิดชอบค่า Hash อย่างน้อย 1 ค่า คือถ้าใช้ EtherChannel 8 อินเทอร์เฟส แต่ละอินเทอร์เฟสก็จะรับผิดชอบค่า Hash ที่คำนวนออกมาอินเทอร์เฟสละ 1 ค่า แต่ถ้าใช้ EtherChannel 4 อินเทอร์เฟส แต่ละอินเทอร์เฟสก็จะรับผิดชอบค่า Hash อินเทอร์เฟสละ 2 ค่า เป็นต้น



          จากตารางด้านบน เป็นการแสดงจำนวนของอินเทอร์เฟสและจำนวนของค่า Hash ที่แต่ละอินเทอร์เฟสต้องรับผิดชอบ ซึ่งจะเห็นว่าในการที่จะทำ EtherChannel ให้ได้ประสิทธิภาพสูงสุดนั้น ก็ควรที่จะใช้ 2, 4 หรือ 8 อินเทอร์เฟส ในการทำ EtherChannel เนื่องจากจะทำให้แต่ละอินเทอร์เฟสมีหน้าที่รับผิดชอบค่า Hash ในจำนวนที่เท่า ๆ กัน

          อินเทอร์เฟส EtherChannel นั้น สามารถทำงานได้ทั้งในระดับ Layer 2 (switch port) และ Layer 3 (route port) และจำนวนสูงสุดที่สามารถใช้งานอินเทอร์เฟส EhterChannel ได้นั้นก็ขึ้นอยู่กับสวิตซ์ในแต่ละรุ่นไปครับ  โดยในการทำงานจะมีโปรโตคอลที่ใช้ในการทำ EtherChannel ให้เลือกใช้ ดังนี้ครับ

PAgP – เป็น Cisco Proprietary อุปกรณ์ทั้ง 2 ฝั่งที่ทำการตั้งค่า EtherChannel จะต้องเป็นอุปกรณ์ Cisco ที่รองรับ PAgP เท่านั้น
LACP – เป็นมาตรฐาน IEEE 802.3ad Standard ซึ่งเป็นมาตรฐานของการทำ Link Aggregation โดย LACP จะสามารถสร้าง standby port ได้อีก 8 port เพิ่มเติม
          และในการที่จะเลือกโปรโตคอลใดในการทำ EtherChannel นั้น ก็จะต้องไปทำการเลือกโหมดภายในแต่ละอินเทอร์เฟสเอาครับ โดยจะมีโหมดการทำงานให้เลือกดังนี้ครับ

Active (LACP) อินเทอร์เฟสที่ตั้งค่าในโหมดนี้จะเป็นฝ่ายเริ่มต้นเจรจาในการทำ EtherChannel แบบ LACP โดยอุปกรณ์ฝั่งตรงข้ามจะต้องทำงานในโหมด Active หรือ Passive เท่านั้น
Passive (LACP) อินเทอร์เฟสที่ตั้งค่าในโหมดนี้จะไม่เป็นฝ่ายเริ่มเจรจา แต่จะรอรับ LACP Packet จากอุปกรณ์ฝั่งตรงข้าม เพื่อที่จะสร้าง EtherChannel ในแบบ LACP โดยอุปกรณ์ฝั่งตรงข้ามจะต้องทำงานในโหมด Active เท่านั้น
Desirable (PAgP) อินเทอร์เฟสที่ตั้งค่าในโหมดนี้จะเป็นฝ่ายเรื่มต้นเจรจาในการทำ EtherChannel แบบ PAgP โดยอุปกรณ์ฝั่งตรงข้ามจะต้องทำงานในโหมด Desirable หรือ Auto เท่านั้น
Auto (PAgP) อินเทอร์เฟสที่ตั้งค่าในโหมดนี้จะไม่เป็นฝ่ายเริ่มเจรจา แต่จะรอรับ PAgP Packet จากอุปกรณ์ฝั่งตรงข้าม เพื่อที่จะสร้าง EtherChannel ในแบบ PAgP โดยอุปกรณ์ฝั่งตรงข้ามจะต้องทำงานในโหมด Desirable เท่านั้น
on เป็นการบังคับให้อินเทอร์เฟสนี้เป็น EtherChannel โดยไม่ต้องมีการเจรจาแลกเปลี่ยน PAgP และ LACP Packet กัน โดยอุปกรณ์ฝั่งตรงข้ามจะต้องทำงานในโหมด on เท่านั้น ถ้าอยู่ในโหมดอื่น ๆ อินเทอร์เฟสของอุปกรณ์ฝั่งตรงข้ามจะอยู่ในสถานะ errdisable
off เป็นการป้องกันไม่ให้มีการทำ EtherChannel ในอินเทอร์เฟสนี้



          เอาล่ะครับ เมื่อทำความรู้จักกับ EtherChannel กันไปแล้ว เราก็มาเริ่มดูตัวอย่างการตั้งค่ากันเลยดีกว่านะครับ และสำหรับตัวอย่างการตั้งค่าในวันนี้นั้นก็จะมีการทำ EtherChannel ทั้งในระดับ Layer 2 และ Layer 3 เลยนะครับ เรามาดูขั้นตอนและตัวอย่างการตั้งค่า EtherChannel ในระดับ Layer 2 กันก่อนเลยดีกว่าครับ

ขั้นตอนการตั้งค่า EtherChannel ในระดับ Layer 2

ตรวจสอบว่าอินเทอร์เฟสที่จะเป็นสมาชิกของ EtherChannel ทำงานในโหมด switchport (Layer 2)
ทำการสร้างอินเทอร์เฟส Port-Channel ขึ้นมา
ทำการกำหนดให้อินเทอร์เฟสเป็นสมาชิกของ Port-Channel ที่สร้างขึ้นมานี้
ทำการตั้งค่าอื่น ๆ ที่ใช้งานบนอินเทอร์เฟส Port-Channel
(ทางเลือก)ทำการปรับแต่งค่า EtherChannel Load-Balance
          เอาล่ะครับ เรามาเริ่มดูตัวอย่างการตั้งค่า EtherChannel ในระดับ Layer 2 กันเลยดีกว่านะครับ สำหรับตัวอย่างในวันนี้นั้นจะกำหนดให้อินเทอร์เฟส FastEthernet 0/1  และ FastEthernet 0/2 ของสวิตซ์ทั้งสองตัวนี้เป็นสมาชิกของ EtherChannel นะครับ ในอันดับแรกเราก็ต้องทำการตรวจสอบกันก่อนนะครับว่าอินเทอร์เฟส Fa0/1 และ Fa0/2 นี้ทำงานอยู่ในโหมด switchport หรือไม่ แต่ถ้าไม่แน่ใจก็ให้ใช้คำสั่ง switchport ในแต่ละอินเทอร์เฟสไปก็ได้ครับ

ตัวอย่าง
switch-01(config)#interface FastEthernet 0/1
switch-01(config-if)#switchport
switch-01(config-if)#exit
switch-01(config)#interface FastEthernet 0/2
switch-01(config-if)#switchport
switch-01(config-if)#exit

          เมื่อทำการตรวจสอบเรียบร้อยแล้วว่าอินเทอร์เฟสทั้งสองทำงานในโหมด switchport (Layer 2) จากนั้นก็ให้ทำการสร้างอินเทอร์เฟส Port-Channel ขึ้นมาครับ โดยการใช้คำสั่ง "interface Port-channel <number>" ครับ

ตัวอย่าง
switch-01(config)#interface Port-channel 1
switch-01(config-if)#exit

          เมื่อทำการสร้าง Port-channel ขึ้นมาแล้ว จากนั้นก็ให้เข้าไปทำการตั้งค่าบนอินเทอร์เฟสที่เราต้องการที่จะให้เป็นสมาชิกของ Port-channel นี้กันเลยนะครับ โดยเราจะต้องทำการเลือกโหมดและโปรโตคอลที่จะใช้ในการทำ EtherChannel ด้วยครับ โดยถ้าใช้กับอุปกรณ์ Cisco เพียงอย่างเดียวก็สามารถใช้ PAgP ได้ครับ แต่ถ้ามีการใช้งานร่วมกับอุปกรณ์อื่นด้วยก็แนะนำให้ใช้เป็น LACP นะครับ ในการที่จะทำการกำหนดให้อินเทอร์เฟสนี้เป็นสมาชิกของ Port-Channel ที่เราต้องการก็สามารถทำได้ด้วยการใช้คำสั่ง "channel-group <number> mode <active|auto|desirable|on|passive>" โดยที่หมายเลขที่ทำการระบุไปนี้จะต้องตรงกับหมายเลขของ Port-channel ที่เราทำการสร้างขึ้นมาในขั้นตอนที่ผ่านมานะครับ

ตัวอย่าง
switch-01(config)#interface range FastEthernet 0/1-2
switch-01(config-if-range)#channel-group 1 mode desirable
switch-01(config-if-range)#exit

          เพียงเท่านี้อินเทอร์เฟสทั้งสอง ก็จะเป็นสมาชิกของ Port-Channel 1 เรียบร้อยแล้วครับ และหลังจากนี้การตั้งค่าทุก ๆ อย่าง ที่ต้องการทำบนอินเทอร์เฟสทั้งสองนี้ ก็ให้ไปทำการตั้งค่าบน interface Port-channel 1 ได้เลยนะครับ ไม่ว่าจะเป็นการตั้งค่า Trunk หรืออื่น ๆ ครับ

ตัวอย่าง
switch-01(config)#interface Port-channel 1
switch-01(config-if)#switchport trunk encapsulation dot1q
switch-01(config-if)#switchport mode trunk
switch-01(config-if)#switchport trunk native vlan 99
switch-01(config-if)#exit

          และเมื่อทดลอง show running-config ดูก็จะพบว่าบนอินเทอร์เฟสทั้งสองที่เป็นสมาชิกของ Port-channel นี้ก็จะได้รับการตั้งค่าไปโดยอัตโนมัติด้วยครับ

ตัวอย่าง
switch-01#show running-config
!
interface FastEthernet0/1
channel-group 1 mode desirable
switchport trunk native vlan 99
switchport trunk encapsulation dot1q
switchport mode trunk
!
interface FastEthernet0/2
channel-group 1 mode desirable
switchport trunk native vlan 99
switchport trunk encapsulation dot1q
switchport mode trunk
!

          และเราก็สามารถที่จะกำหนดเงื่อนไขที่จะใช้พิจารณาว่าจะทำการส่ง Packet ไปในเส้นทางใด ซึ่งโดย Default นั้นจะใช้ source mac address เป็นเงื่อนไขในการพิจารณานะครับ ซึ่งเราก็สามารถที่จะเปลี่ยนไปใช้เงื่อนไขอื่น ๆ ได้ ตามความเหมาะสมของการใช้งาน ด้วยการใช้คำสั่ง "port-channel load-balance" ใน global configuration mode นะครับ

ตัวอย่าง
switch-01(config)#port-channel load-balance dst-mac

         และเมื่อทำการตั้งค่าบนสวิตซ์ตัวแรกเสร็จแล้ว เราก็จะต้องไปทำการตั้งค่าบนสวิตซ์อีกฝั่งด้วยนะครับ ซึ่งหลัก ๆ การตั้งค่าก็จะคล้าย ๆ กัน จึงจะไม่ขอทำตัวอย่างให้ดูนะครับ

ขั้นตอนการตั้งค่า EtherChannel ในระดับ Layer 3

ตรวจสอบอินเทอร์เฟสที่เป็นสมาชิกของ EtherChannel ว่าเป็น route port หรือ no switchport (Layer 3)
สร้างอินเทอร์เฟส Port-Channel ขึ้นมา และทำการกำหนดให้ Port-Channel นั้นทำงานในระดับ Layer 3
ทำการกำหนดให้อินเทอร์เฟสเป็นสมาชิกของ Port-Channel ที่สร้างขึ้นมานี้
ทำการตั้งค่าอื่น ๆ ที่ใช้งานบนอินเทอร์เฟส Port-Channel
(ทางเลือก)ทำการปรับแต่งค่า EtherChannel Load-Balance
          สำหรับขั้นตอนการตั้งค่า EtherChannel ในระดับ Layer 3 นี้จริง ๆ แล้วก็จะเหมือนกันกับการตั้งค่า EtherChannel ในระดับ Layer 2 นะครับ จะแตกต่างเพียงบางอย่างเท่านั้น ผมจึงขอทำตัวอย่างให้ดูรวดเดียวเลยนะครับ

ตัวอย่าง
switch-02(config)#ip routing               
switch-02(config)#interface range GigabitEthernet 1/0/1-2
switch-02(config-if-range)#no switchport
switch-02(config-if-range)#exit

switch-02(config)#interface Port-channel 1
switch-02(config-if)#no switchport
switch-02(config-if)#exit

switch-02(config)#interface range GigabitEthernet 1/0/1-2
switch-02(config-if-range)#channel-group 1 mode active
switch-02(config-if-range)#exit

switch-02(config)#interface Port-channel 1
switch-02(config-if)#ip address 172.16.0.1 255.255.255.0
switch-02(config-if)#exit

switch-02(config)#do show run
interface Port-channel1
no switchport
ip address 172.16.0.1 255.255.255.0
!
interface GigabitEthernet1/0/1
no switchport
no ip address
channel-group 1 mode active
!
interface GigabitEthernet1/0/2
no switchport
no ip address
channel-group 1 mode active
!

          เมื่อทำการตั้งค่าเสร็จเรียบร้อยแล้ว เราสามารถตรวจสอบการทำงานของ EtherChannel ได้ด้วยการใช้คำสั่ง ดังต่อไปนี้ครับ

show etherchannel
show etherchannel summary
show etherchannel load-balance
show etherchannel port-channel
ตัวอย่าง
switch-01#show etherchannel
                Channel-group listing:
                ----------------------

Group: 1
----------
Group state = L2
Ports: 2 Maxports = 8
Port-channels: 1 Max Portchannels = 1
Protocol:   PAGP

switch-01#show etherchannel summary
Flags:  D - down        P - in port-channel
        I - stand-alone s - suspended
        H - Hot-standby (LACP only)
        R - Layer3      S - Layer2
        U - in use      f - failed to allocate aggregator
        u - unsuitable for bundling
        w - waiting to be aggregated
        d - default port

Number of channel-groups in use: 1
Number of aggregators:           1

Group  Port-channel  Protocol    Ports
------+-------------+-----------+----------------------------------------------

1      Po1(SU)           PAgP   Fa0/1(P) Fa0/2(P)

switch-01#show etherchannel load-balance
EtherChannel Load-Balancing Configuration:
        dst-mac

EtherChannel Load-Balancing Addresses Used Per-Protocol:
Non-IP: Destination MAC address
  IPv4: Destination MAC address
  IPv6: Destination MAC address

switch-01#show etherchannel port-channel
                Channel-group listing:
                ----------------------

Group: 1
----------
                Port-channels in the group:
                ---------------------------

Port-channel: Po1
------------

Age of the Port-channel   = 00d:00h:47m:27s
Logical slot/port   = 2/1       Number of ports = 2
GC                  = 0x00000000      HotStandBy port = null
Port state          = Port-channel
Protocol            =   PAGP
Port Security       = Disabled

Ports in the Port-channel:

Index   Load   Port     EC state        No of bits
------+------+------+------------------+-----------
  0     00     Fa0/1    Desirable-Sl       0
  0     00     Fa0/2    Desirable-Sl       0
Time since last port bundled:    00d:00h:01m:38s    Fa0/2

          เพียงเท่านี้ก็เรียบร้อยแล้วครับ สำหรับการตั้งค่า EtherChannel เป็นไงบ้างครับ ไม่ยุ่งยากเลยใช่มั้ยครับ ข้อดีของการใช้ EtherChannel นี้ นอกเหนือจากจะเป็นการทำ Load Sharing เพื่อลดค่า Congestion ของระบบลงแล้วยังช่วยในเรื่องของการสำรองเส้นทางอีกด้วยนะครับ ยังไงเพื่อน ๆ ก็ลองนำไปปรับใช้กับระบบเครือข่ายของเพื่อน ๆ ดูนะครับ

ที่มา -
http://running-config.blogspot.com/2011/03/etherchannel-cisco-catalyst-switch.html
http://www.ciscoclub.in.th/index.php?topic=147.0

« Last Edit: 03, 03, 2014, 13:36:39 by admin »