三层交换技术

2021-04-25 14:13:43 3804

一、IP报文转发举例


1.png


注:PC1和PC2的默认网关是192.168.5.1

       PC3和PC4的默认网关是192.168.3.1

       PC5和PC6的默认网关是192.168.4.1

1.同一子网内PC间的IP报文转发过程

a.如图PC1和PC2同属于192.168.5.0/24网段,PC1发送IP报文到PC2,则报文的DIP是PC2的IP地址,SIP是PC1的IP地址。

b.PC1解析DIP的MAC地址;

c.将DIP对应的MAC地址,填入以太网报文的“MAC DA”域,将PC1的MAC地址填入“MAC SA”域;

d.PC1将封装好的报文发送到二层交换机1;

e.二层交换机1收到报文,根据报文中的MAC DA查找交换机上的MAC地址表,如果查找失败,则报文转发到所有端口,自然包括与PC2连接的端口;如果查找成功,则根据MAC地址表项中的端口号输出;由于MAC地址是全球唯一的,所以只要PC1和PC2在二层交换机1上的端口同属于一个vlan,PC2就能MAC DA等于PC2的MAC地址的报文;

f.PC2收到报文,检查DIP是PC2的IP地址,则接受该报文,并根据报文的含义,做回应;

g.同样PC2到PC1的IP报文也是类似上述的过程。

2. 不同子网的PC间IP报文转发过程

a.如图PC1和PC3分别属于192.168.5.0/24网段和192.168.3.0/24网段,PC1发送IP报文到PC3,则报文的DIP是PC3IP地址,SIP是PC1的IP地址。

b.PC1解析网关的MAC地址,每个网络接口都有全球唯一的MAC地址;

c.将网关对应的MAC地址,填入以太网报文的“MAC DA”域,将PC1的MAC地址填入“MAC SA”域;

d.PC1将封装好的报文发送到二层交换机1;

e.二层交换机1收到报文,根据报文中的MAC DA查找交换机上的MAC地址表,如果查找失败,则报文转发到同vlan所有端口;如果查找成功,则根据MAC地址表项中的端口号输出;由于MAC地址是全球唯一的,所以二层交换机会将MAC DA等于192.168.5.1对应的MAC地址的报文转发到三层交换机;

f.三层交换机收到报文,先查MAC DA,若对应的FDB表项要求送路由,则再根据DIP查找路由表,如果查找成功,则根据路由表的下一跳信息,修改报文中的MAC DA为下一跳设备的MAC地址,修改报文中的MAC SA为输出网络接口的MAC地址,并将报文输出,如果查找失败,则丢弃报文;

g.二层交换机2收到报文后,通过查找MAC地址表后,也必会将报文转发到PC3;

h.同样PC3到PC1的IP报文也是类似上述的过程。

二、三层交换概述

1.三层交换机是什么?

三层交换机是一种具有基本路由功能的交换机。三层交换机接口类型简单,拥有很强数据包转发效率 ,所以更适用于数据量大的局域网。

路由器端口类型多,支持的三层协议多,路由能力丰富而强大,所以更适合于不同接口类型的网络之间的互连。

一台网络设备称为交换机还是路由器,主要看其功能侧重点,和适用环境的设定。

2.路由是什么?

路由就是信息通过一条路径从源地址转移到目的地址的过程。在TCP/IP网络上,源方和目的方都叫做主机,信息被分成小包在主机之间传送。

三、三层交换机对IP报文处理过程

三层交换机内部有一个路由表(建立在芯片上),这表标明了如果要去某个地方,下一步应该往哪走。三层交换机从某个端口收到一个IP报文,它首先读取目的IP地址,然后查找路由表,若能确定下一步往哪送,则再修改链路层的包头(打包),把该数据包转发出去;如果不能确定下一步的地址,则向源地址返回一个信息,并把这个数据包丢掉。当下一台三层设备(三层交换机或路由器)接收到该IP报文,也会根据DIP查找路由表,确定下一步往哪送,并将数据转发出。依次类推,直到数据包到达最终目的地。

1.三层交换机的软硬件分工

路由技术其实是由两项最基本的活动组成,即决定最优路径和传输数据包。

其中,数据包的传输相对较为简单,而路由的确定则更加复杂一些。

三层交换机的软件负责最优路由的决定,硬件负责传输数据包。

