日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

lacp协议文档概要

發布時間:2023/12/20 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lacp协议文档概要 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

802.1ax學習之LACP

文檔位于《802.1ax-2008.pdf》中P25~P96,但是在76頁之后的協議內容是另外一種叫Marker?Protocol協議但也是用于端口匯聚的,這里暫時不加進來討論。

1、文檔結構翻譯

整個文檔的結構我們翻譯如下:

5.1?綜述

5.1.1?狀態圖的約定

5.1.1.1?狀態塊的功能

5.1.1.2?狀態圖變量

5.1.1.3?狀態轉換

5.1.1.4?操作符

5.1.2?目標與目的

5.1.3?鏈路匯聚在整個IEEE?802.3架構中的位置

5.2?鏈路匯聚的操作

5.2.1?鏈路匯聚的原則

5.2.2?服務接口

5.2.3?幀收集器

5.2.3.1?幀收集器的狀態圖

5.2.3.1.1?常量

5.2.3.1.2?變量

5.2.3.1.3?信息

5.2.3.1.4?狀態圖

5.2.4?幀分發器

5.2.4.1?幀分發器的狀態圖

5.2.4.1.1?變量

5.2.4.1.2?信息

5.2.4.1.3?狀態圖

5.2.5?標識的產生者或接收者(可選)

5.2.6?標識的回應者

5.2.7?匯聚分析器或多路轉換器

5.2.7.1?匯聚分析器狀態圖

5.2.7.1.1?常量

5.2.7.1.2?變量

5.2.7.1.3?信息

5.2.8?匯聚器

5.2.8.1?狀態圖

5.2.9?控制分析器或多路轉換器

5.2.9.1?控制分析器的狀態圖

5.2.9.1.1?常量

5.2.9.1.2?變量

5.2.9.1.3?信息

5.2.9.1.4?狀態圖

5.2.10?尋址

5.3?鏈路匯聚控制

5.3.1?鏈路匯聚控制的特性

5.3.2?系統識別

5.3.3?匯聚器識別

5.3.4?端口識別

5.3.5?性能識別

5.3.6?鏈路匯聚組識別

5.3.6.1?鏈路匯聚組識別器的結構

5.3.6.2?鏈路匯聚組識別器的特征

5.3.7?選擇一個鏈路匯聚組

5.3.8?允許所選擇的鏈路匯聚組

5.3.9?連接到一個匯聚器上

5.3.10?發送一個準備就緒的信號給用戶數據

5.3.11?使能接受與分發功能

5.3.12?監控鏈路匯聚組的成員

5.3.13?當不再使用時從匯聚器中解除鏈接

5.3.14?配置和管理鏈路匯聚的控制

5.3.15?鏈路匯聚控制信息

5.4?鏈路匯聚控制協議

5.4.1?LACP設計原理

5.4.2?LACPDU的結構體與編碼

5.4.2.1?octets的傳輸與表示方式

5.4.2.2?LACPDU的結構體

5.4.3?LACP狀態機概述

5.4.4?常量

5.4.5?與系統有關的變量

5.4.6?與每個匯聚器有關的變量

5.4.7?與端口有關的變量

5.4.8?用于管理狀態機操作的相關變量

5.4.9?函數

5.4.10?時鐘

5.4.11?信息

5.4.12?接收狀態機

5.4.13?定期傳輸狀態機

5.4.14?選擇邏輯

5.4.14.1選擇邏輯---要求

5.4.14.2選擇邏輯---建議默認的操作

5.4.15?MUX狀態機

5.4.16?傳輸狀態機

5.4.17?抖動檢測狀態機

2、從文檔結構中學到什么?

那么從上面的這些目錄結構我們可以學到寫什么呢?這便是我寫這個筆記的原因。學習這個802.1ax全英文版的資料,你如果不先從整體架構來學,那么簡單地看了內容后你只會憑借驚人的記憶力來背熟這些東西。但是如果你從目錄著手,然后熟悉整個框架,之后盡管一些細節你記不住了,但從整體上你還是能夠清楚地講出這個協議的精髓來。

