個人理解:
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/