新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Linux策略性路由應用及深入分析

        Linux策略性路由應用及深入分析

        作者: 時間:2016-09-12 來源:網絡 收藏

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

        本文引用地址:http://www.104case.com/article/201609/304893.htm

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

        多路由表(multiple Routing Tables)

        傳統的路由算法是僅使用一張路由表的。但是在有些情形底下,我們是需要使用多路由表的。例如一個子網通過一個路由器與外界相連,路由器與外界有兩條線路相連,其中一條的速度比較快,一條的速度比較慢。對于子網內的大多數用戶來說對速度并沒有特殊的要求,所以可以讓他們用比較慢的路由;但是子網內有一些特殊的用戶卻是對速度的要求比較苛刻,所以他們需要使用速度比較快的路由。如果使用一張路由表上述要求是無法實現的,而如果根據源地址或其它參數,對不同的用戶使用不同的路由表,這樣就可以大大提高路由器的性能。

        規則(rule)

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

        規則一:“所有來自192.16.152.24的IP包,使用路由表10, 本規則的優先級別是1500”

        規則二:“所有的包,使用路由表253,本規則的優先級別是32767”

        我們可以看到,規則包含3個要素:

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

        符合本規則的包將對其采取什么動作(ACTION),例如用那個表;

        本規則的優先級別。優先級別越高的規則越先匹配(數值越小優先級別越高)。

        策略性路由的配置方法

        傳統的linux下配置路由的工具是route,而實現策略性路由配置的工具是iproute2工具包。這個軟件包是由Alexey Kuznetsov開發的,軟件包所在的主要網址為ftp://ftp.inr.ac.ru/ip-routing/。

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

        接口地址的配置IP Addr

        對于接口的配置可以用下面的命令進行:

        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的個數),廣播地址是192.168.0.255

        路由的配置IP Route

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

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

        表254 主路由表(Main table) 如果沒有指明路由所屬的表,所有的路由都默認都放在這個表里,一般來說,舊的路由工具(如route)所添加的路由都會加到這個表。一般是普通的路由。

        表253 默認路由表 (Default table) 一般來說默認的路由都放在這張表,但是如果特別指明放的也可以是所有的網關路由。

        表 0 保留

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

        Usage: ip route list SELECTOR

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

        如果想查看路由表的內容,可以通過命令:

        ip route list table table_number

        對于路由的操作包括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添加一條路由,路由的內容是設置192.168.0.4成為網關。

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

        在多路由表的路由體系里,所有的路由的操作,例如網路由表添加路由,或者在路由表里尋找特定的路由,需要指明要操作的路由表,所有沒有指明路由表,默認是對主路由表(表254)進行操作。而在單表體系里,路由的操作是不用指明路由表的。

        規則的配置IP Rule

        在Linux里,總共可以定義 個優先級的規則,一個優先級別只能有一條規則,即理論上總共可以有 條規則。其中有3個規則是默認的。命令用法如下:

        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

        首先我們可以看看路由表默認的所有規則:

        root@netmonster# ip rule list

        0: from all lookup local

        32766: from all lookup main

        32767: from all lookup default

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

        規則32766,規定所有的包,使用表main進行路由。本規則可以被更改和刪除。

        規則32767,規定所有的包,使用表default進行路由。本規則可以被更改和刪除。

        在默認情況下進行路由時,首先會根據規則0在本地路由表里尋找路由,如果目的地址是本網絡,或是廣播地址的話,在這里就可以找到合適的路由;如果路由失敗,就會匹配下一個不空的規則,在這里只有32766規則,在這里將會在主路由表里尋找路由;如果失敗,就會匹配32767規則,即尋找默認路由表。如果失敗,路由將失敗。重這里可以看出,策略性路由是往前兼容的。


        上一頁 1 2 下一頁

        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 永平县| 韶关市| 扎赉特旗| 微博| 苍溪县| 贵港市| 英山县| 普洱| 巨鹿县| 武穴市| 当阳市| 安阳县| 广汉市| 思南县| 台山市| 秭归县| 青冈县| 辽宁省| 永登县| 银川市| 雅江县| 新乡市| 晋城| 邵阳市| 沧州市| 道孚县| 文成县| 遂川县| 博野县| 治县。| 周至县| 图们市| 通渭县| 林甸县| 射洪县| 康定县| 马龙县| 延川县| 万荣县| 迁安市| 万载县|