Cisco Switch學習筆記: EtherChannel

EtherChannel: 用來將二個交換器之間多條實體線路串成一條虛擬線路, 具有增加頻寬, 容錯的好處。
注意事項: FastEthernet只能和FastEthernet的埠串在一起, Giga只能和Giga的串在一起, 不可混在一起!
使用的協定: PAgP(Port Aggregation Protocol) or LACP(Link Aggregation Control Protocol)
負載平衡及傳送方法: source-MAC address, destination-MAC address, source-and-destination MAC address forwarding; 即以來源端MAC位址決定使用那條實體線路, 以目的端MAC位址決定使用那條線路, 以來源端及目的端MAC位址決定使用那條線路。
使用心得: 容錯能力很好, 實體線路中斷, 可以在數秒內切換至別條線路使用。
設定範例:
interface FastEthernet0/7
channel-group 1 mode passive
interface FastEthernet0/8
channel-group 1 mode passive

表示將Fa0/7,Fa0/8設成同一個group, 使用LACP的被動模式!
將另一邊的埠也以同樣方式設定, 但mode設成active即可!

檢視狀態:
sh etherchannel detail
sh etherchannel load-balance
sh etherchannel port
sh etherchannel port-channel
sh etherchannel protocol
sh etherchannel summary

可以看到只要使用interface指令channel-group就可以設定了, 交換器會自己新增一個interface:
interface Port-channel1

其他的功能會將這個介面當成如實體介面一樣使用, 例如:
#sh spanning-tree
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Gi0/1 Root FWD 4 128.1 P2p
Fa0/2 Desg FWD 19 128.3 P2p
Po1 Altn BLK 12 128.56 P2p

可以看到STP會將這個虛擬介面(Po1)看成一個實體介面般來使用, 其成本為12, 因為和Gi0/1接到同一台交換器, 形成Loop, 所以被Block。

取消EtherChannel: 如果要取消設定, 除了interface指令channel-group要no掉外, 記得global指令port-channel也要處理。

留言

Unknown寫道…
你好…想請問您
source-MAC address-以來源端MAC位址決定使用那條實體線路,

那如何查看是使用哪條實體線路呢?!
感謝…
雨恩寫道…
很可惜! 我也找不到這個問題的答案!
我試過用Layer 2 traceroute指令來測試是否可以看出走那一條實體線路, 可惜的是, 它的答案都只顯示Port-Channel.

個人覺得, 即使看得出是走那一條線路, 好像也沒有什麼用途! 當線路有問題時, Switch會自動切換到別的線路, 我們也沒有指令可以指定它要用那一條線路! 我們能做的就只是依網路環境, 選擇一個比較合適的load balance方法!

當然我們還是可以觀察到實體線路的流量統計, 並判斷我們指定的load balance方法是不是合宜.

以上是個人淺見, 如有錯誤, 還請見諒!
如果你找到更好的方法, 請跟我分享, 謝謝!
Unknown寫道…
恩恩!!感謝回應!
雨恩寫道…
最近在建置EtherChannel時,實際碰到了一些問題, 和大家分享一下經驗:

1.在之前的文章中, 我提到: "注意事項: FastEthernet只能和FastEthernet的埠串在一起, Giga只能和Giga的串在一起, 不可混在一起!"
2.在實際的建置情況中, 發現不只是同一台交換器的不同埠要一模一樣的界面型態, 而且對接的另一台交換器的埠的界面面型態也要一模一樣; 簡單說, 最好所有的埠的界面型態都要一樣, EtherChannel才建的起來, 否則總會有一些問題或狀況。
3.所謂的界面型態, 可以使用sh inter fa0/1這樣的指令來檢查, 找到media type is 100BaseTX, 或者media type is 10/100BaseTX, 或者 media type is 10/100/1000BaseTX, 或者media type is 1000BaseLX SFP; 請注意, 即使是同樣的RJ-45接頭的埠, 就有可能是100BaseTX,10/100BaseTX,10/100/1000BaseTX! 不是接頭看起來一樣就算一樣, 最好要確認其規格真的一樣, 用sh interface指令, 看其media type是比較好的方法。
4.舉例而言, 兩台交換器之間要使用兩條Cat 5e的UTP實體線路連接並建置成EtherChannel。其中一台是3750g-48TC, 一台是3560-8PC, 請問能不能建的起來? 實際上測試的結果是會有問題的, 3750g的交換器上的埠, 其界面型能是10/100/1000BaseTx, 但3560交換器上的埠只是10/100BaseTx; 雖然在同一台交換器上兩個埠的界面型態是一樣的, 但交換器之間的埠是不相同。那是不是將3750g交換器上的埠用speed 100的界面指令降速, 就可以了呢? 我試過, 答案是還是會有問題!
5.所謂的問題是, sh ether summ時會看到埠的狀況是I, 或者是s。即使有看到P的, 也只有一個埠, 沒有辨法所有的埠都進入P狀態!

3750G1#sh ether summ
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) LACP Gi1/0/49(P) Gi2/0/49(P)
雨恩寫道…
關於channel-group n mode option 指令中的option有一些差別:

LACP: active,passive
PAgp: auto,desirable
Etherchannel: on

LACP協定如前所述,要求兩台交換器上的port必須都是一樣的media type!
Etherchannel則比較寬鬆,只要每台交換器本身的port是一樣的media type,即使一台是Giga,另一台是fastethernet也可以!
PAgp協定比較嚴苛,它定義一台交換器必須是實體上一台,如果是做stack的交換器就會有問題!
雨恩寫道…
使用LACP建立的port-group還有一個問題, 我在嘗試建立trunking時, 發現使用LACP的port-group, 其port成員, 會有部份斷線的狀況。
把port-group mode改為on(就是Cisco EtherChannel)結果就正常了! 所以玩到現在的心得就是: 除非必要(例如,和非Cisco廠牌的交換器對接時),否則建立EtherChannel時, port-group mode設為on就可以了; 這種模式, 不但可以使用在不同的media type, 可以使用在做stack的交換器, 在做trunking時也不會有問題!

這個網誌中的熱門文章

D-BUS學習筆記

關於藍牙裝置找尋(inquiry, scan)兩三事