從每一個二級標題可以看出,這份協議要你從學習些什么:首先是了解鏈路匯聚是個什么東東以及這個有什么用處,總之就是概述了,所以這部分的內容可以瀏覽一遍帶過;其次知道如何操作鏈路匯聚,然后是怎么控制鏈路匯聚。當我們知道這些表面的后就可以學習原理了,所以最后一節安排了LACP協議原理的學習。這個就是整個框架。

3、LACP學習

3.1、LACP的概述

第一小節的內容就不贅述了。

3.2LACP的操作

5.2?鏈路匯聚的操作

5.2.1?鏈路匯聚的原則

5.2.2?服務接口

5.2.3?幀收集器

5.2.4?幀分發器

5.2.5?標識的產生者或接收者(可選)

5.2.6?標識的回應者

5.2.7?匯聚分析器或多路轉換器

5.2.8?匯聚器

5.2.9?控制分析器或多路轉換器

5.2.10?尋址

26頁中可以看到鏈路匯聚的操作包含了以下模塊:幀的分發、幀的收集、匯聚分析器、匯聚器、匯聚器的控制、控制分析器等。具體每一個模塊負責什么內容我簡單講一下:幀的分發是負責接收從MAC?Client傳送過來的幀并通過分發算法發送到合適的端口;幀的收集是指從各個端口接收到的幀傳遞到MAC?Client中去;匯聚分析器分為兩個:在發送端,它是從分發器中簡單地傳送幀到合適地端口,應該就是分發算法地執行所在;在接收端則是區分Marker?Request、Marker?Responder等并傳遞給各個實體(如Marker?Responder,?Marker?Receiver,?and?Collector,respectively);而匯聚器則是指上面三個模塊的集合體;匯聚控制模塊則是配置和控制匯聚器工作的模塊;控制分析器很類似上面的匯聚分析器,也從發送和接受端來說不一樣,這里不再贅述!

然后是鏈路匯聚的原則,總共十點,不詳細講了!

有一個圖很好地解釋了上面各個模塊之間地工作關系:

1、鏈路匯聚層模塊框圖

之后就是對各個模塊進行詳細地解釋。

每個模塊都是一個模板,先從常量(有的沒有)講起再者是變量,然后信息最后給出狀態圖。其實這部分很容易理解,所以不講了。關鍵是你在服務接口的那一小節讀懂,記住它在這個協議的一些約定俗成的記號就行了。在幀分發模塊中有一點值得翻譯出來注意一下,原文如下:

This?standard?does?not?mandate?any?particular?distribution?algorithm(s);?however,?any?distribution?algorithm?shall?ensure?that,?when?frames?are?received?by?a?Frame?Collector?as?specified?in?5.2.3,?the?algorithm?shall?not?cause

a)?Misordering?of?frames?that?are?part?of?any?given?conversation,?or

b)?Duplication?of?frames.

意思是講標準并沒有指定哪種分發算法,但是這個分發算法必須能夠做到:第一、不會對幀的順序進行重排,第二、不會復制幀;

之后的我感覺更應該關注匯聚器,因為在一個鏈路匯聚組中匯聚器包含一組的幀收集函數和一組幀分發函數,還有至少一組的匯聚分析器函數。大概這一小節就這些了,其他的內容需要以后發現重要時再補充。

3.3、LACP的控制

5.3?鏈路匯聚控制

5.3.1?鏈路匯聚控制的特性

5.3.2?系統識別

5.3.3?匯聚器識別

5.3.4?端口識別

5.3.5?性能識別

5.3.6?鏈路匯聚組識別

5.3.7?選擇一個鏈路匯聚組

5.3.8?允許所選擇的鏈路匯聚組

5.3.9?連接到一個匯聚器上

5.3.10?發送一個準備就緒的信號給用戶數據

5.3.11?使能接受與分發功能

5.3.12?監控鏈路匯聚組的成員

5.3.13?當不再使用時從匯聚器中解除鏈接

5.3.14?配置和管理鏈路匯聚的控制

5.3.15?鏈路匯聚控制信息

