TWI840844B - 使用部分訊息解析之路由 - Google Patents
使用部分訊息解析之路由 Download PDFInfo
- Publication number
- TWI840844B TWI840844B TW111122970A TW111122970A TWI840844B TW I840844 B TWI840844 B TW I840844B TW 111122970 A TW111122970 A TW 111122970A TW 111122970 A TW111122970 A TW 111122970A TW I840844 B TWI840844 B TW I840844B
- Authority
- TW
- Taiwan
- Prior art keywords
- message
- field
- envelope
- identifier
- candidate
- Prior art date
Links
- 238000000034 method Methods 0.000 claims description 41
- 239000000872 buffer Substances 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 13
- 238000013500 data storage Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 8
- 230000009471 action Effects 0.000 description 7
- 238000013481 data capture Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000009466 transformation Effects 0.000 description 5
- 239000012634 fragment Substances 0.000 description 4
- 238000010295 mobile communication Methods 0.000 description 3
- 101001121408 Homo sapiens L-amino-acid oxidase Proteins 0.000 description 2
- 102100026388 L-amino-acid oxidase Human genes 0.000 description 2
- 101100012902 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) FIG2 gene Proteins 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000000047 product Substances 0.000 description 2
- 101100233916 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) KAR5 gene Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/302—Route determination based on requested QoS
- H04L45/306—Route determination based on the nature of the carried application
- H04L45/3065—Route determination based on the nature of the carried application for real time traffic
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一種訊息路由器部分解碼訊息以判定如何路由該等訊息。該訊息路由器接收一訊息並將該訊息之一欄位識別為用於包含指示該訊息之一包絡類型之一包絡識別符之一候選欄位。該訊息之該包絡類型指示資訊(諸如將該訊息路由至何處)儲存於該訊息內之位置。該訊息路由器嘗試解碼該候選欄位以判定該候選欄位是否包含該包絡識別符,且回應於該候選欄位包含該包絡識別符,該訊息路由器判定該訊息之該包絡類型。該訊息路由器根據該包絡類型路由該訊息。
Description
本發明大體上係關於訊息路由,且特定言之係關於在電腦網路中解碼及路由訊息之方法。
電腦網路係交換資料之互連計算裝置組,諸如網際網路。可為包含擴增實境應用程式之許多應用程式進行包含資料之訊息交換,其中能夠正確路由訊息以維持一應用程式之一狀態。然而,不同訊息可具有不同格式,其導致路由資訊位於訊息內之不同位置。完全解碼一訊息以識別類型及路由資料需要大量處理時間,在資料流中引入延遲,其可損害應用程式之效能。
擴增實境(AR)系統用電腦產生之內容補充真實世界之視圖。將AR併入至一平行實境遊戲可改良真實世界與虛擬世界之間的整合。AR亦可藉由為其等提供參與其等互動之共用遊戲體驗之機會來增加玩家之間的互動性。例如,在一坦克戰遊戲中,玩家可在一真實世界位置周圍導航虛擬坦克,試圖摧毀彼此之坦克。坦克之移動可受到真實世界地理之限制(例如,坦克在河流中移動得更慢,在道路上移動得更快,不能穿過牆壁等等)。
現有AR會話技術可使用無法判定如何路由所有類型之訊息之訊息路由器。例如,一些訊息(諸如協議緩衝區)不包含描述訊息類型之元資料,哪些訊息路由器需要判定如何路由訊息。若一訊息路由器嘗試對一訊息進行完全解碼以進行路由,則該訊息路由器可花費大量時間來解碼該訊息,增加該AR會話之延遲且導致該AR會話中連接之使用者出現一明顯延遲。在經由一網路依多種格式發送訊息之其他用例中亦存在類似問題。
此及其他問題可藉由在一訊息路由器之路由期間部分解碼訊息來解決。可藉由僅解碼該等訊息之必要部分以判定如何正確路由該等訊息來減少延遲。此不僅有利於將訊息路由至正確接收者,而且有利於維持該訊息路由器處之向後相容性。
在一個實施例中,一種用於在一網路中路由一訊息之方法包含在一訊息路由器(諸如一行動通信基地臺、中間節點或其他網路連接)處接收一訊息。該訊息可包含一包絡及一有效負載中之一或多個欄位。該訊息路由器將該訊息之一欄位識別為一候選欄位用於包含指示該訊息之一包絡類型之一包絡識別符。該訊息路由器嘗試解碼該欄位以判定該欄位是否包含該包絡識別符。若該訊息路由器無法判定一包絡類型或識別一候選欄位,則該訊息路由器循序檢查該訊息之欄位以識別該包絡識別符。若該欄位包含該包絡識別符,則該訊息路由器判定該訊息之該包絡類型,其指示如何路由該訊息,且該訊息路由器根據該包絡類型路由該訊息。
使用所描述之方法路由訊息之一個優點係該訊息路由器可將訊息包絡改型成現有協議緩衝區。因此,即使具有該訊息包絡之該訊息沒有設計成可由此一方法路由之一協議,該訊息路由器亦可將訊息包絡添加至此等訊息,以便該訊息路由器可採用該方法用於路由。
相關申請案之交叉參考
本申請案主張2021年6月21日申請之美國臨時申請案第63/213,088號之權利,該案以引用的方式併入。
附圖及以下描述僅藉由圖解說明來描述特定實施例。熟習此項技術者將自以下描述容易地認識到,可採用結構及方法之替代實施例而不背離所描述之原理。現將參考若干實施例,其實例在附圖中繪示。在可行情況下,在圖中使用類似或相似元件符號來指示類似或相似功能。當元件共用一共同數字後跟一不同字母時,該等元件係類似或相同。單獨數字係指此等元件之任何一者或任何組合。
實例計算環境
圖1繪示根據一個實施例之一訊息路由器130之一環境100 (本文中亦指稱一電腦網路)。為清楚起見,圖使用方塊圖繪示一簡化實例。環境100包含兩個客戶端110A及110B、一伺服器120及一訊息路由器130。在其他實施例中,環境100可包含更少、額外或其他組件,諸如額外客戶端110、伺服器120、訊息路由器130、或其他網路節點。例如,儘管訊息路由器130展示為在一行動通信基地臺處,但環境100可為使用一或多個WiFi路由器作為訊息路由器130等等之一局域網(LAN)。在另一實例中,伺服器120可為託管一平行實境遊戲之一遊戲伺服器。當玩家與平行實境遊戲之其他玩家互動時,客戶端110可與遊戲伺服器120通信且在平行實境遊戲期間彼此通信。
一客戶端110係一計算裝置,諸如一個人電腦、膝上型電腦、平板電腦、智慧型電話等等。客戶端110可經由訊息路由器130通信訊息。伺服器120類似地係能夠發送及接收訊息之一計算裝置。客戶端110及伺服器120可彼此發送訊息。在一實施例中,各客戶端110包含一本地AR模組,且伺服器120包含一主AR模組。各本地AR模組將AR資料通信至其他客戶端110上之本地AR模組或伺服器120上之主AR模組。
伺服器120可為在客戶端110之間建立連接以接收及傳輸資訊之一計算裝置。例如,伺服器120可接收及傳輸經由訊息路由器130路由之訊息。在一些實施例中,伺服器120係託管由各種客戶端110玩之一平行實境遊戲之一遊戲伺服器。遊戲伺服器120可儲存玩家檔案、遊戲狀態、地圖(真實及虛擬)及與平行實境遊戲相關之其他資訊。
訊息路由器130係用作諸如客戶端110及伺服器120之端節點之一中間節點之一網路節點。如上文所描述,在其他實施例中,環境100可包含替代一訊息路由器130或除一訊息路由器130之外,但能夠實現類似訊息之路由之其他網路節點。訊息路由器130增加可通信訊息之範圍。例如,一客戶端110A可向一訊息路由器130發送一訊息,該訊息路由器130繼續將訊息傳輸至一客戶端110B,其中客戶端110A在沒有訊息路由器130之情況下將無法與客戶端110B通信。
在一實施例中,客戶端110通信可透過伺服器120或對等(P2P)路由。透過伺服器120路由之通信可自一第一客戶端110A經由訊息路由器130至伺服器120且接著透過訊息路由器130返回至一第二客戶端110B。相反,P2P通信可自第一客戶端110A至訊息路由器130且接著直接至第二客戶端120B。應注意,在一些情況下,通信可通過其他中間裝置(諸如信號增強器)。如本文中所使用,若一通信經路由至目標客戶端110B而不通過伺服器120,則此通信被認為係P2P。例如,若目標客戶端110B連接至與發送客戶端110A且依其他方式經由伺服器120路由相同之訊息路由器130,則可發送一訊息P2P。在另一實施例中,客戶端110完全使用P2P通信。
在一個實施例中,客戶端110使用一協調服務(例如,託管在伺服器120處且經由傳輸控制協議{TCP}通信)來同步IP位址。接著客戶端110可使用面向公眾IP位址或一局域網(LAN)通信(例如,經由使用者資料包協議{UDP})。例如,一第一客戶端110A可經由TCP向協調服務發送一請求以加入一本地AR共用環境。協調服務可向第一客戶端110A提供連接至AR環境之一第二客戶端110B之IP位址(例如,經由相同訊息路由器130)。協調服務亦可向第二客戶端110B提供第一客戶端之IP位址或第一客戶端110A可直接使用第二客戶端之IP位址來提供其(如由協調服務提供)。在一些實施例中,協調服務可在提供第二客戶端之IP位址之前提示第二客戶端110B批准第一客戶端110A (例如,藉由請求使用者確認或檢查一批准客戶端110清單以與第二客戶端110B連接)。
圖2繪示根據一個實施例之包含一包絡210及一有效負載220之一訊息200。訊息200之包絡210包含一或多個識別符(或「ID」),各識別符儲存於包絡210之一單獨欄位中。各識別符可指示關於訊息之資訊,諸如訊息之一包絡類型或一應用程式、發送或打算接收訊息之伺服器或玩家。訊息200之包絡類型可與關於訊息200之哪些位元組對應於路由資訊之資訊相關聯,如下文進一步描述。圖2之訊息200包含一第一欄位中之一包絡ID 212、一第二欄位中之應用程式ID 214、一第三欄位中之伺服器ID 216及一第四欄位中之玩家ID 218。在一些實施例中,訊息200可包含依不同於圖2中所展示之順序之各種順序之任何數目個各種類型之識別符(例如一客戶端ID)。例如,訊息200可包含在一第一欄位中之一客戶端ID、在一第二欄位中之包絡ID 212及伺服器ID 216且根本不包含一玩家ID 218。
包絡識別符212可指示訊息200之包絡類型,因此可與關於訊息200之欄位中之哪些位元組對應於路由資訊之資訊相關聯。例如,此資訊可儲存於一索引或資料儲存中,訊息路由器130可查詢該索引或資料儲存以擷取資訊以存取路由資訊。包絡識別符212在一長度分隔欄位中。一長度分隔欄位包含在欄位開頭之指示欄位之一長度之一值。因此,藉由判定訊息200之一欄位是否係長度分隔,訊息路由器130判定該欄位是否可為用於包含與路由資訊相關聯之一包絡識別符212之一候選者。若一欄位沒有長度分隔,則訊息路由器130可判定其不包含包絡識別符212。
在一個實施例中,訊息路由器130自客戶端110A、客戶端110B或伺服器120接收訊息200,且判定如何路由各訊息200。例如,訊息路由器130將訊息200之一欄位識別為用於包含指示包絡類型之一包絡識別符212之一候選者。訊息路由器130可評估訊息200之一第一欄位以判定該欄位是否係長度分隔。訊息路由器130可依一循序順序自第一欄位評估訊息200之一或多個欄位。訊息路由器130可在判定第一欄位沒有長度分隔時將第一欄位寫入至一內部轉發緩衝區且評估訊息200之下一個欄位。訊息路由器130可在檢查該欄位是否係長度分隔、將檢查欄位發送至轉發緩衝區並評估下一個欄位時迭代,直至訊息路由器130在訊息200內找到一長度分隔欄位。
回應於判定第一欄位(或迭代之後之一隨後欄位)係長度分隔,訊息路由器130選擇該欄位作為一候選欄位。訊息路由器130嘗試解碼該欄位以判定該欄位是否包含一包絡識別符212。若訊息路由器130不能將該欄位解碼成一有效包絡識別符,則其將該欄位寫入至轉發緩衝區並處理下一個欄位(例如,藉由判定下一個欄位是否係長度分隔,且若是,是否可將其解碼為一有效包絡識別符)。若訊息路由器130判定欄位包含一有效包絡識別符212,則訊息路由器130使用包絡識別符212判定訊息200之包絡類型。訊息路由器130可使用包絡類型路由訊息200。特定言之,訊息路由器130可自由包絡類型指示之訊息200內之位置提取路由資訊,將訊息之剩餘者寫入至轉發緩衝區,且使用路由資訊將一些或全部訊息轉發至環境100中之一目的地。例如,訊息路由器130可轉發整個訊息200,僅轉發有效負載220,或訊息中欄位之一些其他子集。下文進一步關於圖4描述此程序。
實例中間節點
圖3係繪示一訊息路由器130之一個實施例之一方塊圖。在所展示之實施例中,訊息路由器130包含一路由模組310、一資料攝取模組320、一AR環境模組330、一地圖處理模組340、一權限檢查模組350及一本地資料儲存360。訊息路由器130亦包含用於建立與伺服器120及客戶端110之連接用於交換資料之硬體及韌體或軟體(未展示)。例如,訊息路由器130可經由一光纖或其他有線網際網路連接連接至伺服器120,且使用一無線連接(例如4G或5G)連接至客戶端110。在其他實施例中,訊息路由器130可包含不同或額外組件。另外,功能可依不同於所描述之一方式分佈在元件之間。
路由模組310接收訊息200且將彼等訊息發送至一或多個接收裝置(例如客戶端110及伺服器120)。在一個實施例中,路由模組310自客戶端110接收訊息200且使用參考圖4描述之方法以判定將所接收之訊息發送至何處。路由模組310亦可自伺服器120接收定址至特定客戶端110或連接至訊息路由器130之所有客戶端110之訊息。路由模組310將訊息200轉發至其等經定址之客戶端110或伺服器120,路由模組310可自玩家ID 218、伺服器ID 216或客戶端ID識別。
資料攝取模組320自一或多個源接收資料,訊息路由器130使用該資料經由所連接之客戶端110向玩家提供一共用AR體驗。在一個實施例中,資料攝取模組320接收關於真實世界條件之即時或實質上即時資訊(例如來自第三方服務)。例如,資料攝取模組320可週期性地(例如每小時)接收來自一天氣服務之天氣資料,該天氣資料指示圍繞訊息路由器130之地理區域中之天氣狀況。作為另一實例,資料攝取模組320可擷取一公園、博物館或其他公共場所之營業時間。作為另一實例,資料攝取模組320可接收指示有多少車輛正在圍繞訊息路由器130之地理區域中之道路上行駛之交通資料。關於真實世界條件之此資訊可用於提高虛擬世界與虛擬世界之間的協同作用。
AR環境模組330管理AR環境,其中圍繞訊息路由器130之地理區域中之玩家可參與共用AR體驗。在一個實施例中,一客戶端110在執行一AR遊戲時連接至訊息路由器130且AR環境模組330將客戶端連接至用於遊戲之一AR環境。連接至訊息路由器130之所有遊戲玩家可共用一單一AR環境或玩家可經劃分在多個AR環境中。例如,在一特定AR環境中可有一最大數目個玩家(例如,十個、二十個、一百個等等)。在存在多個AR環境之情況下,新連接客戶端110可隨機放置在一會話中或客戶端可提供一使用者介面(UI)以使玩家能夠選擇加入哪個會話。因此,一玩家可選擇與朋友一起參與一AR環境。在一些實施例中,玩家可建立訪問受保護之私人AR環境(例如需要一密碼或碼才能加入)。
在各種實施例中,為了使AR物體(例如,生物、車輛等等)看起來與真實世界特徵互動(例如,跳過障礙物而非穿過其等),AR環境模組330提供連接之客戶端110,其地圖資料表示客戶端附近之真實世界(例如,儲存於本地資料儲存360中)。AR環境模組330可接收一客戶端110之位置資料(例如一GPS位置)並提供圍繞客戶端之地理區域之地圖資料(例如在客戶端之當前位置之一臨限值距離內)。
所接收之地圖資料可包含真實世界之一或多個表示。例如,地圖資料可包含一點雲模型、一平面匹配模型、一線匹配模型、一地理資訊系統(GIS)模型、一建築物識別模型、一景觀識別模型等等。地圖資料亦可包含一給定類型在不同細節層次上之一個以上表示。例如,地圖資料可包含兩個或更多個點雲模型,各點雲模型包含不同數目個點。
客戶端110可將地圖資料與由一或多個感測器收集之資料進行比較以細化客戶端之位置。例如,藉由將由客戶端110上之一相機捕獲之影像映射至一點雲模型,可準確地判定客戶端之位置及定向(例如,在1釐米及0.1度內)。客戶端110將判定之位置及定向連同由玩家採取之任何動作(例如,射擊、選擇將與其互動之一虛擬物品、放下虛擬物品等等)一起提供回至AR環境模組330。因此,AR環境模組330可為參與AR環境之所有玩家更新遊戲狀態。
地圖處理模組340基於當前條件(例如,來自資料攝取模組320之資料)更新地圖資料。因為真實世界並非靜態,本地資料儲存360中之地圖資料可不表示當前真實世界條件。例如,佛蒙特州之相同公園小徑在不同季節可看起來非常不同。在夏天,小徑可很乾淨且周圍樹木會被樹葉覆蓋。相比之下,在冬天,小徑可被積雪阻擋且樹木可光禿禿。地圖處理模組340可變換地圖資料以近似此變化。
在一個實施例中,地圖處理模組340擷取當前條件資料以識別一變換且將該變換應用於地圖資料。不同條件之轉換可由啟發式規則界定,採用經訓練機器學習模型之形式,或使用兩種方法之一組合。例如,地圖處理模組340可接收當前天氣狀況資料,為當前天氣狀況選擇一變換,且將該變換應用於地圖資料。替代地,地圖處理模組340可預計算變換之地圖並儲存其等(例如,在本地資料儲存360中)。在此情況下,當一客戶端110連接至訊息路由器130時,地圖處理模組判定當前條件,選擇適當預計算地圖資料版本,且將該版本提供給客戶端。
權限檢查模組350維持不同客戶端110之遊戲狀態之間的同步。在一個實施例中,權限檢查模組350確認自客戶端110接收之遊戲動作與由AR環境模組330維持之遊戲狀態一致。例如,若兩個玩家兩者試圖拿起相同遊戲內物品,則權限檢查模組350判定哪個玩家接收物品(例如,基於與請求相關聯之時戳)。
權限檢查模組350亦可在其AR環境之狀態(一中間節點狀態)複本與由伺服器120維持之一主控狀態之間維持同步。在一個實施例中,權限檢查模組350週期性地(例如,每1至10秒)自伺服器120接收關於AR環境之狀態之全域更新。權限檢查模組350將此等更新與中間節點狀態進行比較並解決任何差異。例如,若一玩家拾取一物品之請求最初由權限檢查模組350批准,但來自伺服器120之一遊戲更新指示該物品在玩家試圖拾取之前由另一玩家拾取(或依其他方式變得不可用),權限檢查模組350可向玩家之客戶端110發送一更新,指示該項目應自玩家之庫存移除。
此程序可為位於由不同訊息路由器130提供之涵蓋之間的一邊界附近之客戶端110提供值。在此情況下,連接至不同訊息路由器130之玩家可兩者能夠與相同虛擬元素互動。因此,各個別訊息路由器130最初可批准與元素之衝突互動,但伺服器120將偵測衝突並發送更新以解決衝突(例如,指示訊息路由器130之一者撤銷其對動作之初始批准並相應地更新其本地狀態)。
本地資料儲存360係經組態以儲存由訊息路由器130使用之資料之一或多個非暫時性電腦可讀媒體。在一個實施例中,儲存資料可包含地圖資料、當前條件資料、當前(或最近)連接之客戶端110之一清單、該地理區域之遊戲狀態之一本機複本等等。儘管本地資料儲存360展示為一單一實體,但資料可跨多個儲存媒體拆分。此外,一些資料可儲存在通信網路之其他地方並遠端存取。例如,訊息路由器130可根據需要遠端(例如,自第三方伺服器)存取當前條件資料。
實例方法
圖4繪示根據一個實施例之用於基於一包絡識別符212路由一訊息200之一程序400。一訊息路由器130接收405一訊息200,訊息200可包含一包絡210及有效負載220,各包含一或多個位元組之一或多個欄位。訊息200可描述在一共用AR環境中發生之一動作,諸如與一平行實境遊戲相關聯之動作,其中玩家在真實世界中之位置與其等在遊戲世界中之位置相關。訊息路由器130可為一中間節點,諸如一行動通信基地臺或連接在圖1之環境100中之另一網路節點。訊息200可已自一客戶端裝置110 (諸如客戶端110B)發送至訊息路由器130或另一網路節點(諸如伺服器120)。
訊息路由器130將訊息200之一欄位識別為用於包含一包絡識別符212之一候選欄位。包絡識別符212指示訊息200之哪些欄位或位元組對應於特定資訊。例如,一包絡識別符212可指示訊息200之第一欄位包含一玩家識別符218且訊息200之一第二欄位包含應用識別符214。在另一實例中,包絡識別符212可指示訊息200之包絡類型,且可用於自由包絡類型指示之訊息200內之欄位提取路由資訊。
在各種實施例中,為了識別包含包絡識別符212之欄位,訊息路由器130分析410訊息200之一或多個欄位以藉由判定415一欄位是否係長度分隔來識別一候選欄位。訊息路由器130可自開始至結束循序地一次分析410一訊息一個欄位。替代地,訊息路由器130可基於(例如)訊息200之欄位之位置、位元組數、長度等等依其他順序分析410欄位。
不管用於判定將分析哪些欄位及以何順序之精確方法,訊息路由器130均可解碼將分析之第一欄位之開始位元組以判定415第一欄位是否係長度分隔。若第一欄位係長度分隔,則訊息路由器130選擇第一欄位作為一候選欄位。相反,沒有長度分隔之一欄位不能包含包絡識別符。因此,若欄位沒有長度分隔,則訊息路由器130不選擇該欄位作為一候選欄位,而係將該欄位寫入至一轉發緩衝區而不嘗試解碼該欄位。訊息路由器接著分析410訊息200之下一個(循序)欄位以判定其是否係用於包含包絡識別符212之一候選者。例如,在將一欄位識別為用於包含包絡識別符之一候選欄位之前,訊息路由器130可判定前一個欄位(例如,在訊息200中之候選欄位之前)沒有長度分隔且將前一個欄位寫入至轉發緩衝區而不解碼前一個欄位。
訊息路由器130嘗試解碼420一候選欄位以判定欄位是否包含包絡識別符212。在一個實施例中,訊息路由器130將候選欄位中之資料與識別符之一索引進行比較以判定資料是否識別一有效訊息類型。替代地,包絡識別符212可包含一預定代碼(例如一指定字串),使得訊息路由器130可藉由判定候選欄位中之資料是否包含預定代碼來判定候選欄位是否係包絡識別符212。
不管用於判定候選欄位是否包含包絡識別符212之方法,若候選欄位不包含包絡識別符,則訊息路由器130將候選欄位寫入至轉發緩衝區並繼續分析410另一欄位(例如訊息200中之下一個欄位)來判定一新候選欄位。相反,若訊息路由器130能夠識別430候選欄位中之一包絡識別符212,則訊息路由器130接著基於包絡識別符212來判定訊息200之一包絡類型。例如,訊息路由器130可針對與包絡識別符212相關聯之一包絡類型來查詢儲存在本地資料儲存360中之一索引。包絡類型指示訊息200之包絡210之一結構,包含(例如)訊息之哪些位元組(或欄位)對應於訊息200之路由資訊。基於判定之包絡類型,訊息路由器130可獲得路由資訊。在一些實施例中,訊息路由器130可將訊息之剩餘者(例如,候選者及候選者之後之欄位)寫入至轉發緩衝區。訊息路由器130基於由包絡類型指示之路由資訊來路由440訊息200。為了路由440訊息200,訊息路由器130可自訊息200提取欄位之一子集(例如有效負載220)且僅將提取之欄位轉發至環境100中之目的地(例如,客戶端110、伺服器120等等)。
圖4中所展示之程序400可提高訊息路由器130之效能。例如,傳統訊息路由器可需要對完整訊息進行反序列化以識別路由資訊。此消耗訊息路由器130處之記憶體及處理資源且可影響訊息路由器130之效能(例如,歸因於運行時記憶體分頁或缺乏可用記憶體等等)。相反,程序400可在接收到完整訊息之前開始處理以片段傳輸之訊息。訊息路由器130可自一部分接收之訊息(一訊息片段)獲取用於訊息路由之欄位且在接收訊息之剩餘片段之前判定路由決定。即使在已接收所有片段之情況下,訊息路由器130亦可識別路由資訊而無需首先重建完整訊息。
訊息路由器130亦可修改用於依多種方式路由之訊息。在一個實施例中,訊息路由器130可自一訊息分離出兩個或更多個序列化之內部資料結構以發送至一或多個目的地。在另一實施例中,訊息路由器130可自訊息添加或移除欄位以用於路由,諸如藉由調整嵌入式應用程式程式化介面(API)密鑰或向訊息添加上下文用於追蹤訊息。在另一實施例中,訊息路由器130可改變訊息之模式。例如,若訊息之目的地係不支持多區架構之一系統,則訊息路由器130可將訊息之一發送者之一地理位置(或其他上下文資訊)添加至訊息。
程序400提供一種用於路由訊息之有利方法。訊息路由器130可將訊息包絡210改型至現有協議緩衝區中。因此,即使具有訊息包絡210之訊息220未經設計為具有可藉由此一方法路由之一協議,訊息路由器130亦可將訊息包絡210添加至此等訊息220,使得訊息路由器130可採用用於路由之方法。
圖4中之程序400可進一步關於併入至一平行實境遊戲中之一實例共用AR環境來繪示,其中玩家互相投擲光球,其他玩家即時躲避或接住該等光球。當在此實例中與客戶端110B相關聯之一發送玩家向與客戶端110A相關聯之一目標玩家投擲一光球時,客戶端110B創建描述動作(例如投擲光球)之一訊息200。該動作在玩家之間,因此客戶端110B在訊息200中指示客戶端110A之目標玩家之一玩家識別符218。客戶端110B將訊息200發送至訊息路由器130,訊息路由器130判定如何路由440訊息200。訊息路由器130循序檢查訊息200之欄位以找到一長度分隔欄位並嘗試將長度分隔欄位解碼420以識別430欄位內之一包絡識別符212。若訊息路由器130不能解碼420欄位,則訊息路由器130繼續循序檢查欄位,直至訊息路由器130找到具有包絡識別符212之一欄位為止。訊息路由器130基於包絡識別符212判定一包絡類型且基於包絡類型將訊息路由至目標玩家之客戶端110A。客戶端110A將來自訊息200之有效負載220之資料整合至共用AR環境之本地狀態中(例如,向目標玩家展示發送玩家向其等投擲光球)。藉由不完全解碼訊息200以識別訊息類型(且因此識別路由資訊),可減少延遲。
圖5係繪示根據一實施例之適合在圖1中所展示之電腦網路內使用之一實例電腦500之一高級方塊圖。實例電腦500包含耦合至一晶片組504之至少一個處理器502。晶片組504包含一記憶體控制器集線器520及一輸入/輸出(I/O)控制器集線器522。一記憶體506及一圖形適配器512耦合至記憶體控制器集線器520,且一顯示器518耦合至圖形適配器512。一儲存裝置508、鍵盤510、指向裝置514及網路適配器516耦合至I/O控制器集線器522。電腦500之其他實施例具有不同架構。
在圖5中展示之實施例中,儲存裝置508係一非暫時性電腦可讀儲存媒體,諸如一硬碟機、光碟唯讀記憶體(CD-ROM)、DVD或一固態記憶體裝置。記憶體506保存由處理器502使用之指令及資料。指向裝置514係一滑鼠、軌跡球、觸控螢幕或其他類型之指向裝置,且與鍵盤510 (其可為一螢幕上鍵盤)結合使用以將資料輸入至電腦系統500中。圖形適配器512在顯示器518上顯示影像及其他資訊。網路適配器516將電腦系統500耦合至一或多個電腦網路。
由圖1之實體使用之電腦之類型可取決於實施例及由實體所需之處理能力而不同。例如,一伺服器120可包含一分佈式資料庫系統,該分佈式資料庫系統包括一起工作以提供所描述之功能之多個刀片伺服器。此外,電腦可缺少一些上文所描述之組件,諸如鍵盤510、圖形適配器512及顯示器518。
熟習此項技術者可在不背離所描述之概念之情況下對本文中所揭示之設備及技術進行多種使用及修改以及背離。例如,本發明中所繪示或描述之組件或特徵不限於所繪示或描述之位置、設置或上下文。根據本發明之設備之實例可包含參考前述附圖之一或多者所描述之彼等之組件之全部、更少或不同組件。因此,本發明不限於本文中所描述之具體實施方案,而係被賦予與隨附申請專利範圍及其等效物一致之可行最寬範疇。
額外考量
上述實施例之描述係為了圖解說明之目的而呈現;其並非旨在詳盡無遺或將專利權限制為所揭示之精確形式。相關領域之技術者可瞭解,鑑於上述揭示內容,許多修改及變化係可行的。
本描述之一些部分鑑於演算法及對資訊之操作之符號表示來描述實施例。此等演算法描述及表示通常由資料處理技術之技術者用於將其等工作之實質有效地傳達給本技術之其他技術者。此等操作儘管在功能上、計算上或邏輯上進行描述,但被理解為由電腦程式或等效電路、微代碼或其類似者來實施。此外,在不失一般性之情況下,有時將此等操作配置稱為模組亦被證明係方便的。所描述之操作及其相關聯模組可體現在軟體、韌體、硬體或其任何組合中。
本文中所描述之步驟、操作或程序之任何者可單獨或與其他裝置組合使用一或多個硬體或軟體模組來執行或實施。在一個實施例中,用一電腦程式產品實施一軟體模組,該電腦程式產品包括含有電腦程式代碼之一電腦可讀媒體,該電腦程式代碼可由一電腦處理器執行以執行所描述之任何或所有步驟、操作或程序。
實施例亦可涉及用於執行本文中之操作之一設備。此設備可為所需目的專門構造,及/或其可包括由儲存在電腦中之一電腦程式選擇性地啟動或重新組態之一通用計算裝置。此一電腦程式可儲存在一非暫時性、有形電腦可讀儲存媒體中,或適合儲存電子指令之任何類型之媒體中,其等可耦合至一電腦系統匯流排。此外,本說明書中提及之任何計算系統可包含一單一處理器或可為採用多個處理器設計以增加計算能力之架構。
實施例亦可涉及由本文中所描述之一計算程序產生之一產品。此一產品可包括由一計算程序產生之資訊,其中資訊儲存在一非暫時性、有形電腦可讀儲存媒體上,且可包含一電腦程式產品之任何實施例或本文中所描述之其他資料組合。
如本文中所使用,對「一個實施例」或「一實施例」之任何引用意謂結合該實施例描述之特定元件、特徵、結構或特性包含於至少一個實施例中。在說明書之各個地方出現之片語「在一個實施例中」不一定全部指相同實施例。類似地,在一元件或組件之前使用「一」或「一個」僅係為了方便。此描述應被理解為意謂存在元件或組件之一或多者,除非很明顯其另有含義。
在值經描述為「近似」或「實質上」(或其衍生詞)之情況下,此等值應被解釋為準確+/-10%,除非自上下文可明顯看出另一含義。例如,「大約十」應被理解為「在自九至十一之一範圍內」。
如本文中所使用,術語「包括」、「包含」、「具有」或其任何其他變體旨在涵蓋一非排他性包含。例如,包括一元件清單之一程序、方法、物體或設備不一定僅限於彼等元件,而係可包含未明確列出或此等程序、方法、物體或設備固有之其他元件。此外,除非明確相反說明,否則「或」係指一包含性或,而非一排他性或。例如,一條件A或B滿足以下之任一者:A為真(或存在)且B為假(或不存在),A為假(或不存在)且B為真(或存在),且A及B兩者為真(或存在)。
在閱讀本發明之後,熟習此項技術者將瞭解可用於採用所描述之技術及方法之額外替代結構及功能設計。因此,儘管已繪示及描述特定實施例及應用,但應理解,所描述之標的物不限於所揭示之精確構造及組件。保護範疇應僅受以下申請專利範圍限制。
最後,說明書中使用之語言主要係出於可讀性及指導目的而選擇,且可並非為了描述或限制專利權而選擇。因此,旨在專利權之範疇不受此詳細描述之限制,而係受在基於此之一申請案上發布之任何申請專利範圍之限制。因此,實施例之揭示內容旨在繪示而非限制在隨附申請專利範圍中闡述之專利權之範疇。
100:環境
110A:客戶端
110B:客戶端
120:伺服器
130:訊息路由器
200:訊息
210:包絡
212:有效負載
214:應用程式ID
216:伺服器ID
218:玩家ID
220:有效負載
310:路由模組
320:資料攝取模組
330:AR環境模組
340:地圖處理模組
350:權限檢查模組
360:本地資料儲存
400:程序
405:接收
410:分析
415:判定
420:解碼
430:識別
440:路由
500:電腦
502:處理器
504:晶片組
506:記憶體
508:儲存裝置
510:鍵盤
512:圖形適配器
514:指向裝置
516:網路適配器
518:顯示器
520:記憶體控制器集線器
522:I/O控制器集線器
圖1繪示根據一個實施例之一訊息路由器之一環境。
圖2繪示根據一個實施例之包含一包絡及一有效負載之一訊息。
圖3係繪示根據一個實施例之圖1之訊息路由器之一方塊圖。
圖4繪示根據一個實施例之用於基於一包絡識別符來路由一訊息之一程序。
圖5係繪示根據一實施例之適於在圖1中展示之電腦網路內使用之一實例電腦之一高級方塊圖。
130:訊息路由器
310:路由模組
320:資料攝取模組
330:AR環境模組
340:地圖處理模組
350:權限檢查模組
360:本地資料儲存
Claims (20)
- 一種用於在一網路中路由一訊息之方法,該方法包括:在一訊息路由器處接收該訊息;將該訊息之一欄位識別為用於包含一包絡識別符之一候選欄位,該包絡識別符指示該訊息之一包絡類型,其中該包絡類型指示對應於該訊息之路由資訊之一包絡結構;解碼該候選欄位以判定該候選欄位是否包含該包絡識別符;回應於該候選欄位包含該包絡識別符,判定該訊息之該包絡類型;及根據該包絡類型路由該訊息。
- 如請求項1之方法,其中將該欄位識別為用於包含該包絡識別符之該候選欄位包括:判定該欄位是否係長度分隔;及回應於該欄位係長度分隔,選擇該欄位作為該候選欄位。
- 如請求項2之方法,其進一步包括:在將該欄位識別為用於包含該包絡識別符之該候選欄位之前,判定該訊息中之一第二欄位並非一長度分隔欄位;及將該第二欄位寫入至一轉發緩衝區而不解碼該第二欄位。
- 如請求項3之方法,其進一步包括:回應於該候選欄位包含該包絡識 別符,將該訊息之一剩餘者寫入至該轉發緩衝區。
- 如請求項2之方法,其進一步包括:在將該欄位識別為用於包含該包絡識別符之該候選欄位之前,判定該訊息中之一第三欄位係長度分隔;解碼該第三欄位以判定該第三欄位是否包含該包絡識別符;及回應於該第三欄位不包含該包絡識別符,將該第三欄位寫入至一轉發緩衝區。
- 如請求項5之方法,其進一步包括:回應於該候選欄位包含該包絡識別符,將該訊息之一剩餘者寫入至該轉發緩衝區。
- 如請求項2之方法,其中判定該欄位是否係長度分隔包括解碼一起始位元組。
- 如請求項1之方法,其中該包絡識別符指示該訊息中之哪些位元組對應於路由資訊。
- 如請求項1之方法,其中路由該訊息包括自該訊息提取一有效負載及將該有效負載轉發至一網路中之一目的地而不轉發該訊息之剩餘欄位。
- 一種儲存指令之非暫時性電腦可讀儲存媒體,該等指令在由一處理器執行時使該處理器執行包括以下之操作: 在一訊息路由器處接收一訊息;將該訊息之一欄位識別為用於包含一包絡識別符之一候選欄位,該包絡識別符指示該訊息之一包絡類型,其中該包絡類型指示對應於該訊息之路由資訊之一包絡結構;解碼該候選欄位以判定該候選欄位是否包含該包絡識別符;回應於該候選欄位包含該包絡識別符,判定該訊息之該包絡類型;及根據該包絡類型路由該訊息。
- 如請求項10之非暫時性電腦可讀儲存媒體,其中將該欄位識別為用於包含該包絡識別符之該候選欄位包括:判定該欄位是否係長度分隔;及回應於該欄位係長度分隔,選擇該欄位作為該候選欄位。
- 如請求項11之非暫時性電腦可讀儲存媒體,其中該等操作進一步包括:在將該欄位識別為用於包含該包絡識別符之該候選欄位之前,判定該訊息中之一第二欄位並非一長度分隔欄位;及將該第二欄位寫入至一轉發緩衝區而不解碼該第二欄位。
- 如請求項12之非暫時性電腦可讀儲存媒體,其中該等操作進一步包括:回應於該候選欄位包含該包絡識別符,將該訊息之一剩餘者寫入至該轉發緩衝區。
- 如請求項11之非暫時性電腦可讀儲存媒體,其中該等操作進一步包括:在將該欄位識別為用於包含該包絡識別符之該候選欄位之前,判定該訊息中之一第三欄位係長度分隔;解碼該第三欄位以判定該第三欄位是否包含該包絡識別符;及回應於該第三欄位不包含該包絡識別符,將該第三欄位寫入至一轉發緩衝區。
- 如請求項14之非暫時性電腦可讀儲存媒體,其中該等操作進一步包括:回應於該候選欄位包含該包絡識別符,將該訊息之一剩餘者寫入至該轉發緩衝區。
- 如請求項11之非暫時性電腦可讀儲存媒體,其中判定該欄位是否係長度分隔包括解碼一起始位元組。
- 如請求項10之非暫時性電腦可讀儲存媒體,其中該包絡識別符指示該訊息中之哪些位元組對應於路由資訊。
- 如請求項10之非暫時性電腦可讀儲存媒體,其中路由該訊息包括自該訊息提取一有效負載及將該有效負載轉發至一網路中之一目的地而不轉發該訊息之剩餘欄位。
- 一種訊息路由器,其包括:一本地資料儲存,其儲存連接至該訊息路由器之一客戶端裝置清單;及一路由模組,其經組態以執行包括以下之操作:在該訊息路由器處接收一訊息;將一欄位識別為用於包含一包絡識別符之一候選欄位,該包絡識別符指示該訊息之一包絡類型,其中該包絡類型指示對應於該訊息之路由資訊之一包絡結構;解碼該候選欄位以判定該候選欄位是否包含該包絡識別符;回應於該候選欄位包含該包絡識別符,判定該訊息之該包絡類型;及根據該包絡類型路由該訊息。
- 如請求項19之訊息路由器,其中將該欄位識別為用於包含該包絡識別符之該候選欄位包括:判定該欄位是否係長度分隔;及回應於該欄位係長度分隔,選擇該欄位作為該候選欄位。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163213088P | 2021-06-21 | 2021-06-21 | |
US63/213,088 | 2021-06-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202318841A TW202318841A (zh) | 2023-05-01 |
TWI840844B true TWI840844B (zh) | 2024-05-01 |
Family
ID=84489613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111122970A TWI840844B (zh) | 2021-06-21 | 2022-06-21 | 使用部分訊息解析之路由 |
Country Status (9)
Country | Link |
---|---|
US (1) | US20220407804A1 (zh) |
EP (1) | EP4360282A1 (zh) |
JP (1) | JP2024522845A (zh) |
KR (1) | KR20240023626A (zh) |
CN (1) | CN117859310A (zh) |
AU (1) | AU2022296936A1 (zh) |
CA (1) | CA3229706A1 (zh) |
TW (1) | TWI840844B (zh) |
WO (1) | WO2022269477A1 (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040015596A1 (en) * | 2002-07-19 | 2004-01-22 | Commerce One Operations, Inc. | Electronic commerce community networks and intra/inter community secure routing implementation |
US7058683B1 (en) * | 1999-07-20 | 2006-06-06 | Sun Microsystems, Inc. | Methods and apparatus for providing a virtual host in electronic messaging servers |
TW201123807A (en) * | 2009-12-15 | 2011-07-01 | Microsoft Corp | Verifiable trust for data through wrapper composition |
US20140029430A1 (en) * | 2002-10-30 | 2014-01-30 | Citrix Systems, Inc. | Wavefront detection and disambiguation of acknowledgments |
US20160149917A1 (en) * | 2014-11-21 | 2016-05-26 | Citrix Systems, Inc. | Security profile management in a machine-to-machine messaging system |
US20170085512A1 (en) * | 2015-09-23 | 2017-03-23 | Amazon Technologies, Inc. | Generating message envelopes for heterogeneous events |
US20170163694A1 (en) * | 2015-12-03 | 2017-06-08 | Microsoft Technology Licensing, Llc | Data Compression for Communications Signalling |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040160917A1 (en) * | 1999-06-22 | 2004-08-19 | Eliznd Ihab H. | Multibeam antenna for a wireless network |
US20020068584A1 (en) * | 2000-12-05 | 2002-06-06 | Nortel Networks Limited | Method and system for transmitting data to a mobile device |
CA2916217C (en) * | 2006-11-02 | 2019-04-16 | Digifonica (International) Limited | Determining a time to permit a communications session to be conducted |
US7826482B1 (en) * | 2006-11-17 | 2010-11-02 | Juniper Networks, Inc. | Service-specific forwarding in an LDP-RSVP hybrid network |
US10810103B2 (en) * | 2016-12-14 | 2020-10-20 | Vmware, Inc. | Method and system for identifying event-message transactions |
-
2022
- 2022-06-21 EP EP22827789.3A patent/EP4360282A1/en active Pending
- 2022-06-21 AU AU2022296936A patent/AU2022296936A1/en active Pending
- 2022-06-21 KR KR1020247002100A patent/KR20240023626A/ko unknown
- 2022-06-21 CN CN202280055947.5A patent/CN117859310A/zh active Pending
- 2022-06-21 CA CA3229706A patent/CA3229706A1/en active Pending
- 2022-06-21 JP JP2023578960A patent/JP2024522845A/ja active Pending
- 2022-06-21 TW TW111122970A patent/TWI840844B/zh active
- 2022-06-21 US US17/845,506 patent/US20220407804A1/en active Pending
- 2022-06-21 WO PCT/IB2022/055730 patent/WO2022269477A1/en active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7058683B1 (en) * | 1999-07-20 | 2006-06-06 | Sun Microsystems, Inc. | Methods and apparatus for providing a virtual host in electronic messaging servers |
US20040015596A1 (en) * | 2002-07-19 | 2004-01-22 | Commerce One Operations, Inc. | Electronic commerce community networks and intra/inter community secure routing implementation |
US20140029430A1 (en) * | 2002-10-30 | 2014-01-30 | Citrix Systems, Inc. | Wavefront detection and disambiguation of acknowledgments |
TW201123807A (en) * | 2009-12-15 | 2011-07-01 | Microsoft Corp | Verifiable trust for data through wrapper composition |
US20160149917A1 (en) * | 2014-11-21 | 2016-05-26 | Citrix Systems, Inc. | Security profile management in a machine-to-machine messaging system |
US20170085512A1 (en) * | 2015-09-23 | 2017-03-23 | Amazon Technologies, Inc. | Generating message envelopes for heterogeneous events |
US20170163694A1 (en) * | 2015-12-03 | 2017-06-08 | Microsoft Technology Licensing, Llc | Data Compression for Communications Signalling |
Also Published As
Publication number | Publication date |
---|---|
JP2024522845A (ja) | 2024-06-21 |
KR20240023626A (ko) | 2024-02-22 |
US20220407804A1 (en) | 2022-12-22 |
WO2022269477A1 (en) | 2022-12-29 |
TW202318841A (zh) | 2023-05-01 |
EP4360282A1 (en) | 2024-05-01 |
AU2022296936A1 (en) | 2024-01-25 |
CN117859310A (zh) | 2024-04-09 |
CA3229706A1 (en) | 2022-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102577903B1 (ko) | 증강 현실 모바일 에지 컴퓨팅 | |
CN112352413B (zh) | 低时延数据报响应的计算机网络协议 | |
TWI756998B (zh) | 用於資料傳輸路徑選擇之資料階層協定 | |
TWI840844B (zh) | 使用部分訊息解析之路由 | |
KR102722069B1 (ko) | 증강 현실 모바일 에지 컴퓨팅 |