本节用于介绍物理地址到虚拟地址映射
本节用于介绍应用层和内核层数据传输
本节用于介绍杂项设备驱动
本节用于介绍如何把驱动编译进内核
本节用于介绍make menuconfig图形化配置
本节用于书写我们的在Linux上的第一个驱动Helloworld
本节用于书写我们的在Linux上的第一个驱动Helloworld
linux网桥支持vlan filtering过滤功能后,我们不再需要通过子接口的形式进行vlan划分,简化了vlan配置。
1. bridge vlan说明
man bridge可以了解到,linux通过如下命令进行vlan filtering的配置:
1 | bridge vlan { add | del } dev DEV vid VID [ pvid ] [ untagged ] [ self ] [ master ] |
选项说明:
pvid:端口的默认vlan,所有从该端口输入的没有携带vlan的报文,会被打上该vlan标签,该选项只对输入报文有效。
untagged:端口的untag vlan,输出报文携带该vlan时,会被剥离。
一般情况下pvid和untagged是同时使用的,对应于cisco的switchport trunk native vlan
self
master
这两个选项在帮助手册上是这么解释的:
1 | self the vlan is configured on the specified physical device. Required if the device is the bridge device. |
续接上一篇文章,我们在第二种方法中提到了DefaultPVID参数,那么我们该如何理解DefaultPVID参数呢,它的作用是什么?
DefaultPVID的释意
在systemd.netdev (www.freedesktop.org)中可以看到DefaultPVID的解释:
1 | DefaultPVID= |
以上内容便说明了通过systemd方式配置网桥时,br0.netdev文件中DefaultPVID参数的作用就是给所有加入该网桥的网络端口配置一个PVID,包括网桥自己。
那么这个PVID和普通的VLAN ID有什么区别呢?暂时先保留这个疑问往下看。
pvid和untagged的作用
首先看一下bridge命令的选项说明:
1 | bridge vlan { add | del } dev DEV vid VID [ pvid ] [ untagged ] [ self ] [ master ] |
选项说明:
pvid:端口的默认vlan,所有从该端口输入的没有携带vlan的报文,会被打上该vlan标签,该选项只对输入报文有效。
untagged:端口的untag vlan,输出报文携带该vlan时,会被剥离。一般情况下pvid和untagged是同时使用的。
由上述说明可以看到,在bridge命令中,pvid和untagged参数是高度关联的。那么,这个tag又是什么东西呢?Tagged和Untagged又是什么?
背景
在FCU2303的开发板上,有八个千兆网,分别是fm1-mac1,fm1-mac2,fm1-mac3,fm1-mac4,fm1-mac5,fm1-mac6,fm1-mac9,fm1-mac10,还有一个5G模块eth0。
客户有一个需求是想在这个板子上划分出两个VLAN(Virtual Local Area Network,中文名为”虚拟局域网”,工作在OSI参考模型的第2层和第3层。),一个是将这八个千兆网口划为一个VLAN,VLANID暂时定为100;另一个是将这八个网口中的任一网口和5G模块划为一个VLAN,VLANID暂时定为200,划分示意图如下图所示:

这样的话,VLAN100中的设备就无法直接访问5G模块的流量,只能先将数据转发到fm1-mac1网口上,然后fm1-mac1再将数据转发到5G模块eth0。因为fm1-mac1是既在VLAN100中,又在VLAN200中,所以它充当了连接两个VLAN的桥梁,这时候如果在fm1-mac1中外接一台电脑用于监控流通此网口的流量的话,就实现了监听VLAN100中其他网口通过5G模块上网的数据内容。