新四季網

協議仿真器的製作方法

2023-06-08 12:30:56 3

專利名稱:協議仿真器的製作方法
技術領域:
本發明涉及協議仿真器。
背景技術:
對諸如路由器的網絡設備進行廣泛的測試,來確保將錯誤的傳輸和致命的錯誤最小化。市面上可獲得多種測試設備,包括來自安捷倫科技(本申請的受讓者)的ROUTER TESTER(路由器測試儀)。這種測試設備一般監控對多種模擬輸入的路由器響應。
可以將路由過程很快地總結為節點尋找到每個可能的目的地的路徑。在從層1(物理層)以上,路由無所不在。但是,大多數人所熟悉的路由發生在層3(網絡層)處,同樣地,這裡將只引用層3(並且更具體地)網際網路協議(IP)路由。路由器使用表來確定將分組轉發向何處。更新這些表是由路由協議執行的功能。
路由協議有助於在遍布全球的多個路由器之間交換路由信息,通過每個路由器的異構的(雖然通常是一致的)路由表,所述路由信息提供了網絡的公共視圖。路由表存儲路由器到達網絡上的每個目的地所必需的所有信息,而不管網絡有多大。有很多種路由協議被用來為整個網絡中的路由表分發信息,包括BGP、OSPF、RIP和ISIS。常常擴展舊協議,並且不斷地創建新協議以圖提高協議的性能。一般來說,新協議最初是由裝備製造商開發的,並且本質上是私有的。這些協議隨後常常被產業上的標準團體所採納。
已知的路由器測試儀利用專門創建的數據「測試分組」來模擬網絡流量,其中所述數據「測試分組」是網絡上出現的典型的活數據。將這些測試分組通被測的網絡傳輸到網絡設備。由流量模擬器系統(包括ROUTERTESTER)測試的參數包括路由驗證、加載情況下達到的服務質量(QoS)水平和與其他設備正確的交互工作。這些所謂的「分組突發(packet balster)」中的許多也通過根據協議定製並傳輸數據,來測試網絡設備與協議一致的能力。這種消息稱為協議消息。
圖1是流量模擬器測試系統100的方框圖。更具體地說,該流量模擬器測試系統100是由安捷倫科技提供的ROUTER TESTER的一般代表。路由器測試儀只是路由器測試系統的一個示例,具體地說,其被宣稱為多埠流量生成、協議仿真和分析測試系統,該系統用於對企業、城域/邊緣、核心路由和光纖網絡的設備的性能進行驗證。該系統一般包括連接到被測系統的多個協議仿真卡102n,在這種情形中所述被測系統是路由器104。每個協議仿真卡102n一般包括具有相關的存儲器和I/O的處理器。由例如運行視窗環境的PC的計算機106控制協議仿真卡102n。計算機106對例如圖形用戶界面的接口108作出響應。
根據通信協議的規則和解釋(例如那些由工業界的許多標準團體所定義的),構建由協議仿真卡102n產生的測試分組和協議消息。一般來說,在路由器之間的握手過程中使用與任何給定的協議相關聯的大多數協議消息。由於握手過程適於已定義的狀態,所以大多路由器和協議仿真器使用有限狀態機來對各種協議消息作出響應。
當前與流量模擬器測試系統相關聯的軟體體系結構要求對協議仿真解決方案的所有部分硬編碼,其中所述協議仿真解決方案的所有部分包括圖形用戶界面、腳本API、配置和控制組件,以及協議狀態機自身。要求為每種協議硬編碼導致使用大量人力來創建大代碼體。
由於引入新協議或者對其進行擴展的步伐越來越快,所以及時發布測試套件變得越來越困難。對協議仿真的每種新的變化或添加都要求修改原始碼並隨後重新編譯。協議測試儀的客戶已經常常要求能夠修改協議仿真來幫助測試尚未發布的協議或者協議的擴展。可行的是,這種修改不應當要求重新編譯系統。
某些可獲得的協議仿真器通過使用可以被添加到協議消息上的用戶定義對象,的確允許某些定製。然而,這種定製是十六進位代碼的形式,要求用戶熟悉某些時候是神秘的代碼。此外,這樣定義的對象是靜態的,這是因為它們在激勵網絡的過程中不能改變。對象局限於作為主協議消息的擴展,這意味著消息的主體是不能改變的。
現在正在努力設計可以在軟體外配置的通用系統。名為「構建數據分組」(Building packets of data)的同時待審的美國專利申請序列號No.10/266,507、公開號No.US20040068681 A1的專利申請中描述了一種示例。在這裡合併參考了US20040068681 A1,其使用外部XML協議描述來驅動通用PDU編解碼引擎。
因此,本發明的發明者已經認識到需要新的裝置和方法,所述裝置和方法使得用戶能夠在不要求重新編譯的情況下將新的能力添加到協議仿真,並且在用戶看起來象系統的無縫部分。

發明內容
本發明提供了一種協議仿真系統,該系統包括至少一個用通用格式來描述協議消息中的欄位的描述;將所述至少一個描述轉變成機器可讀模板的應用;以及基於所述模板創建協議消息的協議有限狀態機。
本發明還提供了一種用於控制協議仿真器的方法,該方法包括創建用於控制所述協議仿真器的數據的結構的描述,用對於多種協議通用的語言形成所述描述;使用所述描述創建所述數據結構的參考模型;用至少某些用戶提供的數據創建所述參考模型的實例;使用所述實例來創建模板,所述協議仿真器響應於所述模板,以創建協議消息;以及將所述模板傳送到所述協議仿真器。
本發明還提供了另一種控制協議仿真器的方法,該方法包括創建由所述協議仿真器使用的至少一個消息的可擴展標記語言描述;將所述描述的圖形顯示呈現給用戶;準許所述用戶調整所述描述的多個欄位中的值;以及基於所述描述和由所述用戶調整的所述值,創建用於控制協議有限狀態機的模板。


結合附圖,從下面的對本發明的某些實施方式的詳細描述可以理解本發明,其中圖1是協議仿真測試系統的方框圖。
圖2是根據本發明優選的實施方式用於建立協議消息的體系結構的方框圖。
圖3是根據本發明實施方式構建的圖形用戶界面的屏幕快照。
在下文中包含的描述中,緊鄰元素標識符使用小寫字母「n」標註元素的非特定實例,而不是如在說明書中用緊鄰元素號的非斜體字母所討論的特定元素,或者用沒有修飾符的元素號自身所討論的所有實例的一般集合。
具體實施例方式
現在將對本發明的實施方式進行參考,在附圖中圖示了實施方式的實施例,其中在所有的附圖中相同的標號指相同的元件。以下詳細描述提出了可以由例程和數據位的操作的符號表示來實現的方法,其中所述例程和數據位在計算機可讀介質、關聯處理器、數據生成和採集卡等之內。這裡,例程通常被認為是導致期望的結果的步驟或者動作的序列,同樣地,其包含例如「程序」、「對象」、「函數」、「子例程」和「過程」等專門術語。這些描述和表示是本領域的技術人員用來向本領域的其他技術人員有效地傳達其工作的實質的手段。為了方便,在下文中的說明和權利要求中,將詞語「網絡」用來指下述任何一個或多個通信網絡、網絡設備、任何其他通信設備和通信系統的可以用測試數據分組測試的一個或多個方面。
雖然描述了包括有在下述路由器測試儀上實現的方法的實施方式,所述路由器測試儀具有與安捷倫ROUTER TESTER相似的配置。但是,這裡敘述的方法可以在多種路由器測試儀中的任何一種上運行。更中肯地說,這裡提出的方法並不內在地與任何具體的設備相關;相反,可以與根據這裡的教導的例程一起使用各種設備。具體地說,儘管這裡描述路由器測試功能,但是這裡描述的用於將數據從一個設備傳送到另一個設備的方法一般適用於數據通信領域。可以執行這裡描述的功能的機器包括由下述公司製造的機器,所述公司例如是安捷倫技術有限公司、惠普和泰克電子有限公司,以及其他通信裝備製造商。
至於這裡描述的軟體,本領域的一般技術人員將識別出存在多種平臺和語言,用於創建軟體來執行這裡概述的過程。可以用包括C++在內的C的多種變種中的任何一種實現本發明的實施方式。然而,本領域的技術人員也認識到,選擇確切的平臺和語言常常由所構建的實際系統的特性規定,所以可以在一類系統上工作的在另一類系統上可能無效。也應當理解,這裡所描述的例程和計算並不限於作為計算機上的軟體而被執行,而是也可以在硬體處理器中實現。例如,可以利用多種設計工具,在ASIC或者在FPGA中用HDL(硬體設計語言)實現例程和計算。
申請人已經確定協議仿真的某些部分適於以通用方式定義,而其他組件可能由於可擴展性和性能原因而更適於硬編碼。通過允許對那些可以以通用方式定義的部分進行現場定製,給予客戶對協議仿真額外的控制和擴展測試的能力。為了便於客戶互動,可以用易於閱讀的文件格式來呈現通用定義的部分,所述格式例如是XML。這種XML文件可以用來形成圖形接口,通過其可以瀏覽對在XML文件中描述的消息的修改。這種信息將用來建立可由具體協議仿真的有限狀態機所理解的定義。
圖2是根據本發明的優選實施方式用於建立協議消息的協議仿真系統200的方框圖。體系結構200一般包括主機202和協議仿真器204。主機202一般實現為對圖形用戶界面206和應用208作出響應的計算機。儘管在圖2中示出了多個應用208n,但是應當理解,依賴於本發明的確切實現,應用208n可以物理地或邏輯地實現為單個應用,或者任何數目個應用。協議仿真器204一般包括協議有限狀態機210,其響應於至少一個模板212,以產生協議消息。計算機202一般充當向協議仿真器204提供指令的客戶機,協議仿真器204一般充當對計算機202的指令作出響應的伺服器。
協議消息描述215(用主機202本地存儲或者在遠程位置存儲)至少包含一個所有或者某些欄位和欄位關係的描述215n,所述欄位和欄位關係用於所選擇的協議消息類型和伴隨的協議參數選項。協議消息描述215n用通用格式(例如欄位描述215的格式不隨協議而變)表示整個協議數據單元或者它的一部分。可以應用協議消息描述215的消息的示例包括BGP4更新消息、OSPF連結狀態更新分組、ISIS連結狀態分組、RIP更新消息、LDP標籤映射消息、LDP標籤請求消息、RSVP路徑消息、PIM加入或註冊消息和IGMP成員關係報告。
用於給定協議的協議消息描述215n可以用具有屬於該協議的通用屬性的協議描述符開始,隨後是許多欄位描述符,每個描述欄位可以存在於根據協議創建的消息中。欄位描述符可以包含多種屬性信息。
例如,可以指定全名以和與欄位相關聯的值一起顯示。在值自身方面,可以提供諸如長度、格式和初始值的屬性。為了進一步增強協議消息描述215的用途,可以提供關於如何使消息(根據協議消息描述215建立的消息)的欄位值在拷貝之間改變的指令。在特定消息中重複出現的欄位的情況下,可以提供關於如何使欄位值隨實例而改變的指令。例如,可以提供遞增值來調整在一串網絡可達性指示符之一中的IP值前綴。
如果XML用作描述語言,則可以用標籤實現描述符,標籤可以以已知的方式嵌套來提供層次結構。這種層次結構幫助動態創建圖形用戶界面,其通過數據結構提供快捷、輕鬆的導航。
可以根據這裡結合作為參考的美國專利申請10/266,507(在US2004/0068681 A1中公開的)的一般教導形成協議消息描述215。表1包含用於BGP4更新消息的協議定義的示例。表1中示出的數據結構將協議消息描述215n的示例提供為用XML實現,並且本領域的普通技術人員可以從其中提取結構和目的,以使得能夠創建用於其他消息和其他協議的其他協議定義。
表1?xml version=″1.0″standalone=″yes″?ProtocolSet xmlns=″x-schemaAgtPduSchema.xml″version=″1″providedBy=″Agilent Technologies″!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --!-- 通用PDU建立者--!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --!-- 文件類型協議定義 --!-- 內容BGP4更新消息 --!-- 版權,2004安捷倫科技 --!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --!-- 版本歷史 --!-- 0.12004年5月-原型--!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --!-- ===================================================================== --protocol name=″BGP4 Update″shortName=″BGP4 Update Message″fullName=″Border Gateway Protocol Version 4 Update Message″instance=″primary″standard=″RFC 1771″sequence=″header path_attributes network_layer_reachability″field name=″header″fullName=″Header″instance=″primary″sequence=″marker length update_type no_withdrawn_routes″field name=″marker″fullName=″Marker″length=″128″value=″0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF″format=″hex″/field name=″length″fullName=″Length″length=″16″format=″integer″/field name=″update_type″fullName=″Message type″length=″8″format=″integer″value=″2″/field name=″no_withdrawn_routes″fullName=″Unfeasible routes length″length=″16″value=″0″format=″integer″/field name=″ipv4_address_prefix″fullName=″IP address prefix″instance=″repeat″pad=″octet″sequence=″prefix_length prefix″/field name=″prefix_length″fullName=″Prefix length(bits)″length=″8″format=″integer″/field name=″prefix″fullName=″Prefix″lengthRef=″prefix length″
lengthMultiplier=″1″defaultLength=″24″format=″hex″/
field name=″path_attributes″fullName=″PATH attributes″select=″no_path_attributes has_path_attributes″default=″no_path_attributes″/
field name=″no_path_attributes″fullName=″Total PATH attribute length″length=″16″value=″0″format=″integer″/
field name=″has_path_attributes″fullName=″PATH attributes″sequence=″total_path_attribute_length path_attribute_data″/
field name=″total_path_attribute_length″fullName=″Total PATH attribute length″length=″16″format=″integer″/
field name=″path_attribute_data″fullName=″PATH attributes″lengthRef=″total_path_attribute_length″lengthMultiplier=″8″sequence=″path_attribute″/
field name=″path_attribute″fullName=″PATH attribute″instance=″repeat″sequence=″attr_flags attr_type attr_length attr_value″/
field name=″attr_flags″fullName=″Attribute flags″format=″binary″length=″8″flags=″Optional Transitive Partial Extended_Length Null Null NullNull″/
field name=″attr_type″fullName=″Attribute type code″format=″integer″length=″8″
enum value=″1″name=″ORIGIN″/
enum value=″2″name=″AS PATH″/
enum value=″3″name=″NEXT HOP″/
enum value=″4″name=″MULTI EXIT DISC″/
enum value=″5″name=″LOCAL PREF″/
enum value=″6″name=″ATOMIC AGGREGATE″/
enum value=″7″name=″AGGREGATOR″/
enum value=″14″name=″MP_REACH_NLRI″/
enum value=″15″name=″MP_UNREACH_NLRI″/
/field
field name=″attr_length″fullName=″Attribute length″select=″normal_length extended_length″default=″normal_length″/
field name=″normal_length″fullName=″Attribute length(1 byte)″
length=″8″format=″integer″/
field name=″extended_length″fullName=″Attribute length(2 bytes)″length=″16″format=″integer″/
field name=″attr_value″fullName=″Attribute data″lengthRef=″attr_length″lengthMultiplier=″8″select=″origin as_path next_hop multi_exit_disc local_prefatomic_aggregate aggregator″default=″as_path″/
field name=″origin″fullName=″ORIGIN value″selectRef=″attr_type″selectValue=″1″length=″8″format=″integer″
enum value=″0″name=″IGP″/
enum value=″1″name=″EGP″/
enum value=″2″name=″INCOMPLETE″/
/field
field name=″as_path″fullName=″AS PATH″selectRef=″attr_type″selectValue=″2″sequence=″path_segment″/
field name=″path_segment″fullName=″Path segment″instance=″repeat″sequence=″ps_type ps_length ps_value″/
field name=″ps_type″fullName=″Path segment type″length=″8″format=″integer″
enum value=″1″name=″AS_SET″/
enum value=″2″name=″AS_SEQUENCE″/
/field
field name=″ps_length″fullName=″Path segment AS count″length=″8″format=″integer″/
field name=″ps_value″fullName=″Path segment AS list″lengthRef=″ps_length″lengthMultiplier=″16″sequence=″ps_es″/
field name=″ps_as″fullName=″Path segment AS″length=″16″instance=″repeat″format=″integer″/
field name=″next_hop″fullName=″NEXT HOP″selectRef=″attr_type″selectValue=″3″length=″32″format=″ipv4_address″/
field name=″multi_exit_disc″fullName=″MULTI EXIT DISC″selectRef=″attr_type″selectValue=″4″length=″32″format=″integer″/
field name=″local_pref″fullName=″LOCAL PREF″selectRef=″attr_type″selectValue=″5″length=″32″format=″integer″/
field name=″atomic_aggregate″fullName=″ATOMIC AGGREGATE″selectRef=″attr_type″selectValue=″6″length=″0″format=″integer″/
field name=″aggregator″fullName=″AGGREGATOR″selectRef=″attr_type″selectValue=″7″sequence=″aggregator_as aggregator_address″/
field name=″aggregator_as″fullName=″Aggregator AS″length=″16″format=″integer″/
field name=″aggregator_address″fullName=″Aggregator address″length=″32″format=″ipv4_address″/
field name=″network_layer_reachability″fullName=″Network layer reachability″select=″ipv4_address_prefix ipv6_mp_nlri″default=″ipv4_address_prefix″/
field name=″ipv6_mp_nlri″fullName=″IPv6 Multi Protocol Network Layer Reachability Information″instance=″primary″sequence=″mpr_attr_type mp_attr_len ipv6_afi unicast_safinext_hop_len next_hop num_snpas nlri_per_update ipv6_nlri″/
field name=″mpr_attr_type″fullName=″Attribute Type″length=″8″value=″14″format=″integer″/
field name=″mp_attr_len″fullName=″Attribute Length″
length=″8″value=″0″format=″integer″/
field name=″ipv6_afi″fullName=″Address Family Indicator″shortName=″AFI″length=″8″value=″2″format=″integer″/
field name=″.unicast_safi″shortName=″SAFI″length=″8″value=″1″format=″integer″/
field name=″next_hop_len″fullName=″Next Hop Length″length=″8″value=″128″format=″integer″/
field name=″next_hop″fullName=″Next Hop Address″length=″128″value=″0″format=″ipv6_address″/
field name=″num_snpas″fullName=″Number of SNPA′s″length=″8″value=″0″format=″integer″/.
field name=″nlri_per_update″fullName=″Max Number of NLRI′s for each Update Message″length=″16″value=″500″instance=″FSM_variable″format=″integer″/
field name=″ipv6_nlri″fullName=″IPv6 Network layer Reachability Information″instance=″FSM_repeat″sequence=″ipv6_prefix_len ipv6_prefix″/
field name=″ipv6_prefix_len″fullName=″IPv6 Prefix Length″length=″8″value=″96″format=″integer″/
field name=″ipv6_prefix″fullName=″IPv6 Prefix Length″length=″128″value=″0″format=″ipv6_address″//protocol!-- ===================================================================== --/ProtocolSet
為了創建新的協議仿真,應用208n檢索所請求的(多個)消息描述205n,並且將它們加載到協議參考模型214中。參考模型214一般包括例如對象的數據結構,其描述包含在所有選擇的協議消息描述215n中的欄位。可以通過使用例如expat的不受版權限制的XML解析器解析每個協議消息描述215n來構建模型。一旦建立了協議參考模型214,就可以實例化其實例216n,並用用戶指定的值和指令來填充它。
為了編輯由實例216n所存儲的值,將實例216n傳遞到GUI 206。或者,GUI 206可以請求實例216n的例示。無論如何,GUI 206基於所選擇的協議參考模型214、協議消息描述215n或實例216n中的欄位形成圖形顯示。在或許是優選的實施方式中,GUI 206構建並生成模仿由協議消息描述215所表示的嵌套數據結構的樹。
圖3是根據本發明實施方式構建的圖形用戶界面206的屏幕快照。為了生成例如圖3所示的顯示,分析例如協議參考模型214的內容來識別用於顯示的欄位及其格式。在圖3的示例中,創建並用條目或顯示欄位來填充層次數據結構,其中每個欄位是樹中的節點。作為結果的樹結構然後以方便的層次顯示呈現,其中基於數據節點的描述符將數據節點格式化。
在圖3所示的示例中,準許用戶基於協議消息描述215n(或者更合適的是實例216n)的內容,調整所顯示的欄位的某些屬性,包括開始值、結束值、計數以及使得可以進行逐欄位控制的步長。例如,可以添加屬性來指出欄位的值是固定的(或者依賴於另一個欄位)。一旦用戶檢查節點並調整對其可用的節點,圖形用戶界面206就將調整後的實例216n傳遞迴應用208n。應用208n然後基於調整後的實例216n,構建模板212n。
模板212是與創建協議消息有關的對協議有限狀態機210的一組指令。模板212使用二進位(或者十六進位)格式可能是有益的,以便符合當前由協議有限狀態機210使用的硬編碼指令。這樣,當前的協議有限狀態機幾乎不需要修改來與模板212互動。參考圖2,圖形用戶界面206或應用208n可以構建來充當協議消息描述215的編譯器。模板212一般具有如表2所示的三段表2

模板212一般包括非重複數據的第一部分(稱作公用部分),以及重複部分的第二部分(稱作重複部分),該第二部分具有不同值的數據,所述數據類似地被格式化。每個模板212n代表基本消息描述,從其可以創建許多消息。每個模板212n具有公用部分,並且可以具有重複部分。公用部分可以具有在整個所生成的消息序列上變化的欄位。公用部分一般代表消息頭部和用於拓撲數據的公用屬性。在BGP中,更新消息的公用部分可以包括消息頭部和路徑屬性。重複部分描述一組欄位,在單個消息內其將被重複數次。重複欄位的一個或多個可以以所定義的方式隨每次重複而變化。重複部分一般代表網絡拓撲數據。在BGP中,重複部分可以包括將要被通告的數以千計的網絡前綴。
轉回來參考圖2,將每個實例216存儲為協議元素的向量。通過對向量的字節字符串進行編碼可以形成模板212。通過將下述二進位值連接可以對字節字符串編碼,即協議元素向量中的每個使能欄位的二進位值。可以證明將向量表示和編碼後的表示都存儲是有益的。在這種情形中,當GUI 206通過操作向量內的元素(例如,改變的值、使能的欄位或者禁用的欄位)更新實例216時,對應的字節字符串就被更新。可以將欄位變址數應用到向量內的任何元素;欄位變址數可以相對於字節字符串編碼為偏移、欄位寬度、開始值、遞增和計數。模板212一般包括伴隨編碼字節字符串的一組欄位變址數。
使用標記(或其他數據結構)來指示模板是否將在任何會話期間使用是可以實現的可選特性。因此,如果為任何給定的模板212n設置所述標記,則協議有限狀態機210使用模板212n來生成消息。所述標記可以是模板的一部分或者保存在其他地方,例如作為寄存器或表的一部分。
在運行期間,協議有限狀態機210會執行初始握手操作。在適當的時刻,協議有限狀態機210將訪問可用的模板(如果想要標記選項,則限於那些具有ON標記的模板),並基於該模板開始構建消息。
協議消息描述215也適於用作過濾器。例如系統200的協議仿真系統的用戶一般需要檢查傳輸到該系統的流量。然而,這種流量的數量趨向非常大,使得在流量中挑選感興趣的消息或者消息中感興趣的部分可能是棘手的。使用協議消息描述215的一種好處是它們形成極好的過濾器定義的基礎,所述過濾器定義可以被應用到進入消息流來識別感興趣的消息或者消息中感興趣的部分。
根據本發明的實施方式,協議消息描述215用來形成過濾器217。為了構建過濾器,可以使用各種方法。在或許是優選的實施方式中,將所選擇的協議消息描述215n加載到協議參考模型214中,並且經由GUI 206呈現給用戶以修改。用戶根據將要被過濾的消息為每個可用的欄位提供值。可以將這種值指定為或者將消息(例如將要存儲的消息)濾入、或者將消息(例如將要丟棄的消息)濾出。如果消息被濾入,則可以創建過濾器217來識別要存儲的消息的多個部分(或者「片斷」)。和模板212的情形一樣,GUI 206和/或應用208n基於所提供的數據(與協議消息描述215一起)創建過濾器217n,並將過濾器217n傳輸到協議仿真器204以存儲。可以使用任何可用的過濾算法,以使得過濾器216的實際結構可以依賴於協議仿真器的實現和所選擇的過濾算法而變化。
在運行期間,將過濾器216應用到協議有限狀態機210的進入數據。將濾入的消息或者消息片斷存儲在片斷捕捉資料庫218中。片斷捕捉資料庫218對於協議仿真器204可以是遠程的或者本地的。
片段捕捉資料庫218將捕捉到的數據以機器可讀格式存儲為一串捕捉的記錄。資料庫218可以只包含具有關聯的片斷類型描述符的單個片斷類型或者多種片斷類型。為了以人可讀的形式呈現片斷,應用208n使用協議參考模型214來將片斷的二進位數據解碼成一組欄位描述、值和格式化規則。GUI 206以圖形的形式將片斷的內容呈現給用戶。或者可以構建應用編程接口(「api」)來允許從任何應用訪問資料庫218。
例如,使用協議消息描述215幫助擴展所定義的協議仿真。表3表示在表2中定義的欄位定義,其具有用於多播Ipv6的擴展。
表3?xml version=″1.0″standalone=″yes″?ProtocolSet xmlns=″x-schemaAgtPduSchema.xml″version=″1″providedBy=″Agilent Technologies″!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --!-- 通用PDU建立者--!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --!-- 文件類型協議定義 --!-- 內容BGP4更新消息 --!-- 版權,2004安捷倫科技 --!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --!-- 版本歷史 --!-- 0.12004年5月-原型 --!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --!-- ===================================================================== --protocol name=″BGP4 Update″shortName=″BGP4 Update Message″fullName=″Border Gateway Protocol Version 4 Update Message″instance=″primary″standard=″RFC 1771″sequence=″header path_attributes network_layer_reachability″
field name=″header″fullName=″Header″instence=″primary″sequence=″marker length update_type no_withdrawn_routes″.
field name=″marker″fullName=″Marker″length=″128″value=″0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF″format=″hex″/
field name=″length″fullName=″Length″length=″16″format=″integer″/
field name=″update_type″fullName=″Message type″length=″8″format=″integer″value=″2″/
field name=″no_withdrawn_routes″fullName=″Unfeasible routes length″length=″16″value=″0″format=″integer″/
field name=″ipv4_address_prefix″fullName=″IP address prefix″instance=″repeat″pad=″octet″sequence=″prefix_length prefix″/
field name=″prefix_length″fullName=″Prefix length(bits)″length=″8″format=″integer″/
field name=″prefix″fullName=″Prefix″lengthRef=″prefix_length″lengthMultiplier=″1″defaultLength=″24″format=″hex″/
field name=″path_attributes″.
fullName=″PATH attributes″select=″no_path_attributes has_path_attributes″default=″no_path_attributes″/
field name=″no_path_attributes″fullName=″Total PATH attribute length″length=″16″value=″0″format=″integer″/
field name=″has_path_attributes″fullName=″PATH attributes″sequence=″total_path_attribute_length path_attribute_data″/
field name=″total_path_attribute_length″fullName=″Total PATH attribute length″length=″16″format=″integer″/
field name=″path_attribute_data″fullName=″PATH attributes″lengthRef=″total_path_attribute_length″lengthMultiplier=″8″sequence=″path_attribute″/
field name=″path_attribute″fullName=″PATH attribute″instance=″repeat″sequence=″attr_flags attr_type attr_length attr_value″/
field name=″attr_flags″fullName=″Attribute flags″format=″binary″length=″8″flags=″Optional Transitive Partial Extended_Length Null Null NullNull″/
field name=″attr_type″fullName=″Attribute type code″format=″integer″length=″8″
enum value=″1″name=″ORIGIN″/
enum value=″2″name=″AS PATH″/
enum value=″3″name=″NEXT HOP″/
enum value=″4″name=″MULTI EXIT DISC″/
enum value=″5″name=″LOCAL PREF″/
enum value=″6″name=″ATOMIC AGGREGATE″/
enum value=″7″name=″AGGREGATOR″/
enum value=″14″name=″MP_REACH_NLRI″/
enum value=″15″name=″MP_UNREACH_NLRI″/
/field
field name=″attr_length″fullName=″Attribute length″select=″normal_length extended_length″default=″normal_length″/
field name=″normal_length″fullName=″Attribute length(1 byte)″length=″8″format=″integer″/
field name=″extended_length″fullName=″Attribute length(2 bytes)″length=″16″format=″integer″/
field name=″attr_value″fullName=″Attribute data″lengthRef=″attr_length″lengthMultiplier=″8″select=″origin as_path next_hop multi_exit_disc local_prefatomic_aggregate aggregator″default=″as_path″/
field name=″origin″fullName=″ORIGIN value″selectRef=″attr_type″selectValue=″1″length=″8″format=″integer″
enum value=″0″name=″IGP″/
enum value=″1″name=″EGP″/
enum value=″2″name=″INCOMPLETE″/
/field
field name=″as_path″fullName=″AS PATH″selectRef=″attr_type″selectValue=″2″sequence=″path_segment″/
field name=″path_segment″fullName=″Path segment″instance=″repeat″sequence=″ps_type ps_length ps_value″/
field name=″ps_type″fullName=″Path segment type″length=″8″format=″integer″
enum value=″1″name=″AS_SET″/
enum value=″2″name=″AS_SEQUENCE″/
/field
field name=″ps_length″fullName=″Path segment AS count″
length=″8″format=″integer″/
field name=″ps_value″fullName=″Path segment AS list″lengthRef=″ps_length″lengthMultiplier=″16″sequence=″ps_as″/
field name=″ps_as″fullName=″Path segment AS″length=″16″instance=″repeat″format=″integer″/
field name=″next_hop″fullName=″NEXT HOP″selectRef=″attr_type″selectValue=″3″length=″32″format=″ipv4_address″/
field name=″multi_exit_disc″fullName=″MULTI EXIT DISC″selectRef=″attr_type″selectValue=″4″length=″32″format=″integer″/
field name=″local_pref″fullName=″LOCAL PREF″selectRef=″attr_type″selectValue=″5″length=″32″format=″integer″/
field name=″atomic_aggregate″fullName=″ATOMIC AGGREGATE″selectRef=″attr_type″selectValue=″6″length=″0″format=″integer″/
field name=″aggregator″fullName=″AGGREGATOR″selectRef=″attr_type″selectValue=″7″sequence=″aggregator_as aggregator_address″/
field name=″aggregator_as″fullName=″Aggregator AS″length=″16″format=″integer″/
field name=″aggregator_address″fullName=″Aggregator address″length=″32″format=″ipv4_address″/
field name=″network_layer_reachability″fullName=″Network layer reachability″select=″ipv4_address_prefix ipv6_mp_nlri″default=″ipv4 address prefix″/
field name=″ipv6_mp_nlri″fullName=″IPv6 Multi Protocol Network Layer Reachability Information″instance=″primary″sequence=″mpr_attr_type mp_attr_len ipv6_afi unicast_safinext_hop_len next_hop num_snpas nlri_per_update ipv6_nlri″/
field name=″mpr_attr_type″fullName=″Attribute Type″length=″8″value=″14″format=″integer″/
field name=″mp_attr_len″fullName=″Attribute Length″length=″8″value=″0″format=″integer″/
field name=″ipv6_afi″fullName=″Address Family Indicator″shortName=″AFI″length=″8″value=″2″format=″integer″/
field name=″unicast_safi″shortName=″SAFI″length=″8″value=″1″format=″integer″/
field name=″next_hop_len″fullName=″Next Hop Length″length=″8″value=″128″format=″integer″/
field name=″next_hop″fullName=″Next Hop Address″length=″128″value=″0″format=″ipv6_address″/
field name=″num_snpas″fullName=″Number of SNPA′s″length=″8″value=″0″format=″integer″/
field name=″nlri_per_update″fullName=″Max Number of NLRI′s for each Update Message″length=″16″value=″500″instance=″FSM_variable″format=″integer″/
field name=″ipv6_nlri″fullName=″IPv6 Network layer Reachability Information″instance=″FSM_repeat″sequence=″ipv6_prefix_len ipv6_prefix″/
field name=″ipv6 prefix len″
fullName=″IPv6 Prefix Length″length=″8″value=″96″format=″integer″/
field name=″ipv6_prefix″fullName=″IPv6 Prefix Length″length=″128″value=″0″format=″ipv6_address″/
field name=″ipv6_mulitcast_mp_nlri″fullName=″IPv6 Multicast Multi Protocol Network Layer ReachabilityInformation″instance=″primary″sequence=″mpr_attr_type mp_attr_len ipv6_afi multicast_safinext_hop_len next_hop num_snpas nlri_per_update ipv6_nlri″//protocol!-- ===================================================================== --/ProtocolSet
儘管已經圖示並描述了本發明的某些實施方式,但是本領域的技術人員將會理解,在不背離本發明的原則和精神的情況下,可以對這些實施方式作出改變,所述發明的範圍在權利要求和它們的等同物中定義。
由於可以將GUI 206編程來基於協議消息定義215動態地創建圖形顯示,所以不需要額外的編程來創建到新定義的協議消息描述215n的用戶接口。此外,假設在新協議消息描述215n定義的任何複製操作已在將協議消息描述215轉換到模板212的軟體中定義,則在協議有限狀態機210內不需要採用新的編碼。
權利要求
1.一種協議仿真系統,包括至少一個描述,其用通用格式描述協議消息中的欄位;應用,其將所述至少一個描述轉變成機器可讀模板;和協議有限狀態機,其基於所述模板創建協議消息。
2.如權利要求1所述的協議仿真系統,其中,所述通用格式包括可擴展標記語言。
3.如權利要求1所述的協議仿真系統,其中,在與路由器的握手過程中使用所述協議消息。
4.如權利要求1所述的協議仿真系統,其中,所述至少一個描述包括多個描述。
5.如權利要求1所述的協議仿真系統,其中,所述應用將所述至少一個描述轉變成參考模型。
6.如權利要求5所述的協議仿真系統,還包括圖形用戶界面,其將所述描述的圖形表示呈現給用戶,並接收對包含在所述描述中的值的修改,並且其中所述應用將所述參考模型實例化,並用從所述圖形用戶界面接收到的值填充所述實例。
7.如權利要求6所述的協議仿真系統,其中,所述應用將所述實例轉變成機器可讀模板。
8.如權利要求1所述的協議仿真系統,其中,所述模板是十六進位編碼的。
9.如權利要求1所述的協議仿真系統,還包括將所述描述轉變成過濾器的應用,並且其中所述過濾器用來對由所述協議仿真系統接收到的多個消息進行過濾。
10.一種用於控制協議仿真器的方法,所述方法包括創建用於控制所述協議仿真器的數據的結構的描述,用對於多種協議通用的語言形成所述描述;使用所述描述創建所述數據結構的參考模型;用至少某些用戶提供的數據創建所述參考模型的實例;使用所述實例來創建模板,所述協議仿真器響應於所述模板,以創建協議消息;以及將所述模板傳送到所述協議仿真器。
11.如權利要求10所述的方法,其中,所述創建描述的步驟包括創建描述所述數據的結構的可擴展標記語言文件。
12.如權利要求10所述的方法,其中,所述描述包括關於如何在協議消息的多個拷貝之間改變至少一個值的指令。
13.如權利要求10所述的方法,其中,所述描述包括基於所述描述內的其他值的值。
14.如權利要求10所述的方法,其中,所述準備描述的步驟包括以層次方式描述所述數據。
15.如權利要求10所述的方法,其中,所述準備所述數據的結構的描述的步驟包括定義用於保持值的欄位、其他欄位、或欄位的屬性。
16.如權利要求15所述的方法,其中,所述屬性包括欄位的全名、欄位的長度、欄位的呈現格式、排序指令和元素的可能值的範圍。
17.如權利要求10所述的方法,還包括基於所述描述創建過濾器;和使用所述過濾器來對由所述協議仿真系統接收到的多個消息進行過濾。
18.一種控制協議仿真器的方法,所述方法包括創建由所述協議仿真器使用的至少一個消息的可擴展標記語言描述;將所述描述的圖形顯示呈現給用戶;準許所述用戶調整所述描述的多個欄位中的值;和基於所述描述和由所述用戶調整的所述值,創建用於控制協議有限狀態機的模板。
19.如權利要求18所述的方法,還包括準許所述用戶指定至少一個欄位如何在消息序列中的消息之間變化;和將關於所述至少一個欄位如何在消息之間變化的指令包括在所述模板中。
20.如權利要求18所述的方法,還包括準許所述用戶在所述描述的多個欄位中設置過濾器值;基於所述描述和由所述用戶設置的過濾器值創建過濾器;和使用所述過濾器對由所述協議仿真系統接收到的多個消息進行過濾。
全文摘要
本發明公開了一種協議仿真系統,其至少包括一個用通用格式描述協議消息中的欄位的描述。應用將所述至少一個描述轉變成機器可讀的模板,所述模板可由基於所述模板創建協議消息的協議有限狀態機使用。
文檔編號H04L29/12GK1708017SQ20051005579
公開日2005年12月14日 申請日期2005年3月21日 優先權日2004年6月4日
發明者卡裡·賴特 申請人:安捷倫科技有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