交换机主要对数据进行转发处理。数据的转发分为二层转发和三层转发两类,即数据链路层的转发和网络层的转发。

数据链路层的转发建立在MAC地址基础上,二层交换设备通过解析和学习以太网帧的源MAC来维护MAC地址与接口的对应关系,通过其目的MAC来查找MAC表决定向哪个接口转发。

由于二层交换设备不同的接口发送和接收数据独立,各接口属于不同的冲突域,因此有效隔离了网络中物理层冲突域,使得通过它互连的主机或网络之间不必再担心流量大小对于数据发送冲突的影响。二层交换通过维护MAC表以及根据目的MAC查表转发,有效利用网络带宽,改善网络性能。

二层设备虽然能够隔离冲突域,但是不能隔离广播域,如果一个接口发出广播报文,那么这个报文就会向除它之外的所有接口转发,主机数量少的时候还好说,如果这个二层设备连的主机数量比较多,那么这种无差别转发的行为就会大大消耗网络带宽,并且在安全方面也带来很多问题。为了避免这种情况,可以使用路由器,因为路由器的一个接口就是一个广播域,但是因为路由器成本太高且转发能力比较低,这种办法并不是最优解。基于这种情况,二层交换中出现了vlan技术。

什么是vlan呢?

vlan又叫做虚拟局域网,是将一个物理的网络在逻辑上划分为多个广播域的通信技术,就像是把一个网络通过二层设备变成了多个网络。主要的目的就是将广播报文限制在一个vlan内,一个vlan就是一个广播域,避免广播报文大量的转发,vlan内的主机可以互相通信,但是不同vlan间不能直接互通。那么vlan是怎样划分的呢?vlan的划分主要是根据使用需要进行,主要有三种方法,分别是基于接口的vlan划分,基于mac的vlan划分,以及基于IP子网的vlan划分。其中,基于接口划分vlan是最简单,最有效的vlan划分方法。

交换机是如何分辨不同vlan的报文呢?

tag标签。根据IEEE802.1q协议,在以太网数据帧的目的mac地址和源mac地址之后,协议类型字段之前加入4个字节的vlan标签(即tag)用于标识vlan信息。

原来的以太网数据帧格式

DMAC

6B

SMAC

6B

Length/Type

2B

DATA

46-1500B

FCS

4B

VLAN数据帧格式

DMAC

SMAC

VLAN TAG

4B

Length/Type

DATA

FCS

VLAN TAG标签包含4个字段

TPID

2B

PRI

3bit

CFI

1bit

VID

12bit

TPID:tag protocol identifier ,标签协议标识符,表示数据帧类型,当其取值为0X8100时,表示IEEE802.1Q的vlan数据帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。各设备厂商也可自定义该字段的值,但是如果被修改为除0x8100的其他值时,对端设备也必须进行修改。

PRI:priority,表示数据帧的802.1p优先级,取值范围0-7,越大越优先。当网络阻塞时,交换机优先发送优先级高的数据帧。

CFI:canonical format indicator,标准格式指示位,表示MAC地址在不同的传输介质中是否以标准格式进行封装,用于兼容以太网和令牌环网。取0表示标准格式,在以太网中取0.

VID:vlan id.表示该数据帧所属vlan的编号,取值范围0-4095,0和4095为协议保留值,因此实际上我们可以有效取到1-4094.

交换机利用vlan标签中的vid来识别数据帧所属的vlan,广播帧只在同一vlan内转发,这就将广播域限制在一个vlan内。

在一个vlan交换网络中,以太网帧主要有两种存在形式:有标记帧(tagged帧)和无标记帧(untagged帧)

顾名思义,有标记帧就是加入了4字节vlan标签的帧,而无标记帧则是没有加vlan标签的帧。

在常用设备中,终端设备及傻瓜交换机,hub只能收发untagged帧,交换机、路由器和AC即能收发tagged帧,也能收发untagged帧,语音终端、AP等设备可以同时收发一个tagged帧和一个untagged帧。

为了提高处理效率,交换机内部处理的数据帧都是tagged帧。

现在,交换机内部处理的数据帧都带有了vlan标签,也就是我们之前所说的tag,但是现网中交换机连接的设备不止一台,有一些设备只会收发untagged帧,交换机如何才能与这些设备交互呢?这就需要接口能够识别untagged帧并且在收发时给帧添加或者剥离标签。同时,现网中属于同一个vlan的用户可能连接在不同的交换机上,且这些交换机之间交互的vlan有多个,这就需要交换机的接口能够识别和发送多个vlan的数据帧。

为了适应不同的连接和组网,华为定义了access接口,trunk接口,hybrid接口和qinq接口4种接口类型,以及接入链路、干道链路两种链路类型。

根据链路种需要承载的vlan数目不同,以太网链路分为:

