|
本帖最后由 pcslide 于 2024-1-14 17:44 编辑
对于vlan的各种概念,不同厂商的用语会有差别,openwrt不同版本上的名词和设置方式也会不一样,这真的让楼主这样的小白有点摸不着头脑。但要了解比如广播,igmp,iptv到底怎么运行,openwrt单臂路由怎么设置,如何做wifi网络隔离,都需要熟悉vlan。甚至,市售设备在路由器模式下,默认使用vlan才能正确工作。所以op决定水一篇,看看能不能解释清楚vlan上各种概念。
概念入门篇
先从整个网络只有一个支持的vlan交换机讲起。为了隔离交换机上的端口设置不同的vlan id(vlan号),被赋予不同vlan号的端口互相隔离,只有相同vlan号的端口能通信,如下图
这是通过在以太网数据包上插入vlan id数据来实现的,这样交换机内部就能知道哪些数据应该发往哪里,如下图
为了兼容接在交换机上的老设备,也为了不向用户泄漏交换机内部信息,设置了vlan id的端口在收到数据包时会给数据包打上vlan标签,在数据包从端口离开时则去除vlan标签。此时,交换机上的vlan对接在交换机上的设备是透明的。
这里,去除vlan标签这个动作叫做untag,打上vlan标签这个动作叫tag,请记住这两个词,后面会反复使用。
概念扩展篇
现实中单个交换机显然不够用。当我们把两个交换机连接在一起时,我们要求这跟连线就像交换机内部一样承载的是带标签的信息,也就是说之前那种把离开交换机端口的数据全部做untag的方式是不可取的。新的要求是,在交换机互联的端口上,数据出端口时要保留着标签。如下图
为了区分,这类端口和普通端口不一样,我们叫它trunk(交换机之间的管道)端口。trunk端口的另一种称呼是tagged端口,这个名字取自,数据包出端口时仍然保有标签。相对,普通的vlan端口上,数据在出端口时,是要去除标签的,我们就把它叫做untagged口。
现在我们先总结下,如何区分tagged和untagged口,就是看数据出端口时需不需要除去标签。因为tagged口通常用来给vlan交换机互联用,我们也叫它trunk口。
进阶篇
为了方便下面的介绍,我们再做下举一反三。从某个单独的交换机端口来看,当数据包在这个端口上出入时,交换机都要决定,“数据包是否带vlan的标签,是否需要打上标签,是否要去除标签,是否需要丢弃”,这四项。
现在拿上面说的四项,来检验下作为例子的端口2(port 2)的如下vlan设置,假设下面两条设置同时生效:
端口port 2,untagged,vlan id=66:入的包,没有标签的必须打上预先设定的66的标签,有标签的根据这个端口上的其他vlan设定或者厂商默认规则处理,在这因为有下面那条规则,可以允许标签33的包传入。出的包,如果标签是66,则去除标签后传出;如果是其他标签,则根据这个端口上的其他vlan设定或者厂商默认规则处理,因为下面那条规则,标签33的包可以传出。
端口port 2,tagged,vlan id=33:入的包,带33标签,可以继续传入。出的包,带33标签,可以继续传出。对于其他标签,根据这个端口上的其他vlan设定或者厂商默认规则处理。
可以看出,一个端口上可以设置多个vlan。那么,对于端口2,有没有可能同时设置成vlan id=66 untagged 和vlan id=33 untagged 呢?看上去对从端口上出的包,交换机只要去除标签就可以了。但是,对于传入的不带标签的包要怎么做?是加上标签66还是加上标签33呢?为了阐明这个问题,有厂商引入了pvid,也就是主vlan id的概念,一个端口只能有唯一一个pvid,这个pvid就告诉交换机,在此端口上的没标签的包该打上什么样的标签。
讲到这里,基本已经讲完了所有可能遇到的vlan概念。不管看到什么设定,需要怎么样设定,都不用慌了,只需要问自己,“数据包是否带vlan的标签,是否需要打上标签,是否要去除标签,是否需要丢弃”,从这四方面考察,相信没有设定能难倒你了。
接下去有时间的话,op会根据点赞和留言的情况,看看有没有必要再补两个实例。或者有哪位愿意帮我补实例,可以跟贴。我预想中的实例,包括swswitch的例子,DSA框架下的例子,各一。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
查看全部评分
|