交换基础1

交换设备

中继器Repeater

中继器是信号放大设备,用于远距离传输时信号的重放。

集线器HUB

早期狭义上的HUB是物理层设备,这种HUB仅仅将各个交换端口用电缆连接起来,使用CSMA/CD来控制收发信号。整个HUB是一个冲突域,HUB上的任何终端可以侦听到全部的其它终端信号,没有安全性。

现在我们广义上的HUB指的是非网管交换机,即傻瓜交换机,它仅具有二层转发能力。

冲突域

在同一个网络上两个设备同时进行传输则会产生冲突;在网络内部信号传输所产生与发生冲突的这样一个区域称为冲突域。

广播域

一个广播分组能被泛洪传播的范围叫广播域。

CSMA/CD

CSMA/CD是带冲突检测的多路载波监听。简单来说,其原理就是持续侦听信道是否空闲,空闲时才发送数据;如果遇到同时发送,即发生冲突,会有一系列回退机制,等待重发。这种技术用于早期标准以太网(10Mbps)和快速以太网(100Mbps)的半双工模式。

网桥Bridge

网桥是阻断冲突域的设备。假设在两个HUB之间由一个网桥连接,网桥会记录这两个HUB上接入的所有终端的链路层地址,这样当HUB A访问HUB A上的终端时,信号就可以不用被发送到HUB B;仅当HUB A 终端访问 HUB B上的终端时才会发送到HUB B。因此,网桥一定程度上可以将冲突域减半。

SWITCH HUB_BRIDGE

交换机Switch

和网桥类似,交换机也是阻断冲突域的设备,一个交换机端口就是一个冲突域。现代交换机基本都采用存储-转发的方式进行转发,通过ASIC硬件可以将转发速度达到线速(100M/1G/10G/25G/40G/100G)。一个衡量交换机性能的重要指标是吞吐量/背板带宽,即交换机所有端口满载时消耗的带宽总和。

交换机工作原理

交换机工作原理可以总结为三点

  • 学习mac地址

  • 泛洪广播、组播和未知单播

  • 点到点转发已知单播

考虑两台同一局域网内的终端A和B首次ping通信过程:

终端A欲发送icmp包给B,但是无法填充目的mac(即B的mac),于是发送arp广播,问谁是B;

此时交换机收到广播包,首先学习A的mac地址,然后泛洪该广播;

B收到arp广播后,填充自己的arp表,单播回复我是B;

此时交换机收到已知单播包(已习得A的mac),首先学习B的MAC地址,然后点到点转发该arp回复包;

A收到B的arp回复,填充自己的arp表,发送icmp包给B;

交换机收到已知单播,点到点转发给B;

B收到icmp echo,回复icmp reply;

交换机收到已知单播,点到点转发给A;

A收到icmp回复,通信结束。

交换机端口模式

交换机端口模式是交换机在数据转发时重要的依据,不同的端口模式会影响该接口的二层封装。

access

access端口是用来接入终端的端口模式,思科的access口只能属于一个vlan,access口收发的流量不带ISL或802.1Q标签。

trunk

trunk端口主要用于网络设备间的连接,如交换机-交换机,路由器-交换机等。turnk端口可以传输多个vlan的流量,通过ISL或802.1Q封装来区分他们。配置trunk端口前,需要配置trunk端口的封装方式,另外trunk模式端口的DTP模式自动为on。

private-vlan

private-vlan是上述所讲的辅vlan端口,用于VLAN内的VLAN划分。

dot1q tunnel

dot1q tunnel是qinq模式,可以封装外层802.1Q标签,可更精确的区分业务。

交换机端口模式配置

1
2
###交换机端口模式配置
switch(config-if)#switchport mode [access/trunk/dot1q-tunnel/private-vlan/dynamic]

以太网数据链路层简介

数据链路层的子层

数据链路层,即二层,分为MAC子层和LLC子层。IEEE802.2定义了LLC子层,IEEE802.3定义了MAC子层,LLC子层在MAC子层之上。

LLC子层

以太网 LLC 子层处理上层与下层之间的通信。 这通常是在网络软件和设备硬件之间进行的。 LLC 子层获取网络协议数据(通常是 IPv4 数据包)并加入控制信息,帮助将数据包传送到目的节点。 LLC 用于与应用层的上层进行通信,并将数据包转换到下层以便传输。