首先是這個定義:Link?Aggregation?Control?configures?and?controls?the?Link?Aggregation?sublayer?using?static?information?local?to?the?control?function?and?dynamic?information?exchanged?by?means?of?the?Link?Aggregation?Control?Protocol。翻譯過來就是:LACP配置和控制鏈路匯聚子層使用靜態的信息來定位控制函數和利用LACP來進行動態信息的交流。那它到底負責哪些東西呢?????

下面羅列的是鏈路控制主要要做的事情:

1、?檢查候選的鏈接確實已經被匯聚了;

2、?控制增加到鏈路匯聚組的鏈接,如果需要增加組數的話;

3、?監控匯聚鏈路的狀態,確保匯聚是可用的;

4、?如果它的某個成員不再有效應該從鏈接組中移除,如果某個組沒有成員的話直接刪掉該組。

還有其他一些工作,這里不詳細講了。

接下去講的是系統、匯聚器、端口、性能等的鑒定,其中都是包含幾個字節的內容??粗鴷?。

倒是在鏈路匯聚組識別的形式中標準規定了一些東西,還舉了個例子:

1、?所有的字段都是十六進制,按照嚴格的格式,每個字節兩個數字。

2、?字節是按照順序從左到右排列,每個字段里都有數字的重要意義,最重要的字節排在最前,最不重要的字節排在最后面。

3、?在每個含有MAC地址的字段里,連續的字節被分隔符隔開,與MAC地址在標準IEEE?Std?802-1990的定義一樣。

4、?LAG?ID的變量被逗號分隔開來。

3.4、LACP的精髓

5.4?鏈路匯聚控制協議

5.4.1?LACP設計原理

5.4.2?LACPDU的結構體與編碼

5.4.3?LACP狀態機概述

5.4.4?常量

5.4.5?與系統有關的變量

5.4.6?與每個匯聚器有關的變量

5.4.7?與端口有關的變量

5.4.8?用于管理狀態機操作的相關變量

5.4.9?函數

5.4.10?時鐘

5.4.11?信息

5.4.12?接收狀態機

5.4.13?定期傳輸狀態機

5.4.14?選擇邏輯狀態機

5.4.15?MUX狀態機

5.4.16?傳輸狀態機

5.4.17?抖動檢測狀態機

3.4.1LACP協議是干嘛的?

LACP協議是干什么的?文檔中給出了定義:LACP提供一個標準化的工具去在一個鏈路中對端系統交換信息去允許他們的鏈路控制實例在他們屬于的鏈路匯聚組中達成一致的信息,還有鏈路匯聚組移除鏈路,使能規范性的傳輸與接收函數。很抽象的東西,總的來說就是這樣:控制端口到聚合組的添加、刪除;實現鏈路的雙向保護。數據包的分發,實現負載均衡、鏈路冗余的過程由交換芯片完成,不需要軟件算法的干預,軟件只要負責根據協議將相關的聚合情況寫入底層驅動即可。

以下因素在開發協議時被考慮進去:

A、?協議時依靠與傳遞的信息和狀態,而不是傳遞的命令。LACPDUs傳遞包含自己的狀態和對端的狀態通過本端到本端知道的對端。

B、?在協議中傳遞的信息是很重要信息,它讓對端決定接下去該干些什么。

C、?LACP_Activity的值決定LACP是主動協商方式還是被動協商方式,每一個端口都有自己的管理控制,能夠設為Active?LACP?或?Passive?LACP。Passive?LACP表明端口并不用于傳遞LACPDU除非它的對端控制值是Active?LACP;Active?LACP表明端口啟用LACP協議中并可以發送LACPDU而不管對端的控制值是什么。

D、?如果本端或對端的LACP_Activity值為Active?LACP,那么會定期傳送LACPDU包。周期發送LACPDU的間隔是長是短在取決于對端系統的LACP_Timeout的值。

E、?除了定期傳送LACPDUs之外,當有信息需要傳送給對端時,或當本端的狀態改變或是從對端的LACPDUs中表明對端不知道本端的當前狀態時,協議都會傳送LACPDUs。

F、?協議假設LACPDU包的丟失率很低。

接下去的重點時LACPDU包的結構,這里找了一張圖,可以看出它的構造:

圖2、LACPDU幀的結構

