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/
Linux/CentOS实现交换机-简单的交换机实现的更多相关文章
- esxi 配置 交换主机 虚拟机交换机 linux centos 配置双网卡
最近手里的项目网络环境是 192.168.199.1 直接到防火墙 192.168.1.x 是内网网段 走到 防火墙下的一个三层交换机 现在需要将内网的三台服务器端口映射出去,需要到防火墙去做映射,防 ...
- 阿里云服务器Linux CentOS安装配置(七)域名解析
阿里云服务器Linux CentOS安装配置(七)域名解析 1.购买域名 登录阿里云,左侧菜单点击[域名],然后[域名注册],完成域名购买.(一般首年45元) 2.添加域名解析 在域名列表里点击你的域 ...
- 阿里云服务器Linux CentOS安装配置(六)resin多端口配置、安装、部署
阿里云服务器Linux CentOS安装配置(六)resin多端口配置.安装.部署 1.下载resin包 http://125.39.66.162/files/2183000003E08525/cau ...
- 阿里云服务器Linux CentOS安装配置(四)yum安装tomcat
阿里云服务器Linux CentOS安装配置(四)yum安装tomcat 1.yum -y install tomcat 执行命令后,会帮你把jdk也安装好 2.tomcat安装目录:/var/li ...
- 阿里云服务器Linux CentOS安装配置(一)购买阿里云服务器
阿里云服务器Linux CentOS安装配置(一)购买阿里云服务器 我在阿里云购买的服务器配置 CPU:1核 内存:2G 系统盘:40G 公共镜像:CentOS 6.5 64位 公网带宽:1Mbps ...
- Linux(centos)系统各个目录的作用详解
Linux(centos)系统各个目录的作用详解 文件系统的类型 LINUX有四种基本文件系统类型:普通文件.目录文件.连接文件和特殊文件,可用file命令来识别. 普通文件:如文本文件.C语言元代码 ...
- Linux centos关机与重启命令详解与实战
Linux centos重启命令: 1.reboot 2.shutdown -r now 立刻重启(root用户使用) 3.shutdown -r 10 过10分钟自动重启(root用户使用) 4.s ...
- linux centos安装编译phantomjs 2.0的方法
phantomjs 2.0最新版的官方不提供编译好的文件下载,只能自己编译,有教程但是过于简单,特别是服务器上要安装N多的支持.折腾到现在终于装好了并且能正常运行了,截图mark一下: linux c ...
- linux centos cli all proxy
linux centos 下代理http.https.ftp.all_proxy 全局使用代理: export http_proxy=http://host:port/ export https_pr ...
随机推荐
- Redis 学习小记
由于是学习笔记,我就不来各种啰嗦,介绍这个介绍那个,也不上交给国家,或者各种对比,相信如果你真心用 redis 的话,就不会去跟 MySql,Memcached,MongoDB 等做对比了. 我原先用 ...
- [python]python三元表达式另类实现方式
() variable = a if exper else b ()variable = (exper and [b] or [c])[] () variable = exper and b or c
- R8:Learning paths for Data Science[continuous updating…]
Comprehensive learning path – Data Science in Python Journey from a Python noob to a Kaggler on Pyth ...
- HDU 4509 湫湫系列故事——减肥记II (简单模拟)
题意:一天一共有1440分钟,主人公每天有n件事要做,给出这n件事开始跟结束的时间,然后让你求出,空闲的时间的总分钟数是多少. 解题报告:简单模拟,只要开个一维数组标记那个每个分钟是否是有事的就可以了 ...
- Jenkins的安装及使用(一)
操作环境:Windows7 一.环境准备 1 安装JDK 本文采用jdk-8u111-windows-x64.exe: 安装完成后配置环境变量. 2 配置tomcat 本文采用tomcat8,免安装版 ...
- Comparable和Comparator的区别&Collections.sort的两种用法
在Java集合的学习中,我们明白了: 看到tree,可以按顺序进行排列,就要想到两个接口.Comparable(集合中元素实现这个接口,元素自身具备可比性),Comparator(比较器,传入容器构造 ...
- Coursera台大机器学习技法课程笔记10-Random forest
随机森林就是要将这我们之前学的两个算法进行结合:bagging能减少variance(通过g们投票),而decision tree的variance很大,资料不同,生成的树也不同. 为了得到不同的g, ...
- IdentityServer4使用EFCore生成MySql时的小bug
EFCore生成PersistedGrantDbContextModelSnapshot的时候发现 b.Property<string>("Data") .IsRequ ...
- JS的异步模式
JS的异步模式:1.回调函数:2.事件监听:3.观察者模式:4.promise对象 JavaScript语言将任务的执行模式可以分成两种:同步(Synchronous)和异步(Asychronous) ...
- PLSQL Developer连接远程oracle配置
在windows机器上不想安装oracle或者oracle的客户端,我们怎么使用PLSQL Developer工具呢?答案如下: 环境 windows7 ...