MAC子层

MAC 构成数据链路层的较低子层,负责链路层面的寻址。 MAC 由硬件实现,通常在计算机网卡中实施。IEEE 802.3 标准指定了这些细节。

以太网二层帧

以太网常见的二层mac帧有两种,第一种是Ethernet II,是由Xerox与DEC、Intel(DIX)在1982年制定,后来被定义在RFC1042;另一种是IEEE802.3,由IEEE802委员会在1985年定义,后被写进RFC1042。

Ethernet II

Ehernet II二层帧通常被广泛用在终端数据通信,上层协议支持IP,ARP等。帧结构如下

SWITCH ETHERNETII

其中类型字段表示了上层协议类型,为大于1500的值,可通过类型字段大于1500分辨出这是EthernetII帧格式,如果小于1500则是IEEE802.3帧格式

IEEE802.3

IEEE802.3二层帧通常用在网络设备间的通信,如STP,CDP等。帧结构如下

SWITCH 802

其中长度字段表示了帧长度,为小于1500的值,可通过类型字段小于1500分辨出这是IEEE802.3帧格式,如果大于1500则是EthernetII帧格式

CDP

CDP,Cisco Discovery Protocol,思科发现协议,是思科私有的邻居发现协议,所有的思科产品包括交换机、路由器、AC、服务器等都支持CDP。CDP工作在数据链路层,要求物理介质支持SNAP(SubNetwork Acess Protocol)协议,即必须使用IEEE802.3的二层帧,通过LLC子层来传递上层协议类型。CDP默认每60s向直连邻居发送CDP消息,如果180s收不到邻居的CDP消息则清除记录。

CDP报文发向组播mac 0100-0CCC-CCCC,事实上思科的一些二层私有协议都使用此组mac,如DTP,PAgP,VTP等。

CDP消息包含以下信息:

  • 设备标识符

  • 地址

  • 互相连接的物理端口号

  • 设备类型

  • 设备型号

CDP报文抓包如下:

SWITCH CDP

启用cdp命令

1
switch(config)#cdp run

LLDP

LLDP,Link Layer Discovery Protocol,链路层发现协议,是一个公共的设备发现协议。由于网络设备种类日益繁多且拓扑复杂,LLDP可以跨设备厂商交换设备和拓扑信息。绝大多数设备都支持lldp,甚至windows10也有lldp功能。LLDP既支持SNAP格式封装也支持EthernetII封装,LLDP报文发向组mac 0180-C200-000E。LLDP主要完成以下任务:

  • 建立并护本地MIB

  • 从本地MIB提取信息,封装至LLDPDU(LLDP数据单元)发送给邻居。有两种方式会触发更新,定时自动触发和状态变化触发

  • 接受远程设备MIB并维护远程MIB

  • 当MIB信息变化时发出通告

LLDP工作模式有以下四种:

  • TXRX:收发LLDPDU

  • TX:只发不收

  • RX:只收不发

  • DISABLED:不发不收(lldp功能未使能)

LLDP EthernetII封装抓包如下:

SWITCH LLDP

LLDP默认每30s发送LLDPDU,超120s每收到则清除条目。LLDPDU包含了设备的主要能力、管理地址、设备类型、型号和接口标识等。每个LLDP可携带共28种TLV(类型,长度,值),其中Chasis ID,TTL,Port和End是四个必须携带的类型。

启用lldp命令

1
switch(config)#lldp run

VLAN

VLAN,virtual local area network,虚拟局域网。是一种将局域网划分为多个逻辑局域网的技术。每个LAN是一个广播域,,每个被划分的逻辑局域网即vlan也是一个广播域。关于以太网交换的技术大部分是和VLAN有关的。

VLAN技术实现了多业务组网隔离的需求。比如,在某公司某楼层,有市场部、财务部和技术部,这些部门的办公终端要求隔离。在没有vlan技术的情况下,不管每个部门多少人,我们都需要至少使用三台交换机部署三个LAN来满足需求,造成交换机端口资源浪费。在有vlan的情况下,只需根据楼层总人数规划交换机数量,不同部门的人划分到不同vlan即可。

