簡介
本文說明如何在Catalyst 9000交換器上設定和驗證彈性乙太網路通訊協定(REP)。
必要條件
需求
思科建議您瞭解以下主題:
採用元件
本文中的資訊係根據以下軟體和硬體版本:
- Catalyst 9200
- Catalyst 9300
- Catalyst 9400
- Catalyst 9500
- Catalyst 9600
- Cisco IOS XE 17.6.5及更高版本
注意:具有Stackwise Virtual(SVL)的交換機不支援REP
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
背景資訊
REP是Cisco專有的協定,旨在在第2層乙太網路中防止網路環路並在鏈路故障時提供快速收斂。它是生成樹協定的替代協定,通常用於需要大型第2層擴展的特定第2層拓撲,如IoT網路、工業網路或製造網路。REP 「網段」是通過將配置相同網段ID的交換機之間的埠連結在一起而形成的。利用REP負載平衡等功能及其與STP共存的能力,REP可用於構建複雜但可預測的第2層拓撲。
技術
字詞 |
定義 |
網段 |
連線在一起並共用相同網段ID的埠鏈 |
網段ID |
用於表示段的數字,介於1和1024之間 |
REP埠 |
配置為運行REP的埠。在REP埠上禁用STP。 |
邊緣埠 |
終止REP段一個邊緣的埠。 |
備用連線埠 |
阻塞網段中的VLAN以防止環路的埠。如果配置了負載平衡,則網段中有2個備用埠 |
開放埠 |
轉發所有VLAN的網段中的埠 |
封閉網段 |
REP網段,其中兩個邊緣埠位於同一交換機上,並且相互連線。也稱為「環網段」。 |
開放段 |
REP網段,其中邊緣埠之間沒有連線。邊緣埠位於不同的交換機上,並在它們之間有一個阻塞埠。 |
連結狀態層(LSL) |
三次握手協定負責建立鄰居鄰接關係並維護鏈路狀態。REP埠上每1秒傳送一次LSL幀。 |
硬體泛洪層(HFL) |
負責通過組播泛洪REP PDU在鏈路故障後促進快速收斂的層 |
封鎖連線埠廣告(BPA) |
由埠傳送的消息,用於通告其阻止的VLAN清單。BPA也可以傳送拓撲更改,使接收埠刷新其MAC表 |
終端連線埠廣告(EPA) |
承載有關REP網段的全域性資訊,並由邊緣埠傳送 |
REP管理員VLAN |
VLAN用於在鏈路故障後泛洪REP收斂快速通知。如果配置了HFL,則會在此處運行。如果不是,則REP Admin VLAN為1。 |
REP理論
REP能夠通過阻塞網段中的一個埠(稱為備用埠)上的VLAN來防止交換環路。當REP網段中的所有埠都處於UP狀態時,備用埠將阻塞,以防止環路。當REP網段中的鏈路發生故障時,或者如果交換機出現問題,導致REP協定資料包的鏈路丟失,則備用埠會為其之前阻塞的VLAN進行轉發。必須注意的是,正因為如此,REP網段只能處理網段內的單個故障埠。REP網段上出現一個以上的鏈路故障可能會導致流量丟失。
當在介面上啟用REP時,它會立即阻止所有VLAN。REP LSL接管並開始傳送LSL PDU以建立鄰接關係。使用三次握手建立鄰接關係,後續LSL hello資料包以1秒間隔傳送,以維護REP鄰居。
在REP鄰居發現期間,裝置交換其REP段ID及其埠ID。
- 段ID是一個介於1和1024之間的數字,在啟用REP時在介面上配置。這唯一地標識了REP資料段。
- 埠ID是從系統MAC地址和交換機埠號自動生成的60位字。
- 將LSL PDU傳送到目標MAC地址為0180.c200.0000
9200-STACK-1#show interface port-channel1 rep detail | i PortID
PortID: 08E978BC1A4FDD80 <--- Port ID with system MAC in bold
9200-STACK-1#show version | i MAC
Base Ethernet MAC Address : 78:bc:1a:4f:dd:80 <-- Switch system MAC
REP埠在關閉後變為Failed狀態,或LSL hello超時在5秒後過期。
REP備用埠選舉
REP Alternate埠是網段中阻塞VLAN的埠。
- 使用建議和協定機制建立REP鄰居後,會立即選舉備用埠,以確定網段中的哪個埠仍然處於阻塞狀態。
- 網段中的每個連線埠都會通告其連線埠金鑰和連線埠優先順序,並等待協定。
- 具有最高優先順序的連線埠會獲選為替代連線埠。
- 選舉過程通過REP BPA消息進行。
阻止的埠通告
BPA消息由埠金鑰和埠優先順序組成。
- REP埠金鑰是一個9位元組的識別符號,在埠進入阻塞狀態時生成(對於啟用REP的埠,它會立即在鏈路開啟時生成)。
- 它是埠ID和隨機生成的編號的組合。
- 埠優先順序也是9位元組的識別符號。
備用埠選擇
- 在鏈路啟動時,當REP埠處於阻塞狀態時,它會向其REP鄰居通告其埠金鑰和優先順序
- 接收埠將接收的BPA埠優先順序與其自己的埠優先順序進行比較
- 接收埠會使用包含在BPA中從鄰居埠接收的金鑰的ACK消息進行響應。當鄰居在BPA中收到自己的金鑰時,它知道該BPA是來自其鄰居的ACK消息
- 如果ACK包含高於本地埠優先順序的埠優先順序,則本地埠將變為OPEN狀態。它不會以更高的優先順序響應鄰居,但會將該建議從它的另一個REP埠轉發到它的另一個REP鄰居
- 另一個REP鄰居將收到的埠優先順序與自己的埠優先順序進行比較。如果收到的優先順序高於本地優先順序,它也不會響應並轉發提議。如果本地優先順序更高,則它會以自己的優先順序對原始建議書做出響應
此程式會重複,直到最高優先順序連線埠停留在封鎖模式。這將成為網段備用埠。備用埠繼續將包含其埠金鑰的BPA消息傳送到REP段。網段中的所有REP埠都會快取Alternate埠的金鑰。
在穩定的REP網段中,所有埠在備用埠上都一致通過具有備用埠金鑰的相同副本來實現。在鏈路故障情況下,維護備用埠的埠金鑰ID的每台交換機都會變得相關。
終端埠通告
EPA消息由邊緣埠每4秒生成一次。這些消息由網段中的每個REP介面轉發,並且每個埠將自己的拓撲資訊新增到消息中。
一旦邊緣埠收到網段內另一個邊緣埠生成的EPA,則整個網段的拓撲結構將變為完整。
EPA允許每個邊緣埠相互檢視並促進主邊緣埠的選擇。具有最高優先順序的邊緣埠成為主邊緣埠。
REP鏈路故障通知
當鏈路在REP網段中發生故障時,它將進入「失敗」狀態,並傳送包含備用埠的快取金鑰的鏈路故障通知。傳送交換機還刷新其仍處於運行狀態的REP鏈路的MAC地址。
REP鄰居交換機收到鏈路故障通知並將其轉發到網段上的任何REP鄰居,並刷新REP網段中埠的MAC地址條目。如果收到鏈路故障通知的交換機包含網段上的備用埠,則會將該埠移至OPEN狀態。
鏈路故障通知有兩種分發方式:
- 通過將BPA消息傳送到思科組播地址0100.0ccc.cce的REP Fast Notifications
- 通過在REP BPDU幀中傳送BPA消息來傳送REP可靠通知(類似於REP LSL幀)。
功能 |
快速通知 |
可靠通知 |
硬體已轉發 |
是 |
否 |
可靠 |
否 |
是,通過序列編號和重新傳輸 |
通過備用/阻塞埠 |
否 |
是 |
在REP段外轉發 |
是 |
否 |
在REP Admin VLAN上傳送 |
是 |
否(使用本徵VLAN) |
REP鏈路故障通知的行為與STP TCN類似,它們被傳送到CPU並在REP埠上觸發MAC刷新。通過在面向STP網段的REP埠上進行其他配置,可以將REP鏈路故障通知轉換為STP TCN,以通知STP域由於REP鏈路故障而刷新MAC。
REP首選埠和VLAN負載平衡
配置VLAN負載均衡時,REP主邊緣埠是啟動負載均衡的埠。REP首選埠是首選成為備用埠的埠。
主邊緣埠在負載均衡場景中相關,因為負載均衡通過其他配置從主邊緣埠啟動。
通過配置首選埠應阻塞哪些VLAN來實現負載均衡。
- 其餘VLAN在主邊緣埠被阻塞。
- 當配置了VLAN負載均衡並將其啟用時,有2個備用埠。
配置負載均衡後,除非從主邊緣埠觸發鏈路故障或手動搶佔,否則負載均衡不會生效。
設定
網路圖表
組態
所有埠都必須配置為具有匹配的REP段ID的中繼埠。edge開關需要edge引數。
9200-STACK-1#show running-config interface port-channel 1
Building configuration...
Current configuration : 100 bytes
!
interface Port-channel1
switchport mode trunk <-- Must be a trunk
load-interval 30
rep segment 1 edge <-- configure edge port in REP segment 1
end
不是邊緣埠的REP埠不需要edge關鍵字。
9300-STACK-2#show running-config interface port-channel 1
Building configuration...
Current configuration : 69 bytes
!
interface Port-channel1
switchport mode trunk
rep segment 1 <-- non-edge REP port configuration
end
驗證
配置完所有網段埠後,該網段即完成,不應出現故障埠。
確認REP拓撲。
9200-STACK-1#show rep topology
REP Segment 1
BridgeName PortName Edge Role
-------------------------------- ---------- ---- ----
9200-STACK-1 Po1 Pri Open <-- primary edge port
9300-STACK-1 Po1 Alt <-- alternate port that is blocking VLANs
9300-STACK-1 Po4 Open
9300-STACK-3 Po4 Open
9300-STACK-3 Po3 Open <-- port is OPEN and forwarding all VLANs
9300-STACK-2 Po3 Open
9300-STACK-2 Po1 Open
9200-STACK-1 Po2 Sec Open <-- secondary edge port
確認介面上的REP狀態。
9200-STACK-1#show interface port-channel 1 rep <-- check REP status for the port
Interface Seg-id Type LinkOp Role
---------------------------- ------ -------------- ----------- ----
Port-channel1 1 Primary Edge TWO_WAY Open <-- Edge port is not blocking any VLANs
Detail輸出進一步提供了埠的REP狀態資訊
9200-STACK-1#show interfaces port-channel1 rep detail
Port-channel1 REP enabled
Segment-id: 1 (Primary Edge)
PortID: 08E978BC1A4FDD80 <-- port ID made from system MAC + random number
Preferred flag: No
Operational Link Status: TWO_WAY
Current Key: 0BE934ED1B4798003405 <-- cached key of the segment Alternate port
Port Role: Open
Blocked VLAN:
Admin-vlan: 1 <-- REP admin vlan
Preempt Delay Timer: disabled
LSL Ageout Timer: 5000 ms <-- default link status adjacency hold down timer
LSL Ageout Retries: 5
Configured Load-balancing Block Port: none <-- no load balancing configured on the port
Configured Load-balancing Block VLAN: none
STCN Propagate to: none <-- sending TCNs into STP domain is disabled
LSL PDU rx: 924743, tx: 612406
HFL PDU rx: 1, tx: 1
BPA TLV rx: 611945, tx: 2
BPA (STCN, LSL) TLV rx: 0, tx: 0
BPA (STCN, HFL) TLV rx: 0, tx: 0
EPA-ELECTION TLV rx: 13, tx: 11
EPA-COMMAND TLV rx: 0, tx: 0
EPA-INFO TLV rx: 152998, tx: 152999
命令摘要
show rep topology
show rep topology detail
show rep topology segment <Id>
show rep topology segment <Id> detail
show rep topology archive
show rep topology archive detail
show interfaces gig<X/X> rep
show interfaces gig<X/X> rep detail
疑難排解
輸入佇列楔形
在某些代碼版本中,REP HSL資料包可以楔入介面的輸入隊列。
- 如果HSL資料包填充輸入隊列,並且無法處理LSL收斂資料包,則可能會影響REP收斂
- 這是由Cisco錯誤ID CSCwc52868
- 輸入隊列處理ALL協定的處理。一旦隊列變得「滿」,它將耗盡合法的網路控制流量,並且無法手動清空。
隊列楔的症狀
- CDP、IGMP等通訊協定停止運作(您可以在CDP中失去鄰居、IGMP多點傳送程式問題等)。
- 具體症狀因到達介面需要處理的功能和協定而異。
- 介面輸入隊列用於到達介面的資料包進行排隊並傳送到CPU進行處理
- 當某個資料包無法出隊並最終達到輸入隊列限制時,輸入隊列將被楔入
- 一旦達到介面輸入隊列限制,就不能再儲存其他資料包,而是將其丟棄。
驗證隊列楔形
REP硬體在REP管理VLAN上泛洪層資料包會導致L2埠上的輸入隊列被楔形。
C9300#show interface gi1/0/48
GigabitEthernet1/0/48 is up, line protocol is up (connected)
Hardware is Gigabit Ethernet, address is 7486.0b0c.e0b0 (bia 7486.0b0c.e0b0)
Description: PORT
MTU 1500 bytes, BW 1000000 Kbit/sec, DLY 10 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation ARPA, loopback not set
Keepalive set (10 sec)
Full-duplex, 1000Mb/s, media type is 10/100/1000BaseTX
input flow-control is on, output flow-control is unsupported
ARP type: ARPA, ARP Timeout 04:00:00
Last input 01:14:45, output 00:00:00, output hang never
Last clearing of "show interface" counters never
Input queue: 2438/2000/16/0 (size/max/drops/flushes); Total output drops: 0 <-- 2438 frames in the input queue who's limit is 2000
<...snip...>
檢查此CLI 確認 如果 一個 介面 是 保持 緩衝區 與 代表 HFL 幀
C9300#show buffers input-interface gi1/0/48 packet
Tracekey : 1#09f7811786f1de5ddfa0f5542a69f593
Buffer information for Middle buffer at 0x7F81FE8E9000
data_area 0x7F820F78F004, refcount 1, next 0x0, flags 0x210
linktype 189 (LINK_REP), enctype 3 (SNAP), encsize 22, rxtype 88
if_input 0x7F820E71DB50 (GigabitEthernet1/0/48), if_output 0x0 (None)
inputtime 3d14h (elapsed 03:11:48.761)
outputtime 00:00:00.000 (elapsed never), oqnumber 65535
datagramstart 0x7F820F78F072, datagramsize 565, maximum size 804
mac_start 0x7F820F78F072, addr_start 0x7F820F78F072, info_start 0x7F820F78F080
network_start 0x7F820F78F088, transport_start 0x0, caller_pc :55FBF3ED3000+37680AC
7F820F78F072: 01000CCC CCCEA0F8 ...LLN x <--- HFL destination MAC is in the queue
修復隊列楔形
- 重新啟動裝置(如果沒有重新載入,輸入隊列將無法清除。Shut / no shut of interface does not clear these buffers)
- 升級到不受此問題影響的代碼版本
- 調整輸入佇列大小(如果您確信不會收到更多的HSL訊框,您可以嘗試增加輸入佇列大小。請記住,下次發生HSL泛洪時,問題可能會再次出現)。
在這種狀態下,會發生一些REP系統日誌。這些日誌將在下一節中調出
注意:請記住,這是一個指示鄰居之間LSL丟失的通用日誌,這可能是因為其他原因造成的。因此,識別此特定問題很有用,但不僅限於此問題
REP日誌消息
日誌消息 |
定義 |
恢復操作 |
%REP-4-LINKSTATUS: TenGigabitEthernet1/1/1(網段1)因鄰居未響應而不可用 |
表示鄰居之間的LSL丟失 |
- 確認介面沒有楔形輸入隊列
- 驗證鏈路是否沒有CRC和其它增量錯誤
- 驗證CPU突發路徑中沒有CoPP或丟棄
|
%REP-5-EDGEMISCONFIG:拓撲無效。為網段配置了兩個以上的邊緣埠 |
當接收的邊緣埠通告與發出的邊緣埠通告不同時顯示 |
- 當拓撲中的多個埠從故障狀態中恢復時會出現預期行為,但在拓撲建立後不會出現此消息
|
相關資訊