需要解釋的是以下定義:

TLV_type是本端或對端的信息,還有就是collector的信息、終端的信息(這是按順序來的),一般定義為0x01或0x02或0x03或0x00;

Actor_Information_Length:一般為0x14;

Actor_System?:本端系統的ID;

Actor_State:本端狀態,八位定義分別如下:

功能如下:

1)?LACP_Activity?is?encoded?in?bit?0.?This?flag?indicates?the?Activity?control?value?with?regard?to

this?link.?Active?LACP?is?encoded?as?a?1;?Passive?LACP?is?encoded?as?a?0.(這個標志表明這條鏈路的的LACP是否是自動協商模式,為1代表是LACP主動協商模式)

2)?LACP_Timeout?is?encoded?in?bit?1.?This?flag?indicates?the?Timeout?control?value?with?regard?to

this?link.?Short?Timeout?is?encoded?as?a?1;?Long?Timeout?is?encoded?as?a?0.(該位表明該鏈路的超時控制值,為1代表短超時)

3)?Aggregation?is?encoded?in?bit?2.?If?TRUE?(encoded?as?a?1),?this?flag?indicates?that?the?System

considers?this?link?to?be?Aggregateable;?i.e.,?a?potential?candidate?for?aggregation.?If?FALSE

(encoded?as?a?0),?the?link?is?considered?to?be?Individual;?i.e.,?this?link?can?be?operated?only?as?an

individual?link.(如果是TRUE,這個標志位表明系統這位這條鏈路可以聚合或是有被聚合的可能性;)

4)?Synchronization?is?encoded?in?bit?3.?If?TRUE?(encoded?as?a?1),?the?System?considers?this?link?to

be?IN_SYNC;?i.e.,?it?has?been?allocated?to?the?correct?Link?Aggregation?Group,?the?group?has

been?associated?with?a?compatible?Aggregator,?and?the?identity?of?the?Link?Aggregation?Group

is?consistent?with?the?System?ID?and?operational?Key?information?transmitted.?If?FALSE

(encoded?as?a?0),?then?this?link?is?currently?OUT_OF_SYNC;?i.e.,?it?is?not?in?the?right

Aggregation.(如果是TRUE,系統認為這條鏈路是IN_SYNC,它被分配正確的鏈路組,該組有已經關聯到一個合適的匯聚器中,鏈路組的Id與系統和操作Key信息是一致的)

5)?Collecting?is?encoded?in?bit?4.?TRUE?(encoded?as?a?1)?means?collection?of?incoming?frames?on

this?link?is?definitely?enabled;?i.e.,?collection?is?currently?enabled?and?is?not?expected?to?be

disabled?in?the?absence?of?administrative?changes?or?changes?in?received?protocol?information.

Its?value?is?otherwise?FALSE?(encoded?as?a?0).(如果是TRUE意味著在這條鏈路上收集進來的幀肯定能用的或是收集功能能用,并且不希望被禁用在沒有管理者修改的前提下)

6)?Distributing?is?encoded?in?bit?5.?FALSE?(encoded?as?a?0)?means?distribution?of?outgoing?frames

on?this?link?is?definitely?disabled;?i.e.,?distribution?is?currently?disabled?and?is?not?expected?to

be?enabled?in?the?absence?of?administrative?changes?or?changes?in?received?protocol

information.?Its?value?is?otherwise?TRUE?(encoded?as?a?1).

7)?Defaulted?is?encoded?in?bit?6.?If?TRUE?(encoded?as?a?1),?this?flag?indicates?that?the?Actor’s

Receive?machine?is?using?Defaulted?operational?Partner?information,?administratively

configured?for?the?Partner.?If?FALSE?(encoded?as?a?0),?the?operational?Partner?information?in

use?has?been?received?in?a?LACPDU.(如果為TRUE,表明了本端的接收狀態機使用默認的操作對端信息,管理性地配置對端。)

8)?Expired?is?encoded?in?bit?7.?If?TRUE?(encoded?as?a?1),?this?flag?indicates?that?the?Actor’s

Receive?machine?is?in?the?EXPIRED?state;?if?FALSE?(encoded?as?a?0),?this?flag?indicates?that