三层交换机的软件通过RIP,OSPF等协议确定最优的路径,并将最优的路径写入芯片上的路由表。

硬件根据芯片上的路由表线速传输数据。

2.最优路由的决定

三层交换机通过和三层交换机,或和路由器进行相互通讯,传送不同类型的信息维护各自的路由表。

其中路由更新信息一般是由部分或全部路由表组成。通过分析其它三层设备发出的路由更新信息,三层交换机可以掌握整个网络的拓扑结构。

这样在掌握足够信息的情况下,三层交换机就能分析出最优路由,并将其写入硬件路由表。

3.三层交换机的网络接口介绍

(1)Router Port

路由口不属于任何VLAN,不能与其它端口进行二层报文交换。

(2)SVI

全称Switched Virtual Interface,一个SVI对应一个VLAN,它包含了对应VLAN的所有物理端口,这些物理端口间可以进行二层的数据交换,与其它VLAN的交互的IP报文则提交给路由模块处理。等价于一个路由口下接一台二层交换机。

(3)L3 AP(aggregate port)

可将多个Router Port聚合成一个逻辑端口,达到带宽扩大的目的,它的成员端口必须是Router Port,成员口间使用负载均衡算法,达到负载平衡,当一个成员口实效时,实效端口上的负载会转移到其它有效端口上。与L2 AP不同在于,L3 AP不属于任何VLAN,不能于其它端口进行二层报文交换。

4. 路由类型介绍

路由表项的组成:

网络号+掩码+下一跳IP地址

如:192.168.4.0 255.255.255.0 192.168.6.2

(1)主机路由

掩码是32位的路由,如:192.168.4.118 255.255.255.255 192.168.6.2

(2)网络路由

指掩码长度小于32大于0的路由;

(3)缺省路由

指掩码长度等于0的路由,如:0.0.0.0 0.0.0.0 192.168.6.4;

5.LPM介绍

LPM 全称是Longest Prefix Match,简单的讲就是从多个Prefix中,获取与当前待查找的Prefix匹配最长的一个,如已有3条路由如下:

192.168.4.0 255.255.255.128 192.168.6.2192.168.8.112 255.255.255.255 192.168.6.20.0.0.0 0.0.0.0 192.168.6.4

三层交换机收到的IP报文的DIP是192.168.4.119,则查找与192.168.4.119匹配最长的是第1条,如果DIP是192.168.8.112,则匹配最长的是第2条,如果DIP是192.168.8.111,则匹配最长的是第3条。

6.路由表项来源

(1)交换机根据网络接口配置自动生成直连网络路由;

用户配置一个网络接口,则交换机认为该接口直连着一个网络,所谓直连是指主机和网络接口间没有隔着另一个三层设备或另一个网路。因此同一台三层设备上的不同网络接口直连的网络必须能够进行IP通信,这就需要自动生成对应的网络路由,因为这台设备已经知道到达双方网络的输出接口,下一跳就是目标主机本身。如:三层交换机配置了网络接口1是192.168.5.1 255.255.255.0,网络接口2是192.168.3.1 255.255.255.0;则PC1发送到PC3的IP报文,能够从网络接口2转发出。

知道了输出接口后,还要重新封装二层报文头,才能使报文到达目标主机。

由于到达直连网络的报文的下一跳就是目标主机,而一个网络的主机有多个,一条路由只能有一个下一跳,所以还要为每个直连主机创建主机路由,才能使转发出的IP报文的MAC DA是目标主机的MAC地址。

所以自动生成的直连网络路由的输出接口不可以是直连网络的网络接口,而是CPU接口,这样直连主机路由查找失败后(参见LPM介绍),IP报文能够送到CPU,由软件解析DIP,并创建直连主机路由,则后续的报文可以由硬件转发。

(2)根据IP报文生成直连主机路由;

要创建任何路由,都要明确其下一跳,直连主机路由也一样,首先要知道直连主机的MAC地址及与交换机连接的具体物理端口。交换机软件通过发送ARP Request报文,获取ARP Reply报文,而得到直连主机的信息。交换机软件在收到一个IP报文后,根据DIP先查询软件上的ARP表,如果没有对应ARP表项,则通过ARP机制获取。所以要设置直连网络路由,并且其下一跳是CPU。

(3)根据用户配置生成静态路由;

