带你走进网络世界交换篇——交换机接口的故事

VLAN基本概念

●一个VLAN中所有设备都是在同一广播域内,不同的VLAN为不同的广播域

●VLAN之间互相隔离,广播不能跨越VLAN传播,因此不同VLAN之间的设备一般无法互访,不同VLAN间需通过三层设备实现相互通信

●一个VLAN一般为一个逻辑子网,由被配置为此VLAN成员的设备组成

●VLAN中成员多基于交换机的端口分配,划分VLAN就是对交换机的接口划分

●VLAN工作于OSI参考模型的第二层

●VLAN是二层交换机的一个非常根本的工作机制

VLAN基本通信原理

为了提高处理效率,交换机内部的数据帧一律都带有VLAN Tag ,以统一方式处理。当一个数据帧进入交换机端口时如果没有带VLAN Tag ,且该端口上配置了PVID( Port VLAN ID )那么该数据帧就会被标记上端口的PVID.

如果数据帧已经带有VLAN Tag ,那么,即使端口已经配置了PVID ,交换机不会再给数据帧标记VLAN Tag.

PVID是“端口缺省VLANID"的意思,即一个端口缺省属于的VLAN,

由于端口类型不同,交换机对帧的处理过程也不同。下面根据不同的端口类型分别介绍。

01

Access 端口处理帧的过程

Access端口处理VLAN帧的过程如下:

1) 收到一个二层帧。

2)判断帧是否有 VLAN Tag.

  • 没有Tag,则标记上Access端口的PVID ,进行下一步处理。

  • 有Tag ,则比较帧的VLAN Tag和端口的PVID ,两者一致则进行下一步处理;否则丢弃帧。

3)二层交换机根据帧的目的 MAC地址和VLAN ID查找VLAN配置信息,决定从哪个端口把帧发送出去。

4)交换机根据查到的出接口发送数据帧。

  • 当数据帧从 Access端口发出时,交换机先剥离帧的VLAN Tag ,然后再发送出去。

  • 当数据帧从 Trunk端口发出时,直接发送帧。

  • 当数据帧从Hybrd 端口发出时交换机判断VLAN在本端口的属性是Untag还是Tag.如果是Untag ,先剥离帧的VLAN Tag ,再发送;如果是Tag ,直接发送帧。

02

Trunk端口处理帧的过程

Trunk端口处理VLAN帧的过程如下:

1) 收到一个二层帧。

2)判断帧是否有 VLAN Tag.

  • 没有Tag ,则标记上Trunk端口的PVID ,进行下一步处理。

  • 有Tag,则判断该Trunk端口是否允许该VLAN帧进入。允许则进行下一步处理,否则丢弃帧。

3)二层交换机根据帧的目的 MAC地址和VLAN ID ,查找VLAN配置信息,决定从哪个端口把帧发送出去。

4)交换机根据查到的出接口发送数据帧。

  • 当数据帧从 Access端口发出时,交换机先剥离帧的VLAN Tag ,然后再发送出去。

  • 当数据帧从Trunk端口发出时,直接发送帧。

  • 当数据帧从Hybrid端口发出时,交换机判断VLAN在本端口的属性是Untag还是Tag.如果是Untag,先剥离帧的VLAN Tag ,再发送;如果是Tag ,直接发送帧。

Protected port

  • Protected port虽然同处一个VLAN ,但是彼此无法互相通信

  • Protected pot只能与unprotected port (默认)互相通信

  • Protected port特性无法跨交换机实现

配置非常简单:

Switch(onfig-f)# switchport protected

TRUNK

01

Trunk概述

●当一条链路,需要承载多VLAN信息的时候,需使用trunk来实现

●Trunk 两端的交换机需采用相同的干道协议

●一般见于交换机之间或交换机与路由器、服务器之

02

封装协议

1. baby giant frame大于标准的MTU1500字节,但是小于2000字节

对于采用ISL封装的, MTU=1548 (下文有解释)

对于Dot1Q

MTU=1522

2. Vlan 范围和映射

ISL支持的vlan编号是1-1005 (默认允许正常的), 802.1q是1-4094 (默认允许所有正常和扩展的)

所以当穿过802.1q和ISL的干道的时候就需要映射。

(1) 单台交换机上最多允许8个802.1q到ISL vlan的映射

(2)只能映射到ethernet的vlan

(3)该被映射的ethernet vlan将被阻塞

(4)映射仅在本地有效

3.链路聚集模式

●trunk

永久链路聚集模式,强制trunk,发送DTP帧

●Nonegotiate

永久链路聚集模式,必须手动将邻居配为干道口,不发送DTP帧。一般用于对端设备

不支持DTP的情况

●Desirable

主动尝试将链路成为干道(默认模式)发送DTP帧如果邻接接口为trunk. desirable.或AUTO ,那么此接口成为Trunk.

●Auto

接口愿意成为trunk ,如果邻接接口被设置为trunk 或desirable ,那么接口就成为trunk

●Access

永久的nontrunking模式,并且与对端接口协商,使其成为nontrunking链路

03

ISL

●CISCO 私有协议

●支持 PVST

●在原始的数据帧基础 上封装上ISL头及新的FCS

●没有修改原始的数据帧 ,因此处理效率比802.1Q高

●VLAN字段, 15个比特目前用了10个,那么最多支持2的10次方=1024个VLAN

●“原始以太网帧”最大是1518个字节,1500的IP MTU加上源目的MAC地址共12类型字段2个, CRC4,再加上30字节的ISL封装,就是1548字节了