the?Actor’s?Receive?machine?is?not?in?the?EXPIRED?state.(如果為TRUE,表明本端地接收狀態機處于過期狀態中)

NOTE—The?received?values?of?Defaulted?and?Expired?state?are?not?used?by?LACP;?however,?knowing

their?values?can?be?useful?when?diagnosing?protocol?problems.(注意:接收到地默認和過期狀態值并不用于LACP,但是知道它們地值對于診斷協議問題卻很有用)

3.4.2、LACP6個狀態機綜述

??LACP協議的運作由6個狀態機來實現,這些狀態機是基于每個端口的事件(比如定時器超時或收到LACPDU)會觸發狀態躍遷和LACPDU的發送,LACPDU的發送分周期性發送和事件(比如定時器超時或收到LACPDU)驅動兩種。

??Reecive?machine:接收對端來的LACPDU包,記錄包里帶的信息,并根據LACP_Timeout的值進行。根據對端發來的信息判斷該端口是否可以使用了(聚合或獨立端口)。若未協商好則繼續發LACPDU包給對端;若接收LACPDU包超時,接收狀態機就啟用缺省配置。

??Periodic?Transmission?machine:通過周期性發送LACPDU包來維護聚合。

??Selection?Logic:負責為各物理端口選擇一個聚合器。

??Mux?machine:該狀態機負責把端口附到選擇好的聚合器,或把端口從聚合器剝離,并根據協議信息打開或關閉當前端口的收、發。

??Transmit?machine:該狀態機根據其它狀態機的要求(包括周期性發送狀態機)進行LACPDU的發送。

??Actor?and?Partner?Churn?Detection?machines:這個狀態機用于檢測本端和對端不能達到一致的狀態(比如對端反復發送相矛盾的LACPDU),并上報給網管。?

各個狀態機的關系:

1.接收狀態機通過比較LACP包信息和本端信息置NTT(need?to?transmit)和Selected變量(標示端口是否綁定到了聚合組)。本端的狀態有改變則置NTT為True,對端的狀態有改變則置Selected為False,并根據對方發來的包內容判斷雙方是否達到同步。

2.Periodic狀態機根據本端及對端狀態置NTT變量。NTT用于決定是否要發送LACPDU包。

3.Selection?logic?根據端口狀態把處于unselected的端口選進聚合組,選入后置Selected變量為True。

4.MUX根據Selected變量的值將端口綁定到聚合組或將其從聚合組剝離,雙方達到同步后聚合成功,聚合成功后啟動端口發送數據幀。

5.?TX根據NTT狀態決定是否啟動LACPDU包的發送。

具體到圖是:

3、6個狀態機的工作關系

這里還有一些需要知道的常量:

快速定期發送時間:1s-----兩者對應periodic_time

慢速定期發送時間:30s

短超時:3s;兩者對應current_while_time

長超時:90s

狀態變化偵測時間:60s------對應parnter_churn_timeactor_churn_time

聚合等待時間:2s----對應wait_while_time

和系統有關的變量:本端系統(占48位)和本端系統優先級;

和每個匯聚器有關的變量:匯聚器的MAC地址,匯聚器的識別信息(用于唯一鑒定在一個系統是匯聚組的標識),Individual_Aggregator,本端管理匯聚器關鍵字,本端操作匯聚器關鍵字,對端系統,對端系統優先級,對端操作匯聚器關鍵字,接收狀態,傳送狀態,鏈路匯聚組的端口。

與每個端口相關的變量:本端端口數目,本端端口優先級,本端端口匯聚器識別(標識該端口是否綁定到匯聚組中),NTT,本端管理端口關鍵字,本端操作端口關鍵字,本端管理端口狀態,本端操作端口關鍵字,對端管理系統,對端操作系統,對端管理系統優先級,對端操作系統優先級,對端操作系統關鍵字,對端管理端口關鍵字,對端操作端口數目,對端管理端口數目,對端管理端口優先級,對端操作端口優先級,對端管理端口狀態對端操作端口狀態,端口使能。