用户配置的静态路由,只告知软件目标网络和下一跳IP地址,软件需要获取下一跳的MAC地址和对应的输出端口,才能生成路由。解析下一跳IP也是先查询软件上的ARP表,如果没有对应ARP表项,则通过ARP机制获取。如果获取失败,则将下一跳改为CPU,这样后续该下一跳恢复可达后,可通过IP报文激活路由生成的机制。缺省路由也是静态路由的一种。

(4)根据协议生成动态路由;

与静态路由类似,所不同的是路由表项是由协议算法计算出最优的部分写入硬件。

7. CPU收到的帧类型

(1)ARP帧

ARP帧分为ARP Request和ARP Reply。ARP Request是Ether Type等于0x0806并且MAC DA是FF-FF-FF-FF-FF-FF的报文,ARP Reply是Ether Type等于0x0806并且MAC DA是输入网络接口的MAC地址;

这样的ARP报文CPU必须要收到。

(2)IP帧

CPU只需要收到路由查找成功,但下一跳是CPU的IP帧。有符合直连网络路由的但直连主机路由未创建的,符合动态或静态网络路由的但下一跳IP解析失败的路由。符合缺省路由但用户未指定缺省路由的IP帧应该丢弃,这是为CPU减轻负担的考虑。

四、IP组播路由


2.png


注:组播服务器和三层交换机2都接入三层交换机1的同一个SVI”

在上图中:


3.png


1.什么是IP组播及IP组播的作用

在Internet上,诸如视频会议和视频点播等单点发送多点接收的多媒体业务正在成为信息传送的重要组成部分。点对点的单播传输方式不能适应这一类业务传输特性,因为服务器必须为每一个接收者提供一个相同内容的IP报文拷贝,同时网络上也重复地传输相同内容的报文,占用了大量资源,如下图所示。IP广播同样不能满足该要求,虽然IP广播允许一个主机把一个IP报文发送给同一个网络的所有主机,但是由于不是所有的主机都需要这些报文,因而浪费了网络资源。在这种情况下组播(multicast)应运而生,它的出现解决了一个主机向特定的多个接收者发送消息的方法。

IP组播是指一个IP报文向一个“主机组”的传送,这个包含零个或多个主机的主机组由一个单独的IP地址标识。

主机组地址也称为“组播地址”,或者D类地址,即从224.0.0.0 ~ 239.255.255.255。224.0.0.0~224.0.0.255属于保留地址,其中:

224.0.0.1 - 网段中所有支持组播的主机

224.0.0.2 - 网段中所有支持组播的路由器

2.单播,广播和组播比较


4.png


2. 组播MAC地址和IP组播地址的关系

第2层的组播地址(组播MAC地址)是从IP组播地址映射来的。

把组播IP的后23位同01-00-5e-00-00-00进行或运算得到的结果便是组播MAC地址。

如:组播IP地址为224.255.1.1,其十六进制表示为e0-ff-01-01,后23位为7f-01-01,与01-00-5e-00-00-00进行或操作的结果为:01-00-5e-7f-01-01。01-00-5e-7f-01-01即为组224.255.1.1的MAC组播地址。

五、IGMP

1. IGMP简介

IGMP(Internet Group Management Protocol)

IP主机通过IGMP协议向临近的路由器申请加入(或离开)组播组。

目前有三个版本的IGMP:IGMPv1在rfc 1112中说明,IGMPv2在rfc 2236中说明,IGMPv3在rfc3376中说明。

下面我们将分别简要介绍在IGMPv1、IGMPv2主机是如何加入或离开某一组播的(假设加入224.1.1.1)。

IGMPv1中,主机向路由器发224.1.1.1的IGMP report报文要求加入该组中。路由器收到该请求后,把该主机加为组224.1.1.1的成员。

路由器定时发送224.0.0.1(所有主机)的IGMP Query报文,若主机要继续接收该组报文,则应回应IGMP Report报文,若路由器收不到任何主机的IGMP Report报文,将把该组注销。

2.IGMPv2

IGMPv2向下兼容v1,它对报文进行扩展——增加了IGMP Leave报文,以使主机可以主动要求离开组播组。

在IGMPv2中,主机加入组中的过程同v1一致,主机发一个IGMP Report报文请求加入到某一组中。

