嵌入式linux高级策略路由的实现

时间:2022-08-18 12:56:01

摘要:利用linux2.4内核中netfilter/iptables对数据包强大的识别能力将来自内部网络不同类型的数据包贴上标签,然后利用iproute2的策略路由功能对路由进行人为的干预,使来自内部网络不同性质的数据包(WEB服务的数据、语音、FTP、视频)选择适合的出口走向。对合理分配带宽资源和均衡负载,实现网络资源利用最大化,代价最小化有一定的参考价值。

关键词:Linux策略路由;iproute2;Netfilter

中图分类号:TP393.08文献标识码:A文章编号:1009-3044(2012) 06-1252-02

Senior Embedded Linux Policy Routing Implementation

XIONG Bin-jie, JIN Hua-ting, WU Qian, YANG Ben-xiang, SONG Shao-yun

(Information Technology Engineering, Yuxi Normal University College, Yuxi 653100, China)

Abstract: Linux2.4 kernel Netfilter/Iptables on data reported a strong recognition of the different types of packets from the internal net? work put a tag on, and using iproute2 human intervention in the policy routing features of routing and packet of a different nature from the internal network (WEB services for data, voice and FTP, video) to select a suitable for export to. On the reasonable allocation of bandwidth and balance the load, maximize the utilization of network resources; minimize the cost of certain reference value.

Key words: Linux policy routing; iproute2; Netfilter

1策略路由的研究现状和发展趋势

1.1策略路由的提出

随着Internet技术的飞速发展,传统的IP路由笼统发包机制的局限性越来越明显,所谓笼统发包机制,就是接收端对来自内部网络的数据包请求不加以任何分析和限制直接转发给下一跳转发地址或下一跳缺省转发地址的路由策略。传统的路由机制应用在Internet发展的早期确实没有太大的问题,但在当前中国特色的网络环境下,多家ISP提供商,提供不同优势的服务,且不同的ISP之间互访速度较慢,为了资源利用的最大化,人们往往会选择接入双线路以提高网速。传统的路由机制已不能满足用户的需求。于是人们提出对内部网络的数据包根据一定的策略和需求,使之选择最适合的路径进行转发,这就有了策略路由的概念。

所谓策略路由,就是对将要转发的数据包,进行加工处理,如可以根据数据类型、源和目的端口号,源IP地址等来为数据包选择路径。可以在一定程度上实现流量工程,使不同服务质量的流或者不同性质的数据(WEB服务的数据、语音、FTP、视频)走不同的路径。使之按照有限资源利用最大化,代价最小的原则进行转发。而不是简单的根据目的IP地址决定,还要综合考虑多种因素。

1.2策略路由的应用环境

在目前中国特色的网络环境下,策略路由最大的应用莫过于用在解决不同ISP之间互联互通的问题了,自从电信网通分家之后就出现了南电信北网通;网通访问电信的线路较慢,电问网通的也较慢的现状。人们就想到了接入电信网通双线路,这种情况下双线路的普及就使得策略路由就有了很大的用武之地了。

传统的路由策略只能根据数据包的目的地址为用户提供比较单一的路由方式,主要解决网络数据包的转发问题,而不能提供有差别的服务。策略路由不仅能够根据目的地址,而且能够根据协议类型、报文大小、应用、IP源地址或者其它的策略来选择转发路径,策略路由可以根据实际应用进行多链路的负载均衡、单一链路上报文转发的QoS或者满足某种特定需求。当数据包经过路由器或防火墙转发时,路由器或防火墙根据预先设定的策略对数据包进行匹配,如果匹配到一条策略,就根据该条策略指定的路由进行转发;如果没有匹配到任何策略,就使用路由表中的条目按目的地址对报文进行路由。[1]

1.3策略路由的研究现状及发展趋势

目前人们对策略路由的研究,大体上分为两种:一种是根据路由的目的地址来进行的策略称为目的地址路由;另一种是根据路由源地址来进行策略实施的称为源地址路由。但都很少提到智能均衡的策略。本文所讲诉的正是通过对IP数据报的不同性质分类,而选择不同的出口路径走向。从而实现均衡负载的路由策略。智能均衡策略,将是策略路由的发展趋势和研究方向。

2基于linux下的策略路由

2.1 linux操作系统

本文之所以选择linux作为高级策略路由开发的支持平台,主要是因为linux具有一下几方面的特性:

1)完全免费

Linux是一款完全免费的操作系统,用户可通过多种途径得到,并可以任意修改其源代码,在开发过程中大大降低了成本,这是其他操作系统所不可比拟的。

2)完善、强大的网络功能

Linux免费提供了大量支持Internet的软件,如:DHCP服务,WWW服务,FTP服务等。Linux提供的网络功能和其内核紧密相连,在通信和网络功能方面优于其他操作系统。其他操作系统不包含如此紧密地和内核结合在一起的连接网络的能力,也没有内置这些联网特性的灵活性。而Linux为用户提供了完善的、强大的网络功能。linux2.4内核自带的netfilter,提供了完整的数据报分类方案。在实际应用中,我们只需通过策略路由系统即可查看数据报的不同类型标记。从而解决了管理员对数据报的编写规则容易产生不一致的问题,并简化了工作量。

3)安全性、稳定性

Linux采取了许多安全技术措施,其中有对读、写进行权限控制、审计跟踪、核心授权等技术,这些都为安全提供了保障。Linux由于需要应用到网络服务器,这对稳定性也有比较高的要求,实际上Linux在这方面也十分出色。此外Linux还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份的Linux 2.4版内核已经能够完全支持Intel 64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。[2]

2.2 linux下策略路由的实现流程图(如图1所示)

接收端对收到来自内部网络的数据包进行标记检查,并将通过策略路由的数据包标识符加入转发Cache/NP,以便提高后续同类数据流的转发效率。具体实现过程参见图1。

图1 linux下策略路由的实现流程图2.3按不同类型标记数据包进行转发的策略路由优势

在传统路由机制中,只存在单独的一张路由表,并将所有的数据包转发规则都按照统一的条件进行指定。该机制在路由选择的灵活性上存在很大的缺陷。而在当前中国特色网络环境下,实现灵活的路由选择是很有必要的。Linux支持多达255张路由表,网络管理员可对其中的252张路由表(其中3张是默认路由表)进行配置,让标记过的不同类型的数据包,选择该标记号对应的路由表进行不同的路由选择,从而达到灵活路由选择的目的。

3基于嵌入式linux高级策略路由的实例

本例介绍的是在linux操作系统中,利用Linux2.4内核中的Netfilter/Iptables,加上iproute2工具包,对接收到的报文,按不同性质的数据进行分类,并把不同类型的报文,贴上不同的标记。

实例:网络中的策略路由器有两个外部接口,eth0的IP地址为61.166.31.82,eth1的IP地址为151.158.113.164;将所有来自内部网络的web服务数据标记为500,走向61.166.31.82出口,而将所有ftp服务数据标记为300,走向115.158.113.164出口。其他类型的数据网络管理员可根据两条线路的不同带宽按上述办法合理分配出口走向。具体设置如下:

ifconfig eth0 61.166.31.82 netmask 255.255.255.0

ifconfig eth1 151.158.113.164 netmask 255.255.255.0

ifconfig eth2 192.168.1.1 netmask 255.255.255.0

echo 1 >/proc/sys/net/ipv4/ip_forward将web服务类的数据包打上标示100

这一步,很关键,用于实现策略路由的是iproute2工具包,但是iproute2工具包是无法根据端口来进行匹配的,因此,需要借助iptables来配合

iptables -t mangle -A PREROUTING -p tcp --dport 80 -j MARK --set-mark 500

iptablest mangleA PREROUTINGp tcp --dport 25j MARK--set-mark 300

增加多路由表

61.166.31.82这一出口的网关是61.166.156.123

151.158.113.164这一出口的网关是151.158.156.123

ip route add 0/0 via 61.166.156.123table 500 ip route add 0/1 via 151.158.156.123table 300

设置路由策略凡是数据包标记位上是500的数据,查询500号路由表凡是数据包标记位上是300的数据,查询300号路由表

ip rule add fwmark 500 table 500 ip rule add fwmark 300 table 300

NAT如果需要的话,进行NAT;不需要的话,就直接路由。

iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE

4结束语

高级策略路由的提出,从很大程度上增强了人们对数据报的控制能力,网络管理员可根据实际的网络环境和用户需求,自由的进行手动修改,对接收端的出口数据包进行自由合理的规划管理,从而实现负载均衡,让网络的总体吞吐量最大。确保在用户已有投资的基础上,实现有限资源的最大化利用。为用户提供一个,快速、高效的网络环境。

参考文献:

[1]基于linux防火墙策略路由校园网多出口解决方案[Z].

[2] linux百度百科.

[3]舒德尔,史密斯.路由器安全策略[M].北京:人民邮电出版社,2008.

[4]周明天,汪文勇.TCP/IP网络原理与技术[M].北京:清华大学出版社,2000.

[5]史振华,殷焕炯.策略路由技术在校园网中的应用[J].电脑知识与技术,2009(35).

上一篇:浅析ARM指令的寻址方式 下一篇:浅谈网络数据容灾备份技术