Huawei3COM系列培训课程IP转发基础教材V10.docx
- 文档编号:17911716
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:40
- 大小:2.07MB
Huawei3COM系列培训课程IP转发基础教材V10.docx
《Huawei3COM系列培训课程IP转发基础教材V10.docx》由会员分享,可在线阅读,更多相关《Huawei3COM系列培训课程IP转发基础教材V10.docx(40页珍藏版)》请在冰点文库上搜索。
Huawei3COM系列培训课程IP转发基础教材V10
第1章IP转发基础
1.1培训目标
通过本章的学习,你应该能够理解IP转发的基本原理,了解路由器/交换机中IP转发和转发过程中常见业务的处理流程,能够了解Comware快速转发实现的原理及其转发性能的评价,还应该掌握基本的网络诊断方法。
1.2转发的基本概念
1.2.1网络中的数据流
在数据通信网络中,设备之间的通信大都基于TCP/IP协议。
在IP网络上运行特定应用功能的设备都可称为端系统,PC就是最常见的一种端系统。
网络中的路由器和交换机就是用来互连不同的端系统,让它们进行透明的通信。
我们先以一个例子来简单说明局域网络中常见的数据流。
办公室的两台PC:
A和B通过交换机互连,IP地址属于同一网段,A通过FTP协议下载B的资料。
B的FTP服务端软件将应用层数据打包,其上的操作系统负责将这些数据报文逐层封装,直到封装B的MAC地址信息后,才通过以太网卡将报文发出去。
交换机物理层接收到该报文后检查报文的目的MAC地址,然后查找自己的MAC---端口对应表,为该报文找到恰当的出端口,最后通过物理端口发送。
A的以太网卡收到这个以太报文后,判断目的MAC是否是自己的,若不是则丢掉,若是则交给操作系统作进一步处理,最后,这些数据包被正确送到FTP客户端。
这就是所谓的二层交换过程。
我们再用一个例子来说明广域网络中的三层转发过程。
在杭州出差的小张在宾馆通过宽带网络连上在北京的邮件服务器,收发电子邮件。
邮件客户端的数据不能直接解析到邮件服务器的链路层地址,需要借助宾馆的宽带接入设备作三层转发,可能会再经过若干次的三层转发,数据才能够到达服务器。
1.2.2二层交换
首先,我们需要搞清楚二层交换机和HUB的区别。
其实很简单,二层交换机比HUB聪明。
当从网络中收到一个数据帧时,HUB在所有的端口都发一份,而交换机只在目的设备连接的那个端口发一份数据。
二层交换是指在LAN中的报文转发,下面就结合交换机工作原理来介绍一下LAN中的报文转发。
如图所示,从外部网络来一个报文进入LAN中,已知它的目的主机就在这个LAN中,但是它只知道目的主机的IP地址,这样就需要地址解析协议(ARP)来帮助它找到目的主机的链路层地址,这时路由器就会发送ARP请求,在LAN中寻找与报文目的IP地址对应的MAC地址及此主机连接的端口。
这样,就完成了LAN内的寻址。
同时在二层交换机上会有一张MAC地址表来帮助以后报文进行LAN内的转发。
1.2.3三层IP转发
三层IP转发和二层交换有什么区别呢?
最主要的区别是他们寻找目的地的关键字不同,二层交换是链路层地址,三层转发是IP地址。
链路层地址----MAC地址通常存在于一个平面地址空间,没有清晰的地址层次,只适合于同一网段内主机的通信,对于不同网络之间的互连通信,考虑到可能使用不同的传输介质,不同的链路层协议,为提供更大的灵活性,我们通常使用网络层地址----IP地址来寻址通信。
每个路由器中都有一张路由表,这张表可以由用户手动配置,也可以从动态路由协议中学到。
该表的索引是IP地址/掩码,每个表项中都存放有下一跳的IP地址和出接口。
有了这张表,路由器接在收到数据包时就能做到心中有数了。
如图所示,IP地址为192.4.1.1的主机要访问远端IP地址为192.5.1.1的主机。
数据包需要先在接入路有器上查找路由,一般情况下接入路有器上路由表项都比较简单,对所有网段的地址都指向其直连的上游设备20.1.1.2.。
然后还需在20.1.1.2上查找路由表,找到匹配项192.5.1.0/24:
10.1.1.1,就从10.1.1.2所在的接口通过E1链路将数据包发送出去。
在10.1.1.1上接收到报文后,检查数据报的目的地址,发现在其直连网段,遂将数据报文正确送到192.5.1.1,从而完成一次完整的转发。
总结IP转发的特点:
1.报文逐跳转发
2.报文的转发单位可以是数据包,也可以是数据流。
1.2.4IP转发的模型
该转发模型适用于路由器和三层交换机。
路由器和三层交换机都可以实现三层转发,其主要区别在于:
1.路由器支持的接口类型丰富,而三层交换机较为单一。
2.路由器大多使用软件转发,支持业务较多,而三层交换机则采用交换芯片转发,速度快。
作为一个三层转发设备,它的主要功能就是根据报文的目的IP查找路由表,找到合适的出接口,然后根据出接口的链路层协议以及接口类型,封装适当的链路层头,进而通过物理层发送出去。
但作为可管理的网络设备,应用层还需提供Telnet/SNMP/FTP等来对网络设备进行维护。
应用层的数据也需要经过IP层和链路层的处理,才能将报文发送出去,同样道理,接收时判断目的IP为设备本身的报文就要交给应用层处理,不再转发了。
1.3转发表简介
1.3.1转发表与路由表
在前面,我们一直提到查找路由表。
其实,在我们的系统中,报文转发时查找的是转发表。
对路由器来说,是软件转发表,而对于三层交换机来说是芯片转发表。
在此,我们需要澄清两个概念:
转发表(ForwardingInformationBase)和路由表(RouteTable)。
转发表是IP层真正用来控制数据包发送的,IP发送报文时通过查询转发表决定下一跳;而路由表是路由管理模块用来统一管理、收集上层寻径协议找回的各种路由信息,路由管理根据特定策略从路由表中选中评价较好的路由(称为选中路由ActiveRoute)来修改转发表。
比如RIP和OSPF都学到了一条到同一网段的路由,但下一跳却不同,路由管理会根据协议的优先级优先将OSPF学到的路由下发给转发表。
另外转发表和路由表的逻辑独立还能带来如下优点:
1.可扩展性好,支持分布式转发。
比如对分布式路由器和三层交换机的XRN堆叠支持。
2.转发表的组织可以更加灵活,从而保证有更快的查找速度。
1.3.2查找转发表
由于IP地址有32个二进制位,理论上可以有232个IP地址可以使用,也就是43亿个IP地址。
在互联网络上,如果每一台三层网络设备,例如路由器为了彼此通信,储存每个节点的IP地址,可以想象路由器会有多么大的路由表,这对路由器来说是不可能的。
为了减少路由器中路由表项的数目,从而更加有效的进行转发。
如图所示,转发表的索引一般都为:
IP地址/掩码,查找时采用最精确的网段匹配。
将接收报文的目的IP地址与转发表项中的IP地址/掩码比较,找出最匹配的表项,匹配遵循的原则就是最长匹配原则(Longestbitmatch)。
举例解释一下最长匹配原则。
给定转发表和目的IP如下:
Destination/MaskNexthopInterface
A192.4.1.3/3210.1.1.1Ethernet0/0/1
B192.4.1.0/2420.1.1.2Ethernet0/0/0
C192.4.1.0/2740.1.1.2Ethernet1/0/0
192.4.1.311000000.00000100.00000001.00000011
192.4.1.3011000000.00000100.00000001.00011110
192.4.1.3311000000.00000100.00000001.00100001
对于目的IP192.4.1.3,这三个表项都匹配,但取表项中掩码最长的匹配,这就选择了下一跳为10.1.1.1的转发表项。
对于目的IP192.4.1.30,只有B,C两个表项匹配,取表项中掩码最长的匹配,这就选择了下一跳为20.1.1.2的转发表项。
对于目的IP192.4.1.3,只有B表项都匹配,别无选择,就选择了下一跳为40.1.1.2的转发表项。
1.3.3转发表的组织
在普通的IP转发流程中,对每个IP数据包都要查找一次转发表,由此可见,查找算法的设计直接影响到系统的转发性能。
要对最大容纳232项的表进行查找的确不容易。
对比上述三种查找表的方案,第一种肯定不可行,第二种Radix树因其为IP寻址特殊设计,具有高效的查找效率,因而被很多系统用来作为路由表的组织结构。
第三种HASH表的存储结构,其固有的优点就是查找速度快,但232个HASH项占用的内存空间也是很大的,改进的HASH结构,即采用多级HASH结构来存发转发表的实现被Comware系统所采用。
下面我们会详细介绍两种转发表的存储结构及其查找算法。
但需要注意的是,有时候会有这种情况,用户希望手动指定某些数据报文的出接口。
不要着急,系统提供另外一种方法来告诉IP数据包往哪个出接口转发。
这个过程不需要查找转发表,只需要查找用户手工设置的策略路由表就行了。
这就是靠策略路由来完成的。
1.3.4Radix组织的转发表结构
RadixTree最早由BSDUnix4.3Reno采用来处理路由的检索。
它支持地址编码不同的地址类型,它根据目标地址/掩码从其高位到低位比特的置0或置1来组织,作为一种高效的数据结构被Comware用来作为转发表的一种组织方式。
RadixTree其实是一棵不规则的二叉树,它由内部节点和外部节点组成。
如图所示,内部节点是树的构造单位,外部节点则包含了与应用相关的信息,如在转发表中,内部节点指定了一个网络地址/掩码(dest/mask),外部节点则存放了一个到该网络地址/掩码的所有路由。
RadixTree的构造过程确保了如下特性:
对一路由而言,到同地址的比它更不确定的路由必然位于与该路由相关的内部节点到RadixTree根节点的路径上。
举例说明其组织方式和查找过程
A.10.1.1.000000110.00000001.00000001.00000000
B.20.1.1.000010100.00000001.00000001.00000000
C.127.0.0.001111111.00000000.00000000.00000000
D.192.168.10.011000000.10101000.00000110.00000000
E.192.168.20.011000000.10101000.00010100.00000000
从IP地址的最高地址位向低地址位依次来比较判断,为0,则为放入左子树,为1则放入右子树。
从第一位判断ABC位于左子树,而DE为右子树,从第二位判断AB为左子树,而C为右子树,从第四位判断A位于左子树,而B为右子树,从第二十位判断D位于左子树,而E为右子树。
1.3.5四级HASH表
为了获得更高的查找速度,HASH表也被用来存放转发表。
但如何有效的组织HASH表,使得其占用内存和存取效率取得平衡?
根据IP寻址的特点采用四级HASH的组织方式是一个不错的选择。
将IP地址的32bit划分为20+4+4+4共四级,逐级往下查,直到查到或查找失败为止。
若HASH表中记录的值>0,表示该节点只存在一条转发表项,不存在冲突的情况,记录的内容就是相应的路由项。
若HASH表中记录的值=0,表示不存在相应的路由项,查找失败;
若HASH表中记录的值<0,表示该节点存在多条路由项,需要进行下一级HASH查找,该节点记录的是指向下一级索引表的指针的相反值。
按照这样的查找方法,对任何一条路由,最多四次比较就可以查出结果。
1.3.6转发表项中的主要元素
转发表中的每一项都对应着一个转发节点。
但聪明的你可能会想到同一个目的地址/掩码对应着多个出接口/下一跳怎么办,比如一个公司的接入路由器有ATM和POS两条链路连着两个ISP的组网情况。
因此转发节点上还需要包括多个具体的转发表项,可以用来灵活地实现多个出接口之间的等值路由负载分担。
每个具体的转发表项的内容主要有:
●目的地址(Destination):
用来标识IP包的目的地址或目的网络。
●网络掩码(Mask):
和目的地址一起来标识目的主机或路由器所在的网段的地址。
●输出接口(Interface):
说明IP包将从该路由器哪个接口转发。
思考这样一个问题,出接口和下一跳是不是一回事?
对于点到点接口,发送接口即隐含了下一跳地址,这时认为与该接口相连的对端接口地址就是路由的下一跳地址。
如串口链路封装PPP协议,通过PPP协商获取对端的IP地址和指定的发送接口是等价的。
对于支持网络地址到链路层地址解析的接口(如以太网接口支持ARP),发送接口并不能唯一指定下一跳。
比如发送接口为Ethernet1/0/0,其本身的IP地址为192.168.100.1,下一跳可能是和192.168.100.1在同一网段的任何IP地址。
对于NBMA接口(如封装X.25或帧中继的接口、拨号口等),支持点到多点,这时指定发送接口也不足以说明下一跳的IP到底是多少。
因此可知,对不同的链路类型,发送接口和下一跳所携带的信息是不同的。
1.4普通转发流程
1.4.1IP转发所在的位置
该流程对基于软转发的路由器和基于NP转发的路由器都适用,IP转发本身功能是相同的,只是实现有所不同。
需要注意的是,对三层交换机来说,只有目的IP为本机的IP报文才送往CPU进行处理,其他需要转发的IP报文由芯片直接转发。
按照IP网络分层的原则,报文从物理层接收,交给链路层处理,然后根据上层协议的类型进行不同的处理,对IP报文的目的地址进行分析,本机报文交给上层处理,待转发报文查找转发表进行链路层封装,最后物理发送,完成报文的整个处理流程。
形象地讲,IP转发就是路由器的心脏。
1.4.2数据流总揽
让我们对路由器中的数据流再温习一下:
数据帧在硬件上被接收后,通过中断通知CPU,在中断处理中由DMA(直接内存存取)机制直接将报文送CPU进行处理,先开始进行链路层的接收处理。
链路层协议,常见的有:
PPP,ATM,X.25,FR,Ethernet等,对报文进行分析处理,其最主要的工作就是根据报文承载的协议类型,将报文送入不同的队列进行处理。
比如对IP报文送入IP队列,对OSI报文送入OSI队列,对IPX报文送入IPX队列。
IP队列处理部分就是IP转发流程的入口点。
它会根据IP报文的目的地址查找前面一直提到的转发表,当然,对单播IP报文查找单播转发表,对组播报文则会去查找组播转发表。
对上送给本机的报文就交给设备的协议栈部分单独进行处理。
比如对OSPF,RIP等路由协议报文就送给SOCKET部分统一处理。
对待转发的报文,当输出接口/下一跳指定后,报文就交给相应的链路层部分去处理,主要部分还是进行链路层头的封装。
以Ethernet举例说明。
当指定下一跳为192.168.100.1为,要先检查自己的ARP表中是否有此IP对应的MAC地址。
若有,即立刻封装发送,若没有,则立即向192.168.100.1发送ARP请求报文,待收到ARP响应报文就得知其MAC地址,从而进行封装发送。
QOS部分会根据链路是否拥塞,若链路拥塞,则报文先暂存于QOS队列中,根据报文的优先级延迟发送,若链路通畅,报文则直接发送出去,最后数据报文经过驱动启动硬件发送。
1.4.3IP的接收处理
从报文处理的关键路径来看,IP转发大致可以分为三个部分:
接收处理,转发处理和发送处理。
在开始我们的IP转发之旅前,提醒各位游客一点:
在众多的景点中,有些东西是免费参观的,而有些则需要门票哦。
说的明白一点就是,有的流程是必须的,而有些则是用户配置了某种业务后,流程才会走到。
IP接收处理部分主要包括报文合法性检查,入方向包过滤检查,NAT(网络地址转换)入处理,NetStream统计,QOS处理,策略路由处理等。
接收到IP报文后,首先会对报文的合法性进行检查。
合法性主要包括版本是否正确,报文头的长度数据和报文实际长度是否相同,报文内容是否发生变化,造成校验和有错,还用基于安全方面考虑的URPF(单播反向路径)检查。
如果输入接口上启用了防火墙,防火墙检查会根据用户配置的ACL(访问控制列表)来决定该报文是否可以通行,如果报文匹配用户指定的ACL规则,则根据该ACL规则将报文放行或丢弃。
举个例子说明,当用户配置ACL规则如下时:
rule0denytcpsource0.0.0.0255.255.255.0destination-porteqtelnet
就说明该输入接口不允许源地址为192.168.100.1/24网段的Telnet报文通行。
如果输入接口还配置了网络地址转换,则会对报文的目的IP或目的端口号进行还原处理。
具体过程后面章节会详细介绍。
如果用户想对进入路由器的数据报文分类统计显示,就要开启NetStream功能,该功能主要用于对IP报文按照源/目的地址,源/目的端口,协议号等IP信息进行报文的分类统计,用户可以使用这个特性来实现按流量计费或进行网络的业务规划。
如果用户因为管理策略或防攻击的需求而需要一种在接口上限制流量的机制,便可以在接口上启用相应的QOS策略。
比如可以限制某个特定用户的数据流量不超过整个链路的10%。
另外,策略路由处理模块可以灵活根据用户配置的策略提前将报文转发出去,对组播报文将会查找组播转发表进行转发。
1.4.4IP报文的转发处理
IP报文的接收处理是对报文的预处理,而转发处理才是真正决定报文何去何从的处理,在这里系统会根据报文的目的地址查找报文的下一跳/出接口。
IP报文的转发处理主要包括对广播报文的处理,查找转发表,TTL处理,重定向处理,报文的转发统计处理等。
对网段广播报文,路由器会将其上送上层协议栈处理,不会进行转发。
接下来会根据报文的目的地址和报文的输入接口是否连接VPN等信息来查找转发表。
若输入接口连接VPN,则会查找私网转发表,否则查找公网转发表。
若查表失败,则表明没有合适的表项来指明报文该如何转发,这时会向源端发送目的不可达的ICMP报文。
若查到的出接口为LoopBack接口,表明报文已经到家了,其目的地就是本机,则报文就会送上层协议处理。
IP报文里的TTL字段即表明了该报文已经经过了多少次的转发,每次转发都要对报文的TTL域减一。
设备收到报文时,会检查报文的TTL域,若大于一,则将该值减一,否则认为报文在网络中滞留时间过长,就会丢弃报文,然后向源端发送TTL超时的ICMP报文。
若查表后,发现出接口就是报文接收时的入接口,认为查表结果不恰当,需要向源端发送重定向的ICMP报文。
最后报文从路由出接口发送。
1.4.5指定接口发送
报文的出接口找到了,下一步就是链路层发送了。
但在这期间还需要对一些业务进行特殊处理。
主要包括:
对本地发送IP报文的头填充,NetStream统计,出方向的包过滤,TCPMSS处理,NAT的出处理,报文长度大于出接口MTU(最大传输单元)时的IP分片,最后就是QOS的出方向处理。
需要注意的是,IP转发还要处理一部分本机发送的报文,但这些报文IP头中的某些域,比如源地址,校验和等可能没有填写,如果就这样发送出去,别的设备可能不会接收这种不合法报文,源地址等信息需要在这个流程中填入。
和入方向处理类似,NetStream还要处理出方向的报文统计,防火墙也要进行对输出报文重新检查。
如果设备配置了TCPMSS这个选项,它将会检查穿过设备的TCP连接,根据配置的MSS来调整TCP报文中MSS(最大报文段)选项的内容。
NAT的输出处理将对报文的源IP地址和源端口进行转换,来实现对公网的访问。
QOS输出处理会根据接口上的QOS配置,对报文的流量进行监管或整形,通常用来保证用户数据流的时延和抖动最小。
最后报文才启动链路层发送,进行不同的链路层处理。
1.5IP转发中常见的业务
1.5.1防火墙
在IP转发流程的介绍中,我们已经知道IP报文在转发流程中通常要经过防火墙的检测,NAT的处理,以及QOS的处理。
这些流程虽不是必需的,但在组网应用中经常被用户使用。
先来认识一下防火墙。
这里的防火墙和专门的防火墙产品有什么不同呢?
Comware的防火墙只是作为路由交换设备的一个功能模块,为设备提供内嵌的安全功能,而专门的防火墙产品功能比较单一,安全性高。
Comware平台提供了两种级别的防火墙实现:
一种是基于ACL的包过滤,另外一种是比较灵活的基于应用层的包过滤。
ACL包过滤应用在路由器中就为路由器增加了对数据包的过滤功能。
ACL/包过滤实现对IP数据包的过滤,对路由器需要转发的数据包,先获取数据包的包头信息,包括IP层所承载的上层协议的协议号,数据包的源地址、目的地址、源端口和目的端口等,然后和设定的ACL规则进行比较,根据比较的结果决定对数据包进行转发或者丢弃。
ASPF(ApplicationSpecificPacketFilter)是针对应用层的包过滤,即基于状态的报文过滤。
它和普通的静态防火墙协同工作,以便于实施内部网络的安全策略。
ASPF能够检测试图通过防火墙的应用层协议会话信息,阻止不符合规则的数据报文穿过。
为保护网络安全,基于访问控制列表的包过滤可以在网络层和传输层检测数据包,防止非法入侵。
ASPF能够检测应用层协议的信息,并对应用的流量进行监控。
1.5.2网络地址转换
RFC1918为私有网络预留出了三个IP地址块,如下:
A类:
10.0.0.0~10.255.255.255
B类:
172.16.0.0~172.31.255.255
B类:
192.168.0.0~192.168.255.255
为解决IP地址资源枯竭的问题,通常采用的地址分配方案是:
在私网内分配如上的地址供其内部通信使用,这部分地址在多个私网内可以重复使用,当要访问外边的公网时,发送出去的报文需要将源地址替换为公网地址,而接收到报文时,则需要将其目的地址替换为私网地址,这样才能完成整个通信过程。
举例说明如下:
NAT服务器处于私有网络和公有网络的连接处。
当内部PC(192.168.1.10)向外部服务器(202.120.10.2)发送一个数据报1时,数据报将通过NAT服务器。
NAT处理部分会查看报头内容,发现该数据报是发往外网的,那么它将数据报1的源地址字段的私有地址192.168.1.10换成一个可在Internet上选路的公有地址202.119.19.19,并将该数据报发送到外部服务器,同时在网络地址转换表中记录这一映射;外部服务器给内部PC发送应答报文2(其初始目的地址为202.119.19.19),到达NAT服务器后,NAT处理部分再次查看报头内容,然后查找当前网络地址转换表的记录,用原来的内部PC的私有地址192.168.1.10替换目的地址。
上述的NAT过程对终端(如图中的PC和服务器)来说是透明的。
对外部服务器而言,它认为内部PC的IP地址就是202.119.19.19,并不知道有192.168.1.10这个地址。
因此,NAT可以起到“隐藏”私有网络拓扑结构的作用。
1.5.3服务质量(QOS)
IP网络发展到今天,提供尽力而为的转发已经满足不了日益发展的业务需求。
除了传统的WWW、EMAIL、FTP应用外,用户还尝试在Internet上拓展新业务,比如远程教学、远程医疗、可视电话、电视会议、视频点播等。
企业用户也希望通过VPN技术,将分布在各地的分支机构连接起来,开展一些事务性应用:
比如访问公司的数据库或通过Telnet管理远程设备。
QOS的衡量指标主要有吞吐量,时延,时延抖动,丢包率。
对上述这些新业务来讲,它们有一个共同特点:
即对带宽、延迟、延迟抖动等传输性能有着特殊的需求。
比如电视会议、视频点播需要高带宽、低延迟和低延迟抖动的保证。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Huawei3COM 系列 培训 课程 IP 转发 基础 教材 V10