管理操作狀態機的變量:BEGIN、LACP_Enabled、actor_churn、partner_churn、Ready_N、Ready、Selected、port_moved

相關函數有:recordPDU、recordDefault、update_Selected、update_Default_Selected、update_NTT、Attach_Mux_To_Aggregator、Detach_Mux_From_Aggregator、Enable_Collecting、Disable_Collecting、Enable_Distributing、Disable_Distributing、Enable_Collecting_Distributing、Disable_Collecting_Distributing。

3.4.3、接收狀態機:

接收狀態機主要包括以下4個狀態:

??超時狀態:EXPIRED

??缺省狀態:DEFAULTED

??當前狀態:CURRENT

??LACP禁止狀態:LACP_DISABLED

關于整個狀態機的執行流程如下圖所示。圖中有關說明:

??RecordPDU:記錄協議包關于對端的屬性參數,并根據協議數據包含的信息設定對端是否處于同步狀態(針對本端,比較新舊本端信息)

??recordDefult:把本端端口的各狀態屬性設置為缺省值,缺省值在初始化給出

??update_Selected:利用接收來的協議數據包含的信息更新本端的選擇變量(針對對端,比較新舊對端信息)

??update_Default_Selected:利用缺省值更新選擇變量(針對對端,比較新舊對端信息)

??update_NTT:根據接收來包的決定是否發送表示當前狀態的協議包(針對本端,比較新舊本端信息)?

接收狀態機執行流程:

4、接收狀態機的工作流程

各個狀態解釋:

??INITIALIZE狀態:初始化狀態,本端口采用配置值作為對端信息,并置選擇變量為未選擇;然后無條件轉移到PORT_DISABLED狀態;

??PORT_DISABLED狀態:如果端口和LACP已使能,則進入超時(EXPIRED)狀態;否則如果本端口記錄的parner?SystemIDparner端口號與另外一個端口上記錄的parner?SystemIDparner端口號相等,則認為物理連接發生改變,重新返回初始化(INITIALIZE)狀態;否則如果端口已使能但是LACP未使能則進入LACP禁用(LACP?DISABLED)狀態;

??EXPIRED狀態:在EXPIRED狀態下,再等待一個短超時時間,若定時器又超時則進入缺省(DEFAULT)狀態,對端值用配置值代替;若收到LACPDU包,則進入當前(CURRENT)狀態。

??CURRENT狀態:在當前狀態下,根據本端的LACP_Timeout啟動超時定時器,若定時器超時則進入超時(EXPIRED)狀態。

??LACP?DISABLED狀態:在此狀態下,也將對端值用配置值代替,并置對端的聚合狀態為不許聚合,強制本端口成為一個獨立端口。在此狀態下,若出現Begin事件(用戶配置端口加入聚合組或端口退出聚合組配置時)則進入INITIALIZE狀態,若出現Port?Disable事件則進入PORT_DISBALED狀態。

??DEFAULTED狀態:通過比較配置值和對端值更新缺省的selected變量,再以配置值作為對端值。在此狀態下若收到LACPDU包則進入CURRENT狀態。?

3.4.4、定期發送狀態機:

定期發送狀態機定期發送狀態機根據對端的LACP_Timeout來設置發送周期,包括4個狀態:

??無周期狀態:NO_PERIODIC,模塊處于該狀態,則定期發送協議包處于無效狀態。

??快周期狀態:FAST_?PERIODIC,模塊處于該狀態,定期發送協議包處于活動狀態,且周期定時器使用短間隔時長。若對端為長超時,則狀態躍遷到慢周期;若超時則進入周期轉移狀態。(若本端處于短超時狀態,而對端處于長超時,則隨對端躍遷到長超時;可是一開始就使用長超時,在對端配置為短超時的情況下就不是躍遷就行了,它應該跳到周期轉移狀態)

??慢周期狀態:SLOW_?PERIODIC,周期定時器使用長間隔時長,若超時或對端改配成了短超時則進入周期轉移狀態。

??周期轉移狀態:PERIODIC_TX,該狀態是在周期定時器超時到所處的一種臨界狀態,在此狀態,它執行兩個動作:(a)發送一個NTTNeed?To?Transmit)請求;(b)根據對端的超時(Timeout)設置,進入快周期或慢周期狀態。?