相比传统LAN,使用VLAN的优势如下:

  • 有效利用交换机资源

  • 提高了网络安全性

  • 隔离故障域,二层故障域都比加大(stp故障可能影响一个lan,划分VLAN可以减小故障域)

VLAN封装协议

VLAN可以跨交换机配置,不同VLAN 流量跨交换机通信时,通过VLAN号区分不同VLAN流量,即,将原有的二层帧使用特定的方式将vid信息封装进去。VLAN号有两种封装协议ISL和IEEE802.1Q,其中VLAN1002-1005是交换机保留vlan,1006-4094是扩展VLAN。交换机之间承载多VLAN的链路也称trunk(中继)链路。

ISL

ISL,Inter-Swith link,跨交换机链路,是思科私有二层封装协议。封装结构如下:

SWITCH ISL

ISL使用26字节头和4字节尾将原有二层帧封装,其中VID字段有15bit实际只用到10bit即1024,所以使用ISL封装的VLAN号最多只有1024个。

IEEE802.1Q

IEEE802.1Q是IEEE对二层的封装规范,是业界标准。802.1q封装结构如下:

SWITCH DOT1Q

802.1Q在二层帧中间插入了4个字节,其中VID字段有12bit,即使用802.1Q封装的VLAN号最多可以有4096个。

相比较与ISL,IEEE802.1Q封装的字节更少,占用带宽较少;但是ISL封装不改变原有帧结构,处理速度会略占优势。总体来说,ISL尽仅思科设备上可用,目前基本都会使用IEEE802.1Q封装协议。可以用以下命令配置交换机trunk封装协议:

1
switch(config-if)#switchport trunk encapsulation [isl/dot1q] 

本征VLAN

802.1Q将不打VLAN标签的vlan成为native vlan,即本征vlan,没有vlan标签的流量会被转发至本征vlan。默认本征vlan为vlan 1,每台交换机本征vlan只能有一个。可以通过一下命令修改本征vlan:

1
switch(config-if)#switchport trunk native vlan 2

QinQ

QinQ,即802.1Q in 802.1Q,是一种隧道技术,相当于二层帧插入了二个802.1Q标签。用于区分不同的流量。例如,在广域网传输时,运营商根据外层标签指派路径,帧被送达后,局域网交换机根据内层标签区分vlan。

vlan相关命令

1
2
3
4
5
6
7
8
9
10
#定义vlan
switch(config)# vlan 888

#划分vlan
switch(config-if)# switchport
switch(config-if)# switchport mode access
switch(config-if)# switchport access vlan 888

#验证vlan
switch# show vlan brief

DTP

DTP,Dynamic Trunk Protocol,动态trunk协议,是思科私有的用于协商trunk链路的协议。DTP也必须使用IEEE802.3以太网封装,使用LLC子层传递上层协议类型。DTP用于思科设备协商交换机端口是否为trunk模式。DTP携带本地的trunk信息,包括DTP模式和封装方式。DTP抓包如下:
SWITCH DTP

DTP工作有三种种模式,on,Desireable,Auto。

On模式

若某端口处于On模式。则该端口不协商,直接以本地配置开启turnk模式。处于On模式的端口会持续发送DTP消息。

Desirable模式

若某端口处于Desirable模式下,该端口主动发送DTP消息,同时也监听DTP消息,接受到有效DTP后会根据消息内容配置端口trunk。

Auto模式

若某端口处于Auto模式下,该端口不主动发送DTP消息,但收到有效DTP消息会成为turnk端口。交换机默认处于DTP Auto模式下。

DTP配置

1
2
3
4
5
6
###DTP配置
####DTP on 模式
switch(config-if)# switchport mode trunk

####DTP 其它模式
switch(config-if)# switchport mode dynamic [auto/desirable]

VTP

VTP,VLAN Trunk Protocol,VLAN中继协议。类似于CDP,VTP也是一个目的mac为组播0100-0CCC-CCCC的二层消息协议,也必须使用802.3以太网封装。最新版本为VTPv3。

VTP域

若要使用VTP,必须先指定VTP域名,一台交换机只能加入一个VTP域。所有具有相同VTP域名的交换机成为一个VTP域,并在VTP域内交换VTP消息。没有更新的情况下,vtp消息每5min更新一次,vtp消息主要携带本地vlan信息(v3版本增加mst信息),抓包如下:

