应用基于报文大小的策略路由
网络拓扑
案例背景及需求
某企业总部有两幢办公楼,A座和B座,两幢办公楼之间连接有两条光纤,分别由A、B座的路由器负责连接。
在这两幢办公楼的工作职员,主要使用一种OA软件,互相协调工作,传递信息和数据,以及办理工作流程中的各种业务。
A座中的职员经常反映,他们通过OA系统向另一幢楼的同时发送消息,时,有时比较快,有时比较慢,而且网络变慢出现得没有规律。另外,网络变慢的现象在同一幢楼中传递数据时没有出现过。
我们对企业中数据流的流量和类型进行了一定时期的观察,发现OA系统经常发送两种大小的数据包,一种数据包的大小在100字节以下,这种数据包的数量占网络流量的45%;另一种数据包的大小在100字节到1000字节之间,这种数据包的数量占网络流量的50%左右,其他类型的数据包在网络中很少见。
企业在内部网络出口处,安装有带防病毒功能的防火墙,在各个终端机上安装有防病毒软件,并且这些防病毒设备和软件的病毒库都会得到最及时的升级。
企业要求我们根据对网络流量和类型的观察,制定策略,缓解或解决A座与B座间网络传输时常变慢的问题。
案例分析及解决
我们分析:网络传输变慢,病毒的可能性较小。另外,只有A和B座传输数据变慢,而同一座楼中传输数据没问题;数据变慢也没有规律性,这些都不符合病毒发作的特征。那么应该是数据在两座楼间传递时,偶尔过多地挤占了其中一条线路的问题(比如数据的负载均衡是按照每数据流工作的,而不是每数据包的)。
通过对该企业数据流量和类型的分析,我们可以看到两种数据包大约个占企业网络流量的一半。我们可以在路由器A上设置策略,让这两种数据包各从一条线路传输,以分担开数据负载。
我们应该在路由器B上定义一个基于报文大小进行策略路由的Route Map语句,并将这个语句应用于路由器B的以太接口上,以对来自以太接口的数据流进行基于报文大小的策略路由,让小于100字节的数据包从S0接口传输,而大于100大小1000字节的数据包从S1接口传输,从而分担开网络负担。
这里我们使用两台路由器搭建一个模拟的环境,对所要应用的Route Map语句进行一些测试。
案例实施:配置步骤及配置实例
1.定义Route Map语句
首先定义Route Map语句,以指定数据包大小及对数据包的操作。
Router(config)#route-map map-name [permit|deny] [sequence-number]
Router(config-route-map)#match length {length}
Router(config-route-map)#set ip next-hop next-hop-address
在基于报文大小的策略路由语句中,应在条件子命令的length处设置报文大小,并在set子命令的next-hop-address处设置数据传输的下一条地址。
2.在接口上应用Route Map语句
定义好基于报文大小的策略路由语句后,应该在数据流的进方向接口应用该Route Map语句。
Router(config-if)#ip policy route-map map-name
在接口上应用了该命令后,所有由此接口进入路由器的数据包都会被强制比对条件,以找到需要进行策略路由的数据包。
3.路由器本身产生的数据包也接受基于报文大小的策略路由的管理
在通常情况下,由路由器本身产生的数据包不受控于策略路由语句,为了让路由器本身产生的数据包也能够接受策略路由的管理,应在路由器的全局模式下使用如下命令:
Router(config)#ip local policy route-map map-name
以下给出了本案的配置实例,以供参考,其中黑体字为关键的配置步骤。
路由器A配置如下:
interface Loopback1 ip address 192.168.1.1 255.255.255.0 ! interface Ethernet0/0 ip address 150.1.1.1 255.255.255.0 ! interface Ethernet0/1 ip address 151.1.1.1 255.255.255.0 ! router rip version 2 network 150.1.0.0 network 151.1.0.0 network 192.168.1.0 no auto-summary |
路由器B配置如下:
interface Ethernet0/0 ip address 150.1.1.2 255.255.255.0 ! interface Ethernet0/1 ip address 151.1.1.2 255.255.255.0 ! interface Ethernet0/2 ip address 152.1.1.1 255.255.255.0 ip policy route-map lable1 ! router rip version 2 network 150.1.0.0 network 151.1.0.0 network 152.1.0.0 no auto-summary ! ip local policy route-map lable1 ! route-map lable1 permit 1 match length 64 100 set ip next-hop 150.1.1.1/set interface e0/0 ! route-map lable1 permit 2 match length 101 1000 set ip next-hop 151.1.1.1/set interface e0/1 ! |
对策略路由状态进行监测
在路由器B上使用debug ip policy命令监视策略路由
使用扩展ping,指定源地址和目标地址测试数据包大小为80,观察数据包走向
RB# RB#ping Protocol [ip]: Target IP address: 192.168.1.1 Repeat count [5]: Datagram size [100]: 80 Timeout in seconds [2]: Extended commands [n]: y Source address or interface: 152.1.1.1 Type of service [0]: Set DF bit in IP header? [no]: Validate reply data? [no]: Data pattern [0xABCD]: Loose, Strict, Record, Timestamp, Verbose[none]: Sweep range of sizes [n]: Type escape sequence to abort. Sending 5, 80-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds: Packet sent with a source address of 152.1.1.1 !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 8/39/92 ms RB# *Mar 1 00:11:12.179: IP: s=152.1.1.1 (local), d=192.168.1.1, len 80, policy match *Mar 1 00:11:12.179: IP: route map lable1, item 1, permit *Mar 1 00:11:12.179: IP: s=152.1.1.1 (local), d=192.168.1.1 (Ethernet0/0), len80, policy routed *Mar 1 00:11:12.183: IP: local to Ethernet0/0 150.1.1.1 RB# |
上表显示:“policy match”表示数据包符合一条策略路由语句的条件,“lable1,item 1”表示数据包符合的是Route Map lable1中的第一条语句的条件,“policy routed”表示数据包按照策略路由的规定被发送,其路径经过150.1.1.1。
使用扩展ping,指定源地址和目标地址测试数据包大小为800,观察数据包走向
RB# RB#ping Protocol [ip]: Target IP address: 192.168.1.1 Repeat count [5]: Datagram size [100]: 800 Timeout in seconds [2]: Extended commands [n]: y Source address or interface: 152.1.1.1 Type of service [0]: Set DF bit in IP header? [no]: Validate reply data? [no]: Data pattern [0xABCD]: Loose, Strict, Record, Timestamp, Verbose[none]: Sweep range of sizes [n]: Type escape sequence to abort. Sending 5, 800-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds: Packet sent with a source address of 152.1.1.1 !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 8/28/80 ms RB# *Mar 1 00:16:28.651: IP: s=152.1.1.1 (local), d=192.168.1.1, len 800, policy match *Mar 1 00:16:28.651: IP: route map lable1, item 2, permit *Mar 1 00:16:28.651: IP: s=152.1.1.1 (local), d=192.168.1.1 (Ethernet0/1), len800, policy routed *Mar 1 00:16:28.655: IP: local to Ethernet0/1 151.1.1.1 RB# |
上表显示:“policy match”表示数据包符合一条策略路由语句的条件,“lable1,item 2”表示数据包符合的是Route Map lable1中的第二条语句的条件,“policy routed”表示数据包按照策略路由的规定被发送,其路径经过151.1.1.1。
使用扩展ping,指定源地址和目标地址测试数据包大小1200,观察数据包走向
RB# RB#ping Protocol [ip]: Target IP address: 192.168.1.1 Repeat count [5]: Datagram size [100]: 1200 Timeout in seconds [2]: Extended commands [n]: y Source address or interface: 152.1.1.1 Type of service [0]: Set DF bit in IP header? [no]: Validate reply data? [no]: Data pattern [0xABCD]: Loose, Strict, Record, Timestamp, Verbose[none]: Sweep range of sizes [n]: Type escape sequence to abort. Sending 5, 1200-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds: Packet sent with a source address of 152.1.1.1 !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 12/27/60 ms RB# *Mar 1 00:19:31.579: IP: s=152.1.1.1 (local), d=192.168.1.1, len 1200, policy rejected -- normal forwarding *Mar 1 00:19:31.607: IP: s=152.1.1.1 (local), d=192.168.1.1, len 1200, policy rejected -- normal forwarding *Mar 1 00:19:31.667: IP: s=152.1.1.1 (local), d=192.168.1.1, len 1200, policy rejected -- normal forwarding *Mar 1 00:19:31.687: IP: s=152.1.1.1 (local), d=192.168.1.1, len 1200, policy rejected -- normal forwarding *Mar 1 00:19:31.699: IP: s=152.1.1.1 (local), d=192.168.1.1, len 1200, policy rejected --normal forwarding RB# |