Linux/CentOS實現交換機-簡單的交換機實現


個人理解:

1、交換機的核心在於Mac地址學習,使其能在全雙工/半雙工下進行轉發工作。

2、對於專業的交換機來說,使用的是專業的網絡芯片並自己實現里面的協議,比如說華為的,為什么能賣那么貴,貴在於網絡芯片和系統,設備的零件其實沒幾個錢。

3、專業的交換機走的是芯片級轉發,比用Linux實現的CPU轉發是不同級別的速度。對於芯片級的通訊采用的是各家硬件廠商提供的標准,與Linux這種不一樣。

4、如果要看下這兩種區別的對比,可以購買一個Mikrotik RouterOS設備,然后在里面設置轉發模式(CPU或硬件)來對比兩者之間的區別。

實現Linux交換機的過程:

1、Linux時間簡單的交換機只為了簡單的了解和使用,對於大型網絡環境來說不建議使用,玩一下可以了。

2、要實現比較專業的交換機,先精簡內核,只保留網絡驅動,實現市面上流行的協議,實現一個Web和命令行管理等等,有時還需要自行研制工控主板來兼容Linux。

下面是實現簡單的交換機的過程:

1、使用brctl工具實現網橋,也就是橋接,把各網卡橋接在一起,橋接已經提供了Mac地址學習功能,所以直接就可以實現傻瓜交換機的功能。

2、使用vconfig實現vlan的划分(我沒實踐過這個)

下面是常用的命令:

創建 Bridge:brctl addbr [BRIDGE NAME]
刪除 Bridge:brctl delbr [BRIDGE NAME]
attach 設備到 Bridge:brctl addif [BRIDGE NAME] [DEVICE NAME]
從 Bridge detach 設備:brctl delif [BRIDGE NAME] [DEVICE NAME]
查詢 Bridge 情況:brctl show
創建 VLAN 設備:vconfig add [PARENT DEVICE NAME] [VLAN ID]
刪除 VLAN 設備:vconfig rem [VLAN DEVICE NAME]
設置 VLAN 設備 flag:vconfig set_flag [VLAN DEVICE NAME] [FLAG] [VALUE]
設置 VLAN 設備 qos:
vconfig set_egress_map [VLAN DEVICE NAME] [SKB_PRIORITY] [VLAN_QOS]

vconfig set_ingress_map [VLAN DEVICE NAME] [SKB_PRIORITY] [VLAN_QOS]

查詢 VLAN 設備情況:cat /proc/net/vlan/[VLAN DEVICE NAME]
創建 VETH 設備:ip link add link [DEVICE NAME] type veth
創建 TAP 設備:tunctl -p [TAP DEVICE NAME]
刪除 TAP 設備:tunctl -d [TAP DEVICE NAME]
查詢系統里所有二層設備,包括 VETH/TAP 設備:ip link show
刪除普通二層設備:ip link delete [DEVICE NAME] type [TYPE]
查看 MAC 學習表:brctl showmacs <bridge-name>

對於要實現集線器:

1、在上面的網橋基礎上去除Mac地址學習即可

# 比如br1的網橋
brctl setageing br1 0
brctl setfd br1 0

 

 

參考:

https://www.ibm.com/developerworks/cn/linux/1310_xiawc_networkdevice/index.html

https://www.thegeekstuff.com/2017/06/brctl-bridge/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM