基於88E6095的鏈路冗餘協議開發 三

2021-07-30 14:23:13 字數 3041 閱讀 9486

鏈路冗餘協議支援兩種執行方式:

1. 基於物理埠進行計算,不考慮vlan功能實現,例如stp,rstp

2. 基於vlan中的埠進行計算,例如mstp

如果我們要實現基本vlan模式的鏈路冗餘協議,在協議配置之前,需要確定埠的vlan配置資訊。

vlan的功能參考網路資料及802.1q說明文件,該章節不對vlan功能本身進行說明,主要介紹vlan功能在88e6095的支援和應用。

88e6095支援兩種vlan模式,分別為3.5.6 port based vlans和3.5.7 802.1q vlans。我們主要對802.1q vlans的實現進行介紹。

802.1q vlan主要支援一下幾個方面的功能:

1. vlan優先順序

2. 埠配置

3. 埠stp狀態

88e6095通過vlan translation unit operations介面對802.1q vlans進行配置,vtu通過一組vtu配置暫存器,組成vtu entry對vtu database進行讀寫,參考88e6095的3.5.11 vlan translation unit operations。

vtu提供的配置暫存器如下:

其中vtu operation暫存器定了vtu支援的操作功能,如下:

由vtu register的內容組成一條vtu entry,格式如下:

其中各欄位內容說明如下:

對各字段的簡單說明如下:

membertag

用來指定當前埠是否包含在該vid指定的vlan中。如果包含在該vlan中,則可以指定該port對vlan tag的操作模式,包括四種狀態:

00:port在vlan內,**報文不修改報文的vlan tag狀態

01:port在vlan內,傳送報文剝離vlan tag

02:port在vlan內,傳送報文新增vlan tag

03:port不包含在該vlan內

portstate:

用來配置vlan中port的stp狀態,該功能實現了對基於vlan的鏈路冗餘協議的支援。

函式名稱:

vlan_add

函式功能:

新增埠到指定vlan。

(該函式當前新增指定埠按照00(port在vlan內,**報文不修改報文的vlan tag狀態)進行新增。後期需要根據功能需求對介面函式進行修改。

vlan新增埠一般不使用00模式,主要使用01(utag)和02(tag)模式進行新增。其中乙個埠使用utag模式只可以新增乙個vlan,使用tag模式可以新增多個vlan。

當前函式原型為void vlan_add(u16 vid, u16 port)。

建議後期修改為int vlan_add(u16 vid, u16 utag_map, u16 tag_map)實現可以參考vlan_add的當前實現進行修改。)

函式名稱:

vlan_read

函式功能:

根據指定的vid讀取vtu entry。

函式名稱:

vlan_delete

函式功能:

根據指定的vid刪除vlan。

(該函式功能當前未實現,根據vlan_add的**及88e6095文件3.5.11說明進行操作)

函式名稱:

set_vlan_port_status

函式功能:

設定指定vlan中指定埠的stp狀態。

該函式當前未實現,建議實現原型如下:

int set_vlan_port_status(u16 vid, u16 port, u16 status)

在鏈路冗餘協議中,在使用vlan base模式時,會使用多個vlan組成乙個stg,協議狀態機基於stg進行計算和配置操作。

使用88e6095實現是,需要對set_vlan_port_status函式進行封裝,根據vlan和協議配置,軟體層實現stg層實現,包括以下函式。

int stg_vlan_add(u16 stg, u16 vid)

int stg_vlan_del(u16 stg, u16 vid)

int set_stg_port_status(u16 vid, u16 port, u16 status)

加入乙個stg的vlan,原則上要求新增的port相同(tag狀態不需要相同),在執行set_stg_port_status操作時,對加入的stg的vlan進行遍歷,然後呼叫set_vlan_port_status進行設定。

ZYNQ使用88E1510 PHY晶元的驅動程式

sdk v2014.4 phy 88e1510 pl端乙太網,自協商 standalone應用程式 pl端設計,略。根據pl端生成的hdf,新建專案,採用官方lwip echo server例程。發現執行結果為 lwip tcp echo server tcp packets sent to por...

E1 基於Mysql的SQL應用

group 2請使用你的賬戶建立兩個表,包括屬性 資料型別 主鍵和外來鍵。ddept deptno,dname loc deptno integer dname varchar 20 loc varchar 30 primary key deptno eemp empno,ename,job,hir...

簡述基於89c51的8 8LED點陣屏使用方法

最近弄了一塊32 64的led點陣屏,想做個萬年曆的.發現不會驅動,我去。遂拿起放了很久的8 8led點陣來耍耍。話歸正題,此次試驗用89c51 74hc595兩塊 1塊8 8led點陣 首先關於74hc595的驅動,就不多說了。參考 關於8 8點陣 首先要解決的是關於引腳順序的問題 如圖,阿拉伯數...