应用基于报文大小的策略路由

网络拓扑

clip_image002

案例背景及需求

某企业总部有两幢办公楼,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#

上表显示:policy rejected -- normal forwarding表示该数据包不符合任何的策略路由语句的条件,则按照路由表中的的路由来处理该数据包。