交换机基础
- 1、交换机工作原理
- 1.1、VLAN虚拟局域网
- 1.1.1、VLAN帧格式
- 1.1.2、VLAN的划分方式:
- 1.1.3、PVID
- 1.1.4、Access端口类型
- 1.1.5、Trunk端口类型
- 1.1.6、Hybird端口类型
- 1.2、MUX VLAN应用场景和原理
- 1.2.1、MUX VLAN原理
- 1.2.2、MUX VLAN配置
1、交换机工作原理
路由器的作用:构建路由表,根据路由表来进行数据转发。
交换机作用:
1、 构建和维护CAM表项
MAC地址和交换机端口的一个映射表;
2、根据CAM表来进行数据的转发
。
交换机的工作原理:交换机是基于收到的数据帧中的源MAC地址构建CAM表项,根据目的MAC来进行数据转发。
交换机的5种操作:
1、 学习功能:当交换机接口收到数据帧时,会获取帧的源MAC地址,并和接口进行关联,构建MAC表项。华为一个交换机一个MAC地址,思科可以每个接口一个地址。
[sw2]dis mac-address
MAC address table of slot 0:
-------------------------------------------------------------------------------
MAC Address VLAN/ PEVLAN CEVLAN Port Type LSP/LSR-ID
VSI/SI MAC-Tunnel
-------------------------------------------------------------------------------
5489-98c3-165b 1 - - GE0/0/10 dynamic 0/-
5489-9867-73d0 1 - - GE0/0/11 dynamic 0/-
5489-987a-4315 1 - - GE0/0/12 dynamic 0/-
-------------------------------------------------------------------------------
Total matching items on slot 0 displayed = 3
注意:在ensp上模拟先需要设置好PC的IP开机后并且各PC机之间相互接通,才会学习到MAC地址。
静态绑定MAC地址:
[SW1]mac-address static xxxx-xxxx-xxxx GigabiteEthernet 0/0/0 vlan 1
2、过期删除:
当交换机学习到MAC地址后,会构建MAC表项,如果300秒没有收到该MAC地址的帧,就会从MAC表中删除。
[SW1]mac-address aging-time 1000 //修改MAC地址的老化时间
[SW1]dis mac-address aging-time
3、泛洪:如果收到数据帧,目的MAC不在MAC表项中,就会向除接收端口以外的所有接口转发,即泛洪。
- BUM(报文)broadcast 广播MAC FF-FF-FF-FF-FF-FF ARP协议
- 未知unicast 单播MAC 第八为0 00-0(已知的MAC就转发,未知的泛洪,路由器收到未知IP就会丢弃),例如:01-8c-c2-0
0
-00-14 - Multicast 组播MAC 第八位为1,例如:01-8c-c2-0
1
-00-5E
4、转发功能:收到数据帧后,检查目的MAC,如果该MAC存在于自己的MAC表项中,就转发出去。
5、过滤功能:交换从某接口收到数据帧后,不会再从该接口转发,防环。
如果帧的CRC校验失败,就会丢弃。
交换接口可以配置安全,过滤。
冲突域:
交换机隔离冲突域。交换机每个端口隔离传输的数据。交换机一个端口就是一个冲突域。
没有交换机之前,由于使用Hub,相当是用一条总线与各台主机相连。
- 某时间多个节点同时发送消息,产生冲突。
- 从任意节点发出的消息都会被发送到其它节点
- 所有主机共享一条传输通道,无法控制网络中的信息安全
数据链路层的报文是数据帧,包含的是硬件的地址和源硬件的地址,在用户量较大时,这些来自不同设备的数据帧将发生严重的拥塞,一个集线器相连的所有主机都属于同一个冲突域,并且属于同一广播域。
广播域,指的是同一网段中所有设备组成的集合。
交换机与集线器不一样是,交换机的每个端口都是一个独立的冲突域,在不同的端口之间交换帧,并不分割广播域。
1.1、VLAN虚拟局域网
VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。
VLAN技术可以将一个物理局域网在逻辑上划分成多个广播域
,也就是多个VLAN。VLAN技术部署在数据链路层,用于隔离二层流量
。同一个VLAN内的主机共享同一个广播域。它们之间可以直接进行二层通信。而不同VLAN间
的主机属于不同的广播域
,不能直接实现二层互通。因此,广播报文就被限制在各个相应的VLAN内,同时也提高了网络安全性。
比如我们用VLAN来划分财务部、行政部、市场部、研发部,部门内部可以相互通信,而部门之间不能相互通信。
为了实现用户之间的二层隔离,可以将不同的用户加入不同的VLAN。可实现同一VLAN内端口之间的端口隔离。
VLAN 与子网
通过将IP地址的网络部分进一步划分为若干个子网,可以解决IP地址空间利用率低和两级IP地址不够灵活的问题。
与VLAN相类似的是,子网也可以隔离主机间的通信。属于不同VLAN的主机之间不能直接通信,属于不同的子网的主机之间也不能直接通信。但二者没有必然的对应关系。
联系 | VLAN | 子网 |
---|---|---|
区别 | 用于划分二层网络。在配置VLANIF接口的基础上实现路由互通,属于不同LVAN的用户才能互访。 | 用于划分三层网络。只要通过路由实现网络互通,属于不同子网的用户就能互访。 |
联系 | 同一VLAN内,可以划分一或多个网段。 | 同一子网内,可以划分一或多个VLAN。 |
VLAN的作用:
- 限制广播域:广播域被限制在一个VLAN内,节省了带宽,提高了网络处理能力。
- 增强局域网的安全性:不同VLAN内的报文在传输时是相互隔离的,即一个VLAN内的用户不能和其它VLAN内的用户直接通信。
- 提高了网络的健壮性:故障被限制在一个VLAN内,本VLAN内的故障不会影响其他VLAN的正常工作。
- 灵活构建虚拟工作组:用VLAN可以划分不同的用户到不同的工作组,同一工作组的用户也不必局限于某一固定的物理范围,网络构建和维护更方便灵活。
1.1.1、VLAN帧格式
TPID:Tag Protocol Identifier,2字节,固定取值,0x8100
,是IEEE定义的新类型,表明这是一个携带802.1Q标签的帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。
TCI:Tag Control Information,2字节。帧的控制信息,详细说明如下:
Priority:3比特,表示帧的优先级,取值范围为0~7,值越大优先级越高。当交换机阻塞时QoS,优先发送优先级高的数据帧。
CFI:Canonical Format Indicator,1比特。CFI表示MAC地址是否是经典格式。CFI为0说明是经典格式,CFI为1表示为非经典格式。用于区分以太网帧、FDDI(Fiber Distributed Digital Interface)帧和令牌环网帧。在以太网中,CFI的值为0。
类型 | 描述 |
---|---|
TPID | 2字节,固定取值,0x8100,表明这是一个携带802.1Q标签的帧。 |
Priority | 表示帧的优先级,取值范围为0~7,值越大优先级越高。 |
CFI | 1比特。CFI表示MAC地址是否是经典格式。CFI为0说明是经典格式,CFI为1表示为非经典格式。 |
VLAN ID | 12比特,取值范围为0~4095,但是0和4095在协议中规定为保留的VLAN ID。 |
VLAN的链路类型 | 描述 |
---|---|
Access链路 | 标准以太网帧(untagged frame),用于交换机和PC相连 |
Trunk 链路 | 有VLAN标记的以太网帧(tagged frame),用于交换机和交换机相连 |
Hybrid链路 | 华为设备的特殊的有VLAN标记的以太网帧(tagged frame),即可以用于交换机和PC相连,也可以用于交换机和交换机相连。 |
链路类型 | 描述 |
---|---|
接入链路(Access Link) | 连接主机和交换机的链路称为接入链路。主机不支持tagged frame帧。 |
干道链路(Trunk Link) | 连接交换机和交换机的链路称为干道链路。干道链路上通过的帧一般为带Tag的VLAN帧。服务支持tagged frame帧。 |
Hybrid混杂端口 | 华为设备的特殊的r接入链路和干道链路的混和体 |
1.1.2、VLAN的划分方式:
- 基于接口划分VLAN: 根据交换机接口分配VLAN ID。配置简单,可以用于各种场景。
- 基于MAC划分VLAN: 根据报文的源MAC地址分配VLAN ID。经常用在用户位置变化,不需要重新配置VLAN的场景。
- 基于子网划分VLAN: 根据报文的源IP地址分配VLAN ID。一般用于对同一网段的用户,进行统一管理的场景。
- 基于协议划分VLAN: 根据报文的协议类型分配VLAN ID。适用于对具有相同应用或服务的用户,进行统一管理的场景。
- 基于匹配策略划分VLAN:根据指定的策略(譬如匹配报文的源MAC、源IP和端口)分配VLAN ID。适用于对安全性要求比较高的场景。
1.1.3、PVID
PVID英文解释为Port-base VLAN ID,是基于端口的VLAN ID
,一个端口可以属于多个vlan,但是只能有一个PVID,收到一个不带tag头的数据包时,会打上PVID所表示的vlan号。
PVID的作用只是在交换机从外部接受到可以接受Untagged
数据帧的时候给数据帧添加TAG标记用的,在交换机内部转发数据的时候PVID不起任何作用。
可以把PVID叫做默认vlan id。
[SW1]vlan batch 10 20 创建两个vlan(10,20)
[SW1]undo info-center enable //关闭系统信息
language-mode Chinese //中文信息
[SW1]int e0/0/2
[SW1-Ethernet0/0/2]port link-type access //配置接口类型为access
[SW1-Ethernet0/0/2]port default vlan 10 //配置接口的缺省VLAN 10并将接口加入到指定VLAN
int e0/0/3
port link-type access
port default vlan 10
int e0/0/4
p l a
p d v 20
[SW1]dis port vlan active
T=TAG U=UNTAG
-------------------------------------------------------------------------------
Port Link Type PVID VLAN List
-------------------------------------------------------------------------------
Eth0/0/1 trunk 1 U: 1
T: 10 20 出主向允许10、20的tag
Eth0/0/2 access 10 U: 10 入方向去除10的tag
Eth0/0/3 access 10 U: 10
Eth0/0/4 access 20 U: 20
T=TAG U=UNTAG非tag处理
。
交换机int e0/0/2加入vlan 10
接受主机PC1发送的Untagged 数据帧的时候给数据帧添加TAG标记。这里添加的是PVID 10。
e0/0/2接口收到untag标准以太网帧,打上数据帧PVID 10。
1.1.4、Access端口类型
主要用在Access交换机与主机host之间。
Access端口收发数据帧的规则如下:
(1)在收数据方向:
- 如果收的是untag数据,会打上此接口的vlan id进行接收,默认是vlan 1,可以修改。
- 如果是tag数据,比较tag数据vlan id与此接口vlan id是否一致,一致则接收,否则丢弃。
(2)在发数据方向:
首先比较待发数据的vlan id。
- 如果和此接口vlan id一致,则剥离标签,并以untag形式发送;
- 如果和此接口vlan id不一致,则不发。
入方向:PC1发一个untag的数据给交换机SW1,交换机SW1的G0/0/2收到此数据,会默认打上PVID 10的tag。
出方向:首先比较待发数据的vlan id(PVID 10),交换机G0/0/3端口的PVID也是10,则剥离tag,发untag数据给主机PC2。
入方向:SW5发一个tagPVID 10的数据给交换机SW1,交换机SW1的G0/0/5收到此数据,比较tag数据vlan id与此接口vlan id是否一致,一致则接收。
出方向:首先比较待发数据的vlan id(PVID 10),G0/0/2、G0/0/3端口的PVID也是10,则剥离tag,发untag数据给主机PC1、PC2。
总结Access端口收发数据帧的规则
- 如果该端口收到对端设备发送的帧是untagged(不带VLAN标签),交换机将强制加上该端口的PVID。
- 如果该端口收到对端设备发送的帧是tagged(带VLAN标签),交换机会检查该标签内的VLAN ID。当VLAN ID与该端口的PVID相同时,接收该报文。当VLAN ID与该端口的PVID不同时,丢弃该报文。
- Access端口发送数据帧时,总是先剥离帧的Tag,然后再发送。
Access端口发往对端设备的以太网帧
永远是不带标签的帧`。
1.1.5、Trunk端口类型
Trunk 交换机之间的链路。
Trunk Link有两个作用:
- 中继作用:把VLAN报文透传到互联的交换机。
- 干线作用:一条Trunk Link上可以传输多个VLAN的报文。
Trunk端口收发数据帧的规则
常用在交换机与交换机之间连接,Trunk端口类型允许发送多个tag数据出去。
(1)在收数据方向:
- 如果收的是untag数据,会打上此接口的vlan id进行接收,默认是vlan 1,可以修改。
- 如果是tag数据,首先查看此接口的列表是否存在此vlan id,如果存在,则接收,否则丢弃。
untag数据:当Trunk端口收到帧时,将打上端口的PVID(vlan1)
包含Tag:如果该帧包含Tag(vlan20),则不改变。
没有设置vlan的就是vlan 1。 默认的PVID是1。Ping命令后抓包,没有802.1Q这一项。
(2)在发数据方向:
- 首先查看此接口的列表,如果待发数据的vlan id 在此列表中,则允许发送!否则不会从此接口发送。
- 如果数据允许发送,则比较此待发数据的tag是否和此接口vlan id是否一致:
- 一致则发untag数据;
- 否则发tag数据
发数据方向:
Trunk端口收发数据帧流程图:
以上比较难以在文字上理解,我们通过案例进行分析。
[SW2]vlan batch 10 20 //创建两个vlan(10,20)
[SW2]int e0/0/1
[SW1-Ethernet0/0/1]po link-type trunk //配置接口类型为trunk。
[SW1-Ethernet0/0/1]port trunk allow-pass vlan 10 20 //将接口加入到指定的VLAN中。
[SW1-Ethernet0/0/1]clear configuration interface Ethernet 0/0/2 //清除0/0/2前面的配置
int e0/0/2
undo shutdown //开启接口
int e0/0/2
port link-type access
port default vlan 10
int e0/0/3
p l a
p d v 10
int e0/0/4
p l a
p d v 20
SW1
Int e0/0/1
po link-type trunk
port trunk allow-pass vlan 10 20 //华为设备开启allow,VLAN 1才能通过,否则不行。
<SW2>dis vlan
VID Status Property MAC-LRN Statistics Description
--------------------------------------------------------------------------------
1 enable default enable disable VLAN 0001
10 enable default enable disable VLAN 0010
20 enable default enable disable VLAN 0020
<SW2>dis port vlan ac
T=TAG U=UNTAG
-------------------------------------------------------------------------------
Port Link Type PVID VLAN List
-------------------------------------------------------------------------------
Eth0/0/1 trunk 1 U: 1
T: 10 20
Eth0/0/2 access 10 U: 10
Eth0/0/3 access 10 U: 10
Eth0/0/4 access 20 U: 20
T=TAG U=UNTAG非tag处理
。
<SW2>dis vlan summary
static vlan:
Total 3 static vlan.
1 10 20
SW1和SW2互连的端口为Trunk端口,
PC1:PC1发一个untag的数据给交换机SW1,交换机SW1的G0/0/2收到此数据,会默认打上PVID 10的tag。
int e0/0/1
port trunk pvid vlan 10 //修改trunk PVID,默认是1。
注意:
Access端口类型只允许1种vlan id发untag数据出去;Trunk端口类型允许发送多个tag数据出去。
1.1.6、Hybird端口类型
Hybrid端口既可以连接主机,又可以连接交换机。思科叫私有VLAN。
Hybrid端口可以以Tagged 或Untagged方式加入VLAN 。
Hybrid接口和Trunk接口在很多应用场景下可以通用,但在某些应用场景下,必须使用Hybrid接口。比如在灵活QinQ
中,服务提供商网络的多个VLAN的报文在进入用户网络前,需要剥离外层VLAN Tag,此时Trunk接口不能实现该功能,因为Trunk接口只能使该接口缺省VLAN的报文不带VLAN Tag通过。
(1)在收数据方向:(1)如果收的是untag数据,打上此接口的vlan id进行接收,默认是vlan 1,可以修改。如果是tag数据,首先查看此接口列表是否存在此vlan id,存在则接收,否则丢弃;
(2)在发数据方向:首先查看,此接口的列表,如果待发数据的tag在此列表中,则发送,否则不处理;其次,发。
Hybrid端口收发数据帧的规则如下:
1.当接收到对端设备发送的不带Tag的数据帧时,SW1添加PVID,如果PVID在允许通过的VLAN ID列表中,则接收该报文,否则丢弃该报文。当接收到对端设备发送的带Tag的数据帧时,检查VLAN ID是否在允许通过的VLAN ID列表中。如果VLAN ID在接口允许通过的VLAN ID列表中,则接收该报文,否则丢弃该报文。
2.Hybrid端口发送数据帧时,将检查该接口是否允许该VLAN数据帧通过。如果允许通过,则可以通过命令配置发送时是否携带Tag。
配置port hybrid tagged vlan vlan-id命令后,接口发送该vlan-id的数据帧时,不剥离帧中的VLAN Tag,直接发送。该命令一般配置在连接交换机的端口上。
配置port hybrid untagged vlan vlan-id命令后,接口在发送vlan-id的数据帧时,会将帧中的VLAN Tag剥离掉再发送出去。该命令一般配置在连接主机的端口上。
SW1配置:
int e0/0/1
port hybrid tagged vlan 10 20 100 //允许vlan 10、20、100标记的帧通过的标签
clear configuration interface Ethernet 0/0/2 //清除0/0/2接口配置
int e0/0/2
un shutdown //需要启动
port hybrid pvid vlan 10 // 接收帧打上pvid=vlan 10的标签
port hybrid untagged vlan 10 //发出去帧去除vlan10的标签,发给主机
int e0/0/3
port hybrid pvid vlan 10
port hybrid untagged vlan 10
int e0/0/4
port link-type access
port default vlan 20
[SW1]display port vlan
Port Link Type PVID Trunk VLAN List
-------------------------------------------------------------------------------
Ethernet0/0/1 hybrid 1 -
Ethernet0/0/2 hybrid 10 -
Ethernet0/0/3 hybrid 10 -
Ethernet0/0/4 access 20 -
[SW1]dis port vlan ac
-------------------------------------------------------------------------------
Port Link Type PVID VLAN List
-------------------------------------------------------------------------------
Eth0/0/1 hybrid 1 U: 1
T: 10 20
Eth0/0/2 hybrid 10 U: 1 10
Eth0/0/3 hybrid 10 U: 1 10
SW 2配置:
vlan batch 10 20 100
clear configuration interface Ethernet 0/0/1
int e0/0/1
un sh
port hybrid tagged vlan 10 20 100 //允许vlan 10、20、100标记的帧通过的标签。
int e0/0/2
port hybrid pvid vlan 20
port hybrid untagged vlan 20 100
int e0/0/3
port hybrid pvid vlan 100
port hybrid untagged vlan 10 100
int e0/0/8
port hybrid pvid vlan 100
port hybrid untagged vlan 1 10 20 100 //发出去帧去除10\20\100的标签,发给服务器
[SW2]dis port vlan ac
-------------------------------------------------------------------------------
Port Link Type PVID VLAN List PVID是需要打的标签
-------------------------------------------------------------------------------
Eth0/0/1 hybrid 1 U: 1
T: 10 20 100传出去的数据帧允许10、20、100的标签
Eth0/0/2 hybrid 20 U: 1 20
Eth0/0/3 hybrid 100 U: 1 100
Eth0/0/4 hybrid 1 U: 1
Eth0/0/5 hybrid 1 U: 1
Eth0/0/6 hybrid 1 U: 1
Eth0/0/7 hybrid 1 U: 1
Eth0/0/8 hybrid 100 U: 1 10 20 100 进来的去除1 10 20 100的标签
1.2、MUX VLAN应用场景和原理
1.2.1、MUX VLAN原理
MUX (multiplex) VLAN是用在二层交换机的网络之间做流量隔离使用的,可以基于vlan做更精准的二层流量分离,以下面拓扑为例:
Separate[ˈsepəreɪt]adj. 单独的;分开的;独立的。principal [ˈprɪnsəpl] n. 最重要的;主要的,n. 主角;当事人;Subordinate [səˈbɔːdɪneɪt] n. 下属;下级。
MUX VLAN主要是为大中型网络进行设计的,一般在大中型企业内有很多职责不同的部门,各个部门之间要求相互独立,但是还有一部分部门之间有互相访问的的需求。对于企业来说,希望企业内部员工之间可以互相交流,而企业客户之间是隔离的,不能够互相访问。
分类 | 备注 |
---|---|
主VLAN principal vlan | VLAN中被设置成MUX 主vlan可以和任何MUX VLAN内的接口进行通讯,开启principal vlan的端口也叫principal port。 |
从vlan subordinate VLAN | 每个从vlan都有一个主vlan。 #互通型:group vlan组vlan,同一个vlan之间可以互相通讯。不同的VLAN是不能访问的;##隔离型: vlan之间不可以通讯。 |
分类 | 通信范围 |
---|---|
主VLAN principal vlan | 可以与MUX VLAN内所有端口进行通信。 |
互通型 VLAN | 可以与主VLAN进行通信,组内同样也可以相互通信,每个互通VLAN必须最少绑定一个主VLAN保证可以三层通信。 |
隔离型 VLAN | 只能与主VLAN进行通信,与其他端口是隔离状态,每个互通VLAN必须最少绑定一个主VLAN保证可以三层通信。 |
1.2.2、MUX VLAN配置
任务需求:
VLAN10 VLAN20内部可以互相通信
VLAN30为访客网络
所有部门都可以访问服务器
1、二层基本配置:
SW1:
注意建立VLAN
undo info-center enable //关闭系统信息
language-mode Chinese //中文信息
sys SW1
vlan batch 10 20 30 100
int g 0/0/1
port link-type trunk
port trunk allow-pass vlan 10 20 100
int g 0/0/2
p l t
p t a v 30 100
int g 0/0/4
p l a
p d v 100
SW2:
undo info-center enable //关闭系统信息
sys SW2
vlan b 10 20 30 100
int g 0/0/1
p l a
p d v 10
int g 0/0/2
p l a
p d v 10
int g 0/0/3
p l a
p d v 20
int g 0/0/4
p l a
p d v 20
int g 0/0/5
p l t
p t a v 10 20 100
SW3:
sys SW3
vlan b 10 20 30 100
int g 0/0/1
p l a
p d v 30
int g 0/0/2
p l a
p d v 30
int g 0/0/3
p l t
p t a v 30 100
2、配置主从VLAN:
在SW1内建立VLAN100为主VLAN,并且声明vlan10、vlan20为自己的互通型从vlan,vlan30为自己的隔离型从vlan。
SW1
vlan 100
mux-vlan //配置该VLAN为MUX VLAN
subordinate separate 30 //VLAN30为隔离型从VLAN
subordinate group 10 20 //VLAN10、20为互通弄从VLAN
[SW3-vlan100]dis mux-vlan
Principal Subordinate Type Interface
-----------------------------------------------------------------------------
100 - principal
100 30 separate
100 10 group
100 20 group
-----------------------------------------------------------------------------
然后将通向服务器的端口设为VLAN100(主VLAN),使服务器可以和MUX VLAN内随意部门进行通信。
SW1
interface GigabitEthernet0/0/4
port link-type access
port default vlan 100
port mux-vlan enable //使能接口的MUX VLAN功能
然后再SW2和SW3内同样声明各个VLAN的地位。
#SW2
vlan 100
mux-vlan
subordinate separate 30
subordinate group 10 20
int g0/0/1
port mux-vlan enable
int g0/0/2
port mux-vlan enable
int g0/0/3
port mux-vlan enable
int g0/0/4
port mux-vlan enable
#SW3
vlan 100
mux-vlan
subordinate separate 30
subordinate group 10 20
int g0/0/1
port mux-vlan enable
int g0/0/2
port mux-vlan enable
#此做法是为了告诉同组设备各vlan规定的角色,以方便对改vlan实行什么态度。