IP转发详解(h3c经典教程)

更新时间:2023-10-20 06:53:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

IP转发详解

1.1 培训目标

培训目标了解路由表和转发表了解普通IP转发流程和常见业务的处理了解Comware快速转发原理和流程了解基本的网络诊断方法Huawei-3Com Confidential 你身边的好网络www.huawei-3com.com

通过本章的学习,你应该能够理解IP转发的基本原理,了解路由器/交换机中IP转发和转发过程中常见业务的处理流程,能够了解Comware快速转发实现的原理及其转发性能的评价,还应该掌握基本的网络诊断方法。

1.2 转发的基本概念

1.2.1 网络中的数据流

转发的基本概念网络中的数据流应用层传输层网路层链路层物理层端系统网络层链路层物理层路由器/L3交换链路层物理层网桥/L2交换应用层传输层网路层链路层物理层端系统Huawei-3Com Confidential 你身边的好网络www.huawei-3com.com 在数据通信网络中,设备之间的通信大都基于TCP/IP协议。在IP网络上运行特定应用功能的设备都可称为端系统,PC就是最常见的一种端系统。网络中的路由器和交换机就是用来互连不同的端系统,让它们进行透明的通信。

我们先以一个例子来简单说明局域网络中常见的数据流。办公室的两台PC:A 和 B通过交换机互连,IP地址属于同一网段,A通过FTP 协议下载B的资料。B 的FTP 服务端软件将应用层数据打包,其上的操作系统负责将这些数据报文逐层封装,直到封装B的MAC地址信息后,才通过以太网卡将报文发出去。交换机物理层接收到该报文后检查报文的目的MAC地址,然后查找自己的MAC---端口对应表,为该报文找到恰当的出端口,最后通过物理端口发送。A的以太网卡收到这个以太报文后,判断目的MAC是否是自己的,若不是则丢掉,若是则交给操作系统作进一步处理,最后,这些数据包被正确送到FTP 客户端。这就是所谓的二层交换过程。

我们再用一个例子来说明广域网络中的三层转发过程。在杭州出差的小张在宾馆通过宽带网络连上在北京的邮件服务器,收发电子邮件。邮件客户端的数据

不能直接解析到邮件服务器的链路层地址,需要借助宾馆的宽带接入设备作三层转发,可能会再经过若干次的三层转发,数据才能够到达服务器。 1.2.2 二层交换

转发的基本概念二层交换172.16.30.1InternetMAC172.16.0.1端口MAC ADDR PORT INDEX 00e0-fc29-c6ab Ethernet1/0/19 000f-cbb7-2c81 Ethernet1/0/20 172.16.20.1172.16.10.100e0-fc29-c7ba Ethernet1/0/23二层交换的特点:??ARP解析可以获得对端MAC地址交换机学习MAC地址映射www.huawei-3com.comHuawei-3Com Confidential 你身边的好网络 首先,我们需要搞清楚二层交换机和HUB的区别。其实很简单,二层交换机比HUB聪明。当从网络中收到一个数据帧时,HUB在所有的端口都发一份,而交换机只在目的设备连接的那个端口发一份数据。

二层交换是指在LAN中的报文转发,下面就结合交换机工作原理来介绍一下LAN中的报文转发。

如图所示,从外部网络来一个报文进入LAN中,已知它的目的主机就在这个LAN中,但是它只知道目的主机的IP地址,这样就需要地址解析协议(ARP)来帮助它找到目的主机的链路层地址,这时路由器就会发送ARP请求,在LAN中寻找与报文目的IP地址对应的MAC地址及此主机连接的端口。这样,就完成了LAN内的寻址。同时在二层交换机上会有一张MAC地址表来帮助以后报文进行LAN内的转发。

1.2.3 三层IP转发

转发的基本概念三层IP转发目的地下一跳Destination/Mask Nexthop192.5.1.0/24 10.1.1.1 10.1.1.2/32 127.0.0.110.1.1.0/24 10.1.1.220.1.1.2E1192.5.1.110.1.1.110.1.1.2ATM20.1.1.1192.4.1.1IP转发的特点:??报文的逐跳转发报文转发策略Hop by hop Per-packet/Per-flow www.huawei-3com.comHuawei-3Com Confidential 你身边的好网络 三层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.4 IP转发的模型

转发的基本概念应用层数据IP转发模型待转发数据?输入IP各种链路层支持EthernetVLANATMPOSFRX.25PPPPPPOEPPPOAHDLC1.本机的应用层数据2.外部的业务数据?输出找到恰当的接口,进行相应链路封装,然后物理发送Huawei-3Com Confidential 你身边的好网络www.huawei-3com.com 该转发模型适用于路由器和三层交换机。路由器和三层交换机都可以实现三层转发,其主要区别在于:

1. 路由器支持的接口类型丰富,而三层交换机较为单一。

2. 路由器大多使用软件转发,支持业务较多,而三层交换机则采用交换芯片转发,速度快。

作为一个三层转发设备,它的主要功能就是根据报文的目的IP查找路由表,找到合适的出接口,然后根据出接口的链路层协议以及接口类型,封装适当的链路层头,进而通过物理层发送出去。但作为可管理的网络设备,应用层还需提供 Telnet/SNMP/FTP 等来对网络设备进行维护。应用层的数据也需要经过IP层和链路层的处理,才能将报文发送出去,同样道理,接收时判断目的IP为设备本

身的报文就要交给应用层处理,不再转发了。

1.3 转发表简介

1.3.1 转发表与路由表

转发表简介转发表就是路由表?路由协议RIP/OSPF/ISIS/BGP?路由管理?软件转发表芯片转发表L3 交换机?路由管理从路由协议学到的路由中找出最好的路由路由管理将最优路由下发给软件转发表在L3交换机上,转发表维护模块将转发表同步到芯片转发表Huawei-3Com Confidential 你身边的好网络www.huawei-3com.com 在前面,我们一直提到查找路由表。其实,在我们的系统中,报文转发时查找的是转发表。对路由器来说,是软件转发表,而对于三层交换机来说是芯片转发表。

在此,我们需要澄清两个概念:转发表(Forwarding Information Base)和路由表(Route Table)。转发表是IP层真正用来控制数据包发送的,IP发送报文时通过查询转发表决定下一跳;而路由表是路由管理模块用来统一管理、收集上层寻径协议找回的各种路由信息,路由管理根据特定策略从路由表中选中评价较好的路由(称为选中路由Active Route)来修改转发表。比如RIP和OSPF都学到了一条到同一网段的路由,但下一跳却不同,路由管理会根据协议的优先级优先将OSPF学到的路由下发给转发表。

另外转发表和路由表的逻辑独立还能带来如下优点:

1. 可扩展性好,支持分布式转发。比如对分布式路由器和三层交换机的XRN 堆叠支持。

2. 转发表的组织可以更加灵活,从而保证有更快的查找速度。

1.3.2 查找转发表

转发表简介查找转发表最长匹配原则longest bit matchDestination/Mask NexthopInterface 192.4.1.3/32 10.1.1.1 Ethernet0/0/1 192.4.1.0/24 20.1.1.2 Ethernet0/0/0 192.4.1.0/27 40.1.1.2 Ethernet1/0/0问题:有如上的转发表,目的IP地址为192.4.1.3/192.4.1.30/192.4.1.33的报文怎么转发?Huawei-3Com Confidential 你身边的好网络www.huawei-3com.com 由于IP地址有32个二进制位,理论上可以有232个IP地址可以使用,也就是43亿个IP地址。在互联网络上,如果每一台三层网络设备,例如路由器为了彼此通信,储存每个节点的IP地址,可以想象路由器会有多么大的路由表,这对路由器来说是不可能的。为了减少路由器中路由表项的数目,从而更加有效的进行转发。如图所示,转发表的索引一般都为:IP地址/掩码,查找时采用最精确的网段匹配。将接收报文的目的IP地址与转发表项中的IP地址/掩码比较,找出最匹配的表项,匹配遵循的原则就是最长匹配原则(Longest bit match)。

举例解释一下最长匹配原则。 给定转发表和目的IP如下:

Destination/Mask Nexthop Interface A 192.4.1.3/32 10.1.1.1 Ethernet0/0/1 B 192.4.1.0/24 20.1.1.2 Ethernet0/0/0 C 192.4.1.0/27 40.1.1.2 Ethernet1/0/0 192.4.1.3 11000000.00000100.00000001.00000011 192.4.1.30 11000000.00000100.00000001.00011110 192.4.1.33 11000000.00000100.00000001.00100001 对于目的IP 192.4.1.3,这三个表项都匹配,但取表项中掩码最长的匹配,这就选择了下一跳为10.1.1.1的转发表项。

对于目的IP 192.4.1.30,只有B,C两个表项匹配,取表项中掩码最长的匹配,这就选择了下一跳为20.1.1.2的转发表项。

对于目的IP 192.4.1.3,只有B表项都匹配,别无选择,就选择了下一跳为40.1.1.2的转发表项。

1.3.3 转发表的组织

转发表简介转发表的组织组织原则:保证查找速度要足够快最坏复杂度顺序表Radix树四级HASH表O(N) O(LOG(N)) 4平均复杂度O(N/2) 备注N:表项总数N:搜索键长度折衷空间/效率Huawei-3Com Confidential 你身边的好网络www.huawei-3com.com

在普通的IP转发流程中,对每个IP数据包都要查找一次转发表,由此可见,查找算法的设计直接影响到系统的转发性能。要对最大容纳232项的表进行查找的确不容易。对比上述三种查找表的方案,第一种肯定不可行,第二种 Radix 树因其为IP 寻址特殊设计,具有高效的查找效率,因而被很多系统用来作为路由表的组织结构。第三种HASH表的存储结构,其固有的优点就是查找速度快,但232个HASH项占用的内存空间也是很大的,改进的HASH结构,即采用多级HASH结构来存发转发表的实现被Comware系统所采用。下面我们会详细介绍两种转发表的存储结构及其查找算法。

但需要注意的是,有时候会有这种情况,用户希望手动指定某些数据报文的出接口。不要着急,系统提供另外一种方法来告诉IP数据包往哪个出接口转发。这个过程不需要查找转发表,只需要查找用户手工设置的策略路由表就行了。这就是靠策略路由来完成的。

1.3.4 Radix组织的转发表结构

转发表简介转发表的组织----Radix树内部节点1204010.1.1.010.1.1.0011200外部节点1120.1.1.020.1.1.0127.0.0.0127.0.0.0192.168.10.0192.168.10.0192.168.20.0192.168.20.0不规则二叉树(Van Jacobson)??内部节点:树的构造节点,标识目的地址/掩码外部节点:存放应用数据,标识路由表项www.huawei-3com.comHuawei-3Com Confidential 你身边的好网络

Radix Tree最早由BSD Unix 4.3Reno采用来处理路由的检索。它支持地址编码不同的地址类型,它根据目标地址/掩码从其高位到低位比特的置0或置1来组

织,作为一种高效的数据结构被Comware用来作为转发表的一种组织方式。

Radix Tree其实是一棵不规则的二叉树,它由内部节点和外部节点组成。如图所示,内部节点是树的构造单位,外部节点则包含了与应用相关的信息,如在转发表中,内部节点指定了一个网络地址/掩码(dest/mask),外部节点则存放了一个到该网络地址/掩码的所有路由。Radix Tree 的构造过程确保了如下特性:对一路由而言,到同地址的比它更不确定的路由必然位于与该路由相关的内部节点到Radix Tree 根节点的路径上。 举例说明其组织方式和查找过程

A. 10.1.1.0 00000110.00000001.00000001.00000000 C. 127.0.0.0 01111111.00000000.00000000.00000000 D. 192.168.10.0 11000000.10101000.00000110.00000000 E. 192.168.20.0 11000000.10101000.00010100.00000000 B. 20.1.1.0 00010100.00000001.00000001.00000000

从IP地址的最高地址位向低地址位依次来比较判断,为0,则为放入左子树,为1则放入右子树。从第一位判断 A B C位于左子树,而D E为右子树,从第二位判断 A B为左子树,而C为右子树,从第四位判断 A 位于左子树,而B为右子树,从第二十位判断 D位于左子树,而E为右子树。

只有控制平面工作正常了,转发平面才有可能正常工作。因此,保证路由表,转发表和快转Cache三者之间的一致显得至关重要。

当路由协议发布新路由时,路由管理可能没有将新路由表下发给转发表,也可能在下发的过程中数据丢失了,最终造成两者之间的不一致。可以用如下命令来检查表项是否一致。

dis ip routing-table x.x.x.x 和 dis fib x.x.x.x

在转发层面,系统有快转Cache的失效机制来保证在路由更新或者路由删除时,接口相关ARP表项删除时,接口状态变为DOWN时及时删除相应的快转Cache,但在某些特殊组网或者链路上应用某种特殊业务时,快转Cache没有即时更新就会造成暂时的转发错误。这时候,我们应该比较用如下命令来判断转发表项和快转Cache是否一致。

dis fib x.x.x.x 和 dis ip fast-forwarding cache x.x.x.x

在推荐一种检查快转Cache错误的方法,即在数据的出入接口上应用 undo ip fast-forwarding ,若接口禁用快速转发模式转发正常,而启用快速转发模式转发失败则就要仔细研究一下快转Cache的内容了。

1.7.4 诊断方法----------Debug命令

网络通畅的诊断诊断方法----debug命令debugging ippacket [acl] Receiving, interface = Ethernet0/0/1, version = 4, headlen= 20, tos= 0,pktlen = 84, pktid = 45, offset = 0, ttl = 255, protocol = 1,checksum = 39798, s = 20.1.1.2, d = 10.1.1.2prompt: Receiving IP packet from Ethernet0/0/1Sending, interface = Ethernet0/0/0, version = 4, headlen= 20, tos= 0,pktlen = 84, pktid = 45, offset = 0, ttl = 254, protocol = 1,checksum = 40054, s = 20.1.1.2, d = 10.1.1.2prompt: Sending the packet from Ethernet0/0/1 at Ethernet0/0/0Receiving, interface = Ethernet0/0/1, version = 4, headlen= 20, tos= 0,pktlen = 84, pktid = 138, offset = 0, ttl = 1, protocol = 1,checksum = 39194, s = 20.1.1.2, d = 10.1.1.2prompt: Receiving IP packet from Ethernet0/0/1Discarding, interface = Ethernet0/0/1, version = 4, headlen= 20, tos= 0,pktlen = 84, pktid = 138, offset = 0, ttl = 1, protocol = 1,checksum = 39194, s = 20.1.1.2, d = 10.1.1.2prompt: TTL Exceed!转发成功转发失败注意:需要接口关闭快转Huawei-3Com Confidential 你身边的好网络www.huawei-3com.com

