我的理解:html
一、交換機的核心在於Mac地址學習,使其能在全雙工/半雙工下進行轉發工做。linux
二、對於專業的交換機來講,使用的是專業的網絡芯片並本身實現裏面的協議,好比說華爲的,爲何能賣那麼貴,貴在於網絡芯片和系統,設備的零件其實沒幾個錢。網絡
三、專業的交換機走的是芯片級轉發,比用Linux實現的CPU轉發是不一樣級別的速度。對於芯片級的通信採用的是各家硬件廠商提供的標準,與Linux這種不同。工具
四、若是要看下這兩種區別的對比,能夠購買一個Mikrotik RouterOS設備,而後在裏面設置轉發模式(CPU或硬件)來對比二者之間的區別。學習
實現Linux交換機的過程:spa
一、Linux時間簡單的交換機只爲了簡單的瞭解和使用,對於大型網絡環境來講不建議使用,玩一下能夠了。命令行
二、要實現比較專業的交換機,先精簡內核,只保留網絡驅動,實現市面上流行的協議,實現一個Web和命令行管理等等,有時還須要自行研製工控主板來兼容Linux。code
下面是實現簡單的交換機的過程:htm
一、使用brctl工具實現網橋,也就是橋接,把各網卡橋接在一塊兒,橋接已經提供了Mac地址學習功能,因此直接就能夠實現傻瓜交換機的功能。blog
二、使用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>
對於要實現集線器:
一、在上面的網橋基礎上去除Mac地址學習便可
# 好比br1的網橋 brctl setageing br1 0 brctl setfd br1 0
參考:
https://www.ibm.com/developerworks/cn/linux/1310_xiawc_networkdevice/index.html