JP2023534123A - パケットマッチング方法、装置、ネットワークデバイスおよび媒体 - Google Patents
パケットマッチング方法、装置、ネットワークデバイスおよび媒体 Download PDFInfo
- Publication number
- JP2023534123A JP2023534123A JP2022577333A JP2022577333A JP2023534123A JP 2023534123 A JP2023534123 A JP 2023534123A JP 2022577333 A JP2022577333 A JP 2022577333A JP 2022577333 A JP2022577333 A JP 2022577333A JP 2023534123 A JP2023534123 A JP 2023534123A
- Authority
- JP
- Japan
- Prior art keywords
- pipeline
- output interface
- data
- packet
- hash value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 68
- 238000003066 decision tree Methods 0.000 claims abstract description 74
- 238000004891 communication Methods 0.000 claims abstract description 16
- 230000008569 process Effects 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 15
- 238000005516 engineering process Methods 0.000 abstract description 2
- 239000011159 matrix material Substances 0.000 description 19
- COCAUCFPFHUGAA-MGNBDDOMSA-N n-[3-[(1s,7s)-5-amino-4-thia-6-azabicyclo[5.1.0]oct-5-en-7-yl]-4-fluorophenyl]-5-chloropyridine-2-carboxamide Chemical compound C=1C=C(F)C([C@@]23N=C(SCC[C@@H]2C3)N)=CC=1NC(=O)C1=CC=C(Cl)C=N1 COCAUCFPFHUGAA-MGNBDDOMSA-N 0.000 description 13
- 238000012545 processing Methods 0.000 description 11
- 238000012546 transfer Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 238000007726 management method Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/622—Queue service order
-
- 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/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/748—Address table lookup; Address filtering using longest matching prefix
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- 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/48—Routing tree calculation
-
- 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/48—Routing tree calculation
- H04L45/488—Routing tree calculation using root node determination
-
- 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/74—Address processing for routing
-
- 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/74—Address processing for routing
- H04L45/742—Route cache; Operation thereof
-
- 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/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- 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/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/15—Interconnection of switching modules
- H04L49/1515—Non-blocking multistage, e.g. Clos
- H04L49/1546—Non-blocking multistage, e.g. Clos using pipelined operation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3063—Pipelined operation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Description
N個の第1データパケットをN本のパイプラインに入れて、各パイプラインのステージstageのそれぞれを決定木のルートノードに設定し、前記決定木における各ノードのそれぞれは1種類のプレフィックス長を表し、かつ、各ノードのそれぞれが表するプレフィックス長は異なることと、
前記N本のパイプラインのうちの1本目のパイプラインの第1ハッシュ値を算出し、非同期的にメモリから前記第1ハッシュ値に対応する第1出力インターフェースデータをプリフェッチし、前記第1出力インターフェースデータをバッファに記憶し、メモリから前記第1出力インターフェースデータをプリフェッチすると同時に前記N本のパイプラインのうちの2本目のパイプラインの第2ハッシュ値を算出して、前記N本のパイプラインのうちの各パイプラインのハッシュ値のいずれも算出されるまで、非同期的にメモリからハッシュ値に対応する出力インターフェースデータをプリフェッチし、出力インターフェースデータをバッファに記憶し、メモリから出力インターフェースデータをプリフェッチすると同時にパイプラインのハッシュ値を算出する過程を繰り返して実行し、ここで、パイプラインのハッシュ値はパイプラインにおけるデータパケットの宛先アドレスとstageが表するプレフィックス長とのハッシュ値であることと、
前記N本のパイプラインのうちの各パイプラインのハッシュ値のいずれも算出される場合、前記バッファから前記第1出力インターフェースデータを取得することと、
前記第1出力インターフェースデータが表現した出力インターフェースは前記1本目のパイプラインにおける第1データパケットを転送するためのものである場合、前記1本目のパイプラインにおける第1データパケットを前記1本目のパイプラインから削除し、第2データパケットを受信した場合、前記第2データパケットを前記1本目のパイプラインに入れることと、を含む。
前記第1出力インターフェースデータが表現した出力インターフェースは前記1本目のパイプラインにおける第1データパケットを転送するためのものではない場合、前記1本目のパイプラインのstageを前記ルートノードの右サブノードに更新し、前記1本目のパイプラインにおける出力インターフェース情報を前記第1出力インターフェースデータに更新すること、を含む。
前記決定木における前記ルートノードの右サブノードがヌルであるか否かを判断することと、
ヌルである場合、前記第1出力インターフェースデータが表現した出力インターフェースは前記1本目のパイプラインにおける第1データパケットを転送するためのものであることを確定することと、
ヌルではない場合、前記第1出力インターフェースデータが表現した出力インターフェースは前記1本目のパイプラインにおける第1データパケットを転送するためのものではないことを確定することと、を含む。
前記バッファから前記第1ハッシュ値に対応する第1出力インターフェースデータを取得することができなかった場合、前記1本目のパイプラインのstageを前記ルートノードの左サブノードに更新すること、を含む。
前記第1出力インターフェースデータが表現した出力インターフェースは前記1本目のパイプラインにおける第1データパケットを転送するためのものである場合、前記1本目のパイプラインのstageをマッチング完了に更新すること、を含み、
前記1本目のパイプラインにおける第1データパケットを削除することは、
前記N本のパイプラインのstageのいずれも1回の更新を完了した場合、stageがマッチング完了であるパイプラインにおける第1データパケットをパイプラインから削除すること、を含む。
N個の第1データパケットをN本のパイプラインに入れて、各パイプラインのステージstageのそれぞれを決定木のルートノードに設定する設定モジュールであって、前記決定木における各ノードのそれぞれは1種類のプレフィックス長を表し、かつ、各ノードのそれぞれが表するプレフィックス長は異なる設定モジュールと、
前記N本のパイプラインのうちの1本目のパイプラインの第1ハッシュ値を算出し、非同期的にメモリから前記第1ハッシュ値に対応する第1出力インターフェースデータをプリフェッチし、前記第1出力インターフェースデータをバッファに記憶し、メモリから前記第1出力インターフェースデータをプリフェッチすると同時に前記N本のパイプラインのうちの2本目のパイプラインの第2ハッシュ値を算出して、前記N本のパイプラインのうちの各パイプラインのハッシュ値のいずれも算出されるまで、非同期的にメモリからハッシュ値に対応する出力インターフェースデータをプリフェッチし、出力インターフェースデータをバッファに記憶し、メモリから出力インターフェースデータをプリフェッチすると同時にパイプラインのハッシュ値を算出する過程を繰り返して実行するプリフェッチモジュールであって、ここで、パイプラインのハッシュ値はパイプラインにおけるデータパケットの宛先アドレスとstageが表するプレフィックス長とのハッシュ値であるプリフェッチモジュールと、
前記N本のパイプラインのうちの各パイプラインのハッシュ値のいずれも算出される場合、前記バッファから前記第1出力インターフェースデータを取得する取得モジュールと、を含み、
前記設定モジュールは、さらに、前記第1出力インターフェースデータが表現した出力インターフェースは前記1本目のパイプラインにおける第1データパケットを転送するためのものである場合、前記1本目のパイプラインにおける第1データパケットを前記1本目のパイプラインから削除し、第2データパケットを受信した場合、前記第2データパケットを前記1本目のパイプラインに入れる。
前記第1出力インターフェースデータが表現した出力インターフェースは前記1本目のパイプラインにおける第1データパケットを転送するためのものではない場合、前記1本目のパイプラインのstageを前記ルートノードの右サブノードに更新し、前記1本目のパイプラインにおける出力インターフェース情報を前記第1出力インターフェースデータに更新する更新モジュールを含む。
前記決定木における前記ルートノードの右サブノードがヌルであるか否かを判断し、
ヌルである場合、前記第1出力インターフェースデータが表現した出力インターフェースは前記1本目のパイプラインにおける第1データパケットを転送するためのものであることを確定し、
ヌルではない場合、前記第1出力インターフェースデータが表現した出力インターフェースは前記1本目のパイプラインにおける第1データパケットを転送するためのものではないことを確定する判断モジュールを含む。
前記バッファから前記第1ハッシュ値に対応する第1出力インターフェースデータを取得することができなかった場合、前記1本目のパイプラインのstageを前記ルートノードの左サブノードに更新する更新モジュールを含む。
第1出力インターフェースデータが表現した出力インターフェースは1本目のパイプラインにおける第1データパケットを転送するためのものである場合、1本目のパイプラインのstageをマッチング完了に更新する更新モジュールを含み、
前記設定モジュールは、前記N本のパイプラインのstageのいずれも1回の更新を完了した場合、stageがマッチング完了であるパイプラインにおける第1データパケットをパイプラインから削除する。
記憶装置は、コンピュータープログラムを格納し、
プロセッサは、記憶装置に格納されているプログラムを実行すると、上記した第1態様に記載の方法ステップを実現する。
Entry2:IPプレフィックス:10.20.0.0/16 出力インターフェース:インターフェイス3。
Entry2:NDNプレフィックス:/Book 出力インターフェース:インターフェイス2。
Entry3:NDNプレフィックス:/Shoe 出力インターフェース:インターフェイス3。
Entry2:プレフィックス/a 出力インターフェース2
Entry3: プレフィックス/a/b/c/d 出力インターフェース3
Entry4:プレフィックス/f/g 出力インターフェース4
Entry2:プレフィックス/a 出力インターフェース2
Entry3:プレフィックス/a/b/c/d 出力インターフェース3
Entry4:プレフィックス/f/g 出力インターフェース4
Entry5:プレフィックス/a/b 出力インターフェース2
Entry6:プレフィックス/a/b/c 出力インターフェース2
Entry7:プレフィックス/f 出力インターフェースがデフォルトである
cost(m,n)は、PrefixmからPrefixnまでの最適な決定木を検索するために必要な消費ステップの期待値を表す。
それに、Cost(1,1)、Cost(2,2)、…、Cost(n,n)について、その値を固定にして1とする。
ここで、m<=j<=nであり、かつ、j+1>nである場合、Cost(j+1,n)=0であることを規定する。m-1が0である場合、Pm-1を0として算出する。
第2ラウンドは、横線の影にある点に対応するCostおよび分割点を左上から右下へ算出する。
第3ラウンドは、縦線の影にある点に対応するCostおよび分割点を左上から右下へ算出する。
第4ラウンドは、右斜線の影にある点に対応するCostおよび分割点を左上から右下へ算出する。
第5ラウンドは、格子状の影にある点に対応するCostおよび分割点を算出する。
Prefix2にヒットする確率が5%であり、
Prefix3にヒットする確率が10%であり、
Prefix4にヒットする確率が10%であり、
Prefix5にヒットする確率が55%である。
1を分割点として選択した場合、Cost(1,2)は1+(20%+5%)/(20%+5%)*Cost(2,2)=2であり、
2を分割点として選択した場合、Cost(1,2)は1+20%/(20%+5%)*Cost(1,1)=1.8である。
したがって、Cost(1,2)の分割点は2であるべき、かつ、Cost(1,2)=1.8である。
2を分割点として選択した場合、Cost(2,3)=1+(5%+10%)/(20%+5%+10%)*Cost(3,3)=1.42であり、
3を分割点として選択した場合、Cost(2,3)=1+(20%+5%)/(20%+5%+10%)*Cost(2,2)=1.71である。
したがって、Cost(2,3)の分割点は2であるべき、かつ、Cost(2,3)=1.42である。
3を分割点として選択した場合、Cost(3,4)=1+(10%+10%)/(5%+10%+10%)*Cost(4,4)=1.8であり、
4を分割点として選択した場合、Cost(3,4)=1+(5%+10%)/(5%+10%+10%)*Cost(3,3)=1.6である。
したがって、Cost(3,4)の分割点は4であるべき、かつ、Cost(3,4)=1.6である。
4を分割点として選択した場合、Cost(4,5)=1+(10%+55%)/(10%+10%+55%)*Cost(4,4)=1.86であり、
5を分割点として選択した場合、Cost(4,5)=1+(10%+10%)/(10%+10%+55%)*Cost(5,5)=1.26である。
したがって、Cost(4,5)の分割点は5であるべき、かつ、Cost(4,5)=1.26である。
1を分割点として選択した場合、Cost(1,3)=1+(20%+5%+10%)/(20%+5%+10%)*Cost(2,3)=2.42であり、
2を分割点として選択した場合、Cost(1,3)=1+20%/(20%+5%+10%)*Cost(1,1)+(5%+10%)/(20%+5%+10%)*Cost(3,3)=2であり、
3を分割点として選択した場合、Cost(1,3)=1+(20%+5%)/(20%+5%+10%)*Cost(1,2)=2.28である。
したがって、Cost(1,3)の分割点は2であるべき、かつ、Cost(1,3)=2である。
2を分割点として選択した場合、Cost(2,4)=1+(5%+10%+10%)/(20%+5%+10%+10%)*Cost(3,4)=2.15であり、
3を分割点として選択した場合、Cost(2,4)=1+(20%+5%)/(20%+5%+10%+10%)*Cost(2,2)+(10%+10%)/(20%+5%+10%+10%)*Cost(4,4)=2であり、
4を分割点として選択した場合、Cost(2,4)=1+(20%+5%+10%)/(20%+5%+10%+10%)*Cost(2,3)=2.10である。
したがって、Cost(2,4)の分割点は3であるべき、かつ、Cost(2,4)=2である。
3を分割点として選択した場合、Cost(3,5)=1+(10%+10%+55%)/(5%+10%+10%+55%)*Cost(4,5)=2.18であり、
4を分割点として選択した場合、Cost(3,5)=1+(5%+10%)/(5%+10%+10%+55%)*Cost(3,3)+(10%+55%)/(5%+10%+10%+55%)*Cost(5,5)=2であり、
5を分割点として選択した場合、Cost(3,5)=1+(5%+10%+10%)/(5%+10%+10%+55%)*Cost(3,4)=1.5である。
したがって、Cost(3,5)の分割点は5であるべき、かつ、Cost(3,5)=1.5である。
1を分割点として選択した場合、Cost(1,4)=1+(20%+5%+10%+10%)/(20%+5%+10%+10%)*Cost(2,4)=3であり、
2を分割点として選択した場合、Cost(1,4)=1+(20%)/(20%+5%+10%+10%)*Cost(1,1)+(5%+10%+10%)/(20%+5%+10%+10%)*Cost(3,4)=2.33であり、
3を分割点として選択した場合、Cost(1,4)=1+(20%+5%)/(20%+5%+10%+10%)*Cost(1,2)+(10%+10%)/(20%+5%+10%+10%)*Cost(4,4)=2.44であり、
4を分割点として選択した場合、Cost(1,4)=1+(20%+5%+10%)/(20%+5%+10%+10%)*Cost(1,3)=2.55である。
したがって、Cost(1,4)の分割点は2であるべき、かつ、Cost(1,4)=2.33である。
2を分割点として選択した場合、Cost(2,5)=1+(5%+10%+10%+55%)/100%*Cost(3,5)=2.20であり、
3を分割点として選択した場合、Cost(2,5)=1+(20%+5%)/100%*Cost(2,2)+(10%+10%+55%)/100%*Cost(4,5)=2.195であり、
4を分割点として選択した場合、Cost(2,5)=1+(20%+5%+10%)/100%*Cost(2,3)+(10%+55%)/100%*Cost(5,5)=2.147であり、
5を分割点として選択した場合、Cost(2,5)=1+(20%+5%+10%+10%)/100%*Cost(2,4)=1.9である。
したがって、Cost(2,5)の分割点は5であるべき、かつ、Cost(2,5)=1.9である。
1を分割点として選択した場合、Cost(1,5)=1+(20%+5%+10%+10%+55%)/100%*Cost(2,4)=3であり、
2を分割点として選択した場合、Cost(1,5)=1+20%/100%*Cost(1,1)+80%/100%*Cost(3,5)=2.4であり、
3を分割点として選択した場合、Cost(1,5)=1+25%/100%*Cost(1,2)+75%/100%*Cost(4,5)=2.395であり、
4を分割点として選択した場合、Cost(1,5)=1+35%/100%*Cost(1,3)+65%/100%*Cost(5,5)=2.35であり、
5を分割点として選択した場合、Cost(1,5)=1+45%/100%*Cost(1,4)=2.04である。
したがって、Cost(1,5)の分割点は5であるべき、かつ、Cost(1,5)=2.04である。
Prefetch(&Bucket[HashValue1]);//HashValue1を含むBucketにアクセスしようとすることをCPUに示唆することで、CPUはBucket[HashValue1]におけるFIB要約をプリフェッチする。
HashValue2=Hash(IPv6Addr2、PrefixLen1););//IPv6Addr2とPrefixLen1とのハッシュ値を算出し、HashValue2を取得する。
Prefetch(&Bucket[HashValue2])//HashValue2を含むBucketにアクセスしようとすることをCPUに示唆することで、CPUはBucket[HashValue2]におけるFIB要約をプリフェッチする。
DataPointer1=Bucket[HashValue1];//ネットワークデバイスはBucket[HashValue1]におけるデータを取得し、このとき、Bucket[HashValue1]におけるデータが既にバッファにあるため、メモリにアクセスする必要がなく、このとき、CPUがデータを待っているという現象は発生しない。ネットワークデバイスは、Bucket[HashValue1]におけるFIB要約を取得した後、当該FIB要約にはHashValue1に対応するDataPointer1が存在するか否かを判断でき、存在する場合、その後、DataPointer1に対応する出力インターフェースデータを取得する。
Prefetch(DataPointer1);//DataPointer1にアクセスしようとすることをCPUに示唆することで、CPUはメモリからDataPointer1に対応する出力インターフェースデータをプリフェッチし、一時的に記憶する。
DataPointer2=Bucket[HashValue2];//ネットワークデバイスはBucket[HashValue2]におけるデータを取得し、このとき、Bucket[HashValue2]におけるFIB要約が既にバッファにあるため、メモリにアクセスする必要がなく、このとき、CPUがデータを待っているという現象は発生しない。ネットワークデバイスは、Bucket[HashValue2]におけるFIB要約を取得した後、当該BucketにはHashValue1に対応するDataPointer2が存在するか否かを判断でき、存在する場合、その後、DataPointer2に対応する出力インターフェースデータを取得する。
Prefetch(DataPointer2);//DataPointer2にアクセスしようとすることをCPUに示唆することで、CPUはメモリからDataPointer2に対応する出力インターフェースデータをプリフェッチし、一時的に記憶する。
Access DataPointer1;//DataPointer1に対応する出力インターフェースデータを取得し、DataPointer1に対応する出力インターフェースデータが既にバッファにあるため、このとき、メモリにアクセスする必要がなく、CPUが待っていることは発生しない。
Access DataPointer2;//DataPointer2に対応する出力インターフェースデータを取得し、DataPointer2に対応する出力インターフェースデータが既にバッファにあるため、このとき、メモリにアクセスする必要がなく、CPUが待っていることは発生しない。
Update IPv6Addr1 Stage & Output Interface;//IPv6Addr1のパケットが属するパイプラインのStageと出力インターフェースとを更新する。
Update IPv6Addr2 Stage & Output Interface//IPv6Addr2のパケットが属するパイプラインのStageと出力インターフェースとを更新する。
決定木におけるルートノードの右サブノードがヌルであるか否かを判断することと、ヌルである場合、前記第1出力インターフェースデータが表現した出力インターフェースは1本目のパイプラインにおける第1データパケットを転送するためのものであることを確定することと、ヌルではない場合、第1出力インターフェースデータが表現した出力インターフェースは1本目のパイプラインにおける第1データパケットを転送するためのものではないことを確定することと、を含む。
Packet2がPrefix3にヒットし、
Packet3がPrefix5にヒットし、
Pakcet4がPrefix2にヒットする。
N個の第1データパケットをN本のパイプラインに入れて、各パイプラインのステージstageのそれぞれを決定木のルートノードに設定する設定モジュール701であって、決定木における各ノードのそれぞれは1種類のプレフィックス長を表し、かつ、各ノードのそれぞれが表するプレフィックス長は異なる設定モジュール701と、
N本のパイプラインのうちの1本目のパイプラインの第1ハッシュ値を算出し、非同期的にメモリから第1ハッシュ値に対応する第1出力インターフェースデータをプリフェッチし、第1出力インターフェースデータをバッファに記憶し、メモリから第1出力インターフェースデータをプリフェッチすると同時にN本のパイプラインのうちの2本目のパイプラインの第2ハッシュ値を算出して、N本のパイプラインのうちの各パイプラインのハッシュ値のいずれも算出されるまで、非同期的にメモリからハッシュ値に対応する出力インターフェースデータをプリフェッチし、出力インターフェースデータをバッファに記憶し、メモリから出力インターフェースデータをプリフェッチすると同時にパイプラインのハッシュ値を算出する過程を繰り返して実行するプリフェッチモジュール702であって、ここで、パイプラインのハッシュ値はパイプラインにおけるデータパケットの宛先アドレスとstageが表するプレフィックス長とのハッシュ値であるプリフェッチモジュール702と、
N本のパイプラインのうちの各パイプラインのハッシュ値のいずれも算出される場合、バッファから第1出力インターフェースデータを取得する取得モジュール703と、を含み、
設定モジュール701は、さらに、第1出力インターフェースデータが表現した出力インターフェースは1本目のパイプラインにおける第1データパケットを転送するためのものである場合、1本目のパイプラインにおける第1データパケットを1本目のパイプラインから削除し、第2データパケットを受信した場合、第2データパケットを1本目のパイプラインに入れる。
第1出力インターフェースデータが表現した出力インターフェースは1本目のパイプラインにおける第1データパケットを転送するためのものではない場合、1本目のパイプラインのstageをルートノードの右サブノードに更新し、1本目のパイプラインにおける出力インターフェース情報を第1出力インターフェースデータに更新する更新モジュールを含む。
決定木におけるルートノードの右サブノードがヌルであるか否かを判断し、
ヌルである場合、第1出力インターフェースデータが表現した出力インターフェースは1本目のパイプラインにおける第1データパケットを転送するためのものであることを確定し、
ヌルではない場合、第1出力インターフェースデータが表現した出力インターフェースは1本目のパイプラインにおける第1データパケットを転送するためのものではないことを確定する判断モジュールを含む。
バッファから第1ハッシュ値に対応する第1出力インターフェースデータを取得することができなかった場合、1本目のパイプラインのstageをルートノードの左サブノードに更新する更新モジュールを含む。
第1出力インターフェースデータが表現した出力インターフェースは1本目のパイプラインにおける第1データパケットを転送するためのものである場合、1本目のパイプラインのstageをマッチング完了に更新する更新モジュールを含み、
設定モジュール701は、N本のパイプラインのstageのいずれも1回の更新を完了した後、stageがマッチング完了であるパイプラインにおける第1データパケットをパイプラインから削除する。
記憶装置803は、コンピュータープログラムを格納し、
プロセッサ801は、記憶装置803に格納されているプログラムを実行すると、上記した方法実施例の方法ステップを実現する。
Claims (12)
- N個の第1データパケットをN本のパイプラインに入れて、各パイプラインのステージstageのそれぞれを決定木のルートノードに設定し、前記決定木における各ノードのそれぞれは1種類のプレフィックス長を表し、かつ、各ノードのそれぞれが表するプレフィックス長は異なることと、
前記N本のパイプラインのうちの1本目のパイプラインの第1ハッシュ値を算出し、非同期的にメモリから前記第1ハッシュ値に対応する第1出力インターフェースデータをプリフェッチし、前記第1出力インターフェースデータをバッファに記憶し、メモリから前記第1出力インターフェースデータをプリフェッチすると同時に前記N本のパイプラインのうちの2本目のパイプラインの第2ハッシュ値を算出して、前記N本のパイプラインのうちの各パイプラインのハッシュ値のいずれも算出されるまで、非同期的にメモリからハッシュ値に対応する出力インターフェースデータをプリフェッチし、出力インターフェースデータをバッファに記憶し、メモリから出力インターフェースデータをプリフェッチすると同時にパイプラインのハッシュ値を算出する過程を繰り返して実行し、ここで、パイプラインのハッシュ値はパイプラインにおけるデータパケットの宛先アドレスとstageが表するプレフィックス長とのハッシュ値であることと、
前記N本のパイプラインのうちの各パイプラインのハッシュ値のいずれも算出される場合、前記バッファから前記第1出力インターフェースデータを取得することと、
前記第1出力インターフェースデータが表現した出力インターフェースは前記1本目のパイプラインにおける第1データパケットを転送するためのものである場合、前記1本目のパイプラインにおける第1データパケットを前記1本目のパイプラインから削除し、第2データパケットを受信した場合、前記第2データパケットを前記1本目のパイプラインに入れることと、を含む、
ことを特徴とする、パケットマッチング方法。 - 前記方法は、前記バッファから前記第1出力インターフェースデータを取得することの後に、さらに、
前記第1出力インターフェースデータが表現した出力インターフェースは前記1本目のパイプラインにおける第1データパケットを転送するためのものではない場合、前記1本目のパイプラインのstageを前記ルートノードの右サブノードに更新し、前記1本目のパイプラインにおける出力インターフェース情報を前記第1出力インターフェースデータに更新すること、を含む、
ことを特徴とする、請求項1に記載の方法。 - 前記方法は、前記バッファから前記第1出力インターフェースデータを取得することの後に、さらに、
前記決定木における前記ルートノードの右サブノードがヌルであるか否かを判断することと、
ヌルである場合、前記第1出力インターフェースデータが表現した出力インターフェースは前記1本目のパイプラインにおける第1データパケットを転送するためのものであることを確定することと、
ヌルではない場合、前記第1出力インターフェースデータが表現した出力インターフェースは前記1本目のパイプラインにおける第1データパケットを転送するためのものではないことを確定することと、を含む、
ことを特徴とする、請求項1または2に記載の方法。 - 前記方法は、さらに、
前記バッファから前記第1ハッシュ値に対応する第1出力インターフェースデータを取得することができなかった場合、前記1本目のパイプラインのstageを前記ルートノードの左サブノードに更新すること、を含む、
ことを特徴とする、請求項1に記載の方法。 - 前記方法は、さらに、
前記第1出力インターフェースデータが表現した出力インターフェースは前記1本目のパイプラインにおける第1データパケットを転送するためのものである場合、前記1本目のパイプラインのstageをマッチング完了に更新すること、を含み、
前記の前記1本目のパイプラインにおける第1データパケットを削除することは、
前記N本のパイプラインのstageのいずれも1回の更新を完了した後、stageがマッチング完了であるパイプラインにおける第1データパケットをパイプラインから削除すること、を含む、
ことを特徴とする、請求項1に記載の方法。 - パケットマッチング装置であって、
N個の第1データパケットをN本のパイプラインに入れて、各パイプラインのステージstageのそれぞれを決定木のルートノードに設定する設定モジュールであって、前記決定木における各ノードのそれぞれは1種類のプレフィックス長を表し、かつ、各ノードのそれぞれが表するプレフィックス長は異なる設定モジュールと、
前記N本のパイプラインのうちの1本目のパイプラインの第1ハッシュ値を算出し、非同期的にメモリから前記第1ハッシュ値に対応する第1出力インターフェースデータをプリフェッチし、前記第1出力インターフェースデータをバッファに記憶し、メモリから前記第1出力インターフェースデータをプリフェッチすると同時に前記N本のパイプラインのうちの2本目のパイプラインの第2ハッシュ値を算出して、前記N本のパイプラインのうちの各パイプラインのハッシュ値のいずれも算出されるまで、非同期的にメモリからハッシュ値に対応する出力インターフェースデータをプリフェッチし、出力インターフェースデータをバッファに記憶し、メモリから出力インターフェースデータをプリフェッチすると同時にパイプラインのハッシュ値を算出する過程を繰り返して実行すプリフェッチモジュールであって、パイプラインのハッシュ値はパイプラインにおけるデータパケットの宛先アドレスとstageが表するプレフィックス長とのハッシュ値であるプリフェッチモジュールと、
前記N本のパイプラインのうちの各パイプラインのハッシュ値のいずれも算出される場合、前記バッファから前記第1出力インターフェースデータを取得する取得モジュールと、を含み、
前記設定モジュールは、さらに、前記第1出力インターフェースデータが表現した出力インターフェースは前記1本目のパイプラインにおける第1データパケットを転送するためのものである場合、前記1本目のパイプラインにおける第1データパケットを前記1本目のパイプラインから削除し、第2データパケットを受信した場合、前記第2データパケットを前記1本目のパイプラインに入れる、
ことを特徴とする、パケットマッチング装置。 - 前記装置は、さらに、
前記第1出力インターフェースデータが表現した出力インターフェースは前記1本目のパイプラインにおける第1データパケットを転送するためのものではない場合、前記1本目のパイプラインのstageを前記ルートノードの右サブノードに更新し、前記1本目のパイプラインにおける出力インターフェース情報を前記第1出力インターフェースデータに更新する更新モジュールを含む、
ことを特徴とする、請求項6に記載の装置。 - 前記装置は、さらに、
前記決定木における前記ルートノードの右サブノードがヌルであるか否かを判断し、ヌルである場合、前記第1出力インターフェースデータが表現した出力インターフェースは前記1本目のパイプラインにおける第1データパケットを転送するためのものであることを確定し、 ヌルではない場合、前記第1出力インターフェースデータが表現した出力インターフェースは前記1本目のパイプラインにおける第1データパケットを転送するためのものではないことを確定する判断モジュールを含む、
ことを特徴とする、請求項6または7に記載の装置。 - 前記装置は、さらに、
前記バッファから前記第1ハッシュ値に対応する第1出力インターフェースデータを取得することができなかった場合、前記1本目のパイプラインのstageを前記ルートノードの左サブノードに更新する更新モジュールを含む、
ことを特徴とする、請求項6に記載の装置。 - 前記装置は、さらに、
前記第1出力インターフェースデータが表現した出力インターフェースは1本目のパイプラインにおける第1データパケットを転送するためのものである場合、1本目のパイプラインのstageをマッチング完了に更新する更新モジュールを含み、
前記設定モジュールは、前記N本のパイプラインのstageのいずれも1回の更新を完了した後、stageがマッチング完了であるパイプラインにおける第1データパケットをパイプラインから削除する、
ことを特徴とする、請求項6に記載の装置。 - プロセッサと、通信インターフェイスと、記憶装置と、通信バスとを含むネットワークデバイスであって、ここで、プロセッサ、通信インターフェイス、および記憶装置は、通信バスを介して相互に通信し、
記憶装置は、コンピュータープログラムを格納し、
プロセッサは、記憶装置に格納されているプログラムを実行すると、請求項1~5のいずれか一項に記載の方法ステップを実現する、
ことを特徴とする、ネットワークデバイス。 - コンピューター可読記憶媒体であって、前記コンピューター可読記憶媒体にはコンピュータープログラムが記憶されており、前記コンピュータープログラムはプロセッサによって実行されると、請求項1~5のいずれか一項に記載の方法ステップを実現する、
ことを特徴とする、コンピューター可読記憶媒体。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2021/102426 WO2022267018A1 (zh) | 2021-06-25 | 2021-06-25 | 一种报文匹配方法、装置、网络设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2023534123A true JP2023534123A (ja) | 2023-08-08 |
JP7436712B2 JP7436712B2 (ja) | 2024-02-22 |
Family
ID=78391289
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022577333A Active JP7436712B2 (ja) | 2021-06-25 | 2021-06-25 | パケットマッチング方法、装置、ネットワークデバイスおよび媒体 |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP4175233B1 (ja) |
JP (1) | JP7436712B2 (ja) |
CN (1) | CN113632427A (ja) |
WO (1) | WO2022267018A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114710421B (zh) * | 2022-04-14 | 2022-10-25 | 合肥卓讯云网科技有限公司 | 一种基于数据预取的网络连接状态维护装置和方法 |
CN115878676B (zh) * | 2023-02-08 | 2023-05-05 | 成都数联云算科技有限公司 | 一种预览文件的方法、装置、设备和介质 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3570323B2 (ja) * | 1999-05-11 | 2004-09-29 | 日本電気株式会社 | アドレスに関するプレフィクスの格納方法 |
WO2011078812A1 (en) | 2009-12-22 | 2011-06-30 | Bazlamacci Cuneyt F | Systolic array architecture for fast ip lookup |
CN102281196B (zh) * | 2011-08-11 | 2017-10-10 | 中兴通讯股份有限公司 | 决策树生成方法及设备、基于决策树报文分类方法及设备 |
CN102739551B (zh) | 2012-07-17 | 2015-03-18 | 中山大学 | 多存储器流水路由体系结构 |
CN102739550B (zh) | 2012-07-17 | 2015-11-25 | 中山大学 | 基于随机副本分配的多存储器流水路由体系结构 |
WO2015188319A1 (zh) | 2014-06-10 | 2015-12-17 | 华为技术有限公司 | 一种查找装置、查找配置方法和查找方法 |
CN104579941A (zh) * | 2015-01-05 | 2015-04-29 | 北京邮电大学 | 一种OpenFlow交换机中的报文分类方法 |
US10135734B1 (en) * | 2015-12-28 | 2018-11-20 | Amazon Technologies, Inc. | Pipelined evaluations for algorithmic forwarding route lookup |
US10148571B2 (en) | 2016-06-20 | 2018-12-04 | Mellanox Technologies Tlv Ltd. | Jump on a match optimization for longest prefix match using a binary search tree |
US10616113B2 (en) | 2018-07-19 | 2020-04-07 | Mellanox Technologies Tlv Ltd. | Longest prefix match using a binary search tree with compressed hash tables |
CN113037640A (zh) * | 2019-12-09 | 2021-06-25 | 华为技术有限公司 | 数据转发方法、数据缓存方法、装置和相关设备 |
CN112866115B (zh) * | 2020-12-31 | 2023-04-07 | 杭州迪普科技股份有限公司 | 一种实现透明串接的方法、装置、电子设备及存储介质 |
-
2021
- 2021-06-25 JP JP2022577333A patent/JP7436712B2/ja active Active
- 2021-06-25 WO PCT/CN2021/102426 patent/WO2022267018A1/zh active Application Filing
- 2021-06-25 EP EP21943322.4A patent/EP4175233B1/en active Active
- 2021-06-25 CN CN202180001644.0A patent/CN113632427A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2022267018A1 (zh) | 2022-12-29 |
EP4175233A4 (en) | 2023-08-30 |
CN113632427A (zh) | 2021-11-09 |
EP4175233B1 (en) | 2024-05-08 |
JP7436712B2 (ja) | 2024-02-22 |
US20240137317A1 (en) | 2024-04-25 |
EP4175233A1 (en) | 2023-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7069268B1 (en) | System and method for identifying data using parallel hashing | |
JP7436712B2 (ja) | パケットマッチング方法、装置、ネットワークデバイスおよび媒体 | |
JP3823089B2 (ja) | 固定長データ検索装置、及び固定長データ検索方法、及びコンピュータプログラム、並びにコンピュータ読み取り可能な記録媒体 | |
CN110191428B (zh) | 一种基于智能云平台的数据分配方法 | |
US9871727B2 (en) | Routing lookup method and device and method for constructing B-tree structure | |
JP2001326679A (ja) | 情報装置、テーブル検索装置、テーブル検索方法、及び記録媒体 | |
CN103873371A (zh) | 一种名字路由快速匹配查找方法与装置 | |
JP5960863B1 (ja) | 検索装置、検索方法、プログラム、及び記録媒体 | |
JP3570323B2 (ja) | アドレスに関するプレフィクスの格納方法 | |
CN103051543A (zh) | 一种路由前缀的处理、查找、增加及删除方法 | |
CN107729053B (zh) | 一种实现高速缓存表的方法 | |
CN102045412B (zh) | IPv6地址前缀压缩存储方法及设备 | |
Bornea et al. | Adaptive join operators for result rate optimization on streaming inputs | |
Han et al. | A novel routing algorithm for IoT cloud based on hash offset tree | |
CN102736986A (zh) | 一种内容可寻址存储器及其检索数据的方法 | |
CN102984071B (zh) | 分段地址路由的路由表组织方法及查找路由的方法 | |
US20090063417A1 (en) | Index attribute subtypes for LDAP entries | |
US12003418B2 (en) | Method and apparatus for packet matching, network device, and medium | |
CN113824814A (zh) | 一种转发表的地址匹配方法、装置、网络设备及介质 | |
KR101587756B1 (ko) | 블룸 필터 선-검색을 이용한 스트링 정보 검색 장치 및 방법 | |
JP2007221514A (ja) | ルータ装置、ルータ装置におけるルート決定方法 | |
CN110851658B (zh) | 树形索引数据结构、内容存储池、路由器及树形索引方法 | |
Huang et al. | Approximately-perfect hashing: Improving network throughput through efficient off-chip routing table lookup | |
WO2019201091A1 (zh) | 一种数据处理方法、设备和计算机可读存储介质 | |
CN110908996A (zh) | 一种数据处理的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20221215 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20240125 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20240130 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240208 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7436712 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |