基于802.1q技术实现单线复用的一种思路

首先在这期文章中,我并不想基于华为的hcia技术来讲关于access与trunk的区别,免得我自己都解释不清楚到底该怎么配置。

所以我打算用tag与untag来解释这件事情,tag就是携带标签,untag就是不携带标签,我尽量用3张图片来说明这件事情,让我们从数据的角度来看单线复用这件事情。

这是一个tp的24口的交换机中对于vlan的配置项目,先看看它到底表达了什么意思。

vlan1中,对于启用端口的定义是从9-19以及24号口,那么其他的接口,肯定不会归vlan1管理。

在这里我想要强调一下的是vlan1并不是缺省vlan,没有vlan的数据帧并不等于数据的vlan就是1,至于缺省vlan是多少,应该看pvid的值,只是一般的交换机默认pvid为1,但这并不意味着缺省vlan都是1,只是配置的数据选择了1而已。

从上图中可以看到tag为第24号口,那么24号口可能会收到多个vlan标签的数据。于是我们需要看一下untag的定义,从上图中可以看到untag为9-19口。

那么我们翻译翻译是什么意思,如果从tag的第24口收到了一个携带vlan1的数据后,它会把数据发给9-19口,且由于9-19口配置为untag于是会被去掉vlan标签。

理解理解就是9-19口可以收到24口发出的vlan1的数据。

这是第2张图,让我们回到刚刚的vlan1这个问题上面,我前面说过,至于vlan1是不是缺省vlan的问题,在上图中可以得到答案,很明显第24口的缺省vlan并不是1,于是vlan1只是一个普普通通的vlan而已。

此时,我们来看看tag与untag的特性。

先说tag的问题。

1、一个有vlan标签的数据发给了tag的端口时,这个数据在不在允许列表里面,第一张图已经看到vlan1在允许列表里面,那么这个数据可以进入24口再根据配置进行下一步操作。

1.1、如果这个数据不在允许列表里面就不会进入下一步,醒醒吧,你的配置出错了。

2、如果没有携带标签的数据进入了24口,那么这个数据会被打上缺省vlan的标签,从上图中可以得知这个缺省vlan为99,在看第一张图vlan99能不能被接收,这里需要注意的是,缺省vlan并不意味着数据可以被接收,只是它有了一个可以进入的标签而已,难道我有了身份证就可以去上班了吗?显然我应该有48小时核酸报告才行,所以我有没有身份证在核酸报告面前不值一提,我有了核酸报告才能进公司,我没有身份证我可以被当成访客嘛。

上图中我们应该已经知道了对于一个未携带vlan标签的数据会被打上99这个vlan,且vlan99配置为可以从24口进入,从20-23号口将剥离标签发出数据。

简单看看tag的理解,就能知道,数据有vlan标签就必须允许它通过,数据没有vlan标签就被赋予缺省vlan,缺省vlan是pvid的值,缺省vlan也要有对应的下一个处理步骤才行。

上面是关于tag的接收,下面看看发出。

计算机网络讲究源出源进,你从哪里来就回到哪里去。

tag发送数据时,如果在交换机内部是跟pvid一样的,于是它会被去掉vlan发出不带vlan的数据。如果他携带了vlan,且跟pvid不一样那么他会被保留原有vlan发出。并且不管是什么vlan都应该在允许列表里面,这里再说一下,就算你是pvid也应该在通过列表里面才行。

好,接下来从数据角度出发,复盘一下以上内容。

当我的路由器发出一个vlan为1的数据时,进入了第24口,24口发现,这个数据我允许通过,且跟我pvid不一样,直接发给第9-19口就行。

当我的路由器发出一个vlan为99的数据时,进入了第24口,24口发现,这个数据我允许通过,且跟我pvid一样,我把它的vlan去掉再根据配置发给20-24口就行(untag的问题等下说)。

当我的路由器发出一个不带vlan数据时,进入了第24口,24口发现,这个数据没有vlan标签,于是我把我的pvid给它用,我再根据配置发给20-24口就行(untag的问题等下说)。

当我的路由器发出一个vlan为999的数据时,进入了第24口,24口发现,这个数据我不允许通过,丢了算了。

好,相信你已经理解了tag的问题,如果没有理解可能是我表达不准确(高情商说法)。

下面看看untag的问题,我们再次看看第1,2张图免得紧到翻图片。

解释一下untag吧。

1、如果接收的数据携带vlan标签,且与pvid一致,会被接收。

2、如果接收的数据携带vlan标签,且与pvid不一致,会被丢弃。

2、如果接收的数据不携带vlan标签,会被打上vlan标签,然后接收。

4、发出数据时会被去掉vlan。

5、既然可以被接收,就不存在发出时vlan跟pvid不一样的问题了。

还是从vlan1下手,数据已经进入了24号口,且根据配置我们知道应该从9-19口发出,根据规则,9-19口为接收vlan1且如果要从9-19口发出应该去掉vlan标签。当9-19口要发出数据时,它们一般不携带vlan,你可以携带,携带vlan1咯。根据规则会被转发给tag的24口,再根据tag的规则进行下一步。

以上我解释了一下,tag与untag,我说过这个文章有3个图片,这里我引入最后一张路由器的配置图片,讲完就结束了。

从左边开始数,第一个是我的lan口,第二个是路由器的pvid 第三个是允许通过的vlan id 第四个是我的路由器编辑按钮。

于是,最复杂套路最多的地方开始了。

如果路由器发出一个不带vlan的数据时,由于pvid为99,于是一个不带数据的帧(哎,路由器明明叫包的说),会被打上vlan99的标签发给交换机。

如果路由器发出vlan为1的标签时,由于跟路由器的pvid不一致,于是会被直接发出不更改vlan,交换机会收到vlan1的数据帧(我能不能叫数据包?)

前面我提到了交换机的第20-23号口由于untag配置的pvid为99,且tag的第24号口也是pvid为99的配置于是,20-23号口发给路由器的数据时不会携带vlan标签的,路由器这里pvid为99,于是他们还是被打上了vlan99的标签。

如果路由器收到了不带数据的标签,会被打上路由器的缺省pvid也就是99.

如果路由器收到了vlan为999的,因为不在通过列表里面,于是不会被接收。

我最后强调一次pvid并不等于可以被接收,能不能接收看tag的配置允不允许接收。

最后我附上我当时研究完的记录;

路由器的默认vlan为99,即没有携带vlan的数据会被打上vlan99的标签,进入vlan99归属的ip。

交换机1-4接口为不携带标签的vlan10数据,tag接口为24号端口,即数据由于在发出时会携带pvid为10的标签并且发给24号tag端口,且由于24号端口的pvid为99,所以会被直接转发不会被剥离vlan标签。

交换机9-19号端口为vlan1,由于24号端口的pvid为99,所以仍然是转发vlan1,而不会剥离标签。

20-23号端口为vlan99,由于24号端口pvid为99,所以会被去掉vlan标签,将一个不携带vlan标签的数据发给路由器,路由器收到以后打上缺省的pvid,最后变成vlan99的标签。

综上所述:

交换机1-4因为在路由器上面是收到了vlan10的标签,所以赋值为vlan10对应的ip

交换机9-19因为携带的是vlan1的数据,而不是缺省vlan,所以在路由器上面是vlan1对应的ip

交换机20-23因为携带的是vlan99,但因为24号端口的缺省vlan也是99,所以被剥离标签,路由器收到的是一个不带vlan标签的数据,所以在路由器上面被打上了路由器的缺省vlan,最后变成了vlan99的数据。

以上我大概说完了整件事情,最后我要说一下。

我大概把在跟再打混了,应该不影响阅读。

我到现在都没想清楚这个帧跟包的区分有那么重要吗?都是数据嘛。

点赞
  1. 匿名说道:

    看不懂,先跪了

  2. someone说道:

    谢谢这么详细的科普,博主四川人?

    1. 匿名说道:

      对的,成都人。

发表回复

必填项已用 * 标注

百度已收录