对于报文是否成功转发,如果出接口为以太网接口,我们可以用Sniffer工具方便地进行抓包分析。但路由器的接口类型实在太丰富,在复杂的组网环境下,同/异步串口,E1/T1,ATM,POS口都可以作为报文的出入接口,抓包就不太现实了。另外抓包工具只能看到问题的结果,到底什么原因导致报文转发失败便不得而知了。

Comware系统提供了一个很有用的Debug命令来诊断报文的转发。该命令不仅能报告该报文是否正确转发,还能告诉用户数据转发失败的原因。比如如下信息,可以为研发人员和用户提供一些有用的错误信息:

Destination is unreachable! Getting Interface failed! TTL Exceed!

但你也许会问,网络中那么多数据报都一一显示,我不就看花眼了。Comware系统为你准备了一个很贴心的选项。即: debug ip packet acl xxx, 这样你就可以对你所感兴趣的报文进行诊断了。举例说明

acl number 3001

rule 0 permit ip source 10.10.10.1 0 debug ip packet acl 3001

这样的话,debug信息就只显示源地址为10.10.10.1的报文转发情况。 需要提醒一点的是,要想使用该debug功能,必须禁用接口的快速转发模式,也就是说快速转发基于效率的考虑不支持该debug命令。

1.7.5 诊断方法-------统计计数

网络通畅的诊断诊断方法----统计计数disintEthernet 0/0/0Input: 215 packets, 18032 bytes4 broadcasts, 186 multicasts0 errors, 0 runts, 0 giants, 0 CRC,0 collisions, 0 late collisions, 0 overruns,0 jabbers, 0 input no buffers, 0 Resource errors0 other errorsOutput:234 packets, 20966 bytes0 errors, 0 late collisions,0 underruns, 0 retransmit limitsdisipstatisticsInput: sum 451 local 428bad protocol 0 bad format 0bad checksum 0 bad options 0Output: forwarding 17 local 477dropped 0 no route 10compress fails 0Fragment:input0 output 0dropped 0ragmented0 couldn't fragment 0Reassembling:sum0 timeouts 0 链路层计数网络层计数Huawei-3Com Confidential 你身边的好网络www.huawei-3com.com 还有一个诊断转发的利器就是察看接口的统计计数。它既可以用来诊断功能问题也可以用来诊断性能问题。如果链路层收到报文,而网络层却没有输入报文,或者网络层发送了报文,而链路层计数却没有增加,则说明这链路层和网路层中间肯定出了问题,这样检查一下就缩小了问题的排查范围。

如果两台A ,B设备直连,A的出接口发送了10个报文,而B的入接口只收到了8个报文,则说明中间的链路质量不好,造成了丢包。

在大流量冲击的情况下,有些报文到达了链路层却因为IP输入队列满而被网路层丢弃,这样很容易判断系统转发性能的瓶颈在哪里,从而有效地诊断一些性能问题。链路层的Error计数也用来诊断大流量时,硬件接收能

力有限造成的转发丢包问题。

1.7.6 诊断方法-----性能相关

网络通畅的诊断诊断方法----性能相关??????discpu显示当前CPU使用率discpuhistory显示CPU 的历史使用率dismemory显示系统可用内存dismemory limit显示内存告警门限distask (仅用于隐藏模式下)显示系统内各个任务占用CPU的时间察看接口统计中的错误计数Huawei-3Com Confidential 你身边的好网络www.huawei-3com.com 因为网路设备除了完成基本的路由转发任务外,还有很多其他辅助的管理任务需要运行,所以只要存在某个任务运行的不合理,比如长时间的占用系统资源等,都会对系统的转发性能造成影响。一般可以用以下几个命令来诊断

dis cpu dis cpu history dis memory dis memory limit

还有隐藏模式下的dis task 对于诊断系统级的问题非常有用。

1.7.7 辅助诊断的几种工具

网络通畅的诊断辅助诊断的几种工具?Ping Everywhere you go, there’s ping善于利用Ping 的各种参数来诊断网络-a/ -i / -f /-c /-r /-t?Traceroute依靠IP 包中的TTL域来发现路径1. 从网关返回ICMP TIME_EXCEEDED 消息2. 从目的主机返回ICMP PORT_UNREACHABLE 消息?Sniffer/Ethreal/Netwinzard1. 抓包2. 精巧构造报文,发包Huawei-3Com Confidential 你身边的好网络www.huawei-3com.com

对于Ping ,大家都很熟悉了,所有的操作系统都有这个诊断命令,足见其重要性。大多数时候,大家都是这样ping x.x.x.x 简单使用PING 的。其实,善于使用Ping的各种选项将会使你的诊断功力大增。举例说明几种特殊使用ping的例子

ping –c 10000 x.x.x.x 测一下丢包率 ping –s 10000 x.x.x.x 测转发时的分片功能

ping -p 0f0f0f0f x.x.x.x 可以测试某些物理链路的质量

