CCNA - Part11 - 隔离广播域的 VLAN 来了
之前在对交换机的介绍中,我们知道交换机的作用就是隔离广播域,在不需要跨网段传输时,在同一子网中转发数据包从而进行通信。实现的核心原理就是在交换机中拥有一张 MAC 表,记录了对应终端设备和接口之间的关系。
今天会在此基础上,介绍 VLAN 的概念,先来看这样一个设计很不好的网络,假设这是一家公司的拓扑图:
可以发现,公司的每个部门之间和核心交换机相连,这就会造成很大的问题:
- 非常大的广播域 - 广播非常消耗资源,特别是广播域很大的情况,比如 HR 部门发送一条广播,市场部,技术部等等部门都会收到。
- 不易于管理,比如 HR 看到的信息,其他部门不应该能看到。
- 安全的威胁,由于所有部门都在一个广播域,当其中一个部门出现安全隐患时,会蔓延到所有部门。
- 不容易排查问题
而 VLAN 的出现就是为了解决上述的问题。
VLAN
VLAN 翻译成中文,是"虚拟局域网"。 LAN 可以是由少数几家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络。VLAN 所指的 LAN 特指使用路由器分割的网络,也就是广播域。
也就是说,由原来的二层交换机只能构建单一的广播域,通过启用 VLAN 后,能够将网络分割成多个广播域。
在实现上,在交换机内部的 MAC 表,除了有 MAC 地址和对应的接口号外,还多了一列 VLAN 号,用于将广播域隔离开,数据只在 VLAN 号相同的端口进行传递。
VLAN 号的介绍
VLAN TAG 包的 VLAN ID 号,有效范围是 1-4094,0 和 4095 都为协议保留值,VLAN ID 0 表示不属于任何VLAN,但携带 802.1Q 的优先级标签,所以一般被称为 Priority-only frame,其一般作为系统使用,用户不可使用和删除。
1 为系统默认 VLAN,即 Native VLAN。默认情况下,所有的接口都属于 VLAN1. 当交换机收到未带有 VLAN TAG 包的数据帧时,会将数据包转发至 Native VLAN 端口。
2-1001 是普通的 VLAN,1006-1024 保留仅系统使用,用户不能查看和使用,1002-1005是支持 fddi 和令牌环的 VLAN,1025-4095 是扩展的 VLAN。
中继链路:是只承载标记数据(即具有 VLANID 标签的数据包)的干线链路
VLAN 接口的类型
Access:
Access 类型的端口只能属于一个 VLAN,用于连接终端设备。
Trunk:
Trunk 类型的端口可以允许多个 VLAN通过,可以接收和发送多个 VLAN 的报文,用于交换机之间的连接端口。
交换机使用 VLAN 的原理
Access 口的处理过程:
在收到终端设备发送的报文后,会先判断是否带有 VLAN 信息。
- 如果没有,则加上该端口的 VLAN 号。
- 接着找到目的 MAC 的端口号,并且 VLAN 号也相同,则进行转发,并去掉加上的 VLAN 信息。
- 如果找到目的 MAC (比如泛洪全 f),但是对应的接口 VLAN 号不满足,则不进行转发。
- 如果有,则丢弃(因为 Access 一般和终端设备直连,而 VLAN 信息都是交换机加上的,所以不会有 VLAN 信息。)
现在通过 Access 实现了隔离同一台交换机的之间的广播域隔离,但如果想要在多台交换机隔离又该怎么办呢?
为了实现在多台交换机的隔离,就需要将 VLAN 信息记录下了,然后在传递的交换机进行判断。在之前的数据链路层文章中介绍,用的协议主要是 Ethernet2 和 IEEE 的 802.3. 但对于这两个协议来说,都不能进行标识 VLAN 的信息,所以为了实现在多台交换机上隔离的效果,就在这两个协议中添加了一个 4Byte 的字段,用于表示 VLAN 信息。
其实 Type 字段:表示使用的协议,如 Ox8100 表示 802.1q .
Priority: 优先级字段,对数据帧分类,分级等,QoS 用到。
CFI:表示是否令牌环网数据。
VLAN ID:VLAN 号 (0 - 4095)
有了新添加的 VLAN 信息,将不同交换机连接起来的这条链路,就称为 Trunk 链路。在 Trunk 中,可以预先设置上允许通信的 VLAN 号,在交换机间传递。
这条链路也被成称为中继链路(干路):在同一链路上,可以实现传输所有 VLAN 的数据。
Native VLAN:当交换机收到没有 vlan 的信息数据包中,会将数据包发到默认的 native vlan 中。在连接的交换机中,要保证 native vlan 要一致。
Trunk 口的引入,处理过程:
在 Trunk 口收到数据时:
- 判断是否有 VLAN 信息。
- 如果没有则打上端口的 Native VLAN 号,并进行交换转发。
- 如果有 VLAN 信息,并且该 Trunk 端口允许该 VLAN 的数据进入,则将报文带有原有 VLAN 标记进行转发,否则丢弃。
在 Trunk 口发出数据时:
- 比较端口的 Native VLAN 号和将要发送报文的 VLAN 号
- 如果两者相等则剥离 VLAN 信息再发送。(也就是说发送的是本征 VLAN 时,trunk 端口会去除 VLAN 信息)
- 否则报文将携带原有的 VLAN 标记进行转发。
为同一 接口 配置不同 VLAN 类型
有时会出现这样的情况,为了方便会将多个终端设备接在一起,比如交换机和接口和一个 IP 电话相连,在电话的后面有着一台 PC。
这种意味着在一个 VLAN 中,有着不同种类的流量,一种是普通的数据流量,另一种是语音的流量。
为了区分这种流量,就需要对交换机额外配置下,第一次配置数据流量,第二次配置语音流量。但需要注意的是,虽然是不同类型的 VLAN,但却配置在同一接口下。
![WeChat Screenshot_202007
也就是说,可以为同一接口配置不同种类的流量(不同的 VLAN 号),但是一个接口只能配置一个同一类别的 VLAN。
配置的注意事项
VLAN 号的最大值取决于使用的交换机。
VLAN 1 是默认 VLAN,也是管理 VLAN. 我们知道交换机是二层设备是没有 IP 的,但实际上会有一个 IP,就是 VLAN 1 所虚拟出来的接口,可以为该接口配置一个 IP,作用就是作为网管使用,比如配合 Telnet 登录,以及一些交换机之间的管理流量比如 VTP, DTP 等。注意 VLAN 1 有两个作用,一个是管理作用,一个是作为默认的 Native VLAN. 两个是完全不同的功能。
最好将 Native VLAN 改变其他的 VLAN 号。
Trunk 接口两端的接口 Native VLAN 要一致。
最好为 Trunk 配置上允许的 VLAN,而是默认允许所有。
通信过程
假设所有交换机都刚开机,PC 发出一个数据包经过交换机 SW1,交换机会打上 10 的 VLAN TAG 标记,然后交换机会把这个数据帧转发给 VLAN = 10 的所有端口(除了进口),如下:
由于 SW1 的 Trunk 口包含 VLAN 10 ,并进行转发,数据帧到达 SW3 后,e0/2 和 e 0/3 均为 trunk 口,发现可接受 TAG 为 10 的数据帧,直接进行转发,如下:
SW2 的 trunk 口 e 0/3 同样也能接受 VLAN = 10 的数据。并且在 e 0/0 的 access 口进行 untag。而 e 0/1 的 access 只能接受 VLAN = 20 的数据,所以不进行转发。如下:
这样 PC3 就正常接收到 PC1 的数据了。
配置
# STEP1: set ip and name for every pc
PC> set pcname pc4
pc4> ip 10.1.1.1 255.255.255.0
# STEP2: Ping one of pc to test the connectivity
pc4:ping 10.1.1.4
# This means every pc in topography can be connected.
# So we have object that PCs under the same Vlan can communicate, but PCs under different VLAN can not.
# STEP3: Config Trunk in the sw1,sw2 and sw3.
sw1(config)# int range e0/1-2
sw1(config-if-range)# switchport trunk encapsulation dot1q
sw1(config-if-range)# switchport mode trunk
# you can see there are E0/0 and E0/3 Ports in default Vlan but no E0/1,E0/2 Prots.
# Because Trunk mode is configured for the 2,3 Ports.
sw1#show vlan
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Et0/0, Et0/3
10 VLAN0010 active
20 VLAN0020 active
1002 fddi-default act/unsup
1003 token-ring-default act/unsup
1004 fddinet-default act/unsup
1005 trnet-default act/unsup
sw2(config)#int e0/0
sw2(config-if)# switchport trunk encapsulation dot1q
sw2(config-if)# switchport mode trunk
sw3(config)#int e0/0
sw3(config-if)# switchport trunk encapsulation dot1q
sw3(config-if)# switchport mode trunk
# STEP4:Add vlan 10,20 to each switch. and configure access mode for e0/1-2 ports in the sw2 and sw3.
sw1(config)# vlan 10
sw1(config)# vlan 20
sw2(config)# vlan 10
sw2(config)# vlan 20
sw2(config)# int e0/1
sw2(config-if)# switchport mode access
sw2(config-if)# switchport access vlan 10
sw2(config)# int e0/2
sw2(config-if)# switchport mode access
sw2(config-if)# switchport access vlan 20
sw2#show vlan
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Et0/3
10 VLAN0010 active Et0/1
20 VLAN0020 active Et0/2
1002 fddi-default act/unsup
1003 token-ring-default act/unsup
1004 fddinet-default act/unsup
1005 trnet-default act/unsup
sw3(config)# vlan 10
sw3(config)# vlan 20
sw3(config)# int e0/1
sw3(config-if)# switchport mode access
sw3(config-if)# switchport access vlan 10
sw3(config)# int e0/2
sw3(config-if)# switchport mode access
sw3(config-if)# switchport access vlan 20
# STEP5:Test if VLAN is vaild.
pc4 pings pc6 is ok in the same vlan 10.
pc4 pings pc5 or pc7 is failed in the different vlan.
pc5 pings pc7 is ok in the same vlan 10.
pc5 pings pc4 or pc6 is failed in the different vlan.
拓展
问题:有这么一个要求,在 SW1 和 SW3 之间传递的数据不带 VLAN10 的标签
由于还需要保证双方的通信,所以 SW1 与 SW3 之间的 TRUNK 是不能改变的,但是在 TRUNK 模式下,发送的 TRUNK 端口可以将本征 VLAN 的标签去除,我们可以利用这个特点
改变本征 VLAN 时,在同一条链路时要同时改
//修改 SW1 e 0/2 端口
sw1(config-if)# switchport trunk native 10
//修改 SW3 e 0/2 端口
sw3(config-if)# switchport trunk native 10
通信过程
PC1 发送数据包进入,SW1 e0/0 的 access 端口,打上 vlan = 10 的标签,SW1 匹配后,转发到相应接口 e0/2,由于该接口的本征 VLAN 为10,又是发送的 TRUNK 端口,进而将 VlanID = 10 的标签去除。如图:
可以看到 SW1 与 SW3 链路中并没有添加的 VLANID 标签
在 SW3 e0/2 端口,收到没有 VLAN Tag 的数据,因此进行 TAG 操作,此时数据包上带有 VLAN = 10 的标签,进行匹配后,e 0/3 对该数据进行转发。如图:
在 SW2 与 SW3 的链路上带有 VLAN = 10 的标签了,SW2 的 e0/3 接收到数据后进行转发,交换机匹配后,e0/0 为 Access 口,对Tag 进行去除,紧着 PC3 收到数据.
总结
Access 口连接的是终端,Trunk 口连接的是交换机。
Access 口,解决的是在同一台交换机下,隔离广播域的作用。
Trunk 口,解决的是在多台连接的交换机下,隔离广播域的作用。
数据包在进入 Access 口时,会加上 VLAN TAG, 在 Access 输出时,会将 TAG 拿掉。在 Trunk 口输出时,VLAN TAG 不变。
数据包在进入 Trunk 口时,如果没有 VLAN TAG 则会加上 Native VLAN,有的话直接转发。 在 Access 输出时,会将 TAG 拿掉,在 Trunk 输出时,如果是 Native VLAN 则把 TAG 拿掉,不是的话直接转发。
CCNA - Part11 - 隔离广播域的 VLAN 来了的更多相关文章
- [CISCO] 转载:冲突域与广播域(区别、知识要点)
[CISCO] 转载:冲突域与广播域(区别.知识要点) 1.传统以太网操作(Ethernet Connection Ethernet) 传统共享式以太网的典型代表是总线型以太网.在这种类型的以太网中, ...
- Packet Tracer 5.0 构建CCNA实验(2)—— 配置VLAN
Packet Tracer 5.0 构建CCNA实验(2)—— 配置VLAN Vlan(Virtual Local Area Network) 即虚拟局域网.VLAN可以把同一个物理网络划分为多个逻辑 ...
- 【网络】trunk和vlan配置
篇一 : trunk配置和vlan配置 trunk配置 Switch>enable ? ? ?//进入特权模式 Switch#conf t ? ? ?//进入配置模式 Switch(config ...
- IP通信基础学习第九周
H3C单臂路由: 交换机的所有接口是在同一个广播域 用vlan进行隔离广播域 创建vlan,display可查看是否创建成功 进入接口是Interface,配置接口Port 先测试相同的vlan ,可 ...
- 计算机数制与IPv4
常用计数:十进制数 1010D.二进制 1010B.十六进制1010H 计算机数制: 数制组成=每一位上的数字*该位的值 IPV4地址一共32bit 人使用点分十进制的方式来进行记忆 IPv6地址一共 ...
- 网络基础概念(IP、MAC、网关、子网掩码)
目录 IP地址 MAC地址 网关 子网掩码 反子网掩码 子网掩码 子网划分一: 子网划分二: 子网汇聚 广播域 冲突域 CSMA/CD IP地址 ip地址是用于标识网络中每台设备的标识.目前 IPV4 ...
- 2.1-VLAN/TRUNK/VTP
2.1-VLAN/TRUNK/VTP 注意:配置VLAN时要退出VLAN配置模式才会执行 如果VLAN被删除或者shutdown,那么属于这个vlan的接口将被阻塞(灯一直是橙色,变不了绿色) ...
- CCNA网络工程师学习进程(2)基本的网络设备
在组网技术中用到的设备有中继器(Repeater).集线器(Hub).网桥(Bridge).交换机(Switch).路由器(Router).分别工作在OSI参考模型中的物理层.数据链路层和网络层. ...
- Linux实现的IEEE 802.q VLAN
本文转载自: http://blog.chinaunix.net/uid-20786208-id-4291059.html Technorati 标签: Linux VLAN ---------- ...
随机推荐
- twaver html5 如何设置节点不可拖动
解决思路: 1.创建一个不可移动的图层 : layer 2.设置不可拖动的节点node 的图层为 layer 见代码: var box = new twaver.ElementBox(); var ...
- android java层通过jni加载使用第三方的so库
1.例如我们自己编译一个so库,我们的其他模块要加载如何操作了 首先在c盘新建立一个文件夹sb,在sb下面新建立一个文件夹jni,如果你要使用ndk编译so库,必须需要有jni目录 2.在jni目录下 ...
- 【JAVA8新的时间与日期 API】- 传统时间格式化的线程安全问题
Java8之前的日期和时间API,存在一些问题,最重要的就是线程安全的问题.这些问题都在Java8中的日期和时间API中得到了解决,而且Java8中的日期和时间API更加强大. 传统时间格式化的线程安 ...
- 入门大数据---基于Zookeeper搭建Spark高可用集群
一.集群规划 这里搭建一个 3 节点的 Spark 集群,其中三台主机上均部署 Worker 服务.同时为了保证高可用,除了在 hadoop001 上部署主 Master 服务外,还在 hadoop0 ...
- 吐血推荐,想进BAT必看
不必太纠结于当下,也不必太忧虑未来,人生没有无用的经历,当你经历过一些事情后,眼前的风景已经和从前不一样了.--村上春树 一.包含如下内容 ActiveMQ消息中间件面试专题 BAT80道面试题 BA ...
- github Pull Request合入全流程介绍
图解全流程 详细步骤 1. fork仓库 2. clone fork仓库到本地 3. 关联upstream原仓库 在fork本地仓库输入下面命令进行关联: git remote add upstrea ...
- python_Linux系统的常用命令(三)
用户权限常用命令 1.用户和权限 r--读--4, w--写--2, x--执行--1 chmod 可以修改用户/组对文件/目录的权限 格式:chmod +/-rwx 文件名/目录名 su -用户:切 ...
- (私人收藏)[开发必备]最全Java离线快速查找手册(可查询可学习,带实例)
(私人收藏)[开发必备]最全Java离线快速查找手册(可查询可学习,带实例) https://pan.baidu.com/s/1L54VuFwCdKVnQGVc8vD1TQnwmj java手册 Ja ...
- html通过css,js实现div悬浮效果总汇,如原生JS实现滚动到一定位置实现div悬浮
在我们的实际开发中,经常会遇到页面中需要悬浮效果,比如最早的客服联系,对联悬浮广告等,今天为大家介绍一些如何实现div悬浮的效果. 传统的fixed实现: 通过css中的属性position参数设为f ...
- 奇怪DP之步步为零
题目 思路 很明显的dp就是不会跑啊,所以最后dfs救了一下场,不出所料,最后果然T了,现在说一下正解. 为什么说是奇怪dp呢,这道题的dp数组是布尔型的,f[i][j][k]代表在到第i行第j列之前 ...