??本端和對端的LACP活動狀態、端口的使能、LACP的使能決定了能否啟動周期性發送,

??本端或對端之一或兩者為ACTIVE狀態、端口和LACP必須是使能狀態才能啟動周期性發送。發送速度取決于對端的超時模式,對端是長超時則本端使用慢發送。

執行流程如下:

5、定期發送狀態機的工作流程

3.4.5、復合狀態機:

在該狀態機中,包含5個狀態:

??拆離狀態:DETACHED,從一個聚合端口中解除對一個物理端口的綁定。

??綁定狀態:ATTACHED,將一個物理端口與它選擇的聚合端口進行綁定。

??收集狀態:COLLECTING,打開端口的幀收集功能。

??分發狀態:DISTRIBUTING,打開端口的幀分發功能。

??等待狀態:WAITING,在把物理端口綁定到指定的聚合端口前要等待一段時間,由定時器wait_while_timer2s)來控制。?

復合狀態機執行流程:

6、復合狀態機的工作流程

復合狀態機的名詞解釋:

??Detach_Mux_From_Aggregator/Attach_Mux_to_Aggregato:將端口退出聚合組操作/將端口與相應的聚合端口綁定(寫下底層驅動)。

??Disable_Distributing/Collecting:停止端口發送(接收)數據。

??Enable_Distributing/Collecting:打開端口發送(接收)數據功能。

??該狀態機中有關Selected變量的改變是由選擇狀態機和接收狀態機決定的,選擇狀態機負責將Selected置為True,接收狀態機負責將其置為False。該狀態機只讀取Selected變量而不會去修改。

??DETEACHED狀態:復用狀態機初始狀。選擇邏輯將Selected置為SELECTEDSTANDBY后復用狀態機進入WAITING狀態。

??WAITING狀態:在此狀態下提供在聚合信息改變前做一個延時,超時后進入ATTACHED狀態。若此時Selected變量變成了UNSELECTED則回退到DETEACHED狀態。

??ATTACHED狀態:Attach完成后本端進入同步狀態,再以收到的LACPDU中的信息為舊,以本地記錄的為新,比較新舊本端信息,若一致則認為對端已進入同步狀態,則本端進入COLLECTING狀態。若此時Selected變量變成了UNSELECTEDSTANDBY狀態則回退到DETEACHED狀態。?

??COLLECTING狀態:若對端也表示進入了COLLECTING狀態則本端進入DISTRIBUTING狀態。(也可能收發不區分,統一成COLLECTING_DISTRIBUTING狀態)。若此時Selected變量變成了UNSELECTEDSTANDBY狀態或對端變成了不同步狀態則回退到ATTEACHED狀態。

??DISTRIBUTING狀態:若期間若Selected變量改變或對端變成不同步或對端的收變成了禁止則回退到COLLECTING狀態。

??端口的發禁用是通過設置端口為blocking來實現,不更改Trunk組的配置,發啟用是通過設置端口為forwarding來實現。?

3.4.6、發送狀態機:

當狀態變量LACP_EnableNTT均為“真”時,該狀態機就創建一個正確的協議數據單元,然后把它發送出去。根據協議的規定,在一個快周期的時間間隔內,發送協議數據單元的次數應當不大于3次。如果在此限制范圍內NTT仍為“真”,那么,協議數據包應當被延遲發送,直到該限制不再有效。每次LACPDU發送完畢后,狀態變量NTT應被置為“False”。

3.4.7、選擇邏輯狀態機:

??標準沒有規定選擇邏輯狀態機的算法,我們的做法是:哪些端口加在一個聚合組里由用戶配置,協議不會額外增加非聚合組內的端口到聚合組中,選擇邏輯狀態機的作用是將處于DETACHED狀態的端口重新加回聚合組。

??如果端口的復合狀態機處于DETACHED狀態,端口處于UNSELECTED狀態且不隸屬于任何聚合組(即端口聚合組ID0),則對其進行如下操作(否則退出狀態機):

??首先當前端口通過聚合組ID找到所屬的聚合組;

