日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

kettle 只有一个输入记录期待设置变量并且至少已经收到2个变量._OPNET学习笔记2...

發(fā)布時間:2023/12/3 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 kettle 只有一个输入记录期待设置变量并且至少已经收到2个变量._OPNET学习笔记2... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

雙擊主機網(wǎng)絡打開對應的節(jié)點模型,從圖中可以看到網(wǎng)絡的分層:應用層,傳輸層,網(wǎng)絡層,鏈路層;其中在傳輸層中我們用到的主要是UDP(對實時性要求比較高),網(wǎng)絡層又包括IP封裝層(負責把數(shù)據(jù)包封裝成IP包)。接著雙擊RIP節(jié)點可以打開RIP進程模型,同時我們把RIP源碼打開學習并分析RIP協(xié)議。

在OPNET和VC調(diào)試的時候,要是想觀察OPNET中定義的變量時,我們必須通過 op_sv_ptr 指針來獲取該變量值,比如OPNET中定義的計數(shù)器 i;這時在vc調(diào)試的時候就必須是op_sv_ptr ->i來觀察該值的變化情況。

1.init進程(停留態(tài))(程序4600-4681)

入口:

(1)RIP進程中斷初始化

(2)讀取路由表,并初始化更新IP路由表變量

當路由表輸出輸入標志位等于IP_RTE_TABLE_NON_DET時,如果op_ima_sim_attr_exists()返回 OPC_TRUE 則表明該屬性存在,然后去執(zhí)行讀取路由表屬性的值op_ima_sim_attr_get (OPC_IMA_INTEGER, 某屬性,&某變量);;如果路由表屬性不存在,將其設置為默認值(未用到路由表)。清楚中斷,并重啟中斷。

出口:

(1)確定中斷的詳細信息

先獲取中斷類型狀態(tài),如果中斷類型在執(zhí)行的的過程中,獲取中斷執(zhí)行代碼,初始化仿真日志,初始化狀態(tài)變量,在沒有輸入路由表的情況下,確定使用RIP仿真sim_eff_mode = rip_sim_eff_mode_determine ();

轉(zhuǎn)移:可以看到進程模型中有三根轉(zhuǎn)移線,代碼中通過狀態(tài)機進行轉(zhuǎn)移(狀態(tài)機代碼沒仔細了解)。

2.output(非停留態(tài))(4685-4738)

入口:

根據(jù)RFC 1058第3.5節(jié),輸出處理a由以下觸發(fā):

(1)定期路由更新,每30秒發(fā)送一次到每個相鄰網(wǎng)關(guān)。定期更新包含整個RIP路由表。

(2)已觸發(fā)更新。每當更改路由的跳數(shù)時,都會觸發(fā)更新。觸發(fā)的更新僅包含RIP路由表中最近更改的條目。這些條目設置了路由更改標志。

在輸出狀態(tài)下,會生成并發(fā)送定期更新或觸發(fā)更新。在定期更新的情況下,將安排下一次定期路由更新。這意味著下一個網(wǎng)關(guān)是此更新的目標地址的所有路由都包含在消息中,其跳數(shù)為無窮大。

程序:先定義一個RIP中斷指針,然后確定路由更新的類型:從中斷代碼中獲取更新類型數(shù)據(jù),獲取當前網(wǎng)絡路由,清除中斷,然后開始廣播郵件:

廣播的主要流程是:先獲取接口數(shù)目信息,然后分別獲取獲取RIP接口的信息,判斷如果該接口屬于RIP接口并是啟用狀態(tài)時,獲取IP表,當收到一個VRP廣播保溫時確保那個接口時VRP接口;判斷是否觸發(fā)外部,只有在有一個觸發(fā)更新或者接口沒被定義觸發(fā)外部時才可以發(fā)送更新,首先獲取地址排列,然后發(fā)送消息給在物理接口和子接口上公布地址的網(wǎng)絡,然后給每個網(wǎng)絡的子網(wǎng)發(fā)送信息,如果啟用了網(wǎng)絡拆分范圍,并且主地址和子網(wǎng)地址位于同一主網(wǎng)絡中,則不要將輔助地址作為源地址發(fā)送更新;沒有啟用拆分范圍時,發(fā)送報文給子網(wǎng)IP地址。到這一步時,所有已觸發(fā)的更新都已發(fā)送,因此需要重置所有更改標志;最后,重置“第一次更新”標志,FIRST_UPDATE = OPC_FALSE;如果已啟用觸發(fā)的擴展,則后續(xù)更新將不包含整個路由。

當更新次數(shù)為10000時,取消所有掛起的觸發(fā)更新,如果RIP仿真效率被禁用或者RIP模擬效率已啟用,但未超過“更新停止時間”則發(fā)送常規(guī)更新消息。

3.init_rte_table(非停留態(tài))(4762-4817)

入口:

初始化RIP路由表:首先獲得IP數(shù)據(jù)包,獲取接口信息;如果本地節(jié)點時是一個網(wǎng)關(guān)時建立RIP路由表:獲取一個新路徑并把它插入到路由表中,并從IP表中獲取它的大小,RIP協(xié)議是在IPv4接口上執(zhí)行的:建立一個RIP路由表,并把IP地址表中所有的網(wǎng)絡注冊在路由表中并標記每一個有效路徑,并讀取其他RIP路由器的信息并更新自己的路由表,在解析接口信息時,路由表已經(jīng)準備就緒,給每個節(jié)點信息分配內(nèi)存;如果是一個網(wǎng)關(guān)節(jié)點時,在路由表中建立一個接口信息,通過ID號獲取節(jié)點屬性,主機節(jié)點沒有RIP屬性;建立一個路由實例有效數(shù)組;接著分別獲取IP表上所有的IP可到達的地址,如果沒有子接口信息時讓這一端口失效,如果有rip運行,獲取對應端口屬性;接著判斷RIP是否在此接口使用(先獲取當前進程信息,然后判斷當前路由實例指數(shù)是否正確);RIP進程未生效時,輸出路由表中沒有RIP接口;至少有一個端口在路由實例時設置標志位為正確,并確定RIP接口的數(shù)目;如果是一個收發(fā)接口時,分別設置收發(fā)模式,如果這既不是一個接口也不是一個子接口時,從它的接口信息屬性中獲取RIP參數(shù);接著獲取目的網(wǎng)絡地址,使能RIP;獲取與此接口對應的RIP表;在路由表中加一個新的網(wǎng)絡入口地址,再在子網(wǎng)地址添加一個路由入口;得到網(wǎng)絡地址范圍;獲取網(wǎng)絡地址,并把子網(wǎng)地址也轉(zhuǎn)換成主網(wǎng)地址;把這個新的入口網(wǎng)絡加入路由表;把查找表銷毀;把RIP路由表屬性記錄下來,以便于其他進程獲取。

重置中斷。

出口:如果在此節(jié)點上啟用了IPv6,創(chuàng)建一個RIPng子進程。

5.delete(非停留態(tài))(4822-4893)

兩個自中斷會導致進程進入此狀態(tài):(1) 路由超時計時器(2) 垃圾收集計時器。如果垃圾收集器到期,先生成一個仿真日志,然后把相關(guān)接口在路由表中刪除;如果路由超時計時器到期,delete進程計時器需要重置,傳播計劃觸發(fā)更新信息,生成仿真日志。

6.wait(停留態(tài))(4897-5051)

在等待狀態(tài)下,進程等待四個可能的事件發(fā)生:(1)響應的到達(定期或觸發(fā)的更新);(2)定期更新計時器或已觸發(fā)更新計時器過期(輸出處理);(3)路由計時器的過期時間,可以是特定路由的垃圾收集計時器。進入等待進程時,在事件未結(jié)束時需要把路由實例設置為無效值

,防止被其他進程意外使用。

出口:獲取中斷類型和狀態(tài);如果當前是個流中斷時,分別檢測這個包的收發(fā);如果這個包時RIPng包就去喚醒子進程。使節(jié)點狀態(tài)和鏈路狀態(tài)當前不做操作;當發(fā)生一個錯誤中斷或者重啟中斷時,如果是當前節(jié)點一個RIPng子進程,喚醒此進程,獲取這個錯誤或重啟對象的ID號;然后看這個中斷是在互連網(wǎng)中還是只是在此節(jié)點,如果是在一個雙向連接網(wǎng)絡中,我們需要檢查出錯誤的連接:在接口表中獲取連接鏈路的對象ID表,獲取RIP接口信息,確保這個接口或者它的子接口是RIP協(xié)議,并標記出RIP接口,然后把鏈路狀態(tài)改變標志位設置為1,標志鏈路狀態(tài)發(fā)生改變;如果只是此節(jié)點的中斷,使節(jié)點狀態(tài)改變標志位設置為1,代表節(jié)點狀態(tài)發(fā)生改變。

7.ExtRoute(非停留態(tài))(5056-5286)(RIP使用外部路由信息)

首先獲取與此中斷相關(guān)聯(lián)的ICI;再獲取IP的重分布信息;確定在此中斷中已經(jīng)收到的路由數(shù);讀取ICI包中IP注冊表信息;讀取IP路由表中的入口信息;把未用到的路由關(guān)閉;RIP事先不知道此網(wǎng)絡它從這個協(xié)議中獲取路徑;如果發(fā)現(xiàn)一個最優(yōu)路徑,把它加到注冊表中;如果分配的路徑和RIP路徑一致,先取消定時器,當RIP沒有未這一目的地分配路徑時,IP將忽視這請求,把這一路由刪除,并更新路由表;如果這一目的地不能被忽略時,需要更新注冊表,把這一信息發(fā)送出去;在仿真處于強制模式時,生成一個警告信息,不能完成更新;釋放相應內(nèi)存空間;釋放ICI包。

8.import_rte_table(停留態(tài))(5291-5314)

當在仿真時設置import IP Routing Table 時會進入此進程,重啟中斷,一般是在IP進程中喚醒此進程。

9.node_fail_rec(非停留態(tài))(5320-5354)

首先取消垃圾收集計時器;讀取所有路由實例的信息,如果失效模式為“Clear Router Table”,更新ODB日志,使RIP進程停止;RIPv2存儲子網(wǎng)掩碼,RIPv1不存儲子網(wǎng)掩碼,但是需要獲取更新接口和所選掩碼的信息。把相關(guān)入口從路由和IP表中刪除。刪除在之前進程中生成的IP地址對象;取消垃圾收集事件;清除RIP路由表。如果實現(xiàn)模式不是“Clear Router Table”,更新ODB日志,使RIP進程停止;取消所有掛起事件。

首先更新ODB日志;獲取當前仿真時間;對所有的路由實例進行循環(huán)索引,如果失效模式為“Clear Router Table”,獲取RIP接口信息和IP接口數(shù)據(jù)包;在鏈路連接狀態(tài)把路由信息記錄;在路由表中把這一入口添加進去。當失效模式是“Retain Route Table”,為每個更新完成的路由設置標志位,路由信息更新完成后生成刷新日志,如果RIP觸發(fā)更新是失效狀態(tài),即使節(jié)點恢復也不會更新路由;定期更新路由信息。

10.link(非停留態(tài))(5359-5410)

在連接到周圍節(jié)點的鏈接失效后調(diào)用該函數(shù)。首先更新ODB日志;獲取路由表中所有的入口,從中找出連接這個失效鏈路的下一跳,獲得子網(wǎng)掩碼,把相關(guān)的入口從路由表和IP表中刪除,銷毀之前進程產(chǎn)生的IP地址對象,取消垃圾回收事件,如果不是本地街街口,啟用垃圾回收計時器;初始化跳數(shù)為無窮大不可達,把入口永久標志位設置為失效,把路由改變標志位設置為啟用(當定時器刪除這一入口時,節(jié)點需要廣播這一目的地址不可達)。

連接到周圍節(jié)點的鏈接恢復后調(diào)用該函數(shù)。首先獲取這一接口的RIP表,讀取RIP接口信息,檢查這個接口或者子接口是否為RIP接口,在把這一入口加入路由表之前,要確保連接的所有節(jié)點都處于有效狀態(tài);更新ODB日志;循環(huán)通過這一鏈路的子接口,并把它們加入到路由表中:首先獲取RIP接口信息檢查子接口是否啟用RIP,從IP接口表中獲取相關(guān)接口信息,循環(huán)通過主要地址和次要地址,獲取地址排列信息,得到網(wǎng)絡地址,把這一入口設為直連添加到路由表中,并添加到IP表中;如果連接的節(jié)點有一個處于關(guān)閉,更新顯示ODB日志。

11.response(非停留態(tài))(5415-5774)

當收到一個接口更新請求時先獲取這一接口和子接口的參數(shù);當不能確定接口信息或者源地址是本地IP地址,又或者這一信息不是520端口發(fā)出的時,將忽略這一請求;獲取RIP接口信息,確定其中正確連接的路由實例;對不是RIP的接口摧毀此進程,并獲取RIP接口的RIP表;初始化觸發(fā)更新信號為失效;讀取這一請求的總字節(jié)數(shù),并計算出需要更新的路由數(shù)(RIP請求的頭部為4字節(jié),其他更新信息為20字節(jié),公式為num=(RIP請求總字節(jié)數(shù)-4)/20);獲取路由信息數(shù)據(jù)指針;獲取路由更新類型;篩選出正確狀態(tài)的包;檢查所有更新路由:獲取子網(wǎng)掩碼,如果是直連網(wǎng)絡忽略路由更新信息,更新路由跳數(shù)(更新跳數(shù)和之前跳數(shù)的最小值);把更新表的源地址設置為下一跳;如果沒有找到目的網(wǎng)絡的路由,在未定義此目的地址不可達時添加一個新路徑;獲取目的地址的子網(wǎng)掩碼;判斷是否這一目的地址存在IP路由表中,如果存在且具有更好的管理距離時更新路由表和IP表;如果存在這一路徑,比較是否來自同一網(wǎng)關(guān),不是時更新計數(shù)器;如果新的跳數(shù)與舊的跳數(shù)不一樣或者新的跳數(shù)低于舊的時,需要更新路由表,如果新的路由跳數(shù)是無窮大,需要刪除這一路徑;或者跳數(shù)相同,但來自不同網(wǎng)關(guān)時即下一跳不一樣時,也需要更新路由表。

12.idle(停留態(tài))(5778-5828)

獲取中斷類型和狀態(tài),如果是一個RIPng包時,喚醒子進程;如果是一個失效或恢復中斷并且此節(jié)點存在RIPng子進程時,同樣喚醒子進程。

總結(jié)

以上是生活随笔為你收集整理的kettle 只有一个输入记录期待设置变量并且至少已经收到2个变量._OPNET学习笔记2...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。