SWITCH VTP

VTP工作模式

server模式

vtp配置为server模式后,管理员可以编辑本地vlan,包括删除,增加,修改名字。Server模式是交换机默认的vtp模式。收到更新的vtp消息会同步自己的vlan。

client模式

vtp配置为client模式后,本地vlan信息不可更改,收到更新的vtp消息会同步自己的vlan。

transparent模式

vtp配置为transparent模式后,可以对本地VLAN进行修改,并透传vtp,但不使用该vtp信息,也不发送vtp信息。

VTP修订版本号

VTP修订版本号是指该VTP域内vlan被编辑的次数。一般修改VTP域名后,修订版本号置0,以后每次修改一次vlan信息(v3版本增加mst)修订号+1。所以判断VTP消息新旧的唯一依据是修订号,和工作模式无关

VTPv3

VTPv3在vtp消息种增加了多实例生成树mst的配置信息,除了同步VLAN信息,还可以同步mst信息。另外,开启VTPv3后可以设置VTP密码,防止VTP配置被随意改动。

VTP Prunning

VTP Prunning,VTP裁剪是一个二层网络优化的功能。VTP裁剪可以减少trunk端口不必要的vlan通信,减少广播数量。比如某交换机只有VLAN 10,那么VLAN 20等其它VLAN信息就没有必要发给他。

VTP配置

1
2
3
4
5
6
7
###vtp v3 配置
switch(config)# vtp domain somedomain
switch(config)# vtp version 3
switch(config)# vtp mode [server/client/transparent] mst
switch(config)# vtp mode [server/client/transparent] vlan
switch(config)# vtp password somepassword hidden
switch(config)# vtp prunning

PVLAN

PVLAN,Private VLAN,私有VLAN。PVLAN将一个VLAN内部广播域继续进行划分,实现更精细的交换端口隔离,相当于在VLAN内创建VLAN。配置PVLAN时,VTP必须为transparent模式。思科给出的两个应用场景是:

  • 运营商可以给不同的用户分配同一个子网IP,通过PVLAN来隔离它们

  • 在某些安全要求下,可以提供二层隔离

PVLAN分类

PVLAN分类如下

  • Primary Vlan 主VLAN

  • Secondary Vlans 辅VLAN,辅VLAN默认不能与外界VLAN通信

    • Isolated Vlan 隔离VLAN,一个主VLAN内只能由一个隔离VLAN

    • Community VLANs 联盟VLAN,一个主VLAN可以有多个联盟VLAN

PVLAN端口类型

host isolated 隔离端口,此端口类型属于隔离VLAN,技能与混杂端口通信

host community 联盟端口,此端口类型属于一个联盟VLAN,技能与同联盟VLAN和混杂端口通信

promiscuous 混杂端口,此端口类型不属于任何辅VLAN,通常连接路由器

不同端口类型之间的可达情况如下:

端口类型 隔离端口 混杂端口 VLAN10联盟端口 VLAN20联盟端口
隔离端口 拒绝 接受 拒绝 拒绝
混杂端口 接受 接受 接受 接受
VLAN10联盟端口 拒绝 接受 接受 拒绝
VLAN20联盟端口 拒绝 接受 拒绝 接受

PVLANSVI三层映射

默认辅VLAN无法与其它VLAN通信,除非将其映射到主VLAN的三层SVI口。映射后,辅VLAN技能通过主VLAN的SVI与外界通信。

PVLAN配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
###PVLAN配置
####定义PVLAN
switch(config)# vlan 10
switch(config-vlan)# private-vlan [primary/isolated/community]

####辅VLAN关联主VLAN,假设vlan10为主vlan
switch(config)# vlan 10
switch(config-vlan)# private-vlan association 11-19

####配置端口模式
switch(config)# int e0/0
switch(config-if)# switchport mode private-vlan [host/promiscuous]

####pvlan host模式下划分VLAN
switch(config-if)# switchport private-vlan host-association 10 19

####pvlan promiscuous模式下配置下游辅vlan
switch(config-if)# switchport mapping 10 11-19

####SVI三层映射
switch(config)# int vlan 10
switch(config-if)# private-vlan mapping 11-19