关闭

关闭

关闭

封号提示

内容

首页 IP转发基础培训教材V1[1].0.doc

IP转发基础培训教材V1[1].0.doc

IP转发基础培训教材V1[1].0.doc

上传者: gaodongjunaiho 2011-10-10 评分 0 0 0 0 0 0 暂无简介 简介 举报

简介:本文档为《IP转发基础培训教材V1[1].0doc》,可适用于IT/计算机领域,主题内容包含第章IP转发基础培训目标通过本章的学习你应该能够理解IP转发的基本原理了解路由器交换机中IP转发和转发过程中常见业务的处理流程能够了解Comware符等。

第章IP转发基础培训目标通过本章的学习你应该能够理解IP转发的基本原理了解路由器交换机中IP转发和转发过程中常见业务的处理流程能够了解Comware快速转发实现的原理及其转发性能的评价还应该掌握基本的网络诊断方法。转发的基本概念网络中的数据流在数据通信网络中设备之间的通信大都基于TCPIP协议。在IP网络上运行特定应用功能的设备都可称为端系统PC就是最常见的一种端系统。网络中的路由器和交换机就是用来互连不同的端系统让它们进行透明的通信。我们先以一个例子来简单说明局域网络中常见的数据流。办公室的两台PC:A和B通过交换机互连IP地址属于同一网段A通过FTP协议下载B的资料。B的FTP服务端软件将应用层数据打包其上的操作系统负责将这些数据报文逐层封装直到封装B的MAC地址信息后才通过以太网卡将报文发出去。交换机物理层接收到该报文后检查报文的目的MAC地址然后查找自己的MAC端口对应表为该报文找到恰当的出端口最后通过物理端口发送。A的以太网卡收到这个以太报文后判断目的MAC是否是自己的若不是则丢掉若是则交给操作系统作进一步处理最后这些数据包被正确送到FTP客户端。这就是所谓的二层交换过程。我们再用一个例子来说明广域网络中的三层转发过程。在杭州出差的小张在宾馆通过宽带网络连上在北京的邮件服务器收发电子邮件。邮件客户端的数据不能直接解析到邮件服务器的链路层地址需要借助宾馆的宽带接入设备作三层转发可能会再经过若干次的三层转发数据才能够到达服务器。二层交换首先我们需要搞清楚二层交换机和HUB的区别。其实很简单二层交换机比HUB聪明。当从网络中收到一个数据帧时HUB在所有的端口都发一份而交换机只在目的设备连接的那个端口发一份数据。二层交换是指在LAN中的报文转发下面就结合交换机工作原理来介绍一下LAN中的报文转发。如图所示从外部网络来一个报文进入LAN中已知它的目的主机就在这个LAN中但是它只知道目的主机的IP地址这样就需要地址解析协议(ARP)来帮助它找到目的主机的链路层地址这时路由器就会发送ARP请求在LAN中寻找与报文目的IP地址对应的MAC地址及此主机连接的端口。这样就完成了LAN内的寻址。同时在二层交换机上会有一张MAC地址表来帮助以后报文进行LAN内的转发。三层IP转发三层IP转发和二层交换有什么区别呢?最主要的区别是他们寻找目的地的关键字不同二层交换是链路层地址三层转发是IP地址。链路层地址MAC地址通常存在于一个平面地址空间没有清晰的地址层次只适合于同一网段内主机的通信对于不同网络之间的互连通信考虑到可能使用不同的传输介质不同的链路层协议为提供更大的灵活性我们通常使用网络层地址IP地址来寻址通信。每个路由器中都有一张路由表这张表可以由用户手动配置也可以从动态路由协议中学到。该表的索引是IP地址掩码每个表项中都存放有下一跳的IP地址和出接口。有了这张表路由器接在收到数据包时就能做到心中有数了。如图所示IP地址为的主机要访问远端IP地址为的主机。数据包需要先在接入路有器上查找路由一般情况下接入路有器上路由表项都比较简单对所有网段的地址都指向其直连的上游设备。然后还需在上查找路由表找到匹配项:就从所在的接口通过E链路将数据包发送出去。在上接收到报文后检查数据报的目的地址发现在其直连网段遂将数据报文正确送到从而完成一次完整的转发。总结IP转发的特点:.​ 报文逐跳转发.​ 报文的转发单位可以是数据包也可以是数据流。IP转发的模型该转发模型适用于路由器和三层交换机。路由器和三层交换机都可以实现三层转发其主要区别在于:.​ 路由器支持的接口类型丰富而三层交换机较为单一。.​ 路由器大多使用软件转发支持业务较多而三层交换机则采用交换芯片转发速度快。作为一个三层转发设备它的主要功能就是根据报文的目的IP查找路由表找到合适的出接口然后根据出接口的链路层协议以及接口类型封装适当的链路层头进而通过物理层发送出去。但作为可管理的网络设备应用层还需提供TelnetSNMPFTP等来对网络设备进行维护。应用层的数据也需要经过IP层和链路层的处理才能将报文发送出去同样道理接收时判断目的IP为设备本身的报文就要交给应用层处理不再转发了。转发表简介转发表与路由表在前面我们一直提到查找路由表。其实在我们的系统中报文转发时查找的是转发表。对路由器来说是软件转发表而对于三层交换机来说是芯片转发表。在此我们需要澄清两个概念:转发表(ForwardingInformationBase)和路由表(RouteTable)。转发表是IP层真正用来控制数据包发送的IP发送报文时通过查询转发表决定下一跳而路由表是路由管理模块用来统一管理、收集上层寻径协议找回的各种路由信息路由管理根据特定策略从路由表中选中评价较好的路由(称为选中路由ActiveRoute)来修改转发表。比如RIP和OSPF都学到了一条到同一网段的路由但下一跳却不同路由管理会根据协议的优先级优先将OSPF学到的路由下发给转发表。另外转发表和路由表的逻辑独立还能带来如下优点:.​ 可扩展性好支持分布式转发。比如对分布式路由器和三层交换机的XRN堆叠支持。.​ 转发表的组织可以更加灵活从而保证有更快的查找速度。查找转发表由于IP地址有个二进制位理论上可以有个IP地址可以使用也就是亿个IP地址。在互联网络上如果每一台三层网络设备例如路由器为了彼此通信储存每个节点的IP地址可以想象路由器会有多么大的路由表这对路由器来说是不可能的。为了减少路由器中路由表项的数目从而更加有效的进行转发。如图所示转发表的索引一般都为:IP地址掩码查找时采用最精确的网段匹配。将接收报文的目的IP地址与转发表项中的IP地址掩码比较找出最匹配的表项匹配遵循的原则就是最长匹配原则(Longestbitmatch)。举例解释一下最长匹配原则。给定转发表和目的IP如下:对于目的IP这三个表项都匹配但取表项中掩码最长的匹配这就选择了下一跳为的转发表项。对于目的IP只有BC两个表项匹配取表项中掩码最长的匹配这就选择了下一跳为的转发表项。对于目的IP只有B表项都匹配别无选择就选择了下一跳为的转发表项。转发表的组织在普通的IP转发流程中对每个IP数据包都要查找一次转发表由此可见查找算法的设计直接影响到系统的转发性能。要对最大容纳项的表进行查找的确不容易。对比上述三种查找表的方案第一种肯定不可行第二种Radix树因其为IP寻址特殊设计具有高效的查找效率因而被很多系统用来作为路由表的组织结构。第三种HASH表的存储结构其固有的优点就是查找速度快但个HASH项占用的内存空间也是很大的改进的HASH结构即采用多级HASH结构来存发转发表的实现被Comware系统所采用。下面我们会详细介绍两种转发表的存储结构及其查找算法。但需要注意的是有时候会有这种情况用户希望手动指定某些数据报文的出接口。不要着急系统提供另外一种方法来告诉IP数据包往哪个出接口转发。这个过程不需要查找转发表只需要查找用户手工设置的策略路由表就行了。这就是靠策略路由来完成的。Radix组织的转发表结构RadixTree最早由BSDUnixReno采用来处理路由的检索。它支持地址编码不同的地址类型它根据目标地址掩码从其高位到低位比特的置或置来组织,作为一种高效的数据结构被Comware用来作为转发表的一种组织方式。RadixTree其实是一棵不规则的二叉树它由内部节点和外部节点组成。如图所示内部节点是树的构造单位外部节点则包含了与应用相关的信息如在转发表中内部节点指定了一个网络地址掩码(destmask)外部节点则存放了一个到该网络地址掩码的所有路由。RadixTree的构造过程确保了如下特性:对一路由而言到同地址的比它更不确定的路由必然位于与该路由相关的内部节点到RadixTree根节点的路径上。举例说明其组织方式和查找过程从IP地址的最高地址位向低地址位依次来比较判断为则为放入左子树为则放入右子树。从第一位判断ABC位于左子树而DE为右子树从第二位判断AB为左子树而C为右子树从第四位判断A位于左子树而B为右子树从第二十位判断D位于左子树而E为右子树。四级HASH表为了获得更高的查找速度HASH表也被用来存放转发表。但如何有效的组织HASH表使得其占用内存和存取效率取得平衡?根据IP寻址的特点采用四级HASH的组织方式是一个不错的选择。将IP地址的bit划分为共四级逐级往下查直到查到或查找失败为止。若HASH表中记录的值>表示该节点只存在一条转发表项不存在冲突的情况记录的内容就是相应的路由项。若HASH表中记录的值=表示不存在相应的路由项查找失败若HASH表中记录的值<表示该节点存在多条路由项需要进行下一级HASH查找该节点记录的是指向下一级索引表的指针的相反值。按照这样的查找方法对任何一条路由最多四次比较就可以查出结果。转发表项中的主要元素转发表中的每一项都对应着一个转发节点。但聪明的你可能会想到同一个目的地址掩码对应着多个出接口下一跳怎么办比如一个公司的接入路由器有ATM和POS两条链路连着两个ISP的组网情况。因此转发节点上还需要包括多个具体的转发表项可以用来灵活地实现多个出接口之间的等值路由负载分担。每个具体的转发表项的内容主要有:​ 目的地址(Destination):用来标识IP包的目的地址或目的网络。​ 网络掩码(Mask):和目的地址一起来标识目的主机或路由器所在的网段的地址。​ 输出接口(Interface):说明IP包将从该路由器哪个接口转发。思考这样一个问题出接口和下一跳是不是一回事?对于点到点接口发送接口即隐含了下一跳地址这时认为与该接口相连的对端接口地址就是路由的下一跳地址。如串口链路封装PPP协议通过PPP协商获取对端的IP地址和指定的发送接口是等价的。对于支持网络地址到链路层地址解析的接口(如以太网接口支持ARP)发送接口并不能唯一指定下一跳。比如发送接口为Ethernet,其本身的IP地址为,下一跳可能是和在同一网段的任何IP地址。对于NBMA接口(如封装X或帧中继的接口、拨号口等)支持点到多点这时指定发送接口也不足以说明下一跳的IP到底是多少。因此可知对不同的链路类型发送接口和下一跳所携带的信息是不同的。普通转发流程IP转发所在的位置该流程对基于软转发的路由器和基于NP转发的路由器都适用IP转发本身功能是相同的只是实现有所不同。需要注意的是对三层交换机来说只有目的IP为本机的IP报文才送往CPU进行处理其他需要转发的IP报文由芯片直接转发。按照IP网络分层的原则报文从物理层接收交给链路层处理然后根据上层协议的类型进行不同的处理对IP报文的目的地址进行分析本机报文交给上层处理待转发报文查找转发表进行链路层封装最后物理发送完成报文的整个处理流程。形象地讲IP转发就是路由器的心脏。数据流总揽让我们对路由器中的数据流再温习一下:数据帧在硬件上被接收后通过中断通知CPU在中断处理中由DMA(直接内存存取)机制直接将报文送CPU进行处理先开始进行链路层的接收处理。链路层协议常见的有:PPP,ATM,X,FR,Ethernet等对报文进行分析处理其最主要的工作就是根据报文承载的协议类型将报文送入不同的队列进行处理。比如对IP报文送入IP队列对OSI报文送入OSI队列对IPX报文送入IPX队列。IP队列处理部分就是IP转发流程的入口点。它会根据IP报文的目的地址查找前面一直提到的转发表当然对单播IP报文查找单播转发表对组播报文则会去查找组播转发表。对上送给本机的报文就交给设备的协议栈部分单独进行处理。比如对OSPF,RIP等路由协议报文就送给SOCKET部分统一处理。对待转发的报文当输出接口下一跳指定后报文就交给相应的链路层部分去处理主要部分还是进行链路层头的封装。以Ethernet举例说明。当指定下一跳为为要先检查自己的ARP表中是否有此IP对应的MAC地址。若有即立刻封装发送若没有则立即向发送ARP请求报文待收到ARP响应报文就得知其MAC地址从而进行封装发送。QOS部分会根据链路是否拥塞若链路拥塞则报文先暂存于QOS队列中根据报文的优先级延迟发送若链路通畅报文则直接发送出去最后数据报文经过驱动启动硬件发送。IP的接收处理从报文处理的关键路径来看IP转发大致可以分为三个部分:接收处理转发处理和发送处理。在开始我们的IP转发之旅前提醒各位游客一点:在众多的景点中有些东西是免费参观的而有些则需要门票哦。说的明白一点就是有的流程是必须的而有些则是用户配置了某种业务后流程才会走到。IP接收处理部分主要包括报文合法性检查入方向包过滤检查NAT(网络地址转换)入处理NetStream统计QOS处理策略路由处理等。接收到IP报文后首先会对报文的合法性进行检查。合法性主要包括版本是否正确报文头的长度数据和报文实际长度是否相同报文内容是否发生变化造成校验和有错还用基于安全方面考虑的URPF(单播反向路径)检查。如果输入接口上启用了防火墙防火墙检查会根据用户配置的ACL(访问控制列表)来决定该报文是否可以通行如果报文匹配用户指定的ACL规则则根据该ACL规则将报文放行或丢弃。举个例子说明当用户配置ACL规则如下时:ruledenytcpsourcedestinationporteqtelnet就说明该输入接口不允许源地址为网段的Telnet报文通行。如果输入接口还配置了网络地址转换则会对报文的目的IP或目的端口号进行还原处理。具体过程后面章节会详细介绍。如果用户想对进入路由器的数据报文分类统计显示就要开启NetStream功能该功能主要用于对IP报文按照源目的地址源目的端口协议号等IP信息进行报文的分类统计用户可以使用这个特性来实现按流量计费或进行网络的业务规划。如果用户因为管理策略或防攻击的需求而需要一种在接口上限制流量的机制便可以在接口上启用相应的QOS策略。比如可以限制某个特定用户的数据流量不超过整个链路的。另外策略路由处理模块可以灵活根据用户配置的策略提前将报文转发出去对组播报文将会查找组播转发表进行转发。IP报文的转发处理IP报文的接收处理是对报文的预处理而转发处理才是真正决定报文何去何从的处理在这里系统会根据报文的目的地址查找报文的下一跳出接口。IP报文的转发处理主要包括对广播报文的处理查找转发表TTL处理重定向处理报文的转发统计处理等。对网段广播报文路由器会将其上送上层协议栈处理不会进行转发。接下来会根据报文的目的地址和报文的输入接口是否连接VPN等信息来查找转发表。若输入接口连接VPN则会查找私网转发表否则查找公网转发表。若查表失败则表明没有合适的表项来指明报文该如何转发这时会向源端发送目的不可达的ICMP报文。若查到的出接口为LoopBack接口表明报文已经到家了其目的地就是本机则报文就会送上层协议处理。IP报文里的TTL字段即表明了该报文已经经过了多少次的转发每次转发都要对报文的TTL域减一。设备收到报文时会检查报文的TTL域若大于一则将该值减一否则认为报文在网络中滞留时间过长就会丢弃报文然后向源端发送TTL超时的ICMP报文。若查表后发现出接口就是报文接收时的入接口认为查表结果不恰当需要向源端发送重定向的ICMP报文。最后报文从路由出接口发送。指定接口发送报文的出接口找到了下一步就是链路层发送了。但在这期间还需要对一些业务进行特殊处理。主要包括:对本地发送IP报文的头填充NetStream统计出方向的包过滤TCPMSS处理NAT的出处理报文长度大于出接口MTU(最大传输单元)时的IP分片最后就是QOS的出方向处理。需要注意的是IP转发还要处理一部分本机发送的报文但这些报文IP头中的某些域比如源地址校验和等可能没有填写如果就这样发送出去别的设备可能不会接收这种不合法报文源地址等信息需要在这个流程中填入。和入方向处理类似NetStream还要处理出方向的报文统计防火墙也要进行对输出报文重新检查。如果设备配置了TCPMSS这个选项它将会检查穿过设备的TCP连接根据配置的MSS来调整TCP报文中MSS(最大报文段)选项的内容。NAT的输出处理将对报文的源IP地址和源端口进行转换来实现对公网的访问。QOS输出处理会根据接口上的QOS配置对报文的流量进行监管或整形通常用来保证用户数据流的时延和抖动最小。最后报文才启动链路层发送进行不同的链路层处理。IP转发中常见的业务防火墙在IP转发流程的介绍中我们已经知道IP报文在转发流程中通常要经过防火墙的检测NAT的处理以及QOS的处理。这些流程虽不是必需的但在组网应用中经常被用户使用。先来认识一下防火墙。这里的防火墙和专门的防火墙产品有什么不同呢?Comware的防火墙只是作为路由交换设备的一个功能模块为设备提供内嵌的安全功能而专门的防火墙产品功能比较单一安全性高。Comware平台提供了两种级别的防火墙实现:一种是基于ACL的包过滤另外一种是比较灵活的基于应用层的包过滤。ACL包过滤应用在路由器中就为路由器增加了对数据包的过滤功能。ACL包过滤实现对IP数据包的过滤对路由器需要转发的数据包先获取数据包的包头信息包括IP层所承载的上层协议的协议号数据包的源地址、目的地址、源端口和目的端口等然后和设定的ACL规则进行比较根据比较的结果决定对数据包进行转发或者丢弃。ASPF(ApplicationSpecificPacketFilter)是针对应用层的包过滤即基于状态的报文过滤。它和普通的静态防火墙协同工作以便于实施内部网络的安全策略。ASPF能够检测试图通过防火墙的应用层协议会话信息阻止不符合规则的数据报文穿过。为保护网络安全基于访问控制列表的包过滤可以在网络层和传输层检测数据包防止非法入侵。ASPF能够检测应用层协议的信息并对应用的流量进行监控。网络地址转换RFC为私有网络预留出了三个IP地址块如下:A类:~B类:~B类:~为解决IP地址资源枯竭的问题通常采用的地址分配方案是:在私网内分配如上的地址供其内部通信使用这部分地址在多个私网内可以重复使用当要访问外边的公网时发送出去的报文需要将源地址替换为公网地址而接收到报文时则需要将其目的地址替换为私网地址这样才能完成整个通信过程。举例说明如下:NAT服务器处于私有网络和公有网络的连接处。当内部PC()向外部服务器()发送一个数据报时数据报将通过NAT服务器。NAT处理部分会查看报头内容发现该数据报是发往外网的那么它将数据报的源地址字段的私有地址换成一个可在Internet上选路的公有地址并将该数据报发送到外部服务器同时在网络地址转换表中记录这一映射外部服务器给内部PC发送应答报文(其初始目的地址为)到达NAT服务器后NAT处理部分再次查看报头内容然后查找当前网络地址转换表的记录用原来的内部PC的私有地址替换目的地址。上述的NAT过程对终端(如图中的PC和服务器)来说是透明的。对外部服务器而言它认为内部PC的IP地址就是并不知道有这个地址。因此NAT可以起到“隐藏”私有网络拓扑结构的作用。服务质量(QOS)IP网络发展到今天提供尽力而为的转发已经满足不了日益发展的业务需求。除了传统的WWW、EMAIL、FTP应用外用户还尝试在Internet上拓展新业务比如远程教学、远程医疗、可视电话、电视会议、视频点播等。企业用户也希望通过VPN技术将分布在各地的分支机构连接起来开展一些事务性应用:比如访问公司的数据库或通过Telnet管理远程设备。QOS的衡量指标主要有吞吐量时延时延抖动丢包率。对上述这些新业务来讲它们有一个共同特点:即对带宽、延迟、延迟抖动等传输性能有着特殊的需求。比如电视会议、视频点播需要高带宽、低延迟和低延迟抖动的保证。事务处理、Telnet等关键任务虽然不一定要求高带宽但非常注重低延迟在拥塞发生时要求优先获得处理。要满足IP网络的可运营性必须解决IP网络的QOS问题。业务的QOS需要整个网络配合实现。单个设备必须具有以下几种QOS能力:​ 对数据报文的优先级域(TOS或DSCP)可以重写从而根据用户策略重新设置报文的优先级。​ 为特定用户保证特定带宽​ 在网络拥塞时进行恰当的队列管理。​ 对指定业务的输出流量进行整形下面我们会介绍路由器常用的QOS管理机制。QOS的实现在分组交换的复杂环境下拥塞极为常见。主要有以下两种情况:​ 分组流从高速链路进入路由器由低速链路转发出去。​ 分组流从相同速率的多个接口同时进入路由器由一个相同速率的接口转发出去。另外蠕虫病毒和网络攻击也会造成网络拥塞。拥塞会造成报文传输的延迟和延迟抖动并使网络的有效吞吐率降低严重的话还会造成系统崩溃。解决网络拥塞有效的办法是增加网络层在流量控制和资源分配上的功能为有不同服务需求的业务提供有区别的服务正确地分配和使用资源并在拥塞发生时依据业务的性质及其需求特性权衡资源的分配将拥塞对QoS的影响减到最小。流分类、流量监管整形、拥塞管理和拥塞避免作为QOS实现的机种机制它们主要完成如下功能:​ 流分类:依据一定的匹配规则识别出对象。流分类是有区别地实施服务的前提​ 流量监管:对进入路由器的特定流量的规格进行监管。当流量超出规格时可以采取限制或惩罚措施以保护运营商的商业利益和网络资源不受损害​ 拥塞管理:网络拥塞是必须采取的解决资源竞争的措施。通常是将报文放入队列中缓存并采取某种调度算法安排报文的转发次序。​ 拥塞避免:过度的拥塞会对网络资源造成损害。拥塞避免监督网络资源的使用情况当发现拥塞有加剧的趋势时采取主动丢弃报文的策略通过调整流量来解除网络的过载。​ 流量整形:一种主动调整流的输出速率的流控措施通常是为了使流量适配下游路由器可供给的网络资源避免不必要的报文丢弃和拥塞。IP报文的快速转发背景和可行性从前面的学习中我们了解了普通IP转发流程及其常用业务的处理。在普通转发流程中对每个数据包都要执行复杂的判断处理造成转发性能底下。对靠纯软件转发的中低端路由器来说转发效率直接影响着产品的市场占有率。经过理论分析和大量的实践证明底层的收发能力都是有保证的转发性能的瓶颈在于上层的处理效率低报文必须先进IP接收队列等该队列被系统调度到时才真正进行报文的处理。队列调度和上层业务处理效率较低限制了整机的转发效率。首先阐明一个概念一条数据流就是特征比较相似的一组数据包。我们将源目的地址源目的端口(对于TCPUDP)协议号都相同的一组数据报文称为一条数据流。仔细分析网络上数据的业务模式我们不难发现大多数的业务都是基于流的尤其在边缘接入设备上数据流的特征更加明显。每条流的目的IP地址都一样对防火墙NATQOS等业务的处理也基本相同。分析到此我们应该知道没有必要对每条数据流的每个报文都执行很多相同的操作想办法将每条流的特征信息与所需要的处理关联起来就能提高上层的处理效率只要提高了上层业务的处理效率每个数据报文的处理时间短到一定程度就可以对接收到的报文作短路处理也就是说在链路层接口收到报文后不再送入IP队列直接完成链路层发送。这就是快速转发的基本思想。设计思想借鉴三层交换机的转发思路即“一次路由多次交换”对每个数据流只查找一次转发表。具体做法就是对数据流的第一个报文按照前面讲过的普通IP转发流程执行第一个报文将其查到的转发表项记录在快转Cache中并将其封装的链路层头也记录在Cache中该数据流的后续报文就不再走普通的转发流程而直接查找快转Cache封装上和首包相同的链路层头就可以直接发送了。Comware的快速转发采用源IP目的IP源端口号目的端口号和协议号这五元组来标识一条数据流对该数据流上的报文采用相同的处理简化了一些处理流程。因数据流的后续报文只需要依靠快转Cache中纪录的内容就可以完成转发快转Cache中包含的信息应该足以丰富现有的实现主要包含有数据流的标识信息报文的出接口接口发送时的链路层封装以及快转Cache命中后需做哪些业务处理之类的动作标识比如NAT处理等。普通转发和快速转发的比较从上图可以清晰地看到这两种转发模式的区别。在链路层接收的一个IP数据包后先查找快转Cache一般来讲对数据流的第一个包应该是查找Cache失败于是数据包被送入IP队列进行普通转发的处理。当报文从出接口发送时经过链路层协议处理后有一件非常重要的事需要去做那就是要把查到的转发表以及封装好的链路层头都纪录在快转Cache中。当后续的数据报文到达时直接查找快转Cache即可命中然后封装上链路层头立即从指定出接口发送即可。对快速转发而言它不再经过普通链路层的处理而是直接交由QOS发送。需要注意的是本机发出去的报文和送往本机的报文不经过快速转发处理。另外有些业务的特殊需要和快速转发的思想不一致比如对报文长度匹配的策略路由如用户配置对报文长度大于的报文走出接口发送其他报文走出接口发送。在这种情况下按照现有的快速转发流程处理将得不到预期的处理效果。对于这种情况我们可以设定快速转发模式对此类报文无效。在特殊的链路层配置下比如配置PPP头压缩后快速转发也会出现问题因此在报文发送时仍走普通发送流程发送比普通转发流程少了一个队列处理的过程这种转发称之为半快转。快速转发的实现因为每个快转Cache标识一条流对数据流的五元组采用HASH算法得出一个的Key作为存放快转Cache的索引考虑到查找效率的因素每个索引中最多允许个冲突项因此我们的快转Cache的大小是。快转表的Cache创建前面已经讲过是在首包发送时创建。但创建的表项是否永远都在呢?答案是否定的。因为我们必须有一种机制保证快转Cache和转发表保持同步。考虑一种特殊的情况当路由发生变化时数据流还继续通过若快转Cache没有合适的老化机制这样可能就会造成报文的错误的发。还有当用户改变了接口上防火墙的配置时为保证以后报文的正确转发需要及时把与该接口相关的开转Cache老化掉。在系统中在以下几种情况下会主动老化Cache。​ 接口地址的ARP发生变化​ 转发表项的删除或更新(路由管理发布更优路由)​ 接口的链路层DOWN或物理DOWN​ 收到改变接口的防火墙配置目前快速转发是路由器缺省的转发模式链层层支持方面除了X以外其他链路层协议都已支持快速转发对策略路由这种特殊的转发模式暂不支持快速转发。快转的性能改善上表的测试数据是“裸转发”性能即接口上没有配置任何业务的情况下的测试数据。从中可以看出快速转发模式是如何影响转发性能的。不难看出对AR产品来说快速转发模式对转发性能的改善最大有倍至多AR产品也接近倍左右。但对于目前我司性能最高的AR产品来说快速转发和普通转发的转发性能基本相同这是为什么呢?前面我们提到过影响转发性能的因素有很多:从硬件角度讲主要有:CPU处理能力IO总线速度内存存取速度等从软件角度讲有:驱动软件的处理效率上层协议软件的处理效率。快速转发只是优化了报文的处理流程即上层软件的处理效率如果硬件能力已经发挥到了极限那么快速转发便无用武之地了。AR产品便属于这种情况。因此只有对转发性能瓶颈的深入理解才能真正优化产品的转发性能。网络通畅的诊断常见的问题网络故障无时不在。对于正在开发的一种新产品在严格的测试中会遇到这样那样的故障有功能上的也有性能上的。对于成熟的产品应用在复杂的组网中因为网络产品的生产厂商可能不一样协议实现细节有差别故障也是难免的。但只要对网络故障做到心中有数并能掌握一定的诊断技巧在看似复杂的网络面前我们也能沉着冷静地分析问题并能及时解决问题。在此我们只分析网络转发方面的故障分析和处理。转发方面主要有两方面的问题:功能问题和性能问题。功能问题即数据包通不通的问题而性能问题则是数据包通的畅不畅的问题。数据包不通的问题主要有:​ 数据包转发到错误的出接口上​ 数据流的第一个报文正确转发但后续报文转发失败​ 接口上不启动快速转发模式数据转发正确否则转发失败​ 转发表中有正确的转发表项而快转Cache中表项没有或错误​ 路由表中有正确的路由项而转发表中没有相应的转发表项​ 接口物理UP,链路层协议也UP,但转发失败数据包转发不畅的问题有:​ PING目的IP显示结果时通时断丢包严重。​ 因为Keepalive报文丢失造成路由协议的定时器超时诊断原则正如医生看病一样网络故障的诊断也是有章可循的断不能头疼医头脚疼医脚要找准问题的根源然后对症下药自能药到病除。网络诊断应该遵循以下三个原则:先功能后性能先底层后上层先控制后数据。​ 先功能后性能数据网络对IP报文是逐跳转发的因此要善于利用pingtraceroute等方便的网络诊断工具来判断目的地的可达性。比如A,F两台设备中间经过了BCDE四台路由器的转发。现在A和F之间转发有问题。我们就可以从A设备逐次PINGB,C,D,E分析所得结果来逐渐缩小问题的范围。只要有转发问题先看是否可达若可达但丢包严重后面有专门对此问题的讲解。​ 先底层后上层这个原则很浅显易懂。和自然界的大多数规律一样如果底层的问题不处理好上层有很大可能会出问题至少可以肯定它不能稳定运转。对路由器的转发功能而言物理层和链路层都是它得以正常运行的基础。如果转发有问题我们就应该用健康的怀疑态度去检查数据报文的出入接口的链路层协议是否正常。比如PPP协商是否有问题等。​ 先控制后数据控制平面扮演的角色就是战场上的作战司令部而转发平面就好像冲锋陷阵的士兵。如果控制平面出了问题转发平面就会群龙无首。对路由器来说控制平面其实就是路由协议和路由管理如果路由协议错误计算或者路由管理严重渎职都可以导致转发表的错误。这时候数据转发的错误的诊断就应该换一个思路了。诊断方法转发表项相关只有控制平面工作正常了转发平面才有可能正常工作。因此保证路由表转发表和快转Cache三者之间的一致显得至关重要。当路由协议发布新路由时路由管理可能没有将新路由表下发给转发表也可能在下发的过程中数据丢失了最终造成两者之间的不一致。可以用如下命令来检查表项是否一致。disiproutingtablexxxx和disfibxxxx在转发层面系统有快转Cache的失效机制来保证在路由更新或者路由删除时接口相关ARP表项删除时接口状态变为DOWN时及时删除相应的快转Cache但在某些特殊组网或者链路上应用某种特殊业务时快转Cache没有即时更新就会造成暂时的转发错误。这时候我们应该比较用如下命令来判断转发表项和快转Cache是否一致。disfibxxxx和disipfastforwardingcachexxxx在推荐一种检查快转Cache错误的方法即在数据的出入接口上应用undoipfastforwarding,若接口禁用快速转发模式转发正常而启用快速转发模式转发失败则就要仔细研究一下快转Cache的内容了。诊断方法Debug命令对于报文是否成功转发如果出接口为以太网接口我们可以用Sniffer工具方便地进行抓包分析。但路由器的接口类型实在太丰富在复杂的组网环境下同异步串口ET,ATM,POS口都可以作为报文的出入接口抓包就不太现实了。另外抓包工具只能看到问题的结果到底什么原因导致报文转发失败便不得而知了。Comware系统提供了一个很有用的Debug命令来诊断报文的转发。该命令不仅能报告该报文是否正确转发,还能告诉用户数据转发失败的原因。比如如下信息可以为研发人员和用户提供一些有用的错误信息:Destinationisunreachable!GettingInterfacefailed!TTLExceed!但你也许会问网络中那么多数据报都一一显示我不就看花眼了。Comware系统为你准备了一个很贴心的选项。即:debugippacketaclxxx,这样你就可以对你所感兴趣的报文进行诊断了。举例说明aclnumberrulepermitipsourcedebugippacketacl这样的话debug信息就只显示源地址为的报文转发情况。需要提醒一点的是要想使用该debug功能必须禁用接口的快速转发模式也就是说快速转发基于效率的考虑不支持该debug命令。诊断方法统计计数还有一个诊断转发的利器就是察看接口的统计计数。它既可以用来诊断功能问题也可以用来诊断性能问题。如果链路层收到报文而网络层却没有输入报文或者网络层发送了报文而链路层计数却没有增加则说明这链路层和网路层中间肯定出了问题这样检查一下就缩小了问题的排查范围。如果两台A,B设备直连A的出接口发送了个报文而B的入接口只收到了个报文则说明中间的链路质量不好造成了丢包。在大流量冲击的情况下有些报文到达了链路层却因为IP输入队列满而被网路层丢弃这样很容易判断系统转发性能的瓶颈在哪里从而有效地诊断一些性能问题。链路层的Error计数也用来诊断大流量时硬件接收能力有限造成的转发丢包问题。诊断方法性能相关因为网路设备除了完成基本的路由转发任务外还有很多其他辅助的管理任务需要运行所以只要存在某个任务运行的不合理比如长时间的占用系统资源等都会对系统的转发性能造成影响。一般可以用以下几个命令来诊断discpudiscpuhistorydismemorydismemorylimit还有隐藏模式下的distask对于诊断系统级的问题非常有用。辅助诊断的几种工具对于Ping大家都很熟悉了所有的操作系统都有这个诊断命令足见其重要性。大多数时候大家都是这样pingxxxx简单使用PING的。其实善于使用Ping的各种选项将会使你的诊断功力大增。举例说明几种特殊使用ping的例子ping–cxxxx测一下丢包率ping–sxxxx测转发时的分片功能pingpffffxxxx可以测试某些物理链路的质量Traceroute通过使用发出特殊TTL值的UDP报文来检测网络的拓扑。它根据网关返回的ICMPTIMEEXCEEDED和目的主机返回的ICMPPORTUNREACHABLE来探测路径。在网络中有等价路由时Traceroute能够很好探测。抓包工具EtherealSnifferNetwinzard这些工具最好和HUB同时使用或者配置交换机的镜像端口配合使用。通过Sniffer和NetWinzard还能精巧构造报文从而实一些主动诊断的方法。

用户评论(0)

0/200

精彩专题

上传我的资料

每篇奖励 +2积分

资料评价:

/40
0下载券 下载 加入VIP, 送下载券

意见
反馈

立即扫码关注

爱问共享资料微信公众号

返回
顶部