路由器定时发送224.0.0.1的IGMP Query报文,若主机要接收该组报文,则应回应IGMP Report报文,若路由器收不到任何主机的IGMP Report报文,将把该组注销。在IGMPv2中,主机还可以主动离开某一组。当主机不在需要某一组播流时,它主动朝路由器发送IGMP Leave报文主动从该组中注销。路由器收到该报文后,发出该组的IGMP Query报文,若其它主机需要该组播,则将回应IGMP Report报文,若路由器收不到任何主机的回应,将把该组注销。

3. IGMPV3

在IGMP V1/V2的基础上,IGMPV3提供了额外的源过滤多播功能。在IGMP V1/V2中,主机只根据组地址来决定加入某个组并从任何一个源接收发给该组地址的组播流。

而使用IGMP V3的主机通告该主机所希望加入的多播组,同时还通告该主机所希望接收的多播源的地址。

主机可以通过一个包括列表或一个排除列表来指明希望从哪些源能接收多播流。

同时IGMP v3带来的另外一个好处是节省带宽,避免不需要的、非法的组播数据流占用网络带宽,这尤其在多个多播源共用一个多播地址的网络环境中表现明显。

同IGMPv2对比,IGMPv3的规定了以下两种报文类型:

Membership QueryVersion 3 Membership Report

Membership Query 其中分为三种:

General Query:用于查询接口下所有多播成员信息;Group-Specific Query:用于查询接口下指定组的成员信息;Group-and-Source-Specific Query:该类型为IGMPv3中新增加的,用于查询接口下是否有成员需要接收指定源列表中的源所发出的特定组的多播流。

IGMP Version3 IGMP Version2 IGMP Version3 IGMP Version1 IGMP 的过程同类似。能够向下兼容和Version2。

要了解更多IP组播的相关知识,请查阅RFC 1112 、RFC 2236 与 RFC 3376。

4.组播路由协议的作用

(1)是发现上游接口,离源最近的接口。因为组播路由协议只关心到源的最短路径。

(2)通过(S,G)对来决定真正的下游接口,当所有的路由器都知道了他们的上下游接口,那么一颗多播树就已经建立完成。根是源主机直连的路由器,而树枝是通过IGMP发现有组员的子网直连的路由器。

(S,G)指(Source,Group)通过源IP和组IP结对区分每个组播源。(*,G)表示只以组IP区别不同的组播源。

(3)管理多播树

单播路由只需要知道下一跳的地址,就可以进行报文得转发。

而组播,是把从一个由源产生得报文发送给一组目的。在一个特定的路由器上,一个包得多个备份可能从 多个接口上发出。

如果有环路得存在,那么一个或多个包会返回到其输入的接口,而且这个包也会经复制发到其他的端口上。

这一结果可能导致多播风暴,这个包不 断在路由器与交换机间复制,直到TTL减为0。

由于这是个复制过程,它的危害会比单播环路严重的多,所以所有的多播路由器必须知道多播包的源,并且需要保证多播包不能从源接口发出。

所以他必须知道哪些是上游接口和下游接口,可以分辨出数据包的流向。如果在不是在源的上游接口收到数据包,就会把它丢弃掉。

而多播路由协议必须关心到源的最短路径,或者说它关心到源的上游接口。

5.三层交换机的组播路由管理

三层交换机上的任何一个开启PIM协议的网络接口,接收到组播包,都会触发软件创建一条组播路由,但这个组播路由没有下游端口。将静态配置的下游端口加入刚创建的组播路由。非上游口所在的端口收到IGMP Report报文,会使该输入端口加入已存在对应的组播组;非上游口所在的端口收到IGMP Leave报文,会使该输入端口从已存在对应的组播组中删除;做到上面几点,需要将下列报文送到CPU:IGMP帧,PIM协议只有能收到IGMP帧才能管理下游端口;IP组播帧,PIM协议只有收到IP组播帧才能创建组播路由;DIP等于224.0.0.x的报文。在三层交换机中,组播包必须在上游端口所在的VLAN内广播,目的是让其它的路由器或三层交换机能知道该组播流。

六、IPv6路由


5.png


1.配置

不同链路的情况如上图,PC1和PC3需要通过三层交换机才能通信,并且PC1和PC3的IP地址的前缀不一致。

这里除了对PC1和PC3配置节点的IP地之外,还要给它们配置类似IPv4的默认网关,在IPv6中,则是配置路由,这里我们给PC1和PC3分别配置默认路由如下:

PC1:::/0 2001::1;PC3:::/0 2002::1。

配置交换机的2个网络接口,并使之与PC1和PC3连接,网络接口的IP地址分别如下:2001::1/64和2002::1/64。

对交换机配置了网络接口后,交换机软件,会自动生成对应的之连网络路由,分别如下:2001::0/64 ::和2002::0/64 ::,其下一跳都是0,表示匹配到这些路由的IPv6报文都会被送给交换机的CPU。

下面是PC1和PC2间的通信过程:

2.通信过程

PC1的应用软件请求发送DIP是2002::2的IP报文;

PC1的IPv6协议栈,判断2002::2是否与本节点属于同一链路的,判断方法是通过查询本节点的路由表,若查询后匹配到的路由的前缀与本节点相同,则判断为同链路的节点,即邻节点;若查询后没有匹配到路由,则也认为是同链路的;由于我们之前给PC1配置缺省路由,因此可知道PC3与PC1不属于同一链路;

PC1从匹配到的路由中,得到了下一跳为2001::1,因此PC1在邻居缓存中查询IP地址等于2001::1的邻居信息,若查找成功,则将根据邻居信息封装报文,并转发给三层交换机;若查找失败,则按ND机制解析地址,并维护邻居信息,交换机收到PC1的NS报文后,就会从NS报文中得到PC1的链路信息,并维护交换机的邻居表和路由表,即创建到达PC1的直连主机路由,在这里会创建一条主机路由为:2001::1/128 2001::1;

交换机收到来自的PC1的IPv6报文,一样要查找路由表,不过先是硬件查询路由表,若匹配到的路由表项的下一跳可达,则硬件完成报文的封装,并线速转发,否则会送到交换机的CPU,由交换机的IPv6协议栈通过ND机制解析地址,在这里是解析PC2的IP地址,并维护更新硬件上的路由表;交换机成解析后,会自动创建对应的直连主机路由,这里会创建一条直连主机路由为:2002::1/128 2002::1;交换机向PC2请求链路层信息的过程,PC2也会从接收到的NS报文,获取交换机与PC2连接的网络接口的链路层信息,并维护PC2的邻居表和路由表;

PC2收到由交换机转发的IP报文,该IP报文的SIP是PC1的IP地址,DIP是PC2的IP地址,MAC SA是交换机网络接口的MAC地址,MAC DA是PC2的MAC地址;PC2回复给PC1的IP报文的DIP是PC1的IP地址,SIP是PC2的IP地址,MAC SA是PC2的MAC地址,MAC DA是交换机网络接口的MAC地址;

交换机收到PC2的回复IP报文,则先进行硬件的路由表查询,由于有了前面的过程作为基础,这次将会匹配到主机路由2001::1/128 2001::1,并硬件线速转发到PC1。

七、隧道

1.Tunnel 路由简介


6.png


2. ipv6-over-ipv4报文样本


7.png


3.简单试验拓扑


8.png


4. 配置信息

V6主机A的Ipv6地址是2001::2;

V6主机B的Ipv6地址是2000::2;

双栈交换机A配置2个网关,

一个是ipv6网关2001::1/64,另一个是ipv4网关192.168.6.1/24;

配置一条tunnel路由是prefix等于2000::/64,DIP等于192.168.5.1,SIP等于192.168.6.1;

配置解封装表是DIP等于192.168.6.1,SIP等于192.168.5.1;

通过邻居发现协议,创建了prefix等于2001::2/128的ipv6主机路由;通过arp协议,创建了prefix等于192.168.6.2/32的ipv4主机路由;双栈交换机B配置2个网关,

一个是ipv6网关2000::1/64,另一个是ipv4网关192.168.5.1/24,;

配置一条tunnel路由是prefix等于2001::/64,DIP等于192.168.6.1,SIP等于192.168.5.1;

配置解封装表是DIP等于192.168.5.1,SIP等于192.168.6.1;

通过邻居发现协议,创建了prefix等于2000::2/128的ipv6主机路由;通过arp协议,创建了prefix等于192.168.5.2/32的ipv4主机路由;Ipv4三层交换机配置了2个网关,分别是192.168.6.2/24和192.168.5.2/24,通过arp协议,创建了prefix等于192.168.6.1/32和192.168.5.1/32等2条主机路由。


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: