自適應區分服務

2021-04-20 11:36:28 字數 3171 閱讀 9110

相關1

目前在計算機網路中使用的傳統路由演算法都是根據ip包目的位址進行路由選擇.然而在現實應用中經常有這樣的需求:進行路由選擇時不僅僅根據資料報的目的位址,而且根據資料報的其他一些特性如:源位址、ip協議、傳輸層埠,甚至是資料報的負載部分內容,這種型別的路由選擇被稱作基於策略的路由。

在linux中,從2.1版本的核心開始就實現了對基於策略的路由的支援,它是通過使用路由策略資料庫(rpdb,routing policy database)替代傳統的、基於目的位址的路由表來實現的。rpdb通過包含的一些規則來選定合適的ip路由。這些規則可能會包含很多各種不同型別的健值(key),因此這些規則沒有預設的特定次序,規則查詢次序或規則優先順序都是由網路或系統管理員設定的。

linux的rpdb是乙個由數字優先順序值進行排序的線性規則列表。rpdb能匹配資料報源位址、目的位址、tos、進入接和fwmark值等。每個路由策略規則由乙個選擇器和乙個動作指示組成。rpdb按照優先順序遞增的順序被掃瞄,rpdb包含的每條規則的選擇器被應用於資料報的源位址、目的位址、進入介面、tos和fwmark值。若資料報匹配該規則對應於該規則的動作被執行。若動作成功返回,則規則輸出將是乙個有效的路由或是路由查詢失敗指示;否則查詢rpdb的下一條規則。

當選擇器和乙個資料報匹配成功,會執行哪些動作呢?路由軟體的標準動作一般是選擇下一跳位址和輸出介面,可以稱這種動作為「匹配&設定」型別動作。然而linux採取了更加靈活的方法,在linux中有多種動作可供選擇。預設的動作是查詢特定的基於目的位址的路由表。

因此「匹配&設定」動作就成為linux路由選擇的最簡單情況。linux支援多個路由表,每個路由表都包含多條路由資訊。也就是linux的每個路由表都相當於其他作業系統的系統路由表。linux支援多達255個路由表。(linux 2.2.12 支援255個路由表,255個匯聚域和232個策略規則優先順序。

對於linux2.1/2.2,啟動時核心將包含乙個由三條策略規則組成的預設的rpdb,察看這些預設規則的乙個方法是使用命令來列出系統的所有規則:

root@netmonster ip rule list

0:      from all lookup local

32766:  from all lookup main

32767:  from all lookup default

下面的預設規則在對於理解啟動複雜路由系統是非常重要的。

首先是最高端別的優先順序規則,規則策略0:

規則0: 優先順序 0 選擇器 = 匹配任何資料報

動作=察看本地路由表(routing table local),id為255。

local表是保留路由表,包含了到本地和廣播位址的路由。規則0是特殊的規則,不可被刪除或修改。

規則 32766: 優先順序 32766 選擇器 = 匹配所有資料報

動作 = 察看主路由表(routing table main), id為254。

main路由表是預設的標準路由表,其包含所有非策略路由,main表是存放舊的路由命令(route命令)建立的路由。而且任何由ip route命令建立的沒有明確指定路由表的路由都被加入到該路由表中。該規則不能被刪除和被其他規則覆蓋。

規則 32767: 優先順序 32767 選擇器 = 匹配所有資料報

動作 = 察看預設路由表(routing table default),id為253。

default路由表是空的,為最後處理(post-processing)所預留,若前面的預設規則沒有選擇該資料報時保留用作最後的處理。該規則可以被刪除。

不要將路由表和規則混淆,規則是指向路由表的。也許會出現多個規則指向同乙個路由表,而有些路由表可能並不被任何規則指向。如果刪除了指向某個路由表的所有規則,則該錶將不發生作用,但是表將仍然存在。乙個路由表只有在其中包含的所有路由資訊被刪除才會消失。

相關2linux netfilter機制應用淺釋

netfilter是自2.2版本核心後linux網路核心重要的組成部分,是linux網路防火牆以及iptable實現的基礎。netfilter是乙個提供了不同於bsd socket介面的操作網路資料報的機制。在netfilter中,協議棧每種協議都定義了若干個鉤子(hook),如ipv6和ip v4均定義了五個鉤子(將在後面的章節中詳解),而對應協議的資料報將按照一定的規則通過若干個鉤子,每乙個鉤子都是處理函式掛載點。核心模組則可以在各個鉤子上註冊處理函式,以操作經過對應鉤子的資料報。函式處理後,根據一定的策略返回給核心進行下一步的處理。下面我們一ipv6為例子作進一步的解釋。

ipv6協議定義了一下五個鉤子,它們的名字(名字後面的是它們對應的值)告訴我們它們所處的位置,如圖(附件)所示:

1. nf_ip6_pre_routing 0:資料報在抵達路由之前經過這個鉤子。目前,在這個鉤子上只對資料報作包頭檢測處理,一般應用於防止拒絕服務攻擊和nat;

2. nf_ip6_local_in 1:目的地為本地主機的資料報經過這個鉤子。防火牆一般建立在這個鉤子上;

3. nf_ip6_forward 2:目的地非本地主機的資料報經過這個鉤子;

4. nf_ip6_local_out 3:本地主機發出的資料報經過這個鉤子;

5. nf_ip6_post_routing 4:資料報在離開本地主機之前經過這個鉤子,包括源位址為本地主機和非本地主機的。

對照附件,我們分析資料報經過netfilter機制的過程。資料報從左邊進入系統,進行ip校驗以後,資料報經過第乙個鉤子nf_ip6_pre_routing註冊函式進行處理;然後就進入路由**,其決定該資料報是需要**還是發給本機的;若該資料報是發被本機的,則該資料經過鉤子nf_ip6_local_in註冊函式處理以後然後傳遞給上層協議;若該資料報應該被**則它被nf_ip6_forward註冊函式處理;經過**的資料報經過最後乙個鉤子nf_ip6_post_routing註冊函式處理以後,再傳輸到網路上。

本地產生的資料經過鉤子函式nf_ip6_local_out註冊函式處理以後,進行路由選擇處理,然後經過nf_ip6_post_routing註冊函式處理以後傳送到網路上。

註冊函式處理完後,將返回乙個整形常量,核心根據這個返回值隨資料報作下一步的處理。目前核心定義了一下四個常量:

1. nf_drop 0:丟棄此資料報,而不進入此後的處理;

2. nf_accept 1:接受此資料報,進入下一步的處理;

3. nf_stolen 2:表示異常分組;

4. nf_queue 3:排隊到使用者空間,等待使用者處理;

5. nf_repeat 4:進入此函式再作處理。

網格自適應 Fluent網格自適應

1,前言 國慶剛過,馬上就要上班,上課了,祝福大家事業學業都有新的進步,新的前途。2,內容簡介 我們在平時做流體分析時,經常會遇到乙個問題,當畫好的網格匯入fluent計算時,看了分析結果,想讓某一部分我們關注的點更加細化一些,我們不得不重新去網格軟體裡調整網格。今天介紹的fluent自帶的網格自適...

網格自適應 網格自適應04 各向異性自適應

本文描述各向異性網格自適應方法應用。由於各向異性自適應 anisotropic adaption 僅適用於特定的網格型別,因此存在以下限制 利用按鈕 setting up domain adapt more anisotropic refinement.開啟anisotropic adaption設...

Iframe自適應高度和拖拽自適應

思路 1.在iframe所在的主頁面取iframe內部的高度 2.在iframe內部當初始化完之後取得自己高度並改變父iframe高度 法一 需要在iframe的平級,當頁面初始化的時候呼叫 the iframe height self adaption param the iframe id fu...