今天是博主第一次写博客,也是准备通过这种方式在IE考试前把自己平时学习的一些心得总结一下,也给大家分享一下。
现在有一个词叫 Paper IE,因为当时无论是考华为还是考思科,LAB都有版本可以练,面试也有相应的题库,笔试更不用说,凭借中国人强大的考试基因,基本上背背题库就能过。但是想成为一个真正的数通大神不是一纸证书就可以证明的,要成为真正的大神谈何容易,希望可以通过面授的学习加自己课后的总结成为真正的数通大神。
学习一门技术,比如今天要分享的VLAN的接口类型,首先在面授的时候一定要保证自己能听懂,课后一定要自己去想,去练习,直到非常熟练为止,最后是最重要的说,与别的工程师讨论问题的时候保证自己学的东西能说出来,而且特别是与客户在沟通的时候,能通过自己的表达让不懂这个技术的人也能听懂,那就算真正掌握了这门技术了。
好了,话不多说,进入正题。
首先在说VLAN接口类型的时候先说下什么是VLAN,因为以前找工作的时候,面试官经常会问些比较简单但是平时又不太注意的问题,博主曾经就被问过 “什么是VLAN”?当时博主还没系统学习NA的时候,就大致知道一些简单的配置,当时回答“VLAN就是把一个网络分成几个区域,让不同区域的人不能互访,然后怎么怎么配置啥的。”当然那个面试官很不满意。这也让我明白了学习一门技术就要方方面面学的透彻,哪怕是最基本的容易忽略的也要好好掌握。
VLAN :Virtual Local Area Network 虚拟局域网
VLAN技术就是将一个物理的网络在逻辑上划分成多个广播域的二层技术,即1 VLAN=1 广播域 =1 子网
至于为什么要划分VLAN,好处又是什么,总结起来以下四点:
1.限制广播域:广播域被限制在一个VLAN内,节省了带宽,提高了网络处理能力。
2.增强局域网的安全性:不同VLAN内的报文在传输时是相互隔离的,即一个VLAN
内的用户不能和其它VLAN内的用户直接通信。
3.提高了网络的健壮性:故障被限制在一个VLAN内,本VLAN内的故障不会影响其
他VLAN的正常工作。
4.灵活构建虚拟工作组:用VLAN可以划分不同的用户到不同的工作组,同一工作组
的用户也不必局限于某一固定的物理范围,网络构建和维护更方便灵活。
在说接口类型之前先来了解下VLAN帧的格式:
如图所示,没有携带TAG帧主要由6字节的DMAC,6字节的SMAC,2字节的Type,还有可变长的46-1500字节的DATA与4字节的FCS所组成。
而携带TAG的帧在以太网数据帧的目的MAC地址和源MAC地址字段之后、协议类型字段之前加入4个字节的VLAN标签(又称VLAN Tag,简称Tag),
所以,在一个VLAN交换网络中,以太网帧有以下两种形式:
1.有标记帧(Tagged Frame) 加入了4字节VLAN标签的帧
2.无标记帧(Untagged Frame) 原始的、未加入4字节VLAN标签的帧
而在我们的日常生活中,不是所有的设备都能识别携带TAG的帧,但是在交换机内部处理的数据帧一律都是Tagged帧。
1.PC主机、服务器、Hub、傻瓜交换机只能收发Untagged帧。
2.交换机、路由器、AC既能收发Tagged帧(路由器的单臂路由可以收发tagged帧),也能收发Untagged帧。
3.语音终端、AP等设备可以同时收发一个Tagged帧和一个Untagged帧。
PS:在华为交换机和思科交换机对接时,需要改TAG帧里的2字节的TPID字段,华为设备里携带的是802.1Q的帧,如果不支持802.1Q的设备,帧会被丢弃,而思科设备的TPID是私有的,所以两台设备对接一定都要改成802.1Q
VLAN链路类型分为两种:接入链路(access link)和干道链路(trunk link)
接入链路
只可以承载1个VLAN的数据帧
用于连接交换机和用户终端
接入链路上传输的帧都是Untagged帧。
干道链路
可以承载多个不同VLAN的数据帧
用于交换机间互连或连接交换机与路由器
干道链路上传输的帧几乎都是Tagged帧用于两端识别。
PVID :Port VLAN ID 代表端口的缺省VLAN,默认每个接口PVID=1
交换机从对端设备收到的帧有可能是不带TAG的数据帧,但所有以太网帧在交换机中都是以TAG的形式来呗处理和转发的,因此交换机必须给端口收到的不带TAG的帧打上TAG,所以必须给交换机的端口配置缺省的VLAN,即PVID。当改端口收到了不带TAG的数据帧时,交换机给它加上PVID。
用于和不能识别Tag的用户终端相连,或者不需要区分不同VLAN成员时使用。
用于连接交换机、路由器、AP以及可同时收发Tagged帧和Untagged帧的语音终端。
允许多个VLAN的帧带Tag通过,但只允许一个VLAN的帧从该类接口上发出时不带Tag(即剥离Tag)。
Hybrid接口和trunk接口的处理带TAG的帧和不带TAG的帧的方式一样,但是Hybrid接口可以通过的可以通过命令设置来确定发送时是否携带Tag。
hybird接口是交换机上既可以连接用户主机,又可以连接其他交换机的端口,可以连接接入链路也能连接干道链路,
hybird 接口允许多个VLAN帧通过,并且可以在出方向将某些VLAN帧的TAG剥离,使得出接口的帧可以部分打TAG部分
不打TAG,做到灵活控制
用一张图来总结一下三种端口对于TAG帧的处理方式:
图中连接主机的端口是access各自打上了缺省的VLAN,交换机互联为trunk,允许VLAN 10 20 通过,SW3的G0/0/1口PVID为10
SW4的G0/0/1口PVID为20.两台PC处于不同VLAN 但在同一网段,纯二层环境。问PC1能否PING通PC2?
这个问题当时是一个大佬在我们工程师群里提的一个问题,当时群里各种讨论,有人说“不能通,因为不在同一个VLAN,没有三层VLANIF所以不能通”,也有人说“能通,因为在同一网段。”等等各种各样的回答。
1.access端口接收不带Tag的报文时接收该报文,并打上缺省的VLAN ID。所以PC1在PING PC2时在SW3的g0/0/2口打上了PVID为10的TAG帧。
2.trunk口接收带Tag的报文时,如果和端口PVID相同,则剥离TAG所以在通过SW3的G0/0/1时变成了Untagged帧。
3.在通过SW4的G0/0/1口时,打上了PVID为20的TAG帧,因为trunk口接收不带Tag的报文时,打上缺省的VLAN ID。
4.最后因为access端口对比VLAN ID和端口的PVID,相同时,接收该报文,并剥离TAG。
最后数据帧回程时和来时原理一样,实现两台PC的二层通信
以下是两台交换机的具体配置:
SW3:
SW4:
这个问题是博主在刚学OSPF的时候遇到的,一台交换机和路由器中间起OSPF,配置如上图所示,但是邻居就是起不来
查看路由器的邻居状态如下图所示:
可以看到ospf的邻居列表是空的,博主按照OSPF邻居关系建立的条件进行排障,发现两边的配置并没有什么问题,于是博主在交换机侧抓包测试,发现了原因:
由图可知交换机和路由器既能自己发送HELLO包也能收到对方发送的HELLO包,但是却无法建立邻居关系,
点开交换机发送的hello包就发现原因了:
交换机发出的数据帧是携带TAG的,而我上文也提到了,路由器只有在单臂路由的情况下才可以收发TAG帧,此时路由器并没有配置单臂路由,所以无法识别TAG帧,邻居关系自然无法建立,所以我们为了让双方建立邻居关系,必须要把TAG去掉。
这个时候就要用到TRUNK口的特性和PVID(具体见上文),当VLAN ID与缺省VLAN ID相同,且是该接口允许通过的VLAN ID时,去掉Tag,发送该报文。所以我们只要在交换机的G0/0/1口配置PVID为11就行
配置完我们在看下邻居状态:
两边已经建立起FULL的邻接关系。我们看下此时抓到的新的HELLO包
可以看到此时交换机发送的数据帧已经是不带TAG的帧了。
纯二层环境,配置见图,PC1-PC4以及服务器在同一网段但不在同一VLAN,服务器属于VLAN100
按图中的配置可以实现同一VLAN可以互访,不同VLAN无法通信,但是要求VLAN 10和VLAN 20都能访问服务器,应该怎么办呢?
按上文我们说到的方法,可以通过修改PVID实现不同VLAN间的互访,比如SW1 g0/0/1口的PVID修改为10,SW2的G0/0/1口的PVID修改为100,那么可以实现PC1与服务器的通信,其他三台主机无法与服务器通信,那么怎么实现四台主机都能与服务器通信呢?这就用到了hybird端口。
上文已经说到:Hybrid接口和trunk接口的处理带TAG的帧和不带TAG的帧的方式一样,但是Hybrid接口可以通过的可以通过命令设置来确定发送时是否携带Tag。
我们只要把交换机与主机和服务器相连的接口都改成hybird接口,并且设置吧VLAN 100的帧和自己所属VLAN的帧去掉TAG就可以实现四台主机均可访问服务器的需求
此时我们测试下连通性
交换机除了这三种接口之外还有一种生产环境不太容易见到的接口QinQ
QinQ(802.1Q-in-802.1Q)技术是一项扩展VLAN空间的技术,通过在802.1Q标签报文的基础上再增加一层802.1Q的Tag来达到扩展VLAN空间的功能,可以使私网VLAN透传公网。由于在骨干网中传递的报文有两层802.1Q Tag(一层公网Tag,一层私网Tag),即802.1Q-in-802.1Q,所以称之为QinQ协议。
博主也没有见过QinQ的接口,如果有兴趣可以找找资料补充下知识
华为的交换机的默认配置也是有少许不同的,比如盒式交换机S5700和数据中心交换机CE12800
S5700的默认接口类型是hybird且端口都是默认打开的
可以看出CE12800的默认端口是ACCESS且端口都是默认关闭的,使用的话要手动打开。(配置完还要输入commit提交后命令才能生效)