Successfully reported this slideshow.
Your SlideShare is downloading. ×

スイッチ・ルータのしくみ

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 57 Ad

スイッチ・ルータのしくみ

Download to read offline

最終更新は2013.7.14です.以下でLTした資料に加筆しました.
・カーネル/VM探検隊@TKB 2012.9.22
・自宅ラック勉強会 2012.10.8

最終更新は2013.7.14です.以下でLTした資料に加筆しました.
・カーネル/VM探検隊@TKB 2012.9.22
・自宅ラック勉強会 2012.10.8

Advertisement
Advertisement

More Related Content

Slideshows for you (20)

Similar to スイッチ・ルータのしくみ (20)

Advertisement

Recently uploaded (20)

スイッチ・ルータのしくみ

  1. 1. スイッチ・ルータのしくみ @yogata
  2. 2. 高速転送(大容量化)の必要性 —  高速転送によるスイッチ・ルータの大容量化のメリット —  コスト削減:装置台数の削減 (ただし,ポート数が問題になる場合は当てはまらない) —  コスト削減:インターフェース・伝送装置数の削減 —  低速リンクのLAGではなく,高速リンク1本にすることで,伝送路にかか る費用を削減できる スイッチ・ルータで一層の高速転送(大容量化)が 可能になると,各種コストが下がる場合がある
  3. 3. 今後の大容量転送時代に向けて —  ハードウェア転送=早い☝( ◠‿◠ )☝ —  ソフトウェア転送=遅い☝(◞‸◟)☝ —  ( ^o^)「魔法のハードウェアでポポポポ~ンとパケット転送したい」 —  ( ˘⊖˘) 。o(ん?ちょっと待てよ…ハードウェア転送ってなんだ?) —  |ハードウェア|┗(☋` )┓三 —  ( ◠‿◠ )☛よくわからない —  ▂▅▇█▓▒░(’ω’)░▒▓█▇▅▂ うわあああああああ
  4. 4. スイッチ・ルータの役割 —  3つのプレーン —  U/D-Plane (User/Data-Plane) —  トラヒックを転送する役割 —  自宛以外のすべての通信(ユーザ通信など) —  C-Plane (Control-Plane) —  U/D-Planeの制御,経路制御をする役割 —  動的ルーティングなどの制御パケットの通信 —  例:RIP, OSPF, BGP, OpenFlow, LinkAggregation(LACP) —  M-Plane (Management-Pane) —  装置自体を制御する役割 —  例:TELNET/SSH(CLI), SNMP, NETCONF, OF-Config
  5. 5. スイッチ・ルータの役割 —  3つのプレーン —  U/D-Plane (User/Data-Plane) —  トラヒックを転送する役割 —  自宛以外のすべての通信(ユーザ通信など) —  C-Plane (Control-Plane) —  U/D-Planeの制御,経路制御をする役割 —  動的ルーティングなどの制御パケットの通信 —  例:RIP, OSPF, BGP, OpenFlow, LinkAggregation(LACP) —  M-Plane (Management-Pane) —  装置自体を制御する役割 —  例:TELNET/SSH(CLI), SNMP, NETCONF, OF-Config 高速転送の仕組み なので, U/D-Plane に着目
  6. 6. U/D-Planeの処理について —  ルータ・スイッチがU/D-Planeで行う役割 —  パケットを転送する3STEP 1.パケットを受信する 2.宛先を決める 3.パケットを送信する Switch/Router 1 2 3
  7. 7. 1. パケットを受信する 出展:FIB Scaling- A Switch/Router Vendor Perspective
  8. 8. 2.宛先を決める
  9. 9. 3. パケットを送信する
  10. 10. 1.パケットを受信する(詳細) —  10GBASE-Rの場合 —  802.3 section4 Fig. 44A-2 —  光ファイバからの情報を O/E変換 [PMD] —  XSBIにデシリアライズ [PMA] —  64B/66Bで同期してXGMII [PCS➙RS(or via XGXS)] —  必要(7cm超orXENPAK) であればXGXS [PCS〜RS] —  L2のMAC副層 [RS➙MAC] XENPAK 300pin MSA XFP/SFP+
  11. 11. 2.宛先を決める(詳細) —  ネットワークプロセッサユニット(NPU) —  IXP1200の動作を調べる —  2004年ぐらいにリリースされたNPU —  ギガビットルータ用のNPUで2ポートまで処理可能 —  理由: —  ドキュメント・解説がたくさんある —  NPUが何をしているかを知りたいので,昔のでも良いはず
  12. 12. 2.宛先を決める(詳細) —  詳細は Intel IXP 1200 Network Processor Architecture and Programming の p.19以降を参照 —  概要 —  イーサネットコントローラ(L2 MAC)の受信を定期ポーリングする —  受信を検知したらイーサネットコントローラからパケットをコピーして NPU上に持ってくる —  ヘッダ情報を元に宛先を探索しつつ,パケット全体をメモリ (SDRAM)上にコピーする —  必要に応じてSDRAM上にコピーしたパケットのヘッダの書き換え を行う(TTL減算とか,CRC計算とか) —  探索結果に基づいて出力ポートのイーサネットコントローラ上のメ モリに書き込む
  13. 13. 2.宛先を決める(詳細) —  IXP1200の全体像 —  Strong ARM —  SRAM/SDRAM上に探索木を構築 —  Microengine —  パケットコピーの実施 —  探索(マッチング)の実施 —  SDRAM Unit —  パケットを格納 —  ルックアップ結果の情報 (出力ポート,MAC書換) —  SRAM Unit —  探索木情報の格納
  14. 14. 2.宛先を決める(詳細) 1)  イーサネットコントローラまでフレームが到達する
  15. 15. 2.宛先を決める(詳細) 2)  Microengineは定期的(66MHz)にIX Bus UnitのReady Busをポーリングして,イーサネットコントローラでフレームを受 信したことを検知する.検知したらIX Bus Unitがイーサネット コントローラからRxFIFOにコピーする(DMA転送). Ready Bus
  16. 16. 2.宛先を決める(詳細) 3)  IX Bus Unitはイーサネットコントローラからフレームのコピー が終わったら,完了を通知する
  17. 17. 2.宛先を決める(詳細) 4)  2コア(8スレッド)のMEが,フレームを64バイト単位 (Mpacket)に区切ってSDRAMにコピーする.1つ目の MpacketとSRAMを使って宛先探索する
  18. 18. 2.宛先を決める(詳細) 4)  (補足)Port 8/9について
  19. 19. 2.宛先を決める(詳細) 5)  宛先探索(探索木) •  ヘッダ情報(4ビット単位)をインデックスにして,次ノードのベース アドレスを得る(ベースアドレス+次のヘッダ情報で探索していく) •  葉ノードにSDRAMの アドレスが格納されて いて,出力ポート, 宛先MACアドレスを 得る •  (IPv4なので32bit) 先頭16ビット +残り16ビットを  4ビットトライx4 →最大5アクセス
  20. 20. (補足)探索木での探索
  21. 21. 2.宛先を決める(詳細) 6)  パケットの処理 —  TTL, Header Length, チェックサムの確認 —  TTLの減算とIPヘッダチェックサムの更新 —  IP転送であればMACアドレスの更新
  22. 22. 2.宛先を決める(詳細) 7)  IX Bus UnitがSDRAMからTxFIFOにコピーする(DMA転送) •  512バイト単位
  23. 23. 2.宛先を決める(詳細) 8)  TxFIFOからイーサネットコントローラへ転送する •  Tx Schedが利用可能なMACの確認を行う
  24. 24. 2.宛先を決める(まとめ) •  まとめ (ハードウェア処理が速い理由) •  マッチングが速い •  SRAMにインデックスでアクセスして探索を行い,シーケンシャルに ルックアップしているわけではない →メモリアクセス回数が少ない •  でもCAMの方が速い,,,はず(CAMについては後述) •  並列処理で速い •  メモリコピーを並列で行う •  これは今のDDR SDRAMのチャネルと同じ?
  25. 25. 3.パケットを送信する(詳細) —  10GBASE-Rの場合 —  802.3 section4 Fig. 44A-1 —  受信の逆
  26. 26. 転送部でやること —  パケットヘッダとエントリ(ルーティング・フォワーディング・NDP/ ARPテーブル等)を比較してマッチするエントリを探す —  ポイント —  例えばACLの探索 —  プレフィックス指定やANY指定でのマッチングを行う —  例えばルーティングの探索 —  ロンゲストマッチを行う →複数のエントリにマッチする場合,プレフィックス長をみて探索
  27. 27. マッチング —  いろんなやりかた (たとえばルーティングの場合) —  ソフトウェア処理 —  パケットヘッダに対して,エントリを1つずつ比較して,最後にマッ チした全エントリの中からプレフィックス長が最大のエントリを探 す (シーケンシャルマッチング) —  事前にプレフィックス長でルーティングエントリをグループ化し,プ レフィックス長が大きい方から順番にマッチングする (エントリソート+シーケンシャルマッチング) —  ハードウェア処理 —  探索木を作ってマッチングする (探索木) —  TCAM
  28. 28. マッチするエントリの探索 —  (1)パケットヘッダに対してエントリを1つずつ比較して, (2)最後にマッチした全エントリの中からプレフィックス長が最大 のエントリを探す (シーケンシャルマッチング) DstIP:192.0.2.100 192.0.0.0/8 パケットヘッダ ルーティングテーブル 192.168.0.0/24 192.0.2.0/24 10.0.0.0/8 (2)プレフィックス長が 最大のエントリを探す (1)全部とマッチして
  29. 29. マッチするエントリの探索 —  事前にプレフィックス長でルーティングエントリをグループ化し, プレフィックス長が大きい方から順番にマッチングする (エントリソート+シーケンシャルマッチング) —  マッチした時点で処理を終えることができる DstIP:192.0.2.100 /8 パケットヘッダ ルーティングテーブル /24 192.0.0.0 192.168.0.0 192.0.2.0 10.0.0.0 ・・・ ・・・
  30. 30. マッチするエントリの探索 —  探索木 HiCutアルゴリズムの場合 111* 110* 101* 100* 011* 010* 001* 000* R0,R1,R5,R6 R2,R3,R4 R7 R8 R9 R10,R11 引用元 http://cseweb.ucsd.edu/~susingh/papers/hyp-sigcomm03.pdf
  31. 31. マッチするエントリの探索 —  TCAM —  Ternary Content Addressable Memory —  TCAM:マッチングを行う専用のハードウェア —  0, 1, どちらでも良いの3値(ternary)でマッチングを行う —  CAMだと,0, 1の2値でマッチングを行う
  32. 32. (T)CAMのしくみ —  (T)CAMの3つのしくみ (1) 入力 (2) マッチング (3) 出力 (1)入力 (2)マッチング (3)出力 引用元 http://www.pagiamtzis.com/pubs/pagiamtzis-jssc2006.pdf
  33. 33. (T)CAMのしくみ —  (1)入力 —  パケットヘッダXをもとに,Xと¬Xを比較部に渡す X0 X ¬X0 引用元 http://www.pagiamtzis.com/pubs/pagiamtzis-jssc2006.pdf
  34. 34. (T)CAMのしくみ ルーティングテーブルやACLの各ルール 各ルールの1ビット C ルールのプライオリティ順に事前に並べておく PriorityEncoder CAMのワードビットサイズ エントリ数 —  (2)マッチング (CAMの場合) C ヘッダ情報 (入力)   マッチング   結果(出力) SRAMベース のメモリ (6トランジスタ) ヘッダ情報 とルールの マッチング 引用元 http://www.pagiamtzis.com/pubs/pagiamtzis-jssc2006.pdf
  35. 35. (T)CAMのしくみ —  (2)マッチング (CAMの場合) C=0 C=1 X0=0 X0=1 HIGH LOW ・緑枠はマッチしているパターン ・この例では,Xと¬C・¬XとCを  比較 ・マッチすれば不一致なので  MLをLOWにする  (GNDに落とす) ・全ビットでマッチすれば終端で  ML(Match Line)がHIGHの  ままとまる 引用元 http://www.pagiamtzis.com/pubs/pagiamtzis-jssc2006.pdf
  36. 36. (T)CAMのしくみ —  (2)マッチング (TCAMの場合) —  CAMにSRAMをつけたもの CAM ・SRAMが1だと  このビットはマッチとなる ・SRAMが0だと下のマッチングに  したがって結果を返す 引用元 http://www.pagiamtzis.com/pubs/pagiamtzis-jssc2006.pdf
  37. 37. (T)CAMのしくみ —  (3)出力 —  比較部ではマッチしたすべてのエントリを返すので,出力部で 最もプライオリティの高いエントリを選択する →プライオリティエンコーダ
  38. 38. (T)CAMのしくみ 引用元 http://filebox.ece.vt.edu/~jgtront/introcomp/encoder.swf —  (3)出力 (プライオリティエンコーダ) —  マッチしたエントリD0-3の結果に応じた出力xyVを求める
  39. 39. (T)CAMのしくみ 引用元 http://filebox.ece.vt.edu/~jgtront/introcomp/encoder.swf —  (3)出力 (プライオリティエンコーダ) —  結果を回路にする —  エントリ数が多いと大変
  40. 40. (T)CAMのしくみ —  (3)出力 (アクション決定/インスタンス1つの場合) —  一般的にマッチング結果の処理はSRAM上に保持される —  ルーティングインスタンスが1つの場合 prefix (TCAM) action (SRAM) 00001010* A1 11000000* A2 1* A3 11* A4 111* A5 1111* A6 * A7 1101….
  41. 41. (T)CAMのしくみ —  (3)出力 (アクション決定/VR環境/VID_prefix) —  ルーティングインスタンスが複数の場合 —  仮想ルータIDをprefixに含める場合,エントリ数が膨大になる R0 prefix Action 00001010* A1 11* A2 1111* A3 * A4 R1 prefix Action 00001010* B1 11000000* B2 1* B3 11* B4 * B5 prefix (TCAM) action (SRAM) 0 00001010* A1 0 11* A2 0 1111* A4 0 * A5 1 00001010* B1 1 11000000* B2 1 1* B3 1 * B5
  42. 42. (T)CAMのしくみ —  (3)出力 (アクション決定/VR環境/VID_prefix) —  エントリ追加はそのまま追加すれば良い R0 prefix Action 00001010* A1 11* A2 111* A5 1111* A3 * A4 R1 prefix Action 00001010* B1 11000000* B2 1* B3 11* B4 * B5 prefix (TCAM) action (SRAM) 0 00001010* A1 0 11* A2 0 111* A5 0 1111* A3 0 * A4 1 00001010* B1 1 11000000* B2 1 1* B3 1 * B5
  43. 43. (T)CAMのしくみ —  (3)出力 (アクション決定/VR環境/VID_index) —  ルーティングインスタンスが複数の場合 —  TCAMマッチング後のSRAMをVIDインデックスアクセスする場合 —  TCAMエントリ数を削減することが可能だが処理が複雑になる R0 prefix Action 00001010* A1 11* A2 1111* A3 * A4 R1 prefix Action 00001010* B1 11000000* B2 1* B3 11* B4 * B5 A4 B5 A1 B1 A4 B3 A2 B4 A3 B4 1111* A2 B2 * 1* 11* 00001010* 11000000* 無い所(青文字) は埋める必要あり
  44. 44. (T)CAMのしくみ —  (3)出力 (アクション決定/VR環境/VID_index) prefix (TCAM) action (SRAM) 00001010* A1 B1 11000000* A2 B2 1* A4 B3 11* A2 B4 1111* A3 B4 * A4 B5 A4 B5 A1 B1 A4 B3 A2 B4 A3 B4 1111* A2 B2 * 1* 11* 00001010* 11000000* 無い所(青文字) は埋める必要あり
  45. 45. (T)CAMのしくみ —  (3)出力 (アクション決定/VR環境/VID_index) —  エントリ追加には一手間必要 —  エントリ追加のたびに,すべての仮想ルータで下記青字箇所を埋 める必要が発生する可能性がある R0 prefix Action 00001010* A1 11* A2 111* A4 1111* A3 * A4 R1 prefix Action 00001010* B1 11000000* B2 1* B3 11* B4 * B5 A5 B5 A1 B1 A5 B3 A2 B4 A4 B4 1111* A2 B2 * 1* 11* 00001010* 11000000* 無い所(青文字) は埋める必要あり A3 B4 111*
  46. 46. (T)CAMのしくみ —  (3)出力 (アクション決定/VR環境/VID_index) —  エントリ追加に関係のない仮想ルータにも,TCAM+SRAM更新の 影響がある prefix (TCAM) action (SRAM) 00001010* A1 B1 11000000* A2 B2 1* A4 B3 11* A2 B4 111* A3 B4 1111* A3 B4 * A4 B5 A5 B5 A1 B1 A5 B3 A2 B4 A4 B4 1111* A2 B2 * 1* 11* 00001010* 11000000* 無い所(青文字) は埋める必要あり A3 B4 111*
  47. 47. (T)CAMのまとめ —  動作概要 —  全ルールの全ビットと並列でマッチングを行う (1ルール144bit,128kルールあれば,144x128k=18M bitの マッチングを行う回路がある.このパラメータはCRS-1のもの) —  そのため,マッチングは必ず1クロックで完了する. 350MHzのCAMであれば350Mppsの処理性能が有るといえる —  特徴 (JメリットとLデメリット) —  J 高速マッチング —  1クロックですべてのルールとマッチング出来る —  L 高消費電力 —  仕組み上,CAMの回路全体に電流が流れる.これにより超並列でマッチン グを行えるが,その分だけ消費電力が非常に大きい
  48. 48. DRAM —  DRAM(Dynamic Random Access Memory)とは —  大容量・低速メモリ —  パケットをイーサネットコントローラからコピーして保持しておく用の メモリ —  大容量 —  1bitをトランジスタ1つとキャパシタ1つで構成できるため高密度 —  低速メモリ —  1回の読み込み遅延が大きい —  Rowを指定して1Row全体を読み込んだ後に(t_RAS),Columnを指定して (t_CAS),Burst Length分だけ取得する方式であるため —  また破壊読み出しであるため読み出したRowへチャージ(t_RP)が必要であ るため.
  49. 49. DRAM —  アドレス指定から読み出しまでのシーケンスについて ①Bank/Row/ Columnを指定 ②1Rowから データを読み出す ③BusrtLength だけ読み出す ④データを出力
  50. 50. DRAM —  アドレス指定から読み出しまでのシーケンスについて
  51. 51. DRAM —  キャパシタからデータを読み出すシーケンス詳細について 1)  Logic1はキャパシタにVcc保持. Logic0は接地して0 2)  リード線の電圧を 中間(Vcc/2)にする 3)  アドレスバス(Row指定) で開放してキャパシタ の電圧をリード線に 出す 4)  Vcc/2から,少しだけ 電圧が変化するので センスアンプで増幅し, 0/1を判別する
  52. 52. (補足)xRAM比較 —  TCAM(結局On-Chip SRAM), SRAM(On-Chip)はアクセス遅 延が小さい(早い).SRAM(Off-Chip)は中くらい.DRAMは大き い(遅い). TCAM SRAM
 (On-Chip) SRAM
 (Off-Chip) DRAM 適用箇所 ・ルータやスイッチ などの特殊用途の マッチング専用 ・CPUなどの一部
 レジスタとか ・ルータやスイッチ の探索用エントリの 保持 ・TCAMでマッチング した後の処理を記 録 ・ルータやスイッチ の探索用エントリ の保持 ・パケットバッファ アクセス速度 0.5ns 0.5ns 4-10ns 40-100ns 集積度 (T=トランジスタ
 C=コンデンサ) 低集積度 (10T/bit) 中集積度 (6T/bit) 中集積度 (6T/bit) 高集積度 (1C+1T/bit) 消費電力 高 低 低 中
  53. 53. (補足)RLDRAM*1 —  大容量・低遅延DRAM(SRAMとDRAMの良いとこ取り)もある 出展:http://www.micron.com/products/rldram-forges-ahead *1: Reduced Latency DRAM, *2:t_RCはRow指定の間隔(=メモリアクセス遅延) *2
  54. 54. (参考) Cisco装置でのマッチング方式 たぶん,探索木でのマッチング (少なくとも,CRS-1は探索木 (Tree Bitmapアルゴリズム)) 出展:Internet week2011 S8 ルーティング関連セッション(2) http://www.nic.ad.jp/ja/materials/iw/2011/ proceedings/s08/s08-03.pdf
  55. 55. (参考) 読み書きの遅延比較 SRAM (on-chip) SRAM (off-chip) DRAM (DDR3) RLDRAM 遅延 0.5nsec (※1) 5 - 10nsec (※2) 40 - 60nsec (※3) <10nsec (※4) ioDrive SSD HDD 遅延 <30usec (※5) 65usec (※6) <5msec (※7) ※1: Network Algorithmics, George Varghese [2004] ※2: Network Algorithmics, George Varghese [2004] ※3: http://www.micron.com/products/rldram-forges-ahead ※4: http://www.micron.com/products/rldram-forges-ahead ※5: http://www.fusionio.com/products/iodrive-duo/ ※6: http://ark.intel.com/products/67008/Intel-SSD-910-Series-400GB-12-Height-PCIe-2_0-25nm-MLC ※7: http://www.seagate.com/staticfiles/support/disc/manuals/enterprise/savvio/Savvio%2015K.1/FC/100384763b.pdf
  56. 56. 参考文献 —  FIB Scaling- A Switch/Router Vendor Perspective, Greg Hankins, nanog39 —  http://www.nanog.org/meetings/nanog39/presentations/fib- hankins.pdf —  Intel IXP 1200 Network Processor - Architecture and Programming, Andreas Mitschele-Thiel —  http://www.tu-ilmenau.de/fileadmin/public/iks/files/lehre/wi/WI- IXP.pdf —  Content-Addressable Memory (CAM) Circuits and Architectures - A Tutorial and Survey, Pagiamtzis, K. —  http://www.pagiamtzis.com/pubs/pagiamtzis-jssc2006.pdf —  DRAM Memory Access Protocols, Bruce Jacob, Spencer Ng, & David Wang —  http://www.eng.utah.edu/~cs7810/pres/dram-cs7810-protocolx2.pdf
  57. 57. 参考文献 —  DDR SDRAM の使い方, ELPIDA —  http://www.elpida.com/pdfs/J0234E50.pdf —  DDR3 SDRAMにおけるコマンドとオペレーション —  http://ja.wikipedia.org/wiki/DDR3_SDRAM%E3%81%AB%E3%81%8A %E3%81%91%E3%82%8B%E3%82%B3%E3%83%9E %E3%83%B3%E3%83%89%E3%81%A8%E3%82%AA%E3%83%9A %E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3 —  Intel® IXP1200 Network Processor Family Hardware Reference Manual —  IXP1200 Network Processor Gigabit Ethernet Example Design Application Note

×