接入链路:只可以承载1个vlan的数据帧,用于连接交换机和用户终端(如用户主机、服务器、傻瓜交换机等)通常情况下,用户终端并不需要知道自己属于哪个vlan,也不能识别带有tag的帧,所以在接入链路上传输的帧都是untagged帧。

干道链路:可以承载多个不同vlan的数据帧,用于交换机间互联或者连接交换机与路由器,为了保证其他网络设备能够正确识别数据帧中的vlan信息,在干道链路上传输的数据帧必须打上tag.

根据接口连接对象以及收发数据帧处理的不同,以太网接口分为:

access接口:一般用于和不能识别tag的用户终端(如用户主机、服务器等)相连,或者不需要区分不同vlan成员时使用,access接口大部分情况只能收发untagged帧,且只能为untagged帧添加唯一vlan的tag.但当access接口收到带有tag的帧,并且帧中vid与pvid(port vid)相同时,access接口也能接受并处理该帧。

trunk接口:一般用于连接交换机,路由器,AP以及可以同时收发tagged帧和untagged帧的语音终端,它可以允许多个vlan的帧带tag通过,但是只允许一个vlan的帧从该类接口上发出时不带tag(即剥除tag).

hybrid接口(混合接口):既可以用于连接不能识别tag的用户终端(如用户主机、服务器等)和网络设备(如hub、傻瓜交换机),也可以用于连接交换机、路由器以及可同时收发tagged帧和untagged帧的语音终端、ap,它可以允许多个vlan的帧带tag通过,且允许从该类接口发出的帧根据需要配置某些vlan的帧带tag(即不剥除tag),某些vlan的帧不带tag(即剥除tag),注意trunk接口只允许一个vlan的帧从该类接口上发出时不带tag。

qinq接口(802.1qin802.1q):一般用于私网与公网之间的连接,它可以给帧加上双层tag.即在原来tag的基础上,给帧加上一个新的tag.从而可以支持多达4094*4094个vlan,,满足对vlan数量的需求,外网的tag通常被称为公网tag,用来标识公网的vlan,内层的tag被称为私网tag,用来标识私网的vlan。

如果需要访问不同vlan内的设备,应该怎么办呢?

需要借助三层交换机或路由器实现三层交换。

早期的网络中一般使用二层交换机来搭建局域网,而不同局域网之间的网络互通由路由器来完成。那时的网络流量,局域网内部的流量占了绝大部分,而网络间的通信访问量比较少,使用少量路由器已经足够应付了。

但是,随着数据通信网络范围的不断扩大,网络业务的不断丰富,网络间互访的需求越来越大,而路由器由于自身成本高、转发性能低、接口数量少等特点无法很好的满足网络发展的需求。因此出现了三层交换机这样一种能实现高速三层转发的设备。

路由器的三层转发主要依靠CPU进行,而三层交换机的三层转发依靠硬件完成,这就决定了两者在转发性能上的巨大差别。当然,三层交换机并不能完全替代路由器,路由器所具备的丰富的接口类型、良好的流量服务等级控制、强大的路由能力等仍然是三层交换机的薄弱环节。

三层交换机的应用主要有两种情况,一种是同设备的三层互访。

另一种是跨设备的三层互访

现在,访问不同vlan内的设备已经通过三层交换方式实现了,但是很多情况下,我们并不希望所有接入交换机的用户可以访问任意vlan下的设备。比如为了通信的安全性,公司在交换机下配置了三个vlan,分别作为访客区,员工区,服务器区,公司希望员工、服务器主机、访客均能访问Internet,但访客不能与员工互通,且只能访问服务器区的服务器_1。

为了实现这种目标,我们需要在三层交换机上配置流策略,并在连接访客区的接口下应用流策略。

面试中可能出现的问题。

1、收到未知表项怎么处理

  • 交换机是依据数据帧中的dmac查找mac地址表(一张二层转发表,用于存放该设备所学习到的其他设备的mac地址信息)进行转发的。根据dmac格式的不同涉及到对于未知单播、未知组播(mac地址第8bit为1的mac地址为组播mac地址,用来代表lan上的一组终端)、未知广播(全1,表示lan上的所有终端设备)的处理。
  • 收到未知单播数据帧,(未知单播帧即不能从mac地址表中查找得到相应的出接口的单播帧)泛洪。并且,由于mac地址表中不存在该mac地址表项,设备会将这个新的mac地址以及该mac地址对应的端口号和vlan id 作为一个新的表项加入到mac地址表中。
  • 收到未知组播数据帧,泛洪。
  • 收到广播数据帧,泛洪。

2、收到组播帧是否一定泛洪

如MAC地址为0180-c200-0000 为STP协议,就交给STP协议处理

如MAC地址为0180-C200-0014 15 就交给ISIS协议处理

如果收到组播数据,如果运行了PIM协议,就会依据(S,G)表项下游接口转发。

如果没有运行PIM协议,收到组播数据帧就泛洪。

如果运行了IGMP snooping,则依据IGMP snooping中成员端口转发数据。

如果运行了IGMP proxy 则依据IGMP proxy表项来进行转发组播数据

3、三层交换机如何判断数据帧做二层还是三层转发

  1. 源主机在发起通信之前,将自己的IP与目的主机的IP进行比较,如果两者位于同一网段(用网络掩码计算后具有相同的网络号),那么源主机直接向目的主机发送ARP请求,在收到目的主机的ARP应答后获得对方的物理层(MAC)地址,然后用对方MAC地址作为报文的目的MAC地址进行报文发送。
  2. 当源主机判断目的主机与自己位于不同网段时,它会通过网关(Gateway)来递交报文,即发送ARP请求来获取网关IP地址对应的MAC,在得到网关的ARP应答后,用网关MAC作为报文的目的MAC发送报文。此时发送报文的源IP是源主机的IP,目的IP仍然是目的主机的IP。

4、两台主机接三层交换机工作过程

如图所示,通信的源、目的主机连接在同一台三层交换机上,但它们位于不同VLAN(网段)。对于三层交换机来说,这两台主机都位于它的直连网段内,它们的IP对应的路由都是直连路由。

图中标明了两台主机的MAC、IP地址、网关,以及三层交换机的MAC、不同VLAN配置的三层接口IP。当 PC A向PC B发起PING时,流程如下:(假设三层交换机上还未建立任何硬件转发表项)

  • 根据前面的描述,PC A首先检查出目的IP地址10.2.1.2(PC B)与自己不在同一网段,因此它发出请求网关地址10.1.1.1对应MAC的ARP请求;
  • L3 Switch收到PC A的ARP请求后,检查请求报文发现被请求IP是自己的三层接口IP,因此发送ARP应答并将自己的三层接口MAC(MAC Switch)包含在其中。同时它还会把PC A的IP地址与MAC地址对应(10.1.1.2与MAC A)关系记录到自己的ARP表项中去(因为ARP请求报文中包含了发送者的IP和MAC);
  • PC A得到网关(L3 Switch)的ARP应答后,组装ICMP请求报文并发送,报文的目的MAC(即DMAC)=MAC Switch、源MAC(即SMAC)=MAC A、源IP(即SIP)=10.1.1.2、目的IP(即DIP)=10.2.1.2;
  • L3 Switch收到报文后,首先根据报文的源MAC+VLAN ID更新MAC表。然后,根据报文的目的MAC+VLAN ID查找MAC地址表,发现匹配了自己三层接口MAC的表项,说明需要作三层转发,于是继续查找交换芯片的三层表项;
  • 交换芯片根据报文的目的IP去查找其三层表项,由于之前未建立任何表项,因此查找失败,于是将报文送到CPU去进行软件处理;
  • CPU根据报文的目的IP去查找其软件路由表,发现匹配了一个直连网段(PC B对应的网段),于是继续查找其软件ARP表,仍然查找失败。然后L3 Switch会在目的网段对应的VLAN 3的所有接口发送请求地址10.2.1.2对应MAC的ARP请求;
  • PC B收到L3 Switch发送的ARP请求后,检查发现被请求IP是自己的IP,因此发送ARP应答并将自己的MAC(MAC B)包含在其中。同时,将L3 Switch的IP与MAC的对应关系(10.2.1.1与MAC Switch)记录到自己的ARP表中去;
  • L3 Switch收到PC B的ARP应答后,将其IP和MAC对应关系(10.2.1.2与MAC B)记录到自己的ARP表中去,并将PC A的ICMP请求报文发送给PC B,报文的目的MAC修改为PC B的MAC(MAC B),源MAC修改为自己的MAC(MAC Switch)。同时,在交换芯片的三层表项中根据刚得到的三层转发信息添加表项(内容包括IP、MAC、出口VLAN、出接口),这样后续的PC A发往PC B的报文就可以通过该硬件三层表项直接转发了;
  • PC B收到L3 Switch转发过来的ICMP请求报文以后,回应ICMP应答给PC A。ICMP应答报文的转发过程与前面类似,只是由于L3 Switch在之前已经得到PC A的IP和MAC对应关系了,也同时在交换芯片中添加了相关三层表项,因此这个报文直接由交换芯片硬件转发给PC A;
  • 这样,后续的往返报文都经过查MAC表到查三层转发表的过程由交换芯片直接进行硬件转发了。

从上述流程可以看出,三层交换机正是充分利用了“一次路由(首包CPU转发并建立三层硬件表项)、多次交换(后续包芯片硬件转发)”的原理实现了转发性能与三层交换的完美统一。