??其次查看該聚合組中的端口個數,若沒有端口則直接加入聚合組。若有端口則與已加入聚合組的端口比較,若兩者所屬聚合組ID、端口速率不同或兩者連的對端端口的聚合組ID、端口速率不同或兩者連著不同的系統則當前端口不加入聚合組,否則加入聚合組。?

??端口剛加入聚合組時置端口為STANDBY狀態,聚合組中有多個端口則置該端口為SELECTED狀態。

3.4.8、抖動檢測狀態機:

?? 在端口已使能的情況下,若鏈路在抖動檢測定時時間內仍不能同步則認為出現抖動,這種情況可能是設備故障或設備不支持或配置。

3.4.9、其他關于端口匯聚應該知道的知識:

??只有全雙工的端口才能參與聚合。

??1個聚合組不能同時和2個聚合組聚合。

??鏈路聚合條件:聚合組中的端口具有相同的物理性質,如同介質、全雙工、同速率,具有相同的VLAN配置。

??LACPSTP(生成樹協議)的關系:由前面介紹的選擇邏輯狀態機可知,一旦配置成聚合組(聚合端口),則實際的物理端口對其它協議來說將不復存在,取而代之的是聚合端口。從而對于STP來說,聚合組中的物理端口不參與STP,只有聚合端口將作為虛擬的端口參與STP。

??關于端口聚合成功后,數據包的分發,實現負載均衡、鏈路冗余的過程由交換芯片完成,不需要軟件算法的干預,軟件只要負責根據協議將相關的聚合情況寫入底層驅動即可。

??關于聚合端口的狀態,如up/down等,將由其包含的物理端口的狀態來決定。

??如果有物理端口成功“綁定”聚合端口后并且其復合狀態機處于DISTRIBUTING狀態,則聚合端口狀態為up;如果沒有物理端口綁定聚合端口或綁定的物理端口的復合狀態機沒有一個處于DISTRIBUTING狀態,則聚合端口為down

LACP端口協商模式:

??Passive被動協商模式。不主動發建立鏈路的請求,但是可以接收和處理LACPDU包。

??Active主動協商模式。主動發起建立鏈路的請求,若對端是activepassive模式則可以形成鏈路聚合。

??Hot?Standby熱備份模式,不支持。意思是當一個聚合組中的端口數超過8個時,只有8個端口可以聚合成功,其它端口都處于熱備份模式,當8個端口中的某個失效后,處于熱備份模式的某個端口將取代這個端口。

具體取哪個熱備份模式的端口根據端口LACP優先級、端口號的優先順序取,值小的優先。

至少有一方是Active模式才能鏈路才能聚合成功。缺省是Passive模式。

LACP端口優先級:

在支持Hot?standby模式時有用。處于Hot?standby模式的端口中,LACP端口優先級值小的端口將被優先選出用于替代聚合組中的失效端口。

LACP系統優先級:

在支持Hot?standby模式時有用。只能基于單板配置,用于確定哪些鏈路為active,哪些鏈路為standby,系統優先級低的一方有決定權。例如A板和B板有聚合組相連,若A板優先級低則由A板決定哪些鏈路成為active鏈路。

??LACP端口超時方式:

??超時方式有2種:

???????Short?Timeout??短超時,時間為3秒。

???????Long?Timeout??長超時,時間為90秒。

超時時間指的是狀態機躍遷之前等待對方LACP包的最大時間。

LACP包是周期性發送的,本端有等待時間,相應的,對端有發送時間,周期性發送有快、慢兩種,快發送周期為1秒,慢發送周期為30秒,用哪一種取決于對端的端口超時方式

??LACP動態與靜態

??配成動態時,只有收到對端的LACPDU包后本端的端口才能綁定到聚合組。

??配成靜態時,即使沒有收到對端的LACPDU包,本端的端口也能綁定到聚合組。

??在使能了LACP的情況下,配成靜態的聚合組能夠和未使能LACPTrunk組通業務,而配成動態的則不行。

如有轉載,請注明出處,屬于原創,謝絕盜版!

小兀,2012.08.18

總結

以上是生活随笔為你收集整理的lacp协议文档概要的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。