上图中几个字段( ISL头)的描述如下:

●DA

40bit的组播地址用于标示这个FRAME是ISL的

●TYPE

标示这个帧是什么类型的,如以太、令牌环等

●SA

发送帧的原交换机MAC

●AAAAO3

SNAP (固定值)

●VLAN

15个比特目前用了10个,那么最多支持2的10次方=1024个VLAN

●INDEX

这个帧的对端交换机来源端口

所以ISL帧最大1548bytes ( 1518+26+4 )

04

Dot1q

1.帧格式

802.1Q Tag包含4个字段,其含义如下:

●EtherType

长度为2字节,表示帧类型。取值为0x8100时表示802.1Q Tag帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。

●PRI

Priority,长度为3比特,表示帧的优先级,取值范围为0~7 ,值越大优先级越高。

用于当交换机阻塞时,优先发送优先级高的数据包。

●CFI

Canonical Format Indicator,长度为1比特,表示MAC地址是否是经典格式。

CFI为0说明是经典格式,

CFI为1表示为非经典格式。用于区分以太网帧、FDDI ( Fiber Distributed Digital Interface )帧和令牌环网帧。

在以太网中, CFI的值为0.

●VID

VLAN ID长度为12比特表示该帧所属的VLAN,在VRP中可配置的VLAN ID取值范围为1 ~ 4094.

2.优缺点

缺点是破坏了原始以太帧以及重新计算FCS , ISL是直接封装头和尾。DOT1q公用,ISL私有

802.1Q支持4096个VLAN

最大帧: 1518+4=1522

3. Native Vlan

在802.1q的native vlan是不打标签的使用Dot1q的交换机把所有未被标记的frame转发到native vlan中,而ISL会对所有的数据帧,包括native vlan进行封装,因此如果收到没有封装的数据帧它会丢弃(ISL没有native VLAN的概念

●Native VLAN所属的帧在经过trunk时不打标签

●Native VLAN在Trunk两端必须匹配,否则会出现VLAN流量互串

●默认的native vlan是vlan 1

●建议将一个生僻的VLAN配置为Native vlan

我们看上面这个图,两台交换机trunk两端native Man 不样,会有什么问题?首先两端的vlan2通信肯定是没有问题的,但是vlan3和vlan4通信就有问题了, 左边vlan3的用户发出来的数据帧从左交换机出去上trunk ,是不打标签的,但是这些数据帧到了右交换机,它会认为这些数据帧是属于vlan4的,这就出现问题了。

Switch(config-if)# switchport trunk native vlan ?

在trunk上设置native vlan

Switch(confíg)# vlan dot1q tag native

上述命令将对 native vlan也打标签

4.vlan范围

05

DTP

●Trunk 可以手工静态配置或者通过DTP进行协商

●DTP使得交换机之间能够进行trunk协商

06

Trunk配置

Switch(config-if)# switchport mode access

●将接口设置为access模式

Switch(config-if)# switchport mode encapsulation {dot1q | ISL}

●如果接口为trunk ,设置干道协议类型

Switch(config-if)# switchport mode dynamic {auto | desirable}

●将接口设置为DTP动态协商,可选auto或desirable

Switch(config-if)# switchport nonegotiate

●将接口设置为nonegotiate ,不发送DTP帧,如果配置为非协商,那么就必须手工配置接口模式,为access或trunk

上图中,两端PC都属于vlan10d的话,如果SW1的fa0/23口将vlan 10remove掉,那么PC肯定就无法通信了。

07

MTU问题

MTU就是最大传输单元,不同的系统对于MTU的设定和理解是不同的。

CISCO IOS上, interface x接口模式下:

●MTU ?

指的是二层的MTU ,这是接口MTU ,指的是不包含二层帧头的、Payload 的MTU ,这个MTU值一般是不能手工修改的,默认是1500字节。如此-来CISCO路由器支持的二层数据帧最大值就是1500的payload加上二层帧头及二层FCS :目的mac6字节+源mac6字节+类型字段2字节+FCS4字节,所以总的就是1518字节。

●Ip mtu ?指的是三层的 MTU这个值可以手工修改,但是最大值必须小于接口的二层MTU值也就是1500。

这个MTU指的是三层IP包的总大小,如果接口发出的包大于这个接口的ip mtu ,那么这个IP包将被分片

做个测试:.上图中,R1的fa0/0口ipmtu为1500,

我们去ping 1.1.1.2 repeat 1 size 1500 ,我们会发现R1直接将一个ICMP包发出去了,没有分片,报文如下:

从报文中我们可以看到,这个IP包的大小为1500字节。

其中IP报头20字节,ICMP报头8字节,ICMPdata荷载1472字节,刚好1500字节。

因此在CISCO IOS设备上, ping后面跟着的size指的就是发出去的IP包整个的大小。

而在windows PC的cmd下, ping后跟的包大小就是ICMP data 大小, ping -1 1472 ,产生的包就是1500字节

还是上面的例子,如果我们在R1上,ping 1.1.1.2 repeat 1 size 1501 ,这个时候, R1由于产生的这个IP包大于mtu 1500 ,因此会被分片,然后在R2上,这两个分片被重组。

为了方便广大网络爱好学习者一起学(聚)习(众)交(搞)流(基),特开设思科干货交流群,里面已经上传大量学习资料,欢迎广大网络工程师进群学习!

扫我入群👇

(0)

相关推荐