Traceroute 通过使用发出特殊TTL值的UDP报文来检测网络的拓扑。它根据网关返回的 ICMP TIME_EXCEEDED 和目的主机返回的 ICMP PORT_UNREACHABLE 来探测路径。在网络中有等价路由时,Traceroute 能够很好探测。

抓包工具 Ethereal Sniffer Netwinzard

这些工具最好和HUB同时使用,或者配置交换机的镜像端口配合使用。 通过 Sniffer 和 NetWinzard 还能精巧构造报文,从而实一些主动诊断的方法。

普通转发流程指定出接口发送???????对于本机发送的源IP为空的报文需要填入合适的本地地址Netstream统计对输出的IP报文进行分类统计防火墙检查输出报文检查穿过设备的TCP连接,根据配置的MSS值调整TCP报文中的MSS选项内容NAT输出处理对报文的源IP和源端口号进行转换接口上QoS配置,进行相应的流量监管或整形启动链路层发送Huawei-3Com Confidential 你身边的好网络www.huawei-3com.com

需要注意的是,IP转发还要处理一部分本机发送的报文,但这些报文IP头中的某些域,比如源地址,校验和等可能没有填写,如果就这样发送出去,别的设备可能不会接收这种不合法报文,源地址等信息需要在这个流程中填入。

和入方向处理类似,NetStream 还要处理出方向的报文统计,防火墙也要进行对输出报文重新检查。

如果设备配置了TCPMSS这个选项,它将会检查穿过设备的TCP连接,根据配置的MSS来调整TCP报文中MSS(最大报文段)选项的内容。

NAT的输出处理将对报文的源IP地址和源端口进行转换,来实现对公网的访问。

QOS输出处理会根据接口上的QOS配置,对报文的流量进行监管或整形,通常用来保证用户数据流的时延和抖动最小。

最后报文才启动链路层发送,进行不同的链路层处理。

1.5 IP转发中常见的业务

1.5.1 防火墙

IP转发中常见业务FIREWALL两种防火墙的实现?指基于访问控制列表(ACL)的包过滤根据数据包头信息:源/目的地址,源/目的端口,协议号等对报文进行过滤Ex: 仅允许源地址为192.168.0.0/24网段用户访问内网Server的Telnet服务?基于应用层的包过滤应用层的协议信息进行检测,并维护会话的状态,检查会话的报文的协议和端口号等信息,阻止恶意的入侵Ex: 检测应用层的http和ftp,设置其超时间隔为3秒Huawei-3Com Confidential 你身边的好网络www.huawei-3com.com

在IP转发流程的介绍中,我们已经知道IP报文在转发流程中通常要经过防火墙的检测,NAT的处理,以及QOS的处理。这些流程虽不是必需的,但在组网应用中经常被用户使用。先来认识一下防火墙。

这里的防火墙和专门的防火墙产品有什么不同呢?Comware的防火墙只是作为路由交换设备的一个功能模块,为设备提供内嵌的安全功能,而专门的防火墙产品功能比较单一,安全性高。Comware平台提供了两种级别的防火墙实现:一种是基于ACL 的包过滤,另外一种是比较灵活的基于应用层的包过滤。

ACL包过滤应用在路由器中就为路由器增加了对数据包的过滤功能。ACL/包过滤实现对IP数据包的过滤,对路由器需要转发的数据包,先获取数据包的包头信息,包括IP层所承载的上层协议的协议号,数据包的源地址、目的地址、源端口和目的端口等,然后和设定的ACL规则进行比较,根据比较的结果决定对数据包进行转发或者丢弃。

ASPF(Application Specific Packet Filter)是针对应用层的包过滤,即基于状态的报文过滤。它和普通的静态防火墙协同工作,以便于实施内部网络的安全策略。ASPF能够检测试图通过防火墙的应用层协议会话信息,阻止不符合规则的数据报文穿过。

为保护网络安全,基于访问控制列表的包过滤可以在网络层和传输层检测数据包,防止非法入侵。ASPF能够检测应用层协议的信息,并对应用的流量进行监控。

1.5.2 网络地址转换

IP转发中常见业务NAT公网192.168.1.10192.168.1.20202.119.19.19192.168.1.1内网?为解决IPv4地址空间枯竭问题,使用少量的公有IP地址代表多数的私有IP地址,对外屏蔽了内网结构,安全性好允许从外以指定的公网地址访问内部的Server主机?Huawei-3Com Confidential 你身边的好网络www.huawei-3com.com

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转发中常见业务QOS网络必须能分辨出任务关键的和延迟敏感的通信并能为它们设定优先顺序QOS衡量指标:带宽/延迟/延迟抖动/丢包率QOS实现的功能:????设置报文的优先级为用户提供专用带宽避免和管理网络拥塞流量整形www.huawei-3com.comHuawei-3Com Confidential 你身边的好网络

IP网络发展到今天,提供尽力而为的转发已经满足不了日益发展的业务需求。除了传统的WWW、EMAIL、FTP应用外,用户还尝试在Internet上拓展新业务,比如远程教学、远程医疗、可视电话、电视会议、视频点播等。企业用户也希望通过VPN技术,将分布在各地的分支机构连接起来,开展一些事务性应用:比如访问公司的数据库或通过Telnet管理远程设备。

QOS的衡量指标主要有吞吐量,时延,时延抖动,丢包率。对上述这些新业务来讲,它们有一个共同特点:即对带宽、延迟、延迟抖动等传输性能有着特殊的需求。比如电视会议、视频点播需要高带宽、低延迟和低延迟抖动的保证。事务处理、Telnet等关键任务虽然不一定要求高带宽,但非常注重低延迟,在拥塞发生时要求优先获得处理。

要满足IP网络的可运营性,必须解决IP网络的QOS问题。业务的QOS需要整个网络配合实现。单个设备必须具有以下几种QOS能力:

? 对数据报文的优先级域(TOS或DSCP)可以重写,从而根据用户策略重新设置报文的优先级。

? 为特定用户保证特定带宽

? 在网络拥塞时,进行恰当的队列管理。 ? 对指定业务的输出流量进行整形 下面我们会介绍路由器常用的QOS管理机制。

1.5.4 QOS的实现

IP转发中常见业务QOS的实现QOS的实现????流分类拥塞管理PQ/CQ/WFQ/CBWFQ拥塞避免WRED流量整形和速率约定CAR/GTSHuawei-3Com Confidential 你身边的好网络www.huawei-3com.com

在分组交换的复杂环境下,拥塞极为常见。主要有以下两种情况:

? ?

分组流从高速链路进入路由器,由低速链路转发出去。 分组流从相同速率的多个接口同时进入路由器,由一个相同

速率的接口转发出去。

另外,蠕虫病毒和网络攻击也会造成网络拥塞。

拥塞会造成报文传输的延迟和延迟抖动,并使网络的有效吞吐率降低,严重的话还会造成系统崩溃。解决网络拥塞有效的办法是增加网络层在流量控制和资源分配上的功能,为有不同服务需求的业务提供有区别的服务,正确地分配和使用资源,并在拥塞发生时,依据业务的性质及其需求特性权衡资源的分配,将拥

塞对QoS的影响减到最小。

流分类、流量监管/整形、拥塞管理和拥塞避免作为QOS实现的机种机制,它们主要完成如下功能:

? 流分类:依据一定的匹配规则识别出对象。流分类是有区别地实施服务的前提

? 流量监管:对进入路由器的特定流量的规格进行监管。当流量超出规格时,可以采取限制或惩罚措施,以保护运营商的商业利益和网络资源不受损害

? 拥塞管理:网络拥塞是必须采取的解决资源竞争的措施。通常是将报文放入队列中缓存,并采取某种调度算法安排报文的转发次序。

? 拥塞避免:过度的拥塞会对网络资源造成损害。拥塞避免监督网络资源的使用情况,当发现拥塞有加剧的趋势时采取主动丢弃报文的策略,通过调整流量来解除网络的过载。

? 流量整形:一种主动调整流的输出速率的流控措施,通常是为了使流量适配下游路由器可供给的网络资源,避免不必要的报文丢弃和拥塞。

1.6 IP报文的快速转发

1.6.1 背景和可行性

报文的快速转发背景和可行性快速转发提出的背景???中低端路由器采用纯软件转发,转发效率的高低直接影响产品的市场占有率分析表明:底层的收发处理能力是有保证的,转发瓶颈在上层的处理效率上队列调度和上层的业务处理效率较低制约了整机转发效率快速转发的可行性Per-packet Vs Per-flow????实际网络中的“数据流”特征,特别是边缘接入设备同一条流的报文在通过路由器时所作处理也相同将每条流的特征信息与所需处理关联起来,能提升上层的处理效率提高了上层业务处理效率,就可以对报文作“短路”处理Huawei-3Com Confidential 你身边的好网络www.huawei-3com.com 从前面的学习中我们了解了普通IP转发流程及其常用业务的处理。在普

通转发流程中,对每个数据包都要执行复杂的判断处理,造成转发性能底下。对靠纯软件转发的中低端路由器来说,转发效率直接影响着产品的市场占有率。经过理论分析和大量的实践证明,底层的收发能力都是有保证的,转发性能的瓶颈在于上层的处理效率低,报文必须先进IP接收队列,等该队列被系统调度到时,才真正进行报文的处理。队列调度和上层业务处理效率较低,限制了整机的转发效率。

首先阐明一个概念,一条数据流就是特征比较相似的一组数据包。我们将源/目的地址,源/目的端口(对于TCP/UDP),协议号都相同的一组数据报文称为一条数据流。仔细分析网络上数据的业务模式,我们不难发现,大多数的业务都是基于流的,尤其在边缘接入设备上数据流的特征更加明显。每条流的目的IP地址都一样,对防火墙/NAT/QOS等业务的处理也基本相同。分析到此,我们应该知道没有必要对每条数据流的每个报文都执行很多相同的操作,想办法将每条流的特征信息与所需要的处理关联起来,就能提高上

层的处理效率,只要提高了上层业务的处理效率,每个数据报文的处理时间短到一定程度,就可以对接收到的报文作短路处理,也就是说,在链路层接口收到报文后,不再送入IP队列,直接完成链路层发送。这就是快速转发的基本思想。

1.6.2 设计思想

报文的快速转发设计思想总体思路采用类似L3交换机的“一次路由,多次交换”思想,对同一条流的报文,首包走普通转发,触发建立快转Cache,后续报文走快速转发,利用Cache直接转发。设计要点??数据流的标识五元组:源IP、目的IP、源端口号、目的端口号、协议号快转Cache的内容数据流标识信息报文的出接口/接口发送时的链路层封装动作标识: 命中快转cache后需作哪些业务的处理Huawei-3Com Confidential 你身边的好网络www.huawei-3com.com 借鉴三层交换机的转发思路,即“一次路由,多次交换”,对每个数据流

只查找一次转发表。具体做法就是对数据流的第一个报文按照前面讲过的普通IP转发流程执行,第一个报文将其查到的转发表项记录在快转Cache中,并将其封装的链路层头也记录在Cache中,该数据流的后续报文就不再走普通的转发流程,而直接查找快转Cache,封装上和首包相同的链路层头就可以直接发送了。

Comware的快速转发采用源IP,目的IP,源端口号,目的端口号和协议号这五元组来标识一条数据流,对该数据流上的报文采用相同的处理,简化了一些处理流程。

因数据流的后续报文只需要依靠快转Cache中纪录的内容就可以完成转

发,快转Cache中包含的信息应该足以丰富,现有的实现主要包含有数据流的标识信息,报文的出接口,接口发送时的链路层封装以及快转Cache命中后需做哪些业务处理之类的动作标识,比如NAT处理等。

1.6.3 普通转发和快速转发的比较

报文的快速转发路由管理IP转发网络层处理路由表转发表普通转发Vs 快速转发快转Cache接口接收/发送接口接收/发送接口接收/发送普通转发半快转快速转发www.huawei-3com.comHuawei-3Com Confidential 你身边的好网络从上图可以清晰地看到这两种转发模式的区别。

在链路层接收的一个IP数据包后,先查找快转Cache,一般来讲,对数据流的第一个包应该是查找Cache失败,于是数据包被送入IP队列,进行普通转发的处理。当报文从出接口发送时,经过链路层协议处理后,有一件非常重要的事需要去做,那就是要把查到的转发表以及封装好的链路层头都纪录在快转Cache中。当后续的数据报文到达时,直接查找快转Cache,即可命中,然后封装上链路层头,立即从指定出接口发送即可。对快速转发而言,它不再经过普通链路层的处理,而是直接交由QOS发送。

需要注意的是,本机发出去的报文和送往本机的报文不经过快速转发处理。另外,有些业务的特殊需要和快速转发的思想不一致,比如对报文长度匹配的策略路由,如用户配置对报文长度大于1000的报文走出接口1发送,

其他报文走出接口2发送。在这种情况下,按照现有的快速转发流程处理将得不到预期的处理效果。对于这种情况,我们可以设定快速转发模式对此类报文无效。

在特殊的链路层配置下,比如配置PPP头压缩后,快速转发也会出现问题,因此在报文发送时,仍走普通发送流程发送,比普通转发流程少了一个队列处理的过程,这种转发称之为半快转。

1.6.4 快速转发的实现

报文的快速转发快转的具体实现?快转Cache 的维护表项创建表项删除数据流的首包在出接口发送时添加ARP变化/路由更新/接口down?快转Cache的组织五元组的HASH作为数据流的KEY 1024X 4?快转对链路层的支持除了X.25以外都支持,包括对PPPOE/IPOEOA?快转对网络层业务的支持除策略路由外都支持Huawei-3Com Confidential 你身边的好网络www.huawei-3com.com

因为每个快转Cache标识一条流,对数据流的五元组采用HASH算法得出一个0---1023的Key,作为存放快转Cache的索引,考虑到查找效率的因素,每个索引中最多允许4个冲突项,因此我们的快转Cache的大小是4096。

快转表的Cache创建前面已经讲过,是在首包发送时创建。但创建的表项是否永远都在呢?答案是否定的。因为我们必须有一种机制保证快转Cache和 转发表保持同步。考虑一种特殊的情况,当路由发生变化时,数据流还继续通过,若快转Cache没有合适的老化机制,这样可能就会造成报文的错误的发。还有当用户改变了接口上防火墙的配置时,为保证以后报文的

正确转发,需要及时把与该接口相关的快转Cache老化掉。在系统中,在以下几种情况下,会主动老化Cache。

? 接口地址的ARP发生变化

? 转发表项的删除或更新(路由管理发布更优路由) ? 接口的链路层DOWN或物理DOWN ? 收到改变接口的防火墙配置

目前,快速转发是路由器缺省的转发模式,链路层支持方面,除了X.25以外其他链路层协议都已支持快速转发,对策略路由这种特殊的转发模式暂不支持快速转发。

1.6.5 快转的性能改善

报文的快速转发快转的性能改善普通转发产品AR46AR36AR18PPS133k12.4k 5.86kMbps68.106.303.00快速转发PPS135k61.9k14.9kMbps69.1231.747.6264字节的单向转发性能,数据仅供参考Huawei-3Com Confidential 你身边的好网络www.huawei-3com.com

上表的测试数据是“裸转发”性能,即接口上没有配置任何业务的情况下的测试数据。从中可以看出快速转发模式是如何影响转发性能的。

不难看出,对AR36产品来说,快速转发模式对转发性能的改善最大,有5倍至多,AR18产品也接近3倍左右。

但对于目前我司性能最高的AR46产品来说,快速转发和普通转发的转发性能基本相同,这是为什么呢?前面我们提到过,影响转发性能的因素有很多:从硬件角度讲主要有:CPU处理能力,IO总线速度,内存存取速度等,从软件角度讲有:驱动软件的处理效率,上层协议软件的处理效率。快速转发只是优化了报文的处理流程,即上层软件的处理效率,如果硬件能力已经发挥到了极限,那么快速转发便无用武之地了。AR46产品便属于这种情况。因此,只有对转发性能瓶颈的深入理解,才能真正优化产品的转发性能。

1.7 网络通畅的诊断

1.7.1 常见的问题

网络通畅的诊断常见问题????????数据包不能正确转发数据流的首包正确转发,而后续包失败接口关快转,数据正确转发;开快转,转发失败FIB表中有转发表,而快转表中无相应项或错误路由表中有路由,而FIB表中没有相应转发表接口物理UP,链路层协议UP,而转发失败PING 目的地,可达但丢包严重……Huawei-3Com Confidential 你身边的好网络www.huawei-3com.com

转发方面主要有两方面的问题:功能问题和性能问题。功能问题即数据包通不通的问题,而性能问题则是数据包通的畅不畅的问题。

数据包不通的问题主要有:

? 数据包转发到错误的出接口上

? 数据流的第一个报文正确转发,但后续报文转发失败

? 接口上不启动快速转发模式数据转发正确,否则转发失败 ? 转发表中有正确的转发表项,而快转Cache中表项没有或错误 ? 路由表中有正确的路由项,而转发表中没有相应的转发表项 ? 接口物理UP,链路层协议也UP,但转发失败 数据包转发不畅的问题有:

? PING 目的IP,显示结果时通时断,丢包严重。 ? 因为Keepalive报文丢失,造成路由协议的定时器超时

1.7.2 诊断原则

网络通畅的诊断诊断原则?先功能后性能功能: 通,即保证可达性能: 畅,即保证吞吐量?先底层后上层If the lower layer doesn’t work, the upper can’t work.检查入/出接口的链路层协议是否正常工作?先控制后数据检查有无正确的路由表Huawei-3Com Confidential 你身边的好网络www.huawei-3com.com 正如医生看病一样,网络故障的诊断也是有章可循的,断不能头疼医头,脚疼医脚,要找准问题的根源,然后对症下药,自能药到病除。网络诊断应该遵循以下三个原则:先功能后性能,先底层后上层,先控制后数据。

? 先功能后性能

数据网络对IP报文是逐跳转发的,因此要善于利用ping /traceroute 等方便的网络诊断工具来判断目的地的可达性。比如A, F两台设备中间经过了B C D E四台路由器的转发。现在A和 F之间转发有问题。我们就可以

从A 设备逐次PING B ,C ,D ,E分析所得结果来逐渐缩小问题的范围。只要有转发问题先看是否可达,若可达但丢包严重,后面有专门对此问题的讲解。

? 先底层后上层

这个原则很浅显易懂。和自然界的大多数规律一样,如果底层的问题不处理好,上层有很大可能会出问题,至少可以肯定它不能稳定运转。对路由器的转发功能而言,物理层和链路层都是它得以正常运行的基础。如果转发有问题,我们就应该用健康的怀疑态度去检查数据报文的出入接口的链路层协议是否正常。比如PPP协商是否有问题等。

? 先控制后数据

控制平面扮演的角色就是战场上的作战司令部,而转发平面就好像冲锋陷阵的士兵。如果控制平面出了问题,转发平面就会群龙无首。对路由器来说,控制平面其实就是路由协议和路由管理,如果路由协议错误计算或者路由管理严重渎职,都可以导致转发表的错误。这时候,数据转发的错误的诊断就应该换一个思路了。

1.7.3 诊断方法------转发表项相关

网络通畅的诊断诊断方法----转发相关表项????disfib x.x.x.x显示转发表disiprouting-table x.x.x.x显示路由表disipfast-forwarding cache x.x.x.x显示快转表undo ipfast-forwarding在接口模式下关掉接口的快转检查快转表和FIB 表是否一致,快转表的错误导致错误转发Huawei-3Com Confidential 你身边的好网络www.huawei-3com.com

本文来源:https://www.bwwdw.com/article/qxbf.html

Top