新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Linux策略性路由應(yīng)用及深入分析

Linux策略性路由應(yīng)用及深入分析

作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò) 收藏

策略性是指對(duì)于IP包的路由是以網(wǎng)絡(luò)管理員根據(jù)需要定下的一些策略為主要依據(jù)進(jìn)行路由的。例如我們可以有這樣的策略:“所有來(lái)直自網(wǎng)A的包,選擇X路徑;其他選擇Y路徑”,或者是“所有TOS為A的包選擇路徑F;其他選者路徑K”。

本文引用地址:http://2s4d.com/article/201609/304893.htm

Cisco 的網(wǎng)絡(luò)操作系統(tǒng) (Cisco IOS) 從11.0開始就采用新的策略性路由機(jī)制。而Linux是在內(nèi)核2.1開始采用策略性路由機(jī)制的。策略性路由機(jī)制與傳統(tǒng)的路由算法相比主要是引入了多路由表以及規(guī)則的概念。

多路由表(multiple Routing Tables)

傳統(tǒng)的路由算法是僅使用一張路由表的。但是在有些情形底下,我們是需要使用多路由表的。例如一個(gè)子網(wǎng)通過(guò)一個(gè)路由器與外界相連,路由器與外界有兩條線路相連,其中一條的速度比較快,一條的速度比較慢。對(duì)于子網(wǎng)內(nèi)的大多數(shù)用戶來(lái)說(shuō)對(duì)速度并沒(méi)有特殊的要求,所以可以讓他們用比較慢的路由;但是子網(wǎng)內(nèi)有一些特殊的用戶卻是對(duì)速度的要求比較苛刻,所以他們需要使用速度比較快的路由。如果使用一張路由表上述要求是無(wú)法實(shí)現(xiàn)的,而如果根據(jù)源地址或其它參數(shù),對(duì)不同的用戶使用不同的路由表,這樣就可以大大提高路由器的性能。

規(guī)則(rule)

規(guī)則是策略性的關(guān)鍵性的新的概念。我們可以用自然語(yǔ)言這樣描述規(guī)則,例如我門可以指定這樣的規(guī)則:

規(guī)則一:“所有來(lái)自192.16.152.24的IP包,使用路由表10, 本規(guī)則的優(yōu)先級(jí)別是1500”

規(guī)則二:“所有的包,使用路由表253,本規(guī)則的優(yōu)先級(jí)別是32767”

我們可以看到,規(guī)則包含3個(gè)要素:

什么樣的包,將應(yīng)用本規(guī)則(所謂的SELECTOR,可能是filter更能反映其作用);

符合本規(guī)則的包將對(duì)其采取什么動(dòng)作(ACTION),例如用那個(gè)表;

本規(guī)則的優(yōu)先級(jí)別。優(yōu)先級(jí)別越高的規(guī)則越先匹配(數(shù)值越小優(yōu)先級(jí)別越高)。

策略性路由的配置方法

傳統(tǒng)的linux下配置路由的工具是route,而實(shí)現(xiàn)策略性路由配置的工具是iproute2工具包。這個(gè)軟件包是由Alexey Kuznetsov開發(fā)的,軟件包所在的主要網(wǎng)址為ftp://ftp.inr.ac.ru/ip-routing/。

這里簡(jiǎn)單介紹策略性路由的配置方法,以便能更好理解第二部分的內(nèi)容。詳細(xì)的使用方法請(qǐng)參考Alexey Kuznetsov寫的 ip-cfref文檔。策略性路由的配置主要包括接口地址的配置、路由的配置、規(guī)則的配置。

接口地址的配置IP Addr

對(duì)于接口的配置可以用下面的命令進(jìn)行:

Usage: ip addr [ add | del ] IFADDR dev STRING

例如:

router># ip addr add 192.168.0.1/24 broadcast 192.168.0.255 label eth0 dev eth0

上面表示,給接口eth0賦予地址192.168.0.1 掩碼是255.255.255.0(24代表掩碼中1的個(gè)數(shù)),廣播地址是192.168.0.255

路由的配置IP Route

Linux最多可以支持255張路由表,其中有3張表是內(nèi)置的:

表255 本地路由表(Local table) 本地接口地址,廣播地址,已及NAT地址都放在這個(gè)表。該路由表由系統(tǒng)自動(dòng)維護(hù),管理員不能直接修改。

表254 主路由表(Main table) 如果沒(méi)有指明路由所屬的表,所有的路由都默認(rèn)都放在這個(gè)表里,一般來(lái)說(shuō),舊的路由工具(如route)所添加的路由都會(huì)加到這個(gè)表。一般是普通的路由。

表253 默認(rèn)路由表 (Default table) 一般來(lái)說(shuō)默認(rèn)的路由都放在這張表,但是如果特別指明放的也可以是所有的網(wǎng)關(guān)路由。

表 0 保留

路由配置命令的格式如下:

Usage: ip route list SELECTOR

ip route { change | del | add | append | replace | monitor } ROUTE

如果想查看路由表的內(nèi)容,可以通過(guò)命令:

ip route list table table_number

對(duì)于路由的操作包括change、del、add 、append 、replace 、 monitor這些。例如添加路由可以用:

router># ip route add 0/0 via 192.168.0.4 table main

router># ip route add 192.168.3.0/24 via 192.168.0.3 table 1

第一條命令是向主路由表(main table)即表254添加一條路由,路由的內(nèi)容是設(shè)置192.168.0.4成為網(wǎng)關(guān)。

第二條命令代表向路由表1添加一條路由,子網(wǎng)192.168.3.0(子網(wǎng)掩碼是255.255.255.0)的網(wǎng)關(guān)是192.168.0.3。

在多路由表的路由體系里,所有的路由的操作,例如網(wǎng)路由表添加路由,或者在路由表里尋找特定的路由,需要指明要操作的路由表,所有沒(méi)有指明路由表,默認(rèn)是對(duì)主路由表(表254)進(jìn)行操作。而在單表體系里,路由的操作是不用指明路由表的。

規(guī)則的配置IP Rule

在Linux里,總共可以定義 個(gè)優(yōu)先級(jí)的規(guī)則,一個(gè)優(yōu)先級(jí)別只能有一條規(guī)則,即理論上總共可以有 條規(guī)則。其中有3個(gè)規(guī)則是默認(rèn)的。命令用法如下:

Usage: ip rule [ list | add | del ] SELECTOR ACTION

SELECTOR := [ from PREFIX ] [ to PREFIX ] [ tos TOS ]

[ dev STRING ] [ pref NUMBER ]

ACTION := [ table TABLE_ID ] [ nat ADDRESS ]

[ prohibit | reject | unreachable ]

[ flowid CLASSID ]

TABLE_ID := [ local | main | default | new | NUMBER

首先我們可以看看路由表默認(rèn)的所有規(guī)則:

root@netmonster# ip rule list

0: from all lookup local

32766: from all lookup main

32767: from all lookup default

規(guī)則0,它是優(yōu)先級(jí)別最高的規(guī)則,規(guī)則規(guī)定,所有的包,都必須首先使用local表(254)進(jìn)行路由。本規(guī)則不能被更改和刪除。

規(guī)則32766,規(guī)定所有的包,使用表main進(jìn)行路由。本規(guī)則可以被更改和刪除。

規(guī)則32767,規(guī)定所有的包,使用表default進(jìn)行路由。本規(guī)則可以被更改和刪除。

在默認(rèn)情況下進(jìn)行路由時(shí),首先會(huì)根據(jù)規(guī)則0在本地路由表里尋找路由,如果目的地址是本網(wǎng)絡(luò),或是廣播地址的話,在這里就可以找到合適的路由;如果路由失敗,就會(huì)匹配下一個(gè)不空的規(guī)則,在這里只有32766規(guī)則,在這里將會(huì)在主路由表里尋找路由;如果失敗,就會(huì)匹配32767規(guī)則,即尋找默認(rèn)路由表。如果失敗,路由將失敗。重這里可以看出,策略性路由是往前兼容的。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞:

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