我的理解: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