HCIE-RS面试---交换机原理相关推荐

  1. 【RS码1】系统RS码编码原理及MATLAB实现(不使用MATLAB库函数)

    关注公号[逆向通信猿]更精彩!!! 基础知识 要想搞懂本节知识,需要先熟悉掌握以下前几篇博客 [多元域乘法]多项式乘法电路原理及MATLAB详解 [多元域除法]多项式除法电路原理及MATLAB详解 R ...

  2. Android面试Hash原理详解二

    Hash系列目录 Android面试Hash原理详解一 Android面试Hash原理详解二 Android面试Hash常见算法 Android面试Hash算法案例 Android面试Hash原理详解 ...

  3. 以实验理解交换机原理

    本文目录 本文概述 理论 数据链路层 以太网MAC地址 以太网帧格式 交换机工作原理 实验 简单命令 实验内容 实验拓扑 具体步骤 本文概述 在本文中,我们会在eNSP中搭建一个简单的含有PC机和交换 ...

  4. 交换机原理_交换机工作原理解析

    原文连接:http://www.elecfans.com/dianzichangshi/20171204593673.html 交换机原理 数据传输基于OSI七层模型,而交换机就工作于其第二层,即数据 ...

  5. 数据链路层----交换机原理

    目录 一.数据链路层 1.1 LLC 1.2数据链路层功能 1.5.2以太网帧格式 二.交换机 三.交换机基本配置 3.1 配置前的准备 3.2 SecureCRT软件的使用 四.总结 一.数据链路层 ...

  6. 以太网帧格式与交换机原理

    数据链路层位于网络层与物理层之间,其功能有:物理地址.网络拓扑 数据链路的建立,维护与拆除 帧包装.帧传输.帧同步 帧的差错恢复 流量控制 以太网MAC地址由48位二进制数组成,通常分成六段,用十六进 ...

  7. 交换机原理及4大功能

    一.交换机是什么?         交换机是用于电(光)信号转发的.它可以为接入交换机的任意两个端口提供独享的电信号通路.通过设备或者人工来把要传输的信息送到符合要求标准的对应的路由器上的方式,这个技 ...

  8. 遇见面试--vuex原理

    遇见面试 Vuex原理解析 一.前言 自从学习了VUE框架,其中必不可少的会用到vuex这个核心插件,而且在做项目的时候,基本都会使用,可能你会使用vuex状态管理,但是对vuex原理存在着或多或少的 ...

  9. 华为HCIE RS都考什么?(含选择及面试题)

    选择题 (单选)如果有一个运行 802.1 D 生成树协议的局域网,那么在这个网络中的交换机会从交换机收到哪些参数信息? A. Maxage. B. Forward delay. C. Root Co ...

  10. 华为HCIE RS笔记-20RIP(Routing information Protocol)

    路由信息协议RIP(Routing information Protocol)的简称,它是一种较为简单的内部网关协议IGP(Interior Gateway Protocol),主要应用于规模较小的网 ...

最新文章

  1. hdu 5092 Seam Carving
  2. c语言将数组中奇数放在另一个数组,把数组中所有的奇数放在另一个数组中返回...
  3. golang存储密码
  4. 用Windows API实现多线程--原理例子
  5. 《JavaScript设计模式与开发实践》读书笔记之中介者模式
  6. vue2.0移除或更改的一些东西
  7. Linux 一个进程如何从用户态切换到内核态运行
  8. 5G来了,智能手机们还能拼什么?
  9. 刷新存储器的容量单位是什么_则其刷新存储器的容量为多?
  10. matlab fft时域采样,信号时域采样 谱分析(matlab).doc
  11. java过滤器不管用_java中过滤器不起作用的原因
  12. 联想T420S 黑苹果GPT+UEFI单系统安装
  13. 基于pycharm的opencv (python)-----信用卡实战
  14. 三维模型是什么?3D建模都有什么用处?
  15. 巴旦木树苗适合在哪些地方种植?巴旦木苗木成长过程
  16. 你是否在Microsoft Edge上测试你的网站?
  17. Bash 里设置退出conda环境
  18. 关于小G蛋白活化检测试剂盒
  19. linux中grep -E参数,linux中grep命令
  20. 语音合成(speech synthesis)方向十一:聊一聊增量式语音合成(iTTS)进化史

热门文章

  1. 百面机器学习—13.L1正则化与稀疏性
  2. 风口上的“低代码”,是时候来系统学一学了
  3. 全程软件测试之测试需求分析与计划(3)
  4. 冬日暖阳,侯捷畅谈技术人生与读书感悟
  5. 代码,代码,多少梦想葬身于汝!
  6. 第四:搜索算法应用 - 四皇后问题
  7. 深度学习:自然语言生成-集束/柱搜索beam search和随机搜索random search
  8. python操作mysql时mysqldb和pymysql的安装和使用
  9. Mysql数据库安装和配置
  10. python 搭建的http 动态服务器_Python3搭建http服务器的实现代码