本ドキュメントはCypress (サイプレス) 製品に関する情報が記載されております。 はじめに ■ 本書の目的と対象読者 MB86977は,IPパケットの転送処理やフィルタリング処理を行うことでCPUの処理 負荷を大幅に軽減し,ワイヤスピードでの転送を可能にしたASSP通信制御用デバイ スです。 MB86977を用いることで,ワイヤスピードでのIPパケット転送,インターネット などの常時接続時のセキュリティ機能や非武装地帯(DMZ: demilitarized zone) を容易に実現することが可能です。 また,リアルタイム性を重視するパケットを優先的にフォワード処理しているた め,ブロードバンド環境で使用する高い転送パフォーマンスが要求されるネット ワーク機器に最適です。 i ■ 本書の全体構成 本書は,以下の章および付録により構成されています。 第1章 概 要 MB86977の特長,ブロックダイヤグラム,機能概要など全体を知るための基本 的なことについて説明します。 第2章 端子機能説明 MB86977の端子機能についてインタフェースごとに説明します。 第3章 アドレスマップとレジスタマップ MB86977のアドレスマップとレジスタマップについて説明します。 第4章 初期化シーケンスと割込みシーケンス 初期化シーケンスと割込みシーケンスについて説明します。 また,ホストステータスレジスタおよび割込みイネーブルレジスタの詳細を示 します。 第5章 FEFエンジン-NAT/IPフォワーディング FEFエンジンによるNATおよびIPフォワーディングについて,機能概要,フォ ワーディング用テーブルの詳細,フォワーディング時の動作およびステータス レジスタの詳細を説明します。また,フラグメントパケットの取扱いやテーブ ルアクセスについて説明します。 第6章 ディレクションアナライザーブロック ディレクションアナライザブロックのテーブルの内容,テーブルアクセス方 法およびテーブルアクセス用レジスタについて説明します。 第7章 FEFエンジン―ヘッダ処理 FEFエンジンのヘッダ処理の概要およびヘッダ処理レジスタについて説明し ます。 第8章 FEFエンジン―フィルタの機能と設定 FEFエンジンのフィルタ機能のテーブルの内容,レジスタの詳細,フィルタロ グ機能やテーブルアクセスの動作について説明します。 第9章 FEFエンジン―優先制御機能 FEFエンジンの優先制御機能のテーブルの内容,アクセス方法およびレジスタ について説明します。 第10章 CPUとのパケット送受信 ホストとのパケット送受信について,メモリマップ,アクセス制御レジスタ の詳細およびパケット送受信時の動作を説明します。 第11章 MACの機能と設定 MACブロックの概要,レジスタの内容および機能と動作について説明します。 第12章 SMIの機能と設定 SMIブロックの概要,レジスタの内容および動作について説明します。 第13章 スイッチブロックの優先制御 スイッチブロックの優先制御について説明します。 ii 第14章 L2アドレスルックアップテーブル ルックアップテーブルの概要,レジスタの内容およびアクセス動作について 説明します。 付 録 各種テーブルのエントリ/レジスタへのデータ登録時の留意事項,DMZモード におけるDMZインタフェースとLAN間のNAT実行時の注意事項およびDMZインタ フェースからWAN側,LAN側へ共通のマルチキャストパケット転送時の注意事項 を記載しています。 iii ・本資料の記載内容は, 予告なしに変更することがありますので, ご用命の際は当社営業担当部門にご確認くだ さい。 ・本資料に記載された動作概要や応用回路例は, 半導体デバイスの標準的な動作や使い方を示したもので, 実際 に使用する機器での動作を保証するものではありません。従いまして, これらを使用するにあたってはお客様 の責任において機器の設計を行ってください。これらの使用に起因する損害などについては, 当社はその責任 を負いません。 ・本資料に記載された動作概要・回路図を含む技術情報は, 当社もしくは第三者の特許権, 著作権等の知的財産 権やその他の権利の使用権または実施権の許諾を意味するものではありません。また, これらの使用について, 第三者の知的財産権やその他の権利の実施ができることの保証を行うものではありません。従いまして, これ らの使用に起因する第三者の知的財産権やその他の権利の侵害について, 当社はその責任を負いません。 ・本資料に記載された製品は, 通常の産業用, 一般事務用, パーソナル用, 家庭用などの一般的用途に使用され ることを意図して設計・製造されています。極めて高度な安全性が要求され, 仮に当該安全性が確保されない 場合, 社会的に重大な影響を与えかつ直接生命・身体に対する重大な危険性を伴う用途(原子力施設における 核反応制御, 航空機自動飛行制御, 航空交通管制, 大量輸送システムにおける運行制御, 生命維持のための医 療機器, 兵器システムにおけるミサイル発射制御をいう), ならびに極めて高い信頼性が要求される用途(海 底中継器, 宇宙衛星をいう)に使用されるよう設計・製造されたものではありません。したがって, これらの 用途にご使用をお考えのお客様は, 必ず事前に当社営業担当部門までご相談ください。ご相談なく使用された ことにより発生した損害などについては, 責任を負いかねますのでご了承ください。 ・半導体デバイスはある確率で故障が発生します。当社半導体デバイスが故障しても, 結果的に人身事故, 火災 事故, 社会的な損害を生じさせないよう, お客様は, 装置の冗長設計, 延焼対策設計, 過電流防止対策設計, 誤 動作防止設計などの安全設計をお願いします。 ・本資料に記載された製品が, 「外国為替および外国貿易法」に基づき規制されている貨物または技術に該当す る場合には, 本製品を輸出するに際して, 同法に基づく許可が必要となります。 ©2003 FUJITSU LIMITED Printed in Japan iv 目次 第1章 概要 ............................................................ 1 1.1 概要および特長 ......................................................... 2 1.2 ブロックダイヤグラム ................................................... 5 1.3 端子配列 ............................................................... 7 1.4 パッケージおよび外形寸法図 ............................................. 9 第2章 端子機能説明 ................................................... 11 2.1 ホスト(SRAM)インタフェース .......................................... 12 2.2 RMIIインタフェース(4ポート) ......................................... 13 2.3 MIIインタフェース(4ポート) .......................................... 14 2.4 SMIインタフェース ..................................................... 15 2.5 その他 ................................................................ 16 第3章 アドレスマップとレジスタマップ ................................. 17 3.1 アドレスマップ ........................................................ 18 3.2 レジスタマップ ........................................................ 19 第4章 初期化シーケンスと割込みシーケンス ............................. 23 4.1 初期化シーケンス ...................................................... 24 4.2 割込みシーケンス ...................................................... 25 第5章 FEFエンジン-NAT/IPフォワーディング ............................. 29 5.1 NAT/IPフォワーディング機能の説明....................................... 30 5.2 NAT/IPフォワーディング用テーブル....................................... 32 5.3 NAT/IPフォワーディングの動作 .......................................... 37 5.3.1 IPフォワーディング時の動作 .......................................... 38 5.3.2 NAT時の動作 ......................................................... 39 5.3.3 NAT/IPF マッチステータスレジスタと動作(14'h2120∼14'h212c)......... 40 5.3.4 NAT FIN/RSTステータスレジスタと動作(14'h2130∼14'h213c) ........... 42 5.4 フラグメントパケットの取扱い(do_frag_ipfレジスタ).................... 45 5.5 NAT/IPフォワーディング用テーブルへのアクセス........................... 46 5.5.1 テーブルアクセスとアクセス用レジスタの説明 .......................... 48 5.5.2 table for nat access priorityレジスタ(14'h210c)について ........... 52 v 5.6 第6章 転送の失敗(TTL=0) ................................................... 53 ディレクションアナライザブロック ............................... 55 6.1 ディレクションセッティングテーブル..................................... 56 6.2 ディレクションセッティングテーブルへのアクセス......................... 57 6.2.1 第7章 テーブルアクセス用レジスタの説明 .................................... 58 FEFエンジン-ヘッダ処理 ......................................... 61 7.1 ヘッダ処理機構の説明 .................................................. 62 7.2 ヘッダ処理レジスタ .................................................... 63 第8章 7.2.1 NAT/IPフォワーディングテーブルの設定 ................................ 64 7.2.2 PPPoEヘッダレジスタの設定(PPPoE[3:0]14'h2800∼14'h280c) ......... 65 7.2.3 v4トンネルヘッダレジスタ(14'h2810∼14'h285c) ...................... 66 FEFエンジン-フィルタの機能と設定 ............................... 69 8.1 フィルタ機能の説明 .................................................... 70 8.2 L3/L4フィルタテーブル ................................................. 71 8.3 プロトコルタイプテーブル .............................................. 75 8.4 フィルタモード設定レジスタ(fl_controlレジスタ-14'h20c0).............. 77 8.5 フィルタログ機能 ...................................................... 81 8.6 8.7 第9章 8.5.1 フィルタカウント数の取得 ............................................ 82 8.5.2 フィルタログの取得 .................................................. 87 テーブルへのアクセス方法詳細 .......................................... 90 8.6.1 テーブルアクセスとアクセス用レジスタの詳細説明 ...................... 91 8.6.2 table for filter access priorityレジスタ(14'h2358)について ........ 95 フィルタサブネットレジスタ(fl_subnetレジスタ-14'h20c4)............... 96 FEFエンジン-優先制御機能 ....................................... 97 9.1 優先制御機能の説明 .................................................... 98 9.2 優先制御テーブル ...................................................... 99 9.3 優先制御テーブルへのアクセス ......................................... 101 9.3.1 テーブルアクセスの方法 ............................................. 102 9.3.2 テーブルアクセス用レジスタの説明 ................................... 103 第10章 CPUとのパケット送受信 .......................................... 107 vi 10.1 動作の概要 ........................................................... 108 10.2 メモリマップ ......................................................... 110 10.3 TX,RXバッファへのアクセス制御レジスタと動作説明...................... 111 10.4 第11章 10.3.1 受信パケットのホストへの転送 ....................................... 113 10.3.2 送信パケットのホストからの転送 ..................................... 115 ループバックプロセス ................................................. 117 MACの機能と設定 ............................................... 119 11.1 MACブロック説明 ...................................................... 120 11.2 MACのレジスタ ........................................................ 121 11.3 MACの機能 ............................................................ 125 第12章 11.3.1 フレームの送信 ..................................................... 126 11.3.2 送信で発生する割込み ............................................... 127 11.3.3 フレームの受信 ..................................................... 128 11.3.4 受信で発生する割込み ............................................... 129 11.3.5 フローコントロール ................................................. 130 SMIの機能と設定 ............................................... 131 12.1 SMIのレジスタ ........................................................ 132 12.2 SMIのレジスタによるPHYデバイス(レジスタ)のアクセス.................. 136 12.3 MDCレジスタ(smi_mdcdiv – 14'h209c) ................................. 138 第13章 13.1 第14章 スイッチブロックの優先制御 .................................... 139 プライオリティキューイング ........................................... 140 L2アドレスルックアップテーブル ................................ 141 14.1 ルックアップテーブルの概要 ........................................... 142 14.2 ルックアップテーブルコントロールレジスタ(lkp_controlレジスタ-14'h2150) ..................................................................... 144 14.3 ルックアップエントリ自動削除タイマレジスタ(lkp_timerレジスタ-14'h215c) ..................................................................... 145 14.4 ルックアップテーブルエントリへのアクセス(lkp_regr[49:0]-14'h2180∼ 14'h230c) ........................................................... 146 付録 .............................................................. 149 vii A 各種テーブルのエントリまたはレジスタへのデータ登録について............ 150 B DMZモードにおいてDMZインタフェースとLAN0,LAN1間でNATを行うときの注意. 151 C DMZモードでDMZインタフェースからWAN側,LAN側へ共通のマルチキャストパケット を転送する場合の注意 ................................................. 152 索引 .............................................................. 153 viii 第1章 概要 MB86977の特長,ブロックダイヤグラム,端子配列など全体を知るための基本的な ことについて説明します。 1.1 概要 1.2 ブロックダイヤグラム 1.3 端子配列 1.4 パッケージおよび外形寸法図 1 第1章 概要 1.1 概要および特長 MB86977は,従来CPUで実行されてきたIPパケットの転送処理,フィルタリング処理 をハードウェアに行わせることでCPUの処理負荷を大幅に軽減し,かつWAN側および LAN側双方の帯域においてワイヤスピードでの転送を実現するLSIです。 ■ MB86977の概要 MB86977ではIPパケットの転送処理において,IPv4/v6をはじめとする様々なモー ドに対応してワイヤスピードでの転送を可能とします。 また,レイヤ3/4フィルタリング機能を利用することにより,インターネットな どの常時接続における簡易的なセキュリティ機能や,外部ネットワークからのWWW サーバなどへの参照を考慮した非武装地帯(DMZ: demilitarized zone)を,ソフ トウェアの介在なしに容易に実現可能です。 四つの全MACインタフェースのうち,二つのインタフェースを内部セグメント (LAN0,LAN1) ,一つをDMZ,もう一つをWAN用インタフェースとして処理します。 DMZインタフェースはユーザ設定により,内部セグメントLAN2としても使用可能で す。内部セグメントとして定義されているLAN0,LAN1, (LAN2)はMACアドレスベー スのL2スイッチでパケットの転送を行います。 さらに,優先制御機能を利用し,ストリーミング,VoIPなどのリアルタイム性を 重視するパケットを優先してフォワードすることが可能です。ブロードバンド環境 で使用する高い転送パフォーマンスが要求されるネットワーク機器に最適です。 ■ MB86977の特長 ○ スーパーIPフォワーディングエンジン "Fujitsu/FLS Express Forwarding(FEF)エンジン"搭載 IPフォワーディング機能 - MACアドレスの付替え,TTLの減算,IPヘッダチェックサムの再計算を含 むルーティング処理をハードウェアで実行 - IPv4/v6をサポート - WAN側インタフェースにおいてPPPoE,IPv6におけるIPv4トンネルをサ ポート NAT(NAPT)機能 2 - IPアドレスの付替え,ポート番号の付替え,チェックサムの再計算を含 むNAT(NAPT)処理をハードウェアで実行 - IPv4のみサポート - WAN側インタフェースにおいてPPPoE,IPv6におけるIPv4トンネルをサ ポート 第1章 概要 レイヤ3/4フィルタリング機能 - エントリごとに設定可能なL3/L4アドレスフィルタ機能 - IPアドレスベースのフィルタ(Dst or/and Src,IPv4/IPv6対応) - TCP/UDPポート番号ベースのフィルタ(TCP,ACKフラグにも対応) - IPアドレスとTCPポート番号を組み合わせたコネクションベースのフィ ルタ(IPv4/IPv6対応) - ICMPタイプによるフィルタ - 最大フィルタ件数64件x2(送受信2方向) - プロトコルタイプ(Ethernetのタイプフィールド)テーブルによるフィ ルタ機能 - PPPoEレジスタの設定によりPPPoEプロトコルに対応可能 - AH(Authentication Header)タイプのVPNパケットもL3/L4情報でフィ ルタリング実行 - ESP(Encapsulating Security Payload)タイプのVPNパケットもIPアド レスでフィルタリング可能 - フィルタログ機能 - 各インタフェースごと(LAN,DMZ,WAN)で設定可能なフィルタリング 機構 パケット優先制御機能 - IP(IPv4)アドレスとUDPポート番号の組合せによるコネクションベー スの優先制御 - IP(IPv4)アドレスとToSフィールドの組合せによるToSベースの優先制 御 - IP(IPv4)アドレスとUDPポート番号,ToSフィールドの組合せによる優 先制御 - IP(IPv6)アドレス,Traffic Class,Flow Labelの組合せによる優先 制御 - ToSマッピング機構 FEF の 各 機 能 は DIX 形 式 の イ ー サ ネ ッ ト フ レ ー ム に 対 応 し て い ま す 。 IEEE802.1LLCを必要とするIEEE802.3フレーム形式には対応していません。また, IEEE802.1QのVLANタグにも対応していません(これらのパケットはホストへ転 送されます)。 50MHz動作時で双方向の100Mbpsフルワイヤーレートを実現します。 3 第1章 概要 ○ レイヤ2(MAC)機能 IEEE802.3に準拠した4ポート10/100M MAC内蔵 RMII/MIIインタフェース(全二重/半二重対応 ,各ポートごとにモード 設定可能) PHYデバイス制御用SMIインタフェース オートネゴシエーション対応 IEEE802.3xフローコントロール対応 半二重バックプレッシャー対応 フレームバッファ用SRAM内蔵 Store And Forward方式のハードウェアスイッチ アドレスルックアップテーブル内蔵(最大50エントリ) アドレス自動学習/削除機能内蔵 ○ ホストインタフェース 汎用SRAMインタフェース(32ビット) BigEndian/LittleEndian切替え対応 ○ その他 208ピン QFPパッケージ 4 第1章 概要 1.2 ブロックダイヤグラム 図 1.2-1に MB86977のブロックダイヤグラムを示します。 ■ MB86977のブロックダイヤグラム (LAN0, LAN1, DMZ,WAN) RMI/MII × 4 SMI IF MAC DMZ, WAN SMI MAC TX/RX (TX & RX) MAC L2 MAC Data Bus : 64 bit MAC Control Bus Host I/F Data Bus : 32 bit Host I/F Control Bus I/F FEF (SRAM ) SRAM I/F 図 1.2-1 MB86977のブロックダイヤグラム 5 第1章 概要 ■ ブロックの説明 ○ MACブロック RMIIまたはMII I/Fを介してパケットの送受信を行います。 IEEE802.3に規定された,レイヤ2(MAC)の機能を実行します。 受信されたフレームをスイッチブロックへ転送し,スイッチブロックから受 け取ったフレームを送信インタフェースへ出力させます。 ○ SMIブロック SMI I/Fを介してPHYレジスタへのリード・ライトを行うブロックです。PHYレ ジスタから各種ステータス(半二重/全二重,リンクステータス,10/100識別な ど)情報を引き出すと共に,PHYデバイスの設定を行う際にも使用されます。 ○ スイッチブロック MACブロックから受信されたパケットを内蔵のRAM(PRAM)に蓄え,ルックアッ プブロックからの情報を元に該当インタフェースへパケットを転送処理するブ ロックです。 ○ ルックアップブロック レイヤ2のMACアドレスをMACブロックから受け,L2テーブルを参照し,宛先の 出力インタフェース情報をスイッチブロックへ返します。 ○ クラシファイアブロック インターネットとDMZ間の通信において,優先度を決定するために使用される 参照ブロックです。このブロックのトラフィック・クラシファイア(分類器) により分類される優先度は,優先度高/低の2種類です。優先度高に選ばれたパ ケットはプライオリティキューの機構を利用して最優先でスイッチブロックに 処理されます。 ○ ホストインタフェースブロック FEFエンジンを含むブロックです。FEFエンジンにおいてパケットのフォワー ディングを行うほか,ホストCPUとの間でパケットを転送するためのブロックで す。また,このインタフェースはレジスタのリード/ライトにも使用されます。 パケット受信時のホストCPUへの通知は,割込み信号(INT信号)およびステー タスレジスタにより行います。ホストCPUからのパケット転送にはMB86977の転 送制御に必要な情報を含んだ転送ディスクリプタをMB86977の内部レジスタに 書き込むことにより制御を行います。 ホストインタフェースブロックでは送信・受信で各々3KBのデュアルポート RAMを備えており,メモリインタフェースとしてランダムにアクセスできます。 また,ホストとのインタフェースとして汎用SRAMメモリインタフェースを採用 しています。 6 第1章 概要 1.3 端子配列 表 1.3-1にMB86977の端子配列を示します。 ■ MB86977の端子配列 表 1.3-1 MB86977の端子配列(続く) 端子NO. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 名称 TDOUT SDO1 SDO2 SDO3 SDO4 SDO5 SDO6 INT_ VDDE VSS VDDI VDDE VSS VDDI DQ0 DQ1 DQ2 DQ3 DQ4 DQ5 DQ6 DQ7 DQ8 DQ9 DQ10 VDDE VSS VDDI DQ11 DQ12 DQ13 DQ14 DQ15 DQ16 DQ17 DQ18 DQ19 DQ20 VDDE VSS VDDI DQ21 DQ22 DQ23 端子NO. 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 名称 VDDE VSS VDDI VDDE VSS VDDI TX_EN_0 TXD_0[0] TXD_0[1] TXD_0[2] TXD_0[3] VDDE VSS VDDI VDDE VSS VDDI CRS_DV_0 COL_0 TX_CLK_0 VSS RX_DV_0 RXD_0[0] RXD_0[1] RXD_0[2] RXD_0[3] RX_ER_0 RX_CLK_0 VDDE VSS VDDI CRS_DV_1 COL_1 TX_CLK_1 VSS RX_DV_1 RXD_1[0] RXD_1[1] RXD_1[2] RXD_1[3] RX_ER_1 RX_CLK_1 VDDE VSS 端子NO. 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 名称 TXD_1[3] VSS TX_EN_D TXD_D[0] TXD_D[1] TXD_D[2] TXD_D[3] VDDE VSS VDDI VDDE VSS VDDI CRS_DV_D COL_D TX_CLK_D VSS RX_DV_D RXD_D[0] RXD_D[1] RXD_D[2] RXD_D[3] RX_ER_D RX_CLK_D VDDE VSS VDDI CRS_DV_W COL_W TX_CLK_W VSS RX_DV_W RXD_W[0] RXD_W[1] RXD_W[2] RXD_W[3] RX_ER_W RX_CLK_W VDDE VSS VDDI VDDE VSS VDDI 端子NO. 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 名称 VSS VDDI VDDE VSS VDDI MDIO VSS REF_CLK VSS CS_ WE_ RE_ VDDE VSS VDDI SCLK A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 SRST_ VDDE VSS VDDI SDI1 SDI2 SDI3 SDI4 SDI5 SDI6 VSS XTCK VSS TRST TMODE VPD 7 第1章 概要 表 1.3-1 MB86977の端子配列(続き) 端子NO. 名称 端子NO. 45 DQ24 97 46 DQ25 98 47 DQ26 99 48 DQ27 100 49 DQ28 101 50 DQ29 102 51 DQ30 103 52 DQ31 104 注)端子配列表中の端子について VDDE :3.3V 供給 VDDI :1.8V 供給 VSS : GND 名称 VDDI VDDE VSS VDDI TX_EN_1 TXD_1[0] TXD_1[1] TXD_1[2] 端子NO. 149 150 151 152 153 154 155 156 名称 TX_EN_W TXD_W[0] TXD_W[1] TXD_W[2] TXD_W[3] VSS MDCLK VDDE 端子NO. 201 202 203 204 205 206 207 208 名称 TDIN TCLK VDDE VSS VDDI VDDE VSS VDDI TRST : 3.3V システム動作を行う場合,必ずこのTRST端子にリセット信号を入力してください(極性は通常"H"なので, 一度"L"の状態から"H"へ遷移させてください。)。 TMODE : 3.3V TDIN : 3.3V TCLK : 3.3V SDI 1,2,3,4,5,6 : GND VPD :GND XTCK :GND SDO 1,2,3,4,5,6 : NC TDOUT : NC ※その他の端子は,3.3Vで動作します。 8 第1章 概要 1.4 パッケージおよび外形寸法図 図 1.4-1に,MB86977の外形寸法図を示します。 ■ 外形寸法図(FPT-208P-M06) 0.50mm LQFP, 208 28.0 28.0mm 1.70mm Max 2.55g (FPT-208P-M06) LQFP, 208 FPT-208P-M06 30.00±0.20(1.181±.008)SQ 28.00±0.10(1.102±.004)SQ 156 0.145±0.055 (.006±.002) 105 157 104 0.08(.003) Details of "A" part +0.20 1.50 –0.10 +.008 .059 –.004 0.10±0.05 (.004±.002) (Stand off) INDEX 208 LEAD No. 53 1 52 0.50(.020) C (Mounting height) 0.22±0.05 (.009±.002) 0.08(.003) "A" 0.50±0.20 (.020±.008) 0.60±0.15 (.024±.006) 0.25(.010) M mm 2000 FUJITSU LIMITED F208027S-c-2-2 inches 図 1.4-1 FPT-208P-M06の外形寸法図 9 第1章 概要 10 第2章 端子機能説明 この章では,MB86977の端子機能一覧を示します。 2.1 ホスト(SRAM)インタフェース 2.2 RMIIインタフェース(4ポート) 2.3 MIIインタフェース 2.4 SMIインタフェース 2.5 その他 11 第2章 端子機能説明 2.1 ホスト(SRAM ホスト(SRAM)インタフェース SRAM)インタフェース 表 2.1-1に,ホスト(SRAM)インタフェースの端子機能一覧を示します。 ■ ホスト(SRAM)インタフェースの端子機能 表 2.1-1 ホスト(SRAM)インタフェースの端子機能 端子記号 A2-A13 DQ0-DQ31 CS_ WE_ RE_ INT_ 12 端子名称 Address Bus Data input/output Chip Select Write Enable Read Enable Interrupt I/O I I/O I I I O 説明 アドレス入力 データ入出力です(32ビット)。 チップセレクト入力です。 ライトイネーブル入力です。 リードイネーブル入力です。 割込み信号出力です。 第2章 端子機能説明 2.2 RMIIインタフェース( RMIIインタフェース(4 インタフェース(4ポート) 表 2.2-1にRMIIインタフェース(4ポート)の端子機能一覧を示します。 ■ RMIIインタフェース(4ポート)の端子機能 表 2.2-1 RMIIインタフェース(4ポート)の端子機能 端子記号 REF_CLK 端子名称 Reference Clock I/O I 説明 参照クロック入力です。 送受信時のRMIIの同期信号となります。 周波数は50MHzのみで,10Mbps,100Mbps双方で使います。 送信データ出力です。 2ビットデータがPHYデバイスへ送信されます。REF_CLKに 同期して出力されます。 TXD_W[1:0] TXD_D[1:0] TXD_0[1:0] TXD_1[1:0] TX_EN_W TX_EN_D TX_EN_0 TX_EN_1 RX_ER_W RX_ER_D RX_ER_0 RX_ER_1 RXD_W[1:0] RXD_D[1:0] RXD_0[1:0] RXD_1[1:0] CRS_DV_W CRS_DV_D CRS_DV_0 CRS_DV_1 Transmit Data O Transmit Enable O 送信イネーブル出力です。Highアクティブです。TXDバス 上に有効なデータが乗っていることを示します。 REF_CLKに同期して出力されます。 Receive Error I Receive Data I 受信エラー入力です。Highアクティブです。 受信パケットにエラーがある場合,HighがPHYデバイスよ り入力されます。 CRS_DV信号がインアクティブであれば無 視されます。 受信データ入力です。 PHYデバイスからの2ビット受信デー タです。 Carrier Sense / Receive Data Valid I キャリアセンス/受信データ有効信号入力です。Highアク ティブです。 受信がアイドルでない場合,PHYデバイスがHighを入力し ます。キャリア検知時はPHYデバイスが非同期でアサート し, キャリアロス時にクロックに同期してディアサートし ます。 *半二重のコリジョンの検出はTX_ENとCRS_DVのANDをとることによって実現します。 13 第2章 端子機能説明 2.3 MIIインタフェース( MIIインタフェース(4 インタフェース(4ポート) 表 2.3-1にMIIインタフェース(4ポート)の端子機能一覧を示します。 ■ MIIインタフェース(4ポート)の端子機能 表 2.3-1 MIIインタフェース(4ポート)の端子機能 端子記号 TX_CLK_W TX_CLK_D TX_CLK_0 TX_CLK_1 TXD_W[3:0] TXD_D[3:0] TXD_0[3:0] TXD_1[3:0] TX_EN_W TX_EN_D TX_EN_0 TX_EN_1 RX_CLK_W RX_CLK_D RX_CLK_0 RX_CLK_1 RX_ER_W RX_ER_D RX_ER_0 RX_ER_1 RX_DV_W RX_DV_D RX_DV_0 RX_DV_1 CRS_DV_W CRS_DV_D CRS_DV_0 CRS_DV_1 RXD_W[3:0] RXD_D[3:0] RXD_0[3:0] RXD_1[3:0] COL_W COL_D COL_0 COL_1 14 端子名称 TX Clock I/O I 説明 送信用クロック入力です。送信時のMIIの同期信号となり ます。 周波数は10Mbps時に2.5MHz,100Mbps時に25MHzです。 Transmit Data O 送信データ出力です。 4ビットデータがPHYデバイスへ送信されます。下位2ビッ トはRMIIと兼用です。 Transmit Enable O Highアクティブです。 TX_CLKに同期して送信データが有効 であることを示します。 RX Clock I 受信用クロック入力です。受信時のMIIの同期信号となり ます。 周波数は10Mbps時に2.5MHz,100Mbps時に25MHzです。 Receive Error I RMIIと兼用です。 Receive Data Valid I Highアクティブです。 受信データが有効であることを示し ます。 Carrier Sense I Highアクティブです。 受信または送信が非同期信号で行わ れている状態であることを示します。 RMIIの同名信号と共有です。 Receive Data I 受信データ入力です。下位2ビットはRMIIと兼用です。 Collision Detect I 半二重時でTX_ENがアクティブのとき,この信号がHighな らコリジョンであることを示します。 それ以外は無視され ます。非同期信号です。 第2章 端子機能説明 2.4 SMIインタフェース SMIインタフェース 表 2.4-1にSMIインタフェースの端子機能一覧を示します。 ■ SMIインタフェースの端子機能 表 2.4-1 SMIインタフェースの端子機能 端子記号 MDCLK MDIO 端子名称 Management Data Clock Management Data input/output I/O O I/O 説明 SMIクロック出力です。 PHYデバイスのSMIクロックと接続してください。 SMIデータ入出力です。 PHYデバイスのSMIデータと接続してください。 15 第2章 端子機能説明 2.5 その他 表 2.5-1にその他のインタフェースの端子機能一覧を示します。 ■ その他の端子機能 表 2.5-1 その他の端子機能 端子記号 SRST_ SCLK 16 端子名称 System Reset System Clock I/O I I 説明 リセット システムクロックです。 ホストインタフェースの同期クロックにも使用します。 第3章 アドレスマップとレジスタマップ この章ではMB86977のアドレスマップとレジスタマップについて説明します。 3.1 アドレスマップ 3.2 レジスタマップ 17 第3章 アドレスマップとレジスタマップ 3.1 アドレスマップ MB86977のアドレスマップについて説明します。 ■ MB86977のアドレスマップ 図 3.1-1に,MB86977のアドレスマップを示します。 アドレスの構成は大きく分けて内部レジスタ,ホストインタフェースに配される ホスト送受信用のDualport SRAM(図中のTX Buffer,RX Buffer)に分かれます。 すべてワード単位のアクセスとなります。 bank3 2 ( for future use) 14’ h3000 1 bank2 14’ h2000 bank1 Dualport SRAM (RX Buffer 3Kbyte) 14’ h1000 bank0 Dualport SRAM (TX Buffer 3Kbyte) 14’ h0000 図 3.1-1 MB86977のアドレスマップ 18 第3章 アドレスマップとレジスタマップ 3.2 レジスタマップ 表 3.2-1にMB86977のレジスタマップを示します。 ■ MB86977のレジスタマップ 表 3.2-1 レジスタマップ(続く) アドレス 14'h2000 14'h2004 ∼ 14'h2010 14'h2014 ∼ 14'h2020 14'h2024 ニーモニック 名称 ビット幅 R/W 説明 mac_control mac control register [15:0] R/W MACに関する設定です。 mac_status[3:0] mac status register [12:0] R(Clr) 各種エラーに関する情報です。 (per I/F) 初期値 16'h2222 13'h0 mac_intenable [3:0] mac interrupt enable [12:0] register (per I/F) R/W 割込み制御マスクです。 13'h0 mac_pause_timer pause timer in flow [15:0] control R/W 14'h2028 mac_min_length [6:0] R/W 14'h202c mac_max_length [10:0] R/W 最大パケット長です。 14'h2030 14'h2040 ipg_timer host_control mac min length register mac max length register ipg timer host control register ポーズパケット中のポーズタイマ値 16'hffff です。このレジスタをセットする前 に,MB86977のMACアドレスレジスタ (lookup table中のレジスタ)をセッ トする必要があります。 最小パケット長です。 6'h40 [6:0] [1:0] R/W R/W 14'h2044 host_status 14'h2048 host_intenable 14'h204c host_tx_cpu_wr_ strt 14'h2050 host_tx_sw_rd_ strt 14'h2054 host_tx_strten 14'h2058 host_rx_readend 14'h205c 14'h2080 14'h2084 host_rx_pckt_ inbuf smi_control smi_status 14'h2088 smi_intenable 14'h208c smi_cmd 11'h5ee IPGタイマ(下位2ビットは無効)です。 7'h60 ビット[0]が1のときはリトルエン 2'h3 ディアンを,0のときはビッグエン ディアンを示します。 ビ ッ ト [ 1 ] が 1 の と き は drop incomplete IP packet,0のときはpass incomplete IP packetです。 host status register [18:0] R/R(Clr) 各種エラー他ホストI/Fに関する情報 19'h0000 です。 host interrupt [16:0] R/W 割込み制御マスクです。 17'h00000 enable register TX cpu writing start [9:0] R/W CPU-write先頭ポインタ(次に書き込 10'h000 pointer むパケットの先頭アドレス)です。単 位は「ワード」です。 TX buffer cleared [9:0] R/W MB86977が現在読み出しているパケッ 10'h000 pointer トの先頭アドレスです。 (このアドレス-1)までTXバッファが クリアされたことを示します。単位は 「ワード」です。 TX start enable [0] R/W SWへの転送イネーブルレジスタです。 1'b0 register 1のときはイネーブル,0のときはディ スエーブルです。 RX cpu read end [9:0] R/W CPU読出し終了ポインタです。単位は 10'h2ff pointer 「ワード」です。 R(Clr) 受信バッファ中の読出し可能なパ 6'h0 RX packet in buffer [5:0] register ケット数です。 smi control register [15:0] R/W SMIブロックの制御用レジスタです。 16'hffff smi status register [19:0] R(Clr) SMIブロックに関する情報です。 20'h0_666 6 smi interrupt enable [3:0] R/W 割込み制御マスクです。 4'h0 register smi command register [15:0] R/W SMI I/Fを通したMIIレジスタへのア 16'h0000 クセス用コマンドレジスタです。 19 第3章 アドレスマップとレジスタマップ 表 3.2-1 レジスタマップ(続く) アドレス ニーモニック 14'h2090 smi_data 名称 smi command data register smi command status register smi phy address register smi MDC divisor register ビット幅 [15:0] 14'h2094 smi_cmd_st 14'h2098 smi_phy_add 14'h209c smi_mdcdiv 14'h20a0 smi_pollintvl smi polling interval [15:0] 14'h20c0 fl_control 14'h20c4 fl_subnet 14'h20c8 fl_log_cntrl 14'h20cc fl_log_status 14'h20d0 fl_log_buf_lock filter control register filter subnet register filter log control register filter log status register filter log buffer lock register 14'h20d4 ∼ 14'h20e0 14'h20e4 ∼ 14'h20f0 14'h20f4 14'h20f8 tbl_filter_data 14'h20fc 14'h2100 tbl_filter_ status tbl_nat_cmd 14'h2104 tbl_nat_data 14'h2108 tbl_nat_status 14'h210c tbl_nat_access_ priority 14'h2110 tbl_qos_cmd 14'h2114 tbl_qos_data 14'h2118 tbl_qos_status 14'h2120 ∼ 14'h212c nat_match [127:0] 20 [1:0] [31:0] [4:0] [19:0] [31:0] [2:0] [7:0] R/W R/W 説明 初期値 MIIレジスタへのライトデータ/MIIレジ 16'h0000 スタからのリードデータです。 R ビット0のときはcmd running,ビット1 2'b0 のときはerrorです。 R/W 各I/FのPHYチップアドレスです。 32'h0302_ 0100 R/W MDC発生用カウンタレジスタです。MDC 5'h0b 周波数は「システムクロック/(レジス タ値+1)/2」です。 R/W ポーリング周期です。 32'h0000_ 0の場合はポーリングを行いません。 0000 R/W フィルタコントロールレジスタです。 20'h0_000 0 R/W フィルタをかける際に使用するサブ 32'hffff_ ネットマスクです。 ffff R/W フィルタログコントロールレジスタで 3'h1 す。 R(Clr) フィルタログステータスレジスタです。 8'h00 [0] R/W fl_cnt_ filter counter intenable[3:0] interrupt enable register fl_cnt_status filter counter [3:0] status register [31:0] R/W tbl_filter_cmd [31:0] table for filter command register table for filter data register table for filter status register table for nat command register table for nat data register table for nat status register table for nat access priority register table for qos command register table for qos data register table for qos status register NAT/IPF match status register [31:0] [31:0] [0] [31:0] [31:0] [0] [0] [31:0] [31:0] [0] [31:0] フィルタログバッファロックレジスタ 1'b0 です。 1のときはlock,0のときはfreeです。 フィルタカウンタ割込みイネーブルレ 32'h0000_ 0000 ジスタです。 R(Clr) フィルタカウンタステータスレジスタ 32'h0000_ 0000 です。 R/W フィルタ用テーブル書込み/読出しコマ ンドレジスタです。 R/W フィルタ用テーブル書込み/読出しデー タレジスタです。 R フィルタ用テーブル読出しステータス レジスタです。 R/W NAT/IP フォワーディング用テーブル書 込み/読出しコマンドレジスタです。 R/W NAT/IP フォワーディング用テーブル書 込み/読出しデータレジスタです。 R NAT/IP フォワーディング用テーブル読 出しステータスレジスタです。 R/W NAT/IP フォワーディング用テーブルア クセス優先レジスタです。 1にセットされている間はパケットの チェックは中断されます。 R/W 優先制御用テーブル書込み/読出しコマ ンドレジスタです。 R/W 優先制御用テーブル書込み/読出しデー タレジスタです。 R 優先制御用テーブル読出しステータス レジスタです。 R(Clr) NAT/IP フォワーディング パケット マッチステータスレジスタです。 32'h0000_ 0000 32'h0000_ 0000 1'b0 32'h0000_ 0000 32'h0000_ 0000 1'b0 1'b0 32'h0000_ 0000 32'h0000_ 0000 1'b0 32'h0000_ 0000 第3章 アドレスマップとレジスタマップ 表 3.2-1 レジスタマップ(続き) アドレス ニーモニック 14'h2130 nat_fin_rst ∼ [127:0] 14'h213c 14'h2140 do_frag_ipf 名称 NAT FIN.RST status register ビット幅 R/W 説明 初期値 [31:0] R(Clr) NAT RST/FIN通過ステータスレジスタで 32'h0000_ す。 0000 Fragmented packet ip [0] forwarding 14'h214c ttl_0_buffer_fu ll ttl_0_buffer full 14'h2150 lkp_control 14'h215c lkp_timer lookup control [3:0] register look up table timer [5:0] register 14'h2180 ∼ 14'h230c 14'h2340 lkp_reg[49:0] look up table register [31:0] tbl_direct_cmd [31:0] R/W ディレクションセッティングテーブル 32'h0000_ 書込み/読出しコマンドレジスタです。 0000 14'h2344 tbl_direct_data [31:0] R/W ディレクションセッティングテーブル 32'h0000_ 0000 書込み/読出しデータレジスタです。 14'h2348 tbl_direct_ status 14'h2350 tbl_direct_ valid_ ipver tbl_fl_access_ priority table for direction setting command register table for direction setting data register table for direction setting status register table for direction setting valid/ip version register table for filter access priority register 14'h2358 14'h2400 ∼ 14'h25fc 14'h2600 ∼ 14'h27fc 14'h2800 ∼ 14'h280c 14'h2810 ∼ 14'h285c 14'h2880 ∼ 14'h28bc [0] フラグメント化された場合に,1のとき 1'b1 はIPフォワーディングを行い,2のとき は行いません。 R(Clr) TTL 0 エラーパケットバッファフル兼 1'b0 TTL_0_バッファロック(リードクリア) です。 R/W L2 Broadcast,L2 Unknown Packetなど 4'h0 の扱いの設定です。 R/W 自動削除用のタイマ値(削除までの時 6'h00 間)です。 T(second)は「232×(3×V-1)/F」より大 きく「(232×3×V)/F」より小さい値を 設定します(F:周波数(Hz),V:レジス タ値)。 R/W L2用テーブルです。 固定値以 外は0。 R/W [0] R ディレクションセッティングテーブル 1'b0 読出しステータスレジスタです。 [7:0] R/W ディレクションセッティングテーブル 8'h00 valid/ip versionレジスタです。 [0] R/W fitering用テーブルアクセス優先レジ 1'b0 スタです。1にセットされている間はパ ケットのフィルタリングは中断されま す。 フィルタでドロップされたパケットの 32'h0000_ 先頭60バイトX4パケットX2バンクです。 0000 filter_log[7:0] filter log register [31:0] R filter_counter [63:0]*2 filter counter [7:0] PPPoE[3:0] PPPoE header register [31:0] R/W NAT/IP フォワーディング時に付加する 32'h0000_ PPPoEヘッダ(4種類)です。 0000 v4_tunnel[3:0] v4 tunnel header [31:0] R/W NAT/IP フォワーディング時に付加する 32'h0000_ 0000 v4トンネルヘッダ(4種類)です。 ttl_0_buffer [15:0] [31:0] R ttl_0_buffer R(Clr) フィルタカウンタです。 8'h00 TTL 0 エラーパケットバッファです。 レジスタ説明中に"Reserved"と記載されているビットは,どのような値であって もチップの動作には影響を与えませんが,弊社では"0"を推奨しています。 21 第3章 アドレスマップとレジスタマップ 22 第4章 初期化シーケンスと割込みシーケンス この章では,初期化シーケンスと割込みシーケンスについて説明し,ホストステー タスレジスタおよび割込みイネーブルレジスタの詳細を示します。 なお,レジスタ説明中"Reserved"と記載されているビットは,どのような値であっ てもチップの動作には影響を与えませんが,弊社では"0"を推奨しています。 4.1 初期化シーケンス 4.2 割込みシーケンス 23 第4章 初期化シーケンスと割込みシーケンス 4.1 初期化シーケンス ここでは管理ブロックの初期化について説明します。 ■ 管理ブロックの初期化 スイッチブロックには管理ブロックがあります。管理ブロックとは,キューを内 蔵のパケットバッファに積む際に使用するポインタを管理するブロックです。 この管理ブロックはスイッチブロックが動作をする前に初期化される必要があ ります。この初期化にかかるサイクル数は,おおよそ700サイクル程度です。 リセット解除後,この期間のスイッチブロックはスイッチ動作を行いません。 24 第4章 初期化シーケンスと割込みシーケンス 4.2 割込みシーケンス ここでは割込みシーケンスの動作概要とアクセスするレジスタについて説明しま す。 ■ 割込みシーケンスの動作概要 割込みシーケンスは最初に一つのレジスタをアクセスします。 このレジスタで割込み状態を判断した後,階層的に各ブロックのステータスレジ スタをアクセスします。最初にアクセスするレジスタはホストステータスレジスタ です。 ここでは,ホストステータスレジスタと割込みイネーブルレジスタの詳細を示し, ホストステータスレジスタを含む各ブロックのステータスレジスタのクリアにつ いて説明します。 25 第4章 初期化シーケンスと割込みシーケンス ■ ホストステータスレジスタ 表 4.2-1に,ホストステータスレジスタの詳細を示します。 表 4.2-1 ホストステータスレジスタ(14'h2044) ビット 18 ニーモニック switch_flow フィールド名 switch flow control (status) switch PRAM full (status) TTL 0 error smi block interrupt 17 switch_full 16* 15* ttl_0 smi_interrupt 14* filter_overflow_out filter counter over flow in output side 13* filter_overflow_in filter counter over flow in input side 12* MAC_WAN MAC WAN interrupt 11* MAC_DMZ MAC DMZ interrupt 10* MAC LAN1 MAC LAN1 interrupt 9* MAC LAN0 MAC LAN0 interrupt 8* filter_log filter log full 7* nat_fin_rst nat connection terminated 6 switch_flow 5 switch_full switch flow control (event) switch PRAM full (event) 4 3 reserved Ovr TX TXバッファでオ-バ-ランが起きたとき1にセットされ ます。 2 Unr RX RX underrun RXバッファでアンダーランが起きたとき1にセットさ れます。 1 Packet ready packet ready パケットがRXバッファに残っているときに1にセット されます。 0 Tx Empty TX buffer empty TXバッファ内のすべてのパケットを送出完了したと き1にセットされます。 *: さらに階層的にアクセスするべきレジスタがあるビットです。詳細を確認するためには,該当モジュールの ステータスレジスタをリードする必要があります。参照すべきレジスタは( )内に表示してあります。 26 TX overrun 説 明 スイッチブロックでフローコントロールの要求が起 きていることを示します。 スイッチブロックでPRAMがフルになっていることを 示します。 TTL0エラーが起きたことを示します。 SMIブロックで割込みが起きたことを示します (→smi status register)。 フィルタカウンタのオーバーフローがアウトプット 側のフィルタで起きたことを示します(→filter counter status )。 フィルタカウンタのオーバーフローがインプット側 のフィルタで起きたことを示します(→filter counter status register)。 WAN I/FのMACで割込みが起きているときに1にセット されます(→WAN mac status register)。 DMZ I/Fで割込みが起きているときに1にセットされ ます(→DMZ mac status register)。 LAN1 MACで割込みが起きているときに1にセットされ ます(→LAN1 mac status register)。 LAN0 MACで割込みが起きているときに1にセットされ ます(→LAN0 mac status register)。 (インプット側またはアウトプット側の) フィルタの ログがフルになったことを示します(→filter log status register)。 NATのコネクションで次のどちらかが起きたことを示 します(→NAT FIN/RSTステータスレジスタ)。 (1)FINフラグがLAN側,WAN側の双方向から受信され た (2)RSTフラグがLAN側,WAN側のどちらかから受信さ れた スイッチブロックでフローコントロールの要求が起 きたことを示します。 スイッチブロックでPRAMがフルになったことを示し ます。 第4章 初期化シーケンスと割込みシーケンス ■ 割込みイネーブルレジスタ 表 4.2-2に,割込みイネーブルレジスタの詳細を示します。 表 4.2-2 割込みイネーブルレジスタ(14'h2048) ビット 16 ニーモニック ttl_0 [15:9] reserved 8* filter_log フィールド名 TTL 0 error 説明 TTL0エラー発生時の割込みを 1:enableする 0:disableする filter log full (インプット側またはアウトプット側の)フィルタのログ がフルになった場合の割込みを 1:enableする 0:disableする NATのコネクションで (1)FINフラグがLAN側,WAN側の双方向から受信された (2)RSTフラグがLAN側,WAN側のどちらかから受信された のどちらかが発生した場合の割込みを 1:enableする 0:disableする スイッチブロックでフローコントロールの要求が発生し た場合の割込みを 1:enableする 0:disableする スイッチブロックでPRAMがフルになった場合の割込みを 1:enableする 0:disableする ホストインタフェースのTXバッファデッドロック時の割 込みを 1:enableする 0:disableする TXバッファオーバーラン発生時の割込みを 1:enableする 0:disableする RXアンダーラン発生時の割込みを 1:enableする 0:disableする パケットがRXバッファに残っているときの割込みを 1:enableする 0:disableする TXバッファ内のすべてのパケットを送出完了したときの 割込みを 1:enableする 0:disableする 7* nat_fin_rst nat connection terminated 6 switch_flow switch flow control 5 switch_full switch PRAM full 4 host_deadlock host I/F tx deadlock 3 Ovr TX TX overrun 2 Unr RX RX underrun 1 Packet Ready packet ready 0 Tx Empty TX buffer empty ホストステータスレジスタをアクセスすると,どのブロックから割込みが発生し ているか確認できます。ここでブロックを特定した後,各ブロックのステータスレ ジスタの値を見に行きます。ただし,ホストへのパケット送受信に関する割込みは このレジスタへのアクセスだけで判定可能です。 詳しくは「第10章 CPUとのパケット送受信」をご覧ください。 ■ ステータスレジスタのクリア ホストステータスレジスタを含む,各ブロックのステータスレジスタのクリアに 関しては前述の2段階で分かれます。 1) 最初にホストステータスレジスタを読みに行く段階 2) 各ブロックのステータスレジスタを読みに行く段階 1の段階ではホストステータスレジスタの[6:0]ビットはリードクリアされます が, [16:7]ビットはクリアされません。 次に,2の段階で読出しが終わったらホストステータスレジスタの[16:7]ビッ トがクリアされます。また,2の段階で階層化された各ブロックのステータスレジ スタのうち,リードクリアになっているものはリードクリアされます。 なお,SMIブロックのリンクの状態(スピードなど)を示すビットはリードオン リーでクリアされることはありません。 27 第4章 初期化シーケンスと割込みシーケンス 28 第5章 FEFエンジン FEFエンジンエンジン-NAT/IPフォワーディング NAT/IPフォワーディング この章では,FEFエンジンによるNATおよびIPフォワーディングについて,機能概要, フォワーディング用テーブルの詳細,フォワーディング時の動作およびステータスレ ジスタの詳細を説明します。 また,フラグメントパケットの取扱いやテーブルアクセスについて説明します。 5.1 NAT/IPフォワーディング機能の説明 5.2 NAT/IPフォワーディング用テーブル 5.3 NAT/IPフォワーディングの動作 5.4 フラグメントパケットの取扱い(do_frag_ipfレジスタ) 5.5 NAT/IPフォワーディング用テーブルへのアクセス 5.6 転送の失敗(TTL=0) 29 第5章 FEFエンジン-NAT/IPフォワーディング 5.1 NAT/IPフォワーディング機能の説明 NAT/IPフォワーディング機能の説明 FEFエンジンNAT/IPフォワーディング機能は,NATおよびIPフォワーディングをソフ トウェアを介さずにハードウェアで処理する機能です。 ここでは,IPフォワーディングとNATの具体的な動作について簡単に説明します。 ■ FEF NAT/IPフォワーディングの概要 MB86977では,IPフォワーディングとNATをあわせて合計128本のパケット転送用 パイプの設定が可能です。 この転送用パイプは次のインタフェース間をフルワイヤスピードでつなぐ転送 パスです。 WAN用インタフェースとDMZ用インタフェース間 WAN用インタフェースとLAN用インタフェース間 DMZ用インタフェースとLAN用インタフェース間 この設定は128エントリを持つNAT/IPフォワーディング用テーブルで行います。 ■ IPフォワーディング時の処理 入力パケットの送信元IPアドレスと宛先IPアドレスの組をNAT/IPフォワーディ ング用テーブルのエントリと比較し,一致するエントリが存在した場合はテーブル で指示されている転送先インタフェースにパケット転送が行われます。 この転送はCPU処理を必要とせず,MB86977内部においてフルワイヤスピードで行 われます。一致するエントリが存在しなかった場合は,ホストインタフェースを介 してCPUへ送られます。 IPフォワーディング時にハードウェアにより行われる各処理を以下に記します。 MACアドレスの付替え TTLの減算 IPヘッダチェックサムの再計算 イーサネットフレームのCRC再計算 転送先インタフェースへの転送 IPフォワーディングはIPv4/IPv6ともに対応可能です。 30 第5章 FEFエンジン-NAT/IPフォワーディング ■ NAT時の処理 NATはIPv4のみ対応します。入力パケットの送信元IPアドレスと宛先IPアドレス の組,送信元TCP/UDPポート番号と宛先TCP/UDPポート番号の組をNAT/IPフォワー ディング用テーブルのエントリと比較し,一致するエントリが存在した場合はテー ブルで指示されているアドレス変換およびポート番号変換を実行し,転送先インタ フェースにパケット転送が行われます。 この転送はCPU処理を必要とせず,MB86977内部をフルワイヤスピードで行われま す。一致するエントリが存在しなかった場合は,ホストインタフェースを介してCPU へ送られます。 NAT時にハードウェアにより行われる各処理を以下に記します。 MACアドレスの付替え TTLの減算 IPアドレスの付替え IPヘッダチェックサムの再計算 TCP/UDPポート番号の付替え TCP/UDPヘッダのチェックサム再計算 イーサネットフレームのCRC再計算 転送先インタフェースへの転送 FEFのNATモードではMB86977に向かうAH,ESPパケットはFEFによるハード転送の 対象になりません。これらのパケットはホストへ転送されます。 ■ NAT/IPフォワーディングの転送の概要 図 5.1-1に,NAT/IPフォワーディングの転送の概要を示します。 I/F FEF NAT/IP FEF FEF I/F 図 5.1-1 NAT/IPフォワーディング転送の概要 31 第5章 FEFエンジン-NAT/IPフォワーディング 5.2 NAT/IPフォワーディング用テーブル NAT/IPフォワーディング用テーブル NAT/IPフォワーディング用テーブルについて説明します。このテーブルはNATによ るIPパケットの転送,ルーティングによるIPパケットの転送(IPフォワーディング) の双方に利用します。 IPフォワーディングの場合,受信パケットの宛先IPアドレスと送信元IPアドレスの 組を参照し適切な転送先をテーブルから返します。NATの場合,IPアドレスに加えて TCP/UDPの送受信ポート番号も合わせて参照し,適切なIPアドレス,ポート番号,転 送先をこのテーブルから返してもらいます。 ■ NAT/IPフォワーディング用テーブル 表 5.2-1に,NAT/IPフォワーディング用テーブルの内容を示します。 表 5.2-1 NAT/IPフォワーディング用テーブル コント 宛先インタ PPPoE v4トンネ ToS IPアドレス ポート番号 MACアドレス ToS値 ロール ヘッダ ルヘッダ 付替え フェース No Cntrl_ EXT_IP INT_IP NAT_IP EXT_ INT_ NAT_ EXT_ INT_ INT_ EXT_ PPPoE v4 ToS_Re ToS ビット [127:0] [127:0] [31:0] PORT PORT PORT MAC MAC DEST_ DEST_ Header tunnel place _VAL [7:0] [15:0] [15:0] [15:0] [47:0] [47:0] IN IN [1:0] Header [7:0] [1:0] [7:0] [7:0] 0 8'h53 IP1 IP2 IP3 Port1 Port2 Port3 MAC1 MAC2 Dest1 Dest2 1 1 3 1 8'hc9 IP4 IP5 IP5 MAC3 MAC4 Dest3 Dest4 2 1 127 8'h00 NAT/IPフォワーディングでは,内部セグメント(Internal Segment)と外部セグ メント(External Segment)という概念を使用します。WAN,DMZ,LANのなかから 二つのセグメントを選び,両者間を繋ぐパイプを見たときに,相対的にLAN側に近 い方を内部セグメント,WAN側に近い方を外部セグメントと呼びます。 表 5.2-2に,内部セグメントと外部セグメントの関係を示します。 表 5.2-2 内部/外部セグメントの関係 内部セグメント LAN LAN DMZ 外部セグメント DMZ WAN WAN 後述の「5.4 フラグメントパケットの取扱い(do_frag_ipfレジスタ)」ではレ ジスタの説明の中で"LAN側","WAN側"という表現が出てきますが,それぞれ上記内 部セグメント,外部セグメントに対応した表現として扱っています。 以下に,NAT/IPフォワーディング用テーブルの各フィールドの説明をします。 32 第5章 FEFエンジン-NAT/IPフォワーディング ■ コントロール・フィールド ビット0:valid "1"のときエントリが有効,"0"のときエントリが無効です。 ビット1:NAT or IPフォワーディング "1"のときNATモード,"0"のときIPフォワーディングモードです。 ビット2:IPv4モードON(NATまたはIPフォワーディングモード) "0"のときoff,"1"のときonです。 ビット3:IPv6フォワーディングモードON "0"のときoff,"1"のときonです。 ビット4:TCP NATモードON "0"のときoff ,"1"のときonです。 ビット5:UDP NATモードON "0"のときoff ,"1"のときonです。 ビット6:PPPoE "1"のときWANインタフェースへ送出するパケットのPPPoEヘッダフィールド で指定されるPPPoEヘッダを付加します。"0"ならば付加しません。詳細につい ては,次章で説明します。 ビット7:IPv6 over IPv4トンネル "1"のときWANインタフェースへ送出するパケットにv6_v4ヘッダフィールド で指定されるv4ヘッダを付加します。"0"ならば付加しません。詳細については, 次章で説明します。 IPv4の転送の場合,トンネルモードはハードウェアで処理されませんので, ビット7は"0"を設定してください。 また,IPv6転送の場合,NAT処理は行いません。よってビット[1],ビット[4] , ビット[5]の設定は"0"にしてください。 33 第5章 FEFエンジン-NAT/IPフォワーディング ■ IPアドレス・フィールド IPフォワーディングモードでは,IPアドレスはIPv4とIPv6の両方に対応可能です。 送信元と宛先のIPアドレスを参照します(NATモードではIPv4のみ対応します)。 EXT_IP: NATおよびIPフォワーディングモードにおいて,外部セグメント側のIPアドレ スを指定します。 INT_IP: NATおよびIPフォワーディングモードにおいて,内部セグメント側のIPアドレ スを指定します。 NAT_IP: NATモードの場合,NATで置換するべきIPアドレスを指定します。IPv4のIPフォ ワーディングモードの場合はINT_IPと同じ値に設定してください。 IPv6ではこのフィールドは設定しないでください。 具体的な動作は以下のようになります。 内部セグメント側からパケットが来た場合には,送信元IPアドレスがINT_IP か らNAT_IPに置換されます。外部セグメント側からパケットが来た場合には,宛先IP アドレスがNAT_IPからINT_IPに置換されます。 ■ ポート番号・フィールド NATモードのときのみ有効です。 EXT_PORT: 外部セグメント側のTCP/UDPポート番号を指定します。 INT_PORT: 内部セグメント側のTCP/UDPポート番号を指定します。 NAT_PORT: NATで置換するべきTCP/UDPポート番号を指定します。 具体的な動作は以下のようになります。 内部セグメント側からパケットが来た場合には,送信元のTCP/UDPポート番号が INT_PORTからNAT_PORTへ置換されます。外部セグメント側からパケットが来た場合 には,宛先のTCP/UDPポート番号がNAT_PORTからINT_PORTに置換されます。 IPv6モードのときには設定しないでください。 34 第5章 FEFエンジン-NAT/IPフォワーディング ■ MACアドレス・フィールド EXT_MAC: 外部セグメント側の宛先MACアドレスを指定します。 INT_MAC: 内部セグメント側の宛先MACアドレスを指定します。 具体的な動作は以下のようになります。 内部セグメント側からパケットが来た場合には,宛先MACアドレスがEXT_MACに置 換されます。 外部セグメント側からパケットが来た場合には,宛先MACアドレスがINT_MACに置 換されます。いずれの場合にも,送信元MACアドレスは, L2アドレスルックアップ テーブル(「14章 L2アドレスルックアップテーブル」参照)のエントリ番号0番に 登録されるルータのMACアドレスに置換されます。 ■ 宛先インタフェース・フィールド INT_DEST_IN: 内部セグメント側への転送先インタフェースです。 EXT_DEST_IN: 外部セグメント側への転送先インタフェースです。 表 5.2-3に,各ビットと転送先インタフェースの関係を示します。 表 5.2-3 転送先インタフェースと設定ビットの関係 ビット 7 6 5 4 3 2 1 0 転送先インタフェース Host High Priority Interface Host Normal Priority Interface WAN High Priority Interface WAN Normal Priority Interface DMZ High Priority Interface DMZ Normal Priority Interface LAN 1 Interface LAN 0 Interface ■ PPPoEヘッダフィールド PPPoEのヘッダ処理に使用するヘッダレジスタのエントリ指定に使用します。詳 細は「第6章 ディレクションアナライザブロック」を参照してください。 ■ v4トンネルヘッダフィールド IPv6 over IPv4トンネル用のヘッダレジスタのエントリ指定に使用します。詳細 は「第6章 ディレクションアナライザブロック」を参照してください。 ■ ToS付替えフィールド "1"を設定すると該当エントリのパケットに対してToSの付替えを行います。ただ し,ToSフィールドの付替え対象となるのはWANインタフェースへ送出されるパケッ トのみです。 一方,WANインタフェースから受信されるパケットに対してはこのビットが設定 されていてもToSの付替えは起こりません。ToSの付替えは起こりませんが,優先制 御機構においてテーブルで設定されたパケットに対して優先制御は行われます。 35 第5章 FEFエンジン-NAT/IPフォワーディング ■ ToS値フィールド マッピングしたいToS値を設定します。IPv6の場合にはTraffic classが付替えの 対象となります。 v4トンネルを行っているv6パケットに対しては包含されたIPv6パケットの Traffic classのみが付替えの対象となります。外側のIPv4パケットについては後 述のトンネルヘッダレジスタで登録されたToS値がそのまま使用されます。 36 第5章 FEFエンジン-NAT/IPフォワーディング 5.3 NAT/IPフォワーディングの動作 NAT/IPフォワーディングの動作 ここではNAT/IPフォワーディング時の動作およびフォワーディング時にパケット の通過を確認できる2種類のステータスレジスタについても説明します。 ■ NAT/IPフォワーディングの動作について IPフォワーディング時,パケットが入力された側がLAN側かWAN側かによって,実 施する参照が異なります。また,NAT時には,IPフォワーディング時に参照するIP アドレスに加え,TCP/UDPポート番号が比較の対象になります。 ■ NAT/IPフォワーディングのステータスレジスタについて パケットが通過したかどうかは,NAT/IPFマッチレジスタを調べることで確認で きます。NAT時には,さらにNAT FIN/RSTステータスレジスタも使用できます。 37 第5章 FEFエンジン-NAT/IPフォワーディング 5.3.1 IPフォワーディング時の動作 IPフォワーディング時の動作 ここではIPフォワーディング時の参照動作について説明します。 ■ IPフォワーディング時の参照 スイッチブロックからホストインタフェースブロックに取り込まれたパケット は以下の二とおりの参照を実施します。 ○ LAN側からパケットが入力された場合 {NAT/IPフォワーディングテーブルのINT_IPアドレスフィールド,EXT_IPア ドレスフィールド}の組と{受信パケットの送信元IPアドレス,宛先IPアドレ ス}の組の比較参照 ○ WAN側からパケットが入力された場合 (1)ipv4: {NAT/IPフォワーディングテーブルのNAT_IPアドレスフィールド,EXT_IP アドレスフィールド}の組と{受信パケットの宛先IPアドレス,送信元IP アドレス}の組の比較参照 (2)ipv6: {NAT/IPフォワーディングテーブルのINT_IPアドレスフィールド,EXT_IP アドレスフィールド}の組 vs {受信パケットの宛先IPアドレス,送信元 IPアドレス}の組の比較参照 いずれかの比較でマッチが返ってきた場合,適切なMACアドレスと転送先インタ フェース情報が採用されます。内部セグメント側から外部セグメントのパケットの 場合,(1)の比較で一致し,宛先MACアドレスがEXT_MACフィールドから,転送先イ ンタフェース情報がEXT_DST_INフィールドから採用されます。 また,外部セグメントから内部セグメントのパケットの場合, (2)の参照で一致 し,宛先MACアドレスがINT_MACフィールドから,転送先インタフェース情報が INT_DST_INフィールドから採用されます。 ハードウェアの構成上,外部セグメントから内部セグメントへのパケットに関す る参照の際,IPv4の場合には宛先IPアドレスに関しては常にNAT_IPフィールドとの 比較を行います。IPv4のIPフォワーディングモードのときは必ずINT_IPとNAT_IP フィールドに必ず同じIPアドレスを登録してください。 38 第5章 FEFエンジン-NAT/IPフォワーディング 5.3.2 NAT時の動作 NAT時の動作 NAT動作の場合,先のIPアドレスに加えてTCP/UDPポート番号が比較対象になります。 ■ NAT動作時の参照 スイッチブロックからホストインタフェースブロックに取り込まれたパケット は以下の二とおりの比較を行います。 ○ LAN側からパケットが入力された場合 {NAT/IPフォワーディングテーブルのINT_IPアドレスフィールド,EXT_IPア ドレスフィールド,INT_PORT ,EXT_PORT}の組と{受信パケットの送信元IPア ドレス,宛先IPアドレス,送信元TCP/UDPポート番号,宛先ポート番号}の組 ○ WAN側からパケットが入力された場合 {NAT/IPフォワーディングテーブルのNAT_IPアドレスフィールド,EXT_IPア ドレスフィールド,NAT_PORT,EXT_PORT}の組と{受信パケットの宛先IPアド レス,送信元IPアドレス,宛先TCP/UDPポート番号,送信元ポート番号}の組 いずれかの比較でマッチが返ってきた場合,適切なIPアドレスとポート番号情報 が採用されます。内部セグメント側から外部セグメントのパケットの場合,1の比 較で一致し,送信元IPアドレスがNAT_IPフィールドから,ポート番号がNAT_PORT フィールドから採用されます。 また,宛先MACアドレスがEXT_MACフィールドから,転送先インタフェース情報が EXT_DST_INフィールドから採用されます。 外部セグメントから内部セグメントのパケットの場合,2の参照で一致すると宛 先IPアドレスとしてINT_IPフィールドの値を,ポート番号としてINT_PORTフィール ドの値が採用されます。また,宛先MACアドレスがINT_MACフィールドから,転送先 インタフェース情報がINT_DST_INフィールドから採用されます。 NATを使用する場合,ソフトで管理しているNATテーブルとNAT/IPフォワーディン グテーブルの同期がとれていなければなりません。そこで,TCP用にその管理情報 を受け持つNAT FIN/RSTステータスレジスタが存在します。また,UDPのようなコネ クションレスなプロトコルに対してもパケットがFEFエントリによって処理されて いるかどうか監視するNAT/IPF マッチステータスレジスタがあります。 「5.3.3 NAT/IPF マッチステータスレジスタと動作(14'h2120∼14'h212c) 」に その概略と使用方法について説明します。 39 第5章 FEFエンジン-NAT/IPフォワーディング 5.3.3 NAT/IPF NAT/IPF マッチステータスレジスタと動作 (14'h2120∼ 14'h2120∼14'h212c) 14'h212c) このレジスタはNAT/IPフォワーディングテーブルにおいて,該当エントリに対する パケットが通過したかどうかを調べるレジスタです。リードクリアですので,定期的 にこのレジスタを見に行くことで,使用されなくなったエントリを判別できます。 NAT,IPフォワーディング共に使用可能です。 ■ NAT/IPF match_0レジスタ 表 5.3-1に,NAT/IPF match_0レジスタ(14'h2120)の内容を示します。 表 5.3-1 NAT/IPF match_0レジスタ(14'h2120) ビット 31 ニーモニック id 31 match フィールド名 id 31 packet match 説明 1:ID31の条件にマッチしたパケットの通 過を示します。 30 id 30 match id 30 packet match 1:ID30の条件にマッチしたパケットの通 過を示します。 : : : : 0 id 0 match id 0 packet match 1:ID0の条件にマッチしたパケットの通 過を示します。 Id値はNAT/IPフォワーディングテーブルの各エントリ番号に対応します。 ■ NAT/IPF match_1レジスタ 表 5.3-2に,NAT/IPF match_1レジスタ(14'h2124)の内容を示します。 表 5.3-2 NAT/IPF match_1レジスタ(14'h2124) ビット 31 40 ニーモニック id 63 match フィールド名 id 63 packet match 30 id 62 match id 62 packet match : 0 : id 32 match : id 32 packet match 説明 1:ID63の条件にマッチしたパケットの通 過を示します。 1:ID62の条件にマッチしたパケットの通 過を示します。 : 1:ID32の条件にマッチしたパケットの通 過を示します。 第5章 FEFエンジン-NAT/IPフォワーディング ■ NAT/IPF match_2レジスタ 表 5.3-3に,NAT/IPF match_2レジスタ(14'h2128)の内容を示します。 表 5.3-3 NAT/IPF match_2レジスタ(14'h2128) ビット 31 ニーモニック id 95 match フィールド名 id 95 packet match 30 id 94 match id 94 packet match : 0 : id 64 match : id 64 packet match 説明 1:ID95の条件にマッチしたパケットの通 過を示します。 1:ID94の条件にマッチしたパケットの通 過を示します。 : 1:ID64の条件にマッチしたパケットの通 過を示します。 ■ NAT/IPF match_3レジスタ 表 5.3-4に,NAT/IPF match_3レジスタ(14'h212c)の内容を示します。 表 5.3-4 NAT/IPF match_3レジスタ(14'h212c) ビット 31 ニーモニック id 127 match フィールド名 id 127 packet match 30 id 126 match id 126 packet match : 0 : id 96 match : id 96 packet match 説明 1:ID127の条件にマッチしたパケットの 通過を示します。 1:ID126の条件にマッチしたパケットの 通過を示します。 : 1:ID96の条件にマッチしたパケットの 通過を示します。 MB86977のフィルタにマッチして廃棄されるパケットでも,NAT/IPFテーブルエン トリにマッチするパケットであるとこのエントリに対するマッチ信号が検出され ます。ソフトではこの点を配慮願います。 41 第5章 FEFエンジン-NAT/IPフォワーディング 5.3.4 NAT FIN/RSTステータスレジスタと動作( FIN/RSTステータスレジスタと動作(14'h2130 ステータスレジスタと動作(14'h2130 ∼14'h213c) 14'h213c) 5.3.3のレジスタに加え,NATモード時には,以下に示すNAT FIN/RSTステータスレ ジスタも使用できます。 IPフォワーディングモードおよびUDPプロトコルを使用した場合ではこのレジスタ を使用したエントリの監視はできません。このレジスタはリードクリアです。 ■ NAT FIN/RSTステータスレジスタの動作 RSTまたはFINのコントロールフラグを持つTCPパケットが,NAT/IPフォワーディ ング用テーブルの設定にマッチしたときに,該当エントリ番号に対応する各ビット が"1"に設定されます。"1"に設定される条件は以下の2とおりです。 RSTフラグがセットされたパケットがLAN側またはWAN側のどちらかから 通過したとき FINフラグがセットされたパケットがLAN側とWAN側の双方向から通過し, さらにLAN側またはWAN側からACKフラグがセットされたパケットが通過 したとき ■ NAT_FIN/RST_0レジスタ 表 5.3-5に,NAT_FIN/RST_0レジスタ(14'h2130)の内容を示します。 表 5.3-5 NAT_FIN/RST_0(14'h2130) 42 ビット 31 ニーモニック id 31 fin/rst フィールド名 id 31 fin/rst received 30 id 30 fin/rst id 30 fin/rst received : 0 : id 0 fin/rst : id 0 fin/rst received 説 明 1.ID31のNATのコネクションにおいて,WANま たはLAN側からRSTを受信したか, 2.WAN側とLAN側の両方からFINが通過した後, さらにLAN側またはWAN側からACKフラグが セットされたパケットを受信したことを示し ます。 1.ID30のNATのコネクションにおいて,WANま たはLAN側からRSTを受信したか, 2.WAN側とLAN側の両方からFINが通過した後, さらにLAN側またはWAN側からACKフラグが セットされたパケットを受信したことを示し ます。 : 1.ID0のNATのコネクションにおいて,WANまた はLAN側からRSTを受信したか, 2.WAN側とLAN側の両方からFINが通過した後, さらにLAN側またはWAN側からACKフラグが セットされたパケットを受信したことを示し ます。 第5章 FEFエンジン-NAT/IPフォワーディング ■ NAT_FIN/RST_1レジスタ 表 5.3-6に,NAT_FIN/RST_1レジスタ(14'h2134)の内容を示します。 表 5.3-6 NAT_FIN/RST_1(14'h2134) ビット 31 ニーモニック id 63 fin/rst フィールド名 id 63 fin/rst received 30 id 62 fin/rst id 62 fin/rst received : 0 : id 32 fin/rst : id 32 fin/rst received 説明 1.ID63のNATのコネクションにおいて,WANま たはLAN側からRSTを受信したか, 2.WAN側とLAN側の両方からFINが通過した後, さらにLAN側またはWAN側からACKフラグが セットされたパケットを受信したことを示し ます。 1.ID62のNATのコネクションにおいて,WANま たはLAN側からRSTを受信したか, 2.WAN側とLAN側の両方からFINが通過した後, さらにLAN側またはWAN側からACKフラグが セットされたパケットを受信したことを示し ます。 : 1.ID32のNATのコネクションにおいて,WANま たはLAN側からRSTを受信したか, 2.WAN側とLAN側の両方からFINが通過した後, さらにLAN側またはWAN側からACKフラグが セットされたパケットを受信したことを示し ます。 ■ NAT_FIN/RST_2レジスタ 表 5.3-7に,NAT_FIN/RST_2レジスタ(14'h2138)の内容を示します。 表 5.3-7 NAT_FIN/RST_2(14'h2138) ビット 31 ニーモニック id 95 fin/rst フィールド名 id 95 fin/rst received 30 id 94 fin/rst id 94 fin/rst received : 0 : id 64 fin/rst : id 64 fin/rst received 説明 1.ID95のNATのコネクションにおいて,WANま たはLAN側からRSTを受信したか, 2.WAN側とLAN側の両方からFINが通過した後, さらにLAN側またはWAN側からACKフラグが セットされたパケットを受信したことを示し ます。 1.ID94のNATのコネクションにおいて,WANま たはLAN側からRSTを受信したか, 2.WAN側とLAN側の両方からFINが通過した後, さらにLAN側またはWAN側からACKフラグが セットされたパケットを受信したことを示し ます。 : 1.ID64のNATのコネクションにおいて,WANま たはLAN側からRSTを受信したか, 2.WAN側とLAN側の両方からFINが通過した後, さらにLAN側またはWAN側からACKフラグが セットされたパケットを受信したことを示し ます。 43 第5章 FEFエンジン-NAT/IPフォワーディング ■ NAT_FIN/RST_3レジスタ 表 5.3-8に,NAT_FIN/RST_3レジスタ(14'h213c)の内容を示します。 表 5.3-8 NAT_FIN/RST_3(14'h213c) ビット 31 ニーモニック id 127 fin/rst フィールド名 id 127 fin/rst received 30 id 126 fin/rst id 126 fin/rst received : 0 : id 96 fin/rst : id 96 fin/rst received 説明 1.ID127のNATのコネクションにおいて, WANまたはLAN側からRSTを受信したか, 2.WAN側とLAN側の両方からFINが通過した 後,さらにLAN側またはWAN側からACKフラ グがセットされたパケットを受信したこ とを示します。 1.ID126のNATのコネクションにおいて, WANまたはLAN側からRSTを受信したか, 2.WAN側とLAN側の両方からFINが通過した 後,さらにLAN側またはWAN側からACKフラ グがセットされたパケットを受信したこ とを示します。 : 1.ID96のNATのコネクションにおいて,WAN またはLAN側からRSTを受信したか, 2.WAN側とLAN側の両方からFINが通過した 後,さらにLAN側またはWAN側からACKフラ グがセットされたパケットを受信したこ とを示します。 「5.3.3 NAT/IPF マッチステータスレジスタと動作(14'h2120∼14'h212c) 」お よび「5.3.4 NAT FIN/RSTステータスレジスタと動作(14'h2130∼14'h213c) 」の ステータスレジスタを利用することにより,ソフトが持っているNATのテーブル設 定を適宜,変更することが可能です。 例えばソフトはパケットがTCPのFINやRSTの情報を持っているかどうか,NAT FIN/RSTステータスレジスタからの通知によって知ることができます。この情報に より,ソフトで管理しているNATテーブル内のエントリの削除を行います。 また,UDPなどで使用されていないと思われるNATテーブル内のエントリはCPUで NAT/IPF マッチステータスレジスタを定期的に読み出すことで判定できます。リー ドクリアなので,次に通過したパケットが存在しない場合,このビットは"0"とし て読み出され,CPUの監視サイクルの間に一度もパケットが来なかったことが示さ れます。 このような形でNATテーブルの監視を行うことによってソフト上でのNATテーブ ルとNAT/IPフォワーディングテーブルの同期をとります。 44 第5章 FEFエンジン-NAT/IPフォワーディング 5.4 フラグメントパケットの取扱い(do_fr フラグメントパケットの取扱い(do_frag_ipf do_frag_ipfレジス ag_ipfレジス タ) フラグメントパケットの取扱いは,do_frag_ipfレジスタ(14'h2140)の設定で行 います。 ■ do_frag_ipfレジスタの設定 do_frag_ipfレジスタの設定は以下のとおりです。 "1":フラグメントパケットについてもIPフォワーディングを行います。 "0":フラグメントパケットについてIPフォワーディングを行わずすべて ホスト(CPU)へ向けて転送されます。 NATについてはこのレジスタの設定に関わらず,フラグメントパケットをFEFエン ジン処理の対象にすることはありません。このようなパケットはホストへ向けて転 送されます。 45 第5章 FEFエンジン-NAT/IPフォワーディング 5.5 NAT/IPフォワーディング用テーブルへのアクセス NAT/IPフォワーディング用テーブルへのアクセス ここでは,NAT/IPフォワーディング用テーブルへのアクセスについて,概要と詳細 を説明します。 基本的にデータレジスタ,コマンドレジスタ,ステータスレジスタの三つのレジス タによりテーブルへのアクセスを行います。 ■ テーブルへの書込み(登録/削除) まず,データレジスタであるtbl_nat_dataレジスタに目的のデータを書き込みま す。次にコマンドレジスタのtbl_nat_cmdレジスタにコマンド用のデータを書き込 みます。この時点でMB86977はテーブルへの書込みを開始します。 書込みが終わったかどうかはステータスレジスタのtbl_nat_statusレジスタで 確認します。 確認した結果書込み終了が確認できれば,次の書込みデータがある場合は引き続 き前述の動作を繰り返し,テーブルへの書込みが完了したら書込みを終了します。 図 5.5-1に,MB86977の書込みフローを示します。 Yes running ? No Yes No 図 5.5-1 書込みフロー 46 第5章 FEFエンジン-NAT/IPフォワーディング ■ テーブル内のエントリの読出し 読出しの場合は,tbl_nat_cmdレジスタに読出しコマンドを書き込みます。次に tbl_nat_statusレジスタで読出し終了を確認し,tbl_nat_dataレジスタを読み出し ます。 読出しデータが引き続きある場合はこの一連の動作を繰り返すことが必要です。 図 5.5-2に,MB86977の読出しフローを示します。 Yes running ? No Yes No 図 5.5-2 読出しフロー 47 第5章 FEFエンジン-NAT/IPフォワーディング 5.5.1 テーブルアクセスとアクセス用レジスタの説明 ここではコマンドレジスタ,データレジスタ,ステータスレジスタについて説明し ます。 ■ tbl_nat_cmdレジスタ コマンドレジスタtbl_nat_cmdレジスタ(14'h2100)のフォーマットは以下のと おりです。 id item cmd IdはNAT/IPフォワーディングテーブルのエントリ番号を指定します。 表 5.5-1に,コマンドレジスタのコマンド内容を示します。 表 5.5-1 コマンドレジスタのコマンド内容 フィールド Reserved Id Reserved Item ビット [31:23] [22:16] [15:13] [12:8] Reserved Cmd [7:1] [0] 説明 id 0:INT-IP(IPv4 のみ) 1:EXT-IP(IPv4 のみ) 2:NAT-IP(IPv4 のみ) 4-7:INT-IP(IPv6 のみ) 8-11:EXT-IP(IPv6 のみ) 12:INT-PORT 13:EXT-PORT 14:NAT-PORT 16-17:INT-MAC 18-19:EXT-MAC 20:INT Dst インタフェース 21:EXT Dst インタフェース 22: 設定 1:書込み 0:読込み IPv4とIPv6のアイテムは同時に設定できません。IPv4アドレスを使用する場合は itemの4∼11番は設定しないでください。また,IPv6アドレスを使用する場合はitem の0∼2番および12∼14番は設定しないでください。 Itemの22番はNAT/IPフォワーディングテーブルのコントロール,宛先インタ フェース,PPPoEヘッダ,v6_v4ヘッダフィールドおよびToSのマッピング情報を登 録するために使用します。データレジスタにおける配置に関しては次に説明します。 48 第5章 FEFエンジン-NAT/IPフォワーディング ■ tbl_nat_dataレジスタ データレジスタtbl_nat_dataレジスタ(14'h2104)のフォーマットと割当ては以 下のとおりです。 data[31:0] データレジスタはコマンドレジスタのアイテム別で登録される内容が変わりま す。表 5.5-2に,詳しくは示します。 表 5.5-2 コマンドレジスタのitem別データレジスタの割当て(続く) アイテム 0 1 2 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21 22 ビット [31:0] [31:0] [31:0] [31:0] [31:0] [31:0] [31:0] [31:0] [31:0] [31:0] [31:0] [31:16] [15:0] [31:16] [15:0] [31:16] [15:0] [31:0] [31:16] [15:0] [31:0] [31:16] [15:0] [31:8] [7:0] [31:8] [7:0] [31:24] [23:22] [21] 説明 LAN側IPv4アドレス WAN側IPv4アドレス NAT IPv4アドレス LAN側IPv6アドレスの最初の32ビット LAN側IPv6アドレスの次の32ビット LAN側IPv6アドレスの次の32ビット LAN側IPv6アドレスの最後の32ビット WAN側IPv6アドレスの最初の32ビット WAN側IPv6アドレスの次の32ビット WAN側IPv6アドレスの次の32ビット WAN側IPv6アドレスの最後の32ビット reserved LAN側ポート番号 reserved WAN側ポート番号 reserved NATポート番号 LAN側MACアドレス先頭32ビット reserved LAN側MACアドレス最後の16ビット WAN側MACアドレス先頭32ビット reserved WAN側MACアドレス最後の16ビット reserved LAN側宛先インタフェース reserved WAN側宛先インタフェース ToSフィールド値 reserved NAT (1:NATモード,0:IPフォワーディングモード) [20] エントリ有効 [19:18] reserved [17] IPv6 [16] IPv4 [15:14] reserved [13] UDP (NATモードのみ有効) [12] TCP (NATモードのみ有効) [11:10] reserved [9:8] v6 over v4トンネルヘッダ選択 [7:6] reserved 表 5.2-1との対応 INT_IP[31:0] EXT_IP[31:0] NAT_IP[31:0] INT_IP[127:96] INT_IP[95:64] INT_IP[63:32] INT_IP[31:0] EXT_IP[127:96] EXT_IP[95:64] EXT_IP[63:32] EXT_IP[31:0] INT_PORT[15:0] EXT_PORT[15:0] NAT_PORT[15:0] INT_MAC[47:16] INT_MAC[15:0] EXT_MAC[47:16] EXT_MAC[15:0] INT_DEST[7:0] EXT_DEST[7:0] ToS_VAL[7:0] Cntrlビット[1] Cntrlビット[0] Cntrlビット[3] Cntrlビット[2] Cntrlビット[5] Cntrlビット[4] v4tunnel Header 49 第5章 FEFエンジン-NAT/IPフォワーディング 表 5.5-2 コマンドレジスタのitem別データレジスタの割当て(続き) アイテム 22 ビット [5:4] [3] [2] [1] [0] 説明 PPPoEヘッダ選択 reserved ToSフィールド付替え (1:付け替える,0:付け替えない) v6 over v4 トンネルヘッダ付加 PPPoEヘッダ付加 表 5.2-1との対応 PPPoE Header ToS_Replace Cntrlビット[7] Cntrlビット[6] IPv4のアイテムとIPv6のアイテムは同時に設定はできません。したがって,ビッ ト16と17およびビット12と13は同時に1に設定しないようにしてください。また, IPv4モードで使用するときにはアイテム4∼11は設定しないでください。逆にIPv6 モードで使用するときにはアイテム0∼2および12∼14は設定しないでください。 ■ tbl_nat_statusレジスタ ステータスレジスタtbl_nat_statusレジスタ(14'h2108)のフォーマットと説明 は以下のとおりです。 status フィールド status ビット [0] 説明 1:実行中 0:完了 ■ アクセス方法の説明 フォワーディングテーブルのエントリは「5.2 NAT/IPフォワーディング用テー ブル」で示したとおり,IPアドレスをはじめ,多くの情報を1エントリで保持して います。そこで,1エントリへの書込み,読出しに際して複数のコマンドを発行す る必要があります。 例えばIPv4のIPフォワーディングの場合,一つのエントリに対して最低10回コマ ンドを発行する必要があります。また,IPv6のIPフォワーディングの場合には,最 低15回のコマンドを発行する必要があります。 以下に,IPv4のIPフォワーディングのテーブルへの書込みを例に,そのアクセス の方法を説明します。 1) まず,エントリへの書込みが必要だと判断するとデータレジスタに目的の データを書き込みます。書き込む順番に依存性はありませんが,ここでは itemの順に書き込むとします。最初のデータでは内部セグメントのIPアド レス32ビットをデータレジスタに書き込みます。 2) 次にコマンドレジスタに適当なid(テーブルのエントリ番号)とitem=0 およびcmd=1(write)を書き込みます。 3) コマンドレジスタにコマンドデータが書き込まれた時点でMB86977では内 部のNAT/IPフォワーディングテーブルへの情報の登録を開始します。 INT_IP[127:0]フィールドの上位32ビットへデータレジスタの値である LAN側IPアドレスが書き込まれます。書込み動作実行中はステータスレジ スタのstatusビットは"1"となり,書込み作業中であることを示します。 書込みが完了するとこのstatusビットは"0"となります。 4) ソフトではこのステータスレジスタを監視し,status=0になったことを確 認して次のデータをデータレジスタに書込みへ行きます。次の書込みデー タは外部セグメントのIPアドレスです。 50 第5章 FEFエンジン-NAT/IPフォワーディング 5) 外部セグメントのIPアドレスをデータレジスタに書き込んだ後,コマンド レジスタのitemに"1"を指定します。ハードウェア内部のNAT/IPフォワー ディングテーブルにおいてはEXT_IP[127:0]の上位32ビットにこのデー タが書き込まれます。 6) 書込みが終了した時点で,次のデータをテーブルへ書き込みます。動作の 流れは同じなので,以下,書き込むデータの内容のみ説明します。次に NAT_IP[31:0]の登録を行います。IPフォワーディングの場合,itemに"2" を指定し,INT_IPと同じIPアドレスを書き込みます。 7) 次に内部セグメントのMACアドレスの登録です。MACアドレスは48ビットで あるため,2回に分けてテーブルへエントリします。コマンドレジスタの itemを"16"にしてMACアドレスの先頭32ビットを,"17"にして最後の16 ビットを書き込みます。NAT/IPフォワーディングテーブルのINT_MAC [47:0]へ登録されます。 8) 次に外部セグメントのMACアドレスを登録します。NAT/IPフォワーディン グテーブルのEXT_MAC[47:0]へ登録されます。 9) 次に宛先のインタフェース情報やコントロールビットフィールドのセッ ティングのためにコマンドレジスタのitem=22および21でこれらの情報を セットします。 これでテーブルへの1エントリが完了します。エントリテーブルへの登録作業は 10回発生します。 51 第5章 FEFエンジン-NAT/IPフォワーディング 5.5.2 table for nat access priorityレジスタ priorityレジスタ (14'h210c) 14'h210c)について ここでは,MB86977内部におけるパケット処理を一時中断し,CPUからの参照テーブ ルへのアクセスを優先させるtable for nat access priorityレジスタ(14'h210c) について説明します。 ■ 概要 NAT/IPフォワーディング用テーブルへのCPUからのアクセスは,パケット処理の 合間に行われます。すなわち,CPUからWrite/Readのコマンドを受け付けたときに, MB86977内部でNAT/IPフォワーディングテーブルの参照が行われていた場合には, CPUからのコマンドは参照動作の終了を待って実行に移されます。 「5.5.1 テーブルアクセスとアクセス用レジスタの説明」では,「例えばIPv4 のIPフォワーディングの場合,一つのエントリに対して最低10回コマンドを発行す る必要があります。また,IPv6のIPフォワーディングの場合には,最低15回のコマ ンドを発行する必要があります。 」という記述がありましたが,仮にIPv4のIPフォ ワーディングのテーブルを設定する場合,10回のコマンドを発行する間に10個のパ ケットがホストI/Fを通過する場合がありえます。 table for nat access priorityレジスタは,そのような事態を防ぎたい場合に, MB86977内部におけるパケット処理を一時中断し,CPUからの参照テーブルへのアク セスを優先させるレジスタです。 ■ 設定 table for nat access priorityレジスタを1にセットすると,MB86977は現在行っ ている参照動作が終了次第,内部における参照動作をストップします。この間に, CPUは優先的に参照テーブルへのアクセスを行うことができます。 必要な設定が終了した後に,0にクリアすると,MB86977は再び参照動作を開始し ます。 52 第5章 FEFエンジン-NAT/IPフォワーディング 5.6 転送の失敗(TTL=0 転送の失敗(TTL=0) TTL=0) TTLが0になってしまいパケット転送が不可能になった場合,このパケットに対する 通知をホストに対して行います。これはhost_statusレジスタのビット16で検出され ます。また,対応するパケットの内容についてはttl_0_buffer[15:0]レジスタに書 き込まれます。ここではTTL0エラー関連のレジスタについて説明します。 割込みとステータスに関しては「4.2 割込みシーケンス」を参照してください。 ■ ttl_0_buffer_full(14'h214c) ttl_0_buffer[15:0]に情報が蓄えられると"1"になります。ホストでリードク リアしない限り,ttl_0_buffer[15:0]は上書きされません。 ■ ttl_0_buffer[15:0] (14'h2880∼14'h28bf) パケットの概要を示すディスクリプタ(4バイト)と該当パケットの先頭60バイ トの情報で構成されます。ディスクリプタの内容については以下に示すとおりです。 ビット [31:24] [23:16] [15:11] [10:0] 名称 reserved source interface reserved packet length 53 第5章 FEFエンジン-NAT/IPフォワーディング 54 第6章 ディレクションアナライザブロック MB86977は, 「第5章 FEF NAT/IPフォワーディング」で説明したように,WAN⇔LAN, WAN⇔DMZ,DMZ⇔LAN間のNAT/IPフォワーディングを行うことができます。ただし,DMZ ⇔LAN間の通信においては,ハードウェア内でのテーブルの参照方法を確定するため に,宛先がLAN側なのかどうかを判定する必要があります。 ディレクションアナライザブロックでは,LANインタフェースに対応するサブネッ トアドレスとサブネットマスクを設定することにより,適切な宛先IPアドレス情報を NAT/IPフォワーディングブロックへ提供しています。 ディレクションアナライザブロックは,DMZ⇔LAN間のNAT/IPフォワーディングを行 うときには必ず設定する必要があります。WAN⇔LAN,WAN⇔DMZ間のNAT/IPフォワー ディングのみを行うときには設定する必要はありません。 6.1 ディレクションセッティングテーブル 6.2 ディレクションセッティングテーブルへのアクセス 55 第6章 ディレクションアナライザブロック 6.1 ディレクションセッティングテーブル DMZ⇔LAN間のNAT/IPフォワーディングにおいては,NAT/IPフォワーディングテーブ ルの参照方法を確定するために,宛先がLAN側なのかどうかを判定する必要がありま す。 ディレクションアナライザブロックでは,LANインタフェースに対応するサブネッ トアドレスとサブネットマスクをディレクションセッティングテーブルで設定する ことにより,適切な宛先IPアドレス情報をNAT/IPフォワーディングブロックへ提供し ています。 ■ ディレクションセッティングテーブルの内容 表 6.1-1に,ディレクションセッティングテーブルの内容を示します。 表 6.1-1 ディレクションセッティングテーブル No 0 1 Cntrl_ビット [1:0] 01 11 サブネットアドレス [63:0] IP1 IP2 サブネットマスク [63:0] IP_M1 IP_M2 ■ コントロールビットフィールド ビット0: valid "1"の場合,エントリが有効であることを示します。 ビット1:IPv4 or IPv6 "0"の場合,IPv4として使用されることを示します。 "1"の場合,Ipv6として使用されることを示します。 ■ IPアドレスフィールド サブネットアドレスフィールド: LANインタフェースに対応するサブネットを指定します。 サブネットマスクフィールド: サブネットアドレスフィールドに登録したサブネットに対応するサブネット マスクを登録します。 IPv4の場合,サブネットアドレス,サブネットマスクとして32ビットが指定可能 です。 IPv6の場合,サブネットアドレス,サブネットマスクとして上位64ビットが指定 可能です。 56 第6章 ディレクションアナライザブロック 6.2 ディレクションセッティングテーブルへのアクセス ここでは,ディレクションセッティングテーブルへのアクセス方法およびアクセス 用レジスタについて説明します。 ■ テーブルアクセスの方法 ディレクションセッティングテーブルへのサブネットアドレスフィールド,サブ ネットマスクフィールドへのアクセスには,NAT/IPフォワーディングテーブル, フィルタテーブル同様にコマンド,データ,ステータスの三つのレジスタによるア クセスを行います。 アクセス方法の詳細に関しては以下の章を参照してください。 「5.2 NAT/IPフォワーディングテーブル」 「7.2 ヘッダ処理レジスタ」 コントロールビットフィールドは通常のレジスタと同様にアクセスします(コマ ンドは使用しません) 。 57 第6章 ディレクションアナライザブロック 6.2.1 テーブルアクセス用レジスタの説明 テーブルアクセス用レジスタの詳細について説明します。 ■ tbl_direct_cmdレジスタ コマンドレジスタtbl_direct_cmdレジスタ(14'h2340)のフォーマットは以下の とおりです。 id item cmd 表 6.2-1に,コマンドレジスタの内容を示します。 表 6.2-1 コマンドレジスタの内容 フィールド reserved id ビット [31:16] [15:12] item [8] reserved cmd [7:1] [0] 説明 ビット[15:13] – エントリNo ビット[12]:0→サブネットアドレス指定 ビット[12]:1→サブネットマスク指定 0:IP アドレス (1st 32ビット) 1:IP アドレス (2nd 32ビット)(IPv6のみ) 1:書込み 0:読出し IDを指定する4ビット[15:12]のうち,エントリNo.は[15:13]で指定され,ビッ ト[12]はサブネットアドレスかサブネットマスクかの指定に使用されます。 ■ tbl_direct_dataレジスタ データレジスタtbl_direct_dataレジスタ(14'h2344)のフォーマットと割当て は以下のとおりです。 data[31:0] 表 6.2-2に,コマンドレジスタのitem別データレジスタの割当てを示します。 表 6.2-2 コマンドレジスタのitem別データレジスタの割当て item 0 ビット [31:0] 1 [31:0] 説明 サブネットアドレスまたはマスクの最初 の32ビット(IPv4の場合は全体) サブネットアドレスまたはマスクの次の 32ビット(IPv6 only) 表 6.1-1との対応 subnet address[63:32]or subnet mask[63:32] subnet address[31:0] or subnet mask[31:0] コマンドレジスタのitemフィールドに対応して記述しています。 ディレクションセッティングテーブルもほかのテーブル同様一度に書込みが行 えないので,1エントリ内のどこを書込みに行くのか,コマンドレジスタのitem フィールドで指定を行います。このitemフィールドに対応して書き込むデータの内 容が変わります。上の対応表はコマンドレジスタのitemフィールドと関連付けて データレジスタに書き込む内容を示しています。 58 第6章 ディレクションアナライザブロック ■ tbl_direct_statusレジスタ データレジスタtbl_direct_statusレジスタ(14'h2348)のフォーマットと説明 は以下のとおりです。 status フィールド ビット status [0] 説明 1:実行中 0:完了 ■ tbl_direct_valid_ipverレジスタ ディレクションセッティングテーブルのコントロールビットは,ほかのテーブル とは異なり,通常のレジスタと同じくCPUが直接アクセスして設定します。 表 6.2-3に,tbl_direct_valid_ipverレジスタ(14'h2350)の詳細を示します。 表 6.2-3 tbl_direct_valid_ipverレジスタ(14'h2350)の詳細 ビット 7 6 5 4 3 2 1 0 ニーモニック ip_ver[3] ip_ver[2] ip_ver[1] ip_ver[0] valid[3] valid[2] valid[1] valid[0] entry entry entry entry entry entry entry entry フィールド名 ID-3 ip version ID-2 ip version ID-1 ip version ID-0 ip version ID-3 valid ID-2 valid ID-1 valid ID-0 valid 説明 "1"- ipv6,"0"- ipv4 "1"- ipv6,"0"- ipv4 "1"- ipv6,"0"- ipv4 "1"- ipv6,"0"- ipv4 "1"-valid,"0"- invalid "1"-valid,"0"- invalid "1"-valid,"0"- invalid "1"-valid,"0"- invalid 59 第6章 ディレクションアナライザブロック 60 第7章 FEFエンジン FEFエンジンエンジン-ヘッダ処理 この章ではFEFエンジンのヘッダ処理の概要およびレジスタについて説明します。 7.1 ヘッダ処理機構の説明 7.2 ヘッダ処理レジスタ 61 第7章 FEFエンジン-ヘッダ処理 7.1 ヘッダ処理機構の説明 アクセス系のルータはPPPoEやIPv6 over IPv4トンネルへの対応が必要な場合があ ります。これらの接続系トンネル対応のヘッダ処理をCPUで行ってしまうと, 「第6章 NAT/IPフォワーディング」で説明したNAT/IPフォワーディングを行うことができませ ん。 そこで,MB86977はこの二つのヘッダ処理をハードウェアで実行します。 ■ ヘッダ処理機構の動作 入力されたデータパケットが図 7.1-1で示す4種類のタイプのいずれかであった 場合,「第5章 NAT/IPフォワーディング」で説明したNAT/IPフォワーディング用 テーブルに設定されている各エントリと比較されます。 このとき一致するエントリが存在すると,MB86977はNAT/IPフォワーディングを 実行するために,PPPoEヘッダおよびトンネルヘッダに包含されたIPパケットの取 り出しを自動的に行います。 逆にIPパケットの出力の際に図 7.1-1で示す4種類のタイプのいずれかのヘッダ 付加を実行したい場合は,PPPoEヘッダレジスタ(「7.2 ヘッダ処理レジスタ」参 照),IPv4ヘッダレジスタ(トンネル用)(「7.2.3 v4トンネルヘッダレジスタ (14'h2810∼14'h285c) 」参照)に目的のデータを登録の上,NAT/IPフォワーディ ング用テーブルにPPPoEヘッダおよびトンネルヘッダを付加するかどうかの設定を 行います。詳細は「7.2 ヘッダ処理レジスタ」で説明します。 ヘッダの付加を行う場合,付加されるパケット長がMTUを使用していると,付加 後のパケットはMTUを越えたオーバーサイズパケットとなって出力されてしまいま す。接続される端末のMTUサイズの設定に留意しなければなりません。 IPv6 over IPv4 Ether (0x0800) IPv4 (0x29) IPv6 (TCP/UDP) CRC IPv6 over PPPoE Ether (0x8864) PPPoE PPP (0x0057) IPv6 (TCP/UDP) CRC IPv4 over PPPoE Ether (0x8864) PPPoE PPP (0x0021) IPv4 (TCP/UDP) CRC IPv6 over IPv4 over PPPoE Ether (0x8864) PPPoE PPP (0x0021) IPv4 (0x29) IPv6 (TCP/UDP) CRC 図 7.1-1 FEFヘッダ処理機構で対応可能なパケットフォーマット PPPoEのヘッダ処理機能をサポートするのは,IPパケットの転送のみです。PPPoE のディスカバリーステージ,セッションステージ中のLCPパケット,IPCPパケット はホストへ転送されます。 また,内部セグメントからPPPoE,トンネルパケットを受信すると誤動作の可能 性がありますので,このような使用はしないでください。 62 第7章 FEFエンジン-ヘッダ処理 7.2 ヘッダ処理レジスタ ここでは,FEFエンジンのヘッダ処理に必要なNAT/IPフォワーディングテーブルの 設定,PPPoEヘッダレジスタの設定およびv4 トンネルヘッダレジスタについて説明し ます。 ■ ヘッダ処理レジスタの概要 「第5章 NAT/IPフォワーディング」で説明したNAT/IPフォワーディング用テー ブルへ設定を行い,PPPoEヘッダレジスタ,トンネル用のIPv4ヘッダレジスタに目 的のデータを書き込むことで,出力データパケットにPPPoEとIPv6 over IPv4トン ネルのヘッダを付加することができます。 以下,その設定方法について説明します。 63 第7章 FEFエンジン-ヘッダ処理 7.2.1 NAT/IPフォワーディングテーブルの設定 NAT/IPフォワーディングテーブルの設定 ここではNAT/IPフォワーディングテーブルのコントロール・フィールドについて説 明します。 ■ NAT/IPフォワーディングテーブルの設定説明 NAT/IPフォワーディングテーブル(「5.2 NAT/IPフォワーディング用テーブル」 参照)のコントロール・フィールドのビット6,ビット7は以下の設定に使われます。 ビット6:PPPoE "1"のときWANインタフェースへ送出するパケットにPPPoEヘッダフィールド で指定されるPPPoEヘッダを付加します。"0"ならば付加しません。 ビット7:IPv6 over IPv4トンネル "1"のときWANインタフェースへ送出するパケットにv6_v4ヘッダフィールド で指定されるv4ヘッダを付加します。"0"ならば付加しません。 NAT/IPフォワーディングテーブルのPPPoEヘッダフィールド,トンネルヘッダ フィールドの[1:0]はそれぞれ後述するPPPoEヘッダレジスタ,v6 over v4-トン ネルヘッダレジスタの各エントリを指定するために使用します。 NAT/IPフォワーディングテーブルへのこれらの情報の書込みについては「第5章 NAT/IPフォワーディング」を参照してください。 64 第7章 FEFエンジン-ヘッダ処理 7.2.2 PPPoEヘッダレジスタの設定 PPPoEヘッダレジスタの設定(PPPoE (PPPoE[3:0] 3:0]14' 14'h2800 ∼14' 14'h280c) h280c) NAT/IPフォワーディングテーブルのコントロール・フィールドでPPPoEヘッダの付 加を指示されたとき,WANへパケットを送出する際に付加するPPPoEヘッダを選択しま す。 PPPoEセッションステージにおけるIPv4/v6 パケットに対応するヘッダを4種類設 定可能です。 ■ PPPoEヘッダレジスタの設定 付加するPPPoEヘッダは,下記のPPPoEヘッダレジスタ(PPPoE[3:0]レジスタ) にあらかじめ設定しておきます。 PPPoEヘッダ付加を指示された場合,PPPoEヘッダレジスタの情報に加えて,PPPoE ヘッダ中のLENGTHフィールドと,PPPoEペイロード中のPPPのヘッダ(プロトコルタ イプがIPのもの)が自動的に付加されます。 ■ PPPoEレジスタの詳細 表 7.2-1に,PPPoEレジスタの内容を示します。 表 7.2-1 PPPoEレジスタの詳細 ヘッダ No 0 アドレス オフセット 0 1 1 2 2 3 3 ビット [31:16] [15:8] [7:0] [31:16] [15:8] [7:0] [31:16] [15:8] [7:0] [31:16] [15:8] [7:0] ニーモニック Session_ID CODE ver_type Session_ID CODE ver_type Session_ID CODE ver_type Session_ID CODE ver_type フィールド名 説明 session ID CODE version, type session ID CODE version, type session ID CODE version, type session ID CODE version, type PPPoEセッションIDです。 PPPoEコードです。 PPPoEバージョン および種別です。 PPPoEセッションIDです。 PPPoEコードです。 PPPoEバージョンおよび種別です。 PPPoEセッションIDです。 PPPoEコードです。 PPPoEバージョンおよび種別です。 PPPoEセッションIDです。 PPPoEコードです。 PPPoEバージョンおよび種別です。 65 第7章 FEFエンジン-ヘッダ処理 7.2.3 v4トンネルヘ v4トンネルヘッダレジスタ( トンネルヘッダレジスタ(14 ッダレジスタ(14' 14'h2810∼ h2810∼14' 14'h285c) h285c) NAT/IPフォワーディングテーブルのコントロール・フィールドでIPv6 over IPv4 トンネルを使用することを指示されたとき,WANへパケットを送出する際に付加する IPv4ヘッダを選択します。4種類選択可能です。 ■ v4トンネルヘッダレジスタの設定 ユーザは事前に,トンネル用のIPv4ヘッダをv4トンネルヘッダレジスタに登録し ておく必要があります。また,IPv4ヘッダレジスタに登録する際に,パケット長と チェックサムフィールドは0にする必要があります。 これら二つのフィールドはv4ヘッダを付加する際に自動的に計算されます。なお, IPヘッダのオプションは使用できません。 ■ v4トンネルヘッダレジスタの詳細 表 7.2-2に,v4トンネルヘッダレジスタの詳細を示します。 表 7.2-2 v4トンネルヘッダレジスタの詳細(続く) ヘッダ No 0 アドレス オフセット 0 1 2 1 3 4 5 6 7 8 9 66 ビット ニーモニック フィールド名 [31:16] length total packet length [15:8] [7:4] [3:0] [31:16] [15:0] [31:16] [15:8] [7:0] [31:0] [31:0] [31:16] TOS version IHL frag & flag ID checksum protocol TTL Src Add Dst Add length TOS field IP version IP header length fragment offset & flags identification header checksum next protocol Time to Live src IP address[31:0] dst IP address[31:0] total packet length [15:8] [7:4] [3:0] [31:16] [15:0] [31:16] [15:8] [7:0] [31:0] [31:0] TOS version IHL frag & flag ID checksum protocol TTL Src Add Dst Add TOS field IP version IP header length fragment offset & flags identification header checksum next protocol Time to Live src IP address[31:0] dst IP address[31:0] 説明 パケット長です。 0に設定します。 4に設定します。 5に設定します。 0に設定します。 41に設定します。 送信元アドレスです。 宛先アドレスです。 パケット長です。 0に設定します。 4に設定します。 5に設定します。 0に設定します。 41に設定します。 送信元アドレスです。 宛先アドレスです。 第7章 FEFエンジン-ヘッダ処理 表 7.2-2 v4トンネルヘッダレジスタの詳細(続き) ヘッダ No 2 アドレス オフセット 10 11 12 13 14 15 3 16 17 18 19 ビット ニーモニック フィールド名 説明 [31:16] length total packet length パケット長です。 0に設定します。 [15:8] [7:4] [3:0] [31:16] [15:0] [31:16] [15:8] [7:0] [31:0] [31:0] [31:16] TOS version IHL frag & flag ID checksum protocol TTL Src Add Dst Add length TOS field IP version IP header length fragment offset & flags identification header checksum next protocol Time to Live src IP address[31:0] dst IP address[31:0] total packet length [15:8] [7:4] [3:0] [31:16] [15:0] [31:16] [15:8] [7:0] [31:0] [31:0] TOS version IHL frag & flag ID checksum protocol TTL Src Add Dst Add TOS field IP version IP header length fragment offset & flags identification header checksum next protocol Time to Live src IP address[31:0] dst IP address[31:0] 4に設定します。 5に設定します。 0に設定します。 41に設定します。 送信元アドレスです。 宛先アドレスです。 パケット長です。 0に設定します。 4に設定します。 5に設定します。 0に設定します。 41に設定します。 送信元アドレスです。 宛先アドレスです。 図 7.2-1に,FEFヘッダ処理の様子を示します。 Cntl_Bit[4]=1; PPPoE Cntl_Bit[5]=1; PPPoE Header = 2 V6_v4 Header = 1 PPPoE IP 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 PPPoE IP IPv4 1 1 2 1 PPPoE 2 図 7.2-1 ヘッダ処理の概要 67 第7章 FEFエンジン-ヘッダ処理 68 第8章 FEFエンジン FEFエンジンエンジン-フィルタの機能と設定 この章では,FEFエンジンのフィルタ機能と設定について,フィルタテーブルとレ ジスタの詳細,フィルタログ機能およびテーブルアクセスの動作を説明します。 8.1 フィルタ機能の説明 8.2 L3/L4フィルタテーブル 8.3 プロトコルタイプテーブル 8.4 フィルタモード設定レジスタ(fl_controlレジスタ-14'h20c0) 8.5 フィルタログ機能 8.6 テーブルへのアクセス方法詳細 8.7 フィルタサブネットレジスタ(fl_subnetレジスタ-14'h20c4) 69 第8章 FEFエンジン-フィルタの機能と設定 8.1 フィルタ機能の説明 ここでは,FEFエンジンで実現できるフィルタについて説明します。 ■ フィルタの概要 DMZ,LAN,WANの異なるセグメント間をまたぐ通信時は,フィルタ機能が働きま す。以下の情報に基くフィルタが実現できます。 プロトコルタイプ(Ethernetのタイプフィールド) IPアドレス TCP/UDPポート番号 ICMPメッセージタイプ フィルタはパケットの受信用と送信用で2面持っています。それぞれ64件のフィ ルタリストを持っています。 なお,IPアドレスに関してはIPv4およびIPv6アドレスに対応可能です。また, PPPoEのセッションステージのようにIPパケットを含むフレームに関してもフィル タを実行できます。 さらに,AHタイプ,ESPタイプのIPsecパケットに関しても,それぞれL3/L4情報, IPアドレスベースでフィルタリング可能です。 ■ フィルタの動作 フィルタ機能では以下の2種類のテーブルと一つのモード設定用レジスタとを使 用します。 L3/L4フィルタテーブル プロトコルタイプテーブル フィルタモード設定レジスタ L3/L4フィルタテーブルはIPアドレスおよびTCP/UDP/ICMPのヘッダ情報を見て フィルタリングを行うためのテーブルで,プロトコルタイプテーブルはイーサネッ トヘッダ中のタイプフィールドの値でフィルタをかけるために使用します。フィル タモード設定レジスタはデフォルトの設定など,フィルタのベーシックな特徴を形 成するためのレジスタです。 例えば,最初にフィルタとしてまったくパケットを通さない,穴のない壁を作っ てから,自分の通したいパケットだけ通す穴をあけたい場合,まずはフィルタモー ド設定レジスタでテーブルエントリにマッチしないパケットは廃棄としておきま す。その上で自分の必要とするイーサタイプ,IPアドレス,TCP/UDPポート番号に 対し通過許可を与えていきます。 フィルタとFEFの位置関係は「図5.1-1 NAT/IPフォワーディング転送の概要」の ようになっています。スイッチブロックからホストインタフェースブロックに受信 されたとき,受信用の入力フィルタにまずかけられ,通過したものがNAT/IPフォー ワーディング処理をされます。処理後,ハードウェアで転送処理されたものは送信 用の出力フィルタにかけられます。 70 第8章 FEFエンジン-フィルタの機能と設定 8.2 L3/L4フィルタテーブル L3/L4フィルタテーブル ここでは,L3/L4フィルタテーブルと各フィールドについて説明します。 ■ L3/L4フィルタテーブルの構成 表 8.2-1に,L3/L4フィルタテーブルの構成を示します。 表 8.2-1 L3/L4フィルタテーブル No V4_ V6 0 1 1 1 63 0 Don't SRC DST SRC DST Care/ _IP _IP LWR LWR Mask/ [127:0] [127:0] PORT PORT Range [15:0] [15:0] (M_ 兼 Range) ICMP TYPE [16:0] [7:0] IP3 SRC UPR PORT [15:0] DST UPR PORT [15:0] Interf ace_ select [2:0] TCP/ UDP/ ICMP/ Don't Care (L4_ PTYPE SEL) [2:0] ACK/ Don't Care (ACK _FG _EN) [1:0] Pass _ Drop Log_ en valid IP2 IP4 以下にL3/L4フィルタテーブルの各フィールドの説明を行います。 ■ V4_V6フィールド IPアドレスはIPv4とIPv6の両方に対応します。V4_V6フィールドはエントリの対 象がIPv4かIPv6かを設定します。"1"のときIPv4,"0"のときIPv6です。 ■ M_range(Don'tCare/Mask/Range)フィールド 各フィールドの比較を行うかどうか,サブネットマスクを使用するかどうか, TCP/UDPポート番号の比較に関して範囲指定を行うかどうかの設定をします。各 ビットに"1"を設定すると,以下のことを意味します。 ビット[16]:ICMPタイプの比較を行わない ビット[15]:IPv4宛先アドレスにサブネットマスクをかけて比較する ビット[14]:IPv4送信元アドレスにサブネットマスクをかけて比較する ビット[13]:IPv4宛先アドレスの比較を行わない ビット[12]:IPv4送信元アドレスの比較を行わない ビット[11]:IPv6送信元アドレス[127:112](FP,TLA ID)の比較を行わ ない ビット[10]:IPv6送信元アドレス[111:80](NLA ID)の比較を行わない ビット[9]:IPv6送信元アドレス[79:64](SLA ID)の比較を行わない ビット[8]:IPv6送信元アドレス[63:0](インタフェースID)の比較を行 わない ビット[7]:IPv6宛先アドレス[127:112](FP,TLA ID)の比較を行わない ビット[6]:IPv6宛先アドレス[111:80](NLA ID)の比較を行わない ビット[5]:IPv6宛先アドレス[79:64](SLA ID)の比較を行わない ビット[4]:IPv6宛先アドレス[63:0](インタフェースID)の比較を行わ ない 71 第8章 FEFエンジン-フィルタの機能と設定 ビット[3]:TCPまたはUDPの宛先ポート番号に関して範囲指定をして比較 を行う ビット[2]:TCPまたはUDPの送信元ポート番号に関して範囲指定をして比 較を行う ビット[1]:TCPまたはUDPの宛先ポート番号の比較を行わない ビット[0]:TCPまたはUDPの送信元ポート番号の比較を行わない ■ SRC IPフィールド 送信元IPアドレスを設定します。なお,サブネットマスクをかけて比較する場合, マスクしないビットには"0"を設定してください。 ■ DST IPフィールド 宛先IPアドレスを設定します。なお,サブネットマスクをかけて比較する場合, マスクしないビットには"0"を設定してください。 ■ SRC LWR PORTフィールド TCPまたはUDPの送信元ポート番号の比較において,範囲指定を行わない場合には 送信元ポート番号を設定します。範囲指定を行う場合には送信元ポート番号の下限 値を設定します。 また,フィルタリングの対象がICMPの場合は,ICMPのメッセージタイプを入力し ます。 ■ DST LWR PORTフィールド TCPまたはUDPの宛先ポート番号の比較において,範囲指定を行わない場合には宛 先ポート番号を設定します。範囲指定を行う場合には宛先ポート番号の下限値を設 定します。 ■ SRC UPR PORTフィールド TCPまたはUDPの送信元ポート番号の比較において,範囲指定を行う場合のみ有効 で,送信元ポート番号の上限値を設定します。 ■ DST UPR PORTフィールド TCPまたはUDPの宛先ポート番号の比較において,範囲指定を行う場合のみ有効で, 宛先ポート番号の上限値を設定します。 72 第8章 FEFエンジン-フィルタの機能と設定 ■ Interface_selectフィールド どのインタフェースから入力(へ出力)されるパケットかを設定します。設定は 以下のように行います。 3'h4:WANおよびDMZ以外のインタフェースからの入力(への出力) 3'h3:WANまたはDMZインタフェースからの入力(への出力) 3'h2:DMZインタフェースからの入力(への出力) 3'h1:WANインタフェースからの入力(への出力) 3'h0:すべてのインタフェース(WAN,DMZ,LAN)からの入力(への出力) ホストインタフェースブロックの受信側に接続されるフィルタテーブルではこ のフィールドを入力と呼び,ホストインタフェースブロックの送信側に接続される フィルタテーブルでは出力と呼びます。 なお,DMZがLAN0やLAN1と同じように内部セグメントLAN2として扱われるときは 3'h2の設定は禁止です。 また,ホストからの送信パケットに対して出力側のフィルタを適用したい場合は direct route( 「10.3.2 送信パケットのホストからの転送」参照)と共に指定さ れる宛先ルート情報については複数のルートを指定しないようにしてください。た だし,LANインタフェースを複数指定することは可能です。 ■ L4_PTYPESEL(TCP/UDP/ICMP/Don'tCare)フィールド フィルタリングの対象とするプロトコルを設定します。設定は以下のように行い ます。 3'h4:ICMP 3'h3:TCPまたはUDP 3'h2:UDP 3'h1:TCP 3'h0:すべてのプロトコル 3'h0に設定した場合は,いかなるプロトコルであっても,IPアドレスと入力/出 力インタフェースが一致した場合にのみエントリがマッチしたことになります。 例えばIPsecのESPパケットのIPアドレス比較をしたい場合はこの設定とします。 ■ ACK_FG_EN(ACK/Don'tCare)フィールド TCPのときのACKフラグのチェックに使用します。各ビットの設定により,以下の ような処理をします。 ビット[1]: "1":ACKフラグのチェックを行わない "0":行う ビット[0]: "1":ACKフラグが立っているパケットにフィルタをかける "0":ACKフラグが立っていないパケットにフィルタをかける ■ Pass_Dropフィールド フィルタリングの設定です。条件に一致した場合に破棄するか通過するかを指定 します("1":破棄,"0":通過) 。 73 第8章 FEFエンジン-フィルタの機能と設定 ■ Log_enフィールド このフィールドが"1"にセットされている場合にそのエントリに対するログを取 得します。 ■ Validフィールド このフィールドが"1"にセットされている場合にそのエントリが有効であること を示します。 M_rangeフィールドでは表 8.2-2のような設定有効・無効関係があります。 表中,○は設定が有効であることを示し,対象となるプロトコルに対しビットの 設定が必要であることを示します。×は無効であることを示し,設定の必要がない ことを示します。 設定の必要のないものは"比較を行わない"の設定にしてください。 表 8.2-2 M_rangeフィールドの設定有効・無効関係 ビット 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 TCP × ○ ○ ○ ○ × × × × × × × × ○ ○ ○ ○ UDP × ○ ○ ○ ○ × × × × × × × × ○ ○ ○ ○ IPv4 ICMP ○ ○ ○ ○ ○ × × × × × × × × × × × × × ○ ○ ○ ○ × × × × × × × × × × × × TCP × × × × × ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ UDP × × × × × ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ IPv6 ICMP ○ × × × × ○ ○ ○ ○ ○ ○ ○ ○ × × × × × × × × × ○ ○ ○ ○ ○ ○ ○ ○ × × × × 複数のエントリにマッチする場合,エントリNo.がより小さいエントリに指定さ れた指示が優先されます。 74 第8章 FEFエンジン-フィルタの機能と設定 8.3 プロトコルタイプテーブル ここでは,プロトコルタイプテーブルと各フィールドについて説明します。 プロトコルタイプテーブルのエントリは計8エントリです。 ■ プロトコルタイプテーブルの構成 表 8.3-1に,プロトコルタイプテーブルの構成を示します。 表 8.3-1 プロトコルタイプテーブルの構成 No. 0 P_TYPE [15:0] 0x0806 P_Interface_select [2:0] P_Pass_Drop Plog_en P_Valid 1 1 7 以下にプロトコルタイプテーブルの各フィールドの説明を行います。 ■ P_TYPEフィールド プロトコルを表す値を設定します。 IPプロトコル(IPv4:0x0800,IPv6:0x86DD)はこのプロトコルタイプテーブルで 参照を行いません。設定しても意味はありません。 また,PPPoE(ディスカバリステージ:0x8863,セッションステージ:0x8864)は, 「8.4 フィルタモード設定レジスタ(fl_controlレジスタ-14'h20c0) 」で示すフィ ルタモード設定レジスタによる指定で処理しますので,このフィールドには設定し ません。 ■ P_Interface_selectフィールド どのインタフェースから入力(へ出力)されるパケットであるかを設定します。 設定は以下のように行います。 3'h4:WANおよびDMZ以外のインタフェースからの入力(への出力) 3'h3:WANまたはDMZインタフェースからの入力(への出力) 3'h2:DMZインタフェースからの入力(への出力) 3'h1:WANインタフェースからの入力(への出力) 3'h0:すべてのインタフェース(WAN,DMZ,LAN)からの入力(への出力) ホストインタフェースブロックの受信側に接続されるフィルタテーブルではこ のフィールドを入力と呼び,ホストインタフェースブロックの送信側に接続される フィルタテーブルでは出力と呼びます。 なお,DMZがLAN0やLAN1と同じように内部セグメントLAN2として扱われるときは 3'h2の設定は禁止です。 また,ホストからの送信パケットに対し,出力側のフィルタを適用したい場合は direct route( 「10.3.2 送信パケットのホストからの転送」参照)と共に指定さ れる宛先ルート情報について,WANまたはDMZを含む場合は複数のルートを指定しな いようにしてください。LANインタフェースのみを複数指定することは可能です。 75 第8章 FEFエンジン-フィルタの機能と設定 ■ P_Pass_Dropフィールド フィルタリングの設定です。条件に一致した場合に破棄するか通過するかを指定 します。 ("1":破棄,"0":通過) ■ Plog_enフィールド このフィールドが"1"にセットされている場合にそのエントリに対するログを取 得します。 ■ P_Validフィールド このフィールドが"1"にセットされている場合にそのエントリが有効であること を示します。 <注意事項> 複数のエントリにマッチする場合,エントリNo.がより小さいエントリに指定された指示が優先 されます。 76 第8章 FEFエンジン-フィルタの機能と設定 8.4 フィルタモード設定レジスタ(fl_ フィルタモード設定レジスタ(fl_control fl_controlレジスタ controlレジスタ -14'h20c0) 14'h20c0) フィルタモード設定レジスタ(以下fl_controlレジスタ)は,フィルタの各動作モー ドに該当するパケットをどう取り扱うか指定するレジスタです。 ■ フィルタモード設定レジスタの構成 表 8.4-1に,フィルタモード設定レジスタの構成を示します。 表 8.4-1 フィルタモード設定レジスタの構成(続く) ビット 19 ニーモニック tunnel valid output フィールド名 tunneling valid on output-filter 18 fragment packet output fragment packet on output-filter 17 no match in L3/L4 table output no match in protocol type table output PPPoE discovery output no match in L3/L4 table on output-filter no match in protocol type table on output-filter 14 PPPoE session wIPv4 drop output 13 PPPoE session wIPv4 pass output pppoe session stage packet with IPv4 on output-filter (drop or not) pppoe session stage packet with IPv4 on output-filter (pass or comparison) 12 PPPoE session wIPv6 drop output 11 PPPoE session wIPv6 pass output 10 PPPoE session woIP output 16 15 pppoe discovery stage packet on output-filter pppoe session stage packet with IPv6 on output-filter (drop or not) pppoe session stage packet with IPv6 on output-filter (pass or comparison) pppoe session stage packet without IPv4/IPv6 on output-filter 説明 On output-filter In a IPv6 packet encapsulated with ipv4 "1"-to comparison in L3/L4 table with ipv6 (ipv4 is ignored) "0"-to comparison in L3/L4 table with ipv4 (ipv6 is treated as an unknown protocol above ipv4) On output-filter "1"--drop, "0"-- to comparison in L3/L4 table with the first fragment packet & pass the fragment packets after the first fragment packet On output-filter "1"--drop, "0"--pass On output-filter "1"--drop, "0"--pass On output-filter "1"--drop, "0"--pass On output-filter "1"-drop, "0"-depends on Bit13 On output-filter Valid when Bit14=0 "1"-pass, "0"-to comparison in L3L4 table On output-filter "1"-drop, "0"-depends on Bit11 On output-filter Valid when Bit12=0 "1"-pass, "0"-to comparison in L3L4 table On output-filter "1"--drop, "0"--pass. 77 第8章 FEFエンジン-フィルタの機能と設定 表 8.4-1 フィルタモード設定レジスタの構成(続き) ビット 9 ニーモニック tunnel valid input フィールド名 tunneling valid on input-filter 8 fragment packet input fragment packet on input-filter 7 no match in L3/L4 table input no match in L3/L4 table on input-filter 6 no match in protocol type table input PPPoE discovery input no match in protocol type table on input-filter 4 PPPoE session wIPv4 drop input 3 PPPoE session wIPv4 pass input pppoe session stage packet with IPv4 on input-filter (drop or not) pppoe session stage packet with IPv4 on input-filter (pass or comparison) 2 PPPoE session wIPv6 drop input 1 PPPoE session wIPv6 pass input 0 PPPoE session woIP input 5 pppoe discovery stage packet on input-filter pppoe session stage packet with IPv6 on input-filter(drop or not) pppoe session stage packet with IPv6 on input-filter (pass or comparison) pppoe session stage packet without IPv4/IPv6 on input-filter 説明 On input-filter In a IPv6 packet encapsulated with ipv4 "1"-to comparison in L3/L4 table with ipv6 (ipv4 is ignored) "0"-to comparison in L3/L4 table with ipv4 (ipv6 is treated as an unknown protocol above ipv4) On input-filter "1"--drop, "0"-- to comparison in L3/L4 table with the first fragment packet & pass the fragment packets after the first fragment packet On input-filter "1"--drop, "0"--pass On input-filter "1"--drop, "0"--pass On input-filter "1"--drop, "0"--pass On input-filter "1"-drop, "0"-depends on Bit3 On input-filter Valid when Bit4=0 "1"-pass, "0"-to comparison in L3L4 table On input-filter "1"-drop, "0"-depends on Bit1 On input-filter Valid when Bit2=0 "1"-pass, "0"-to comparison in L3L4 table On input-filter "1"--drop, "0"--pass. 以下に各フィールドの説明をします。 フィールド名にinputがついているフィールドは,ホストインタフェースブロッ クの受信側に接続されるフィルタテーブルに適用され,フィールド名にoutputがつ いているフィールドは,ホストインタフェースブロックの送信側に接続されるフィ ルタテーブルに適用されます。 78 第8章 FEFエンジン-フィルタの機能と設定 ■ tunneling valid input/outputフィールド "1"が設定されていると,IPv4の中にIPv6がカプセル化されているパケットの場 合,L3/L4フィルタテーブルとのIPアドレス比較はパケットのIPv6アドレスで行わ れ,IPv4アドレスは比較対象になりません。 "0"が設定されていると,IPv4の中にIPv6がカプセル化されているパケットの場 合,IPv6は未知プロトコルとみなされ,L3/L4フィルタテーブルとのIPアドレス比 較はパケットのトンネルヘッダに当たるIPv4アドレスで行われます。IPv6アドレス は比較対象になりません。この場合,L3/L4フィルタにおけるフィルタの対象はIPv4 アドレスのみとなります。したがって,L3/L4フィルタテーブルのあるエントリの TCP/UDP/ICMP/Don't Care(L4_PTYPSEL)フィールドで3'h0を設定し,IPv4アドレ スと入力/出力インタフェースが一致した場合がL3/L4フィルタの対象となります。 ■ fragment packet input/outputフィールド "1"が設定されているとフラグメントパケットは無条件に破棄されます。 "0"が設定されているとフラグメントパケットは通過します。 "0"の場合,TCP/UDPヘッダを含む最初のフラグメントパケットはL3/L4テーブル にてフィルタリングが実行されます。2番目以降のパケットはTCP/UDPポート番号を パラメータとしたフィルタにかかりませんので設定,運用に注意してください。 ■ no match in L3/L4 table input/outputフィールド "1"が設定されているとL3/L4テーブルに一致するエントリがないパケットは破 棄されます。 "0"が設定されているとL3/L4テーブルに一致するエントリがないパケットは通 過します。 ■ no match in protocol type table input/outputフィールド "1"が設定されているとプロトコルタイプテーブルに一致するエントリがないパ ケットは破棄されます。 "0"が設定されているとプロトコルタイプテーブルに一致するエントリがないパ ケットは通過します。 ■ PPPoE discovery input/outputフィールド "1"が設定されていると,PPPoEディスカバリステージのデータパケットは破棄さ れます。 "0"が設定されていると無条件に通過します。 ■ PPPoE session wIPv4 drop input/outputフィールド PPPoEセッションステージにおけるパケットの上位層がIPv4プロトコルの場合, 設定値によって以下のように動作します。 "1"が設定されていると破棄されます。 "0"が設定されていると以下のPPPoE session wIPv4 pass input/output フィールドの設定に従います。 79 第8章 FEFエンジン-フィルタの機能と設定 ■ PPPoE session wIPv4 pass input/outputフィールド 上記PPPoE session wIPv4 drop input/outputフィールドにおいて"0"が設定され ており,かつPPPoEセッションステージにおけるパケットの上位層がIPv4プロトコ ルの場合,設定値によって以下のように動作します。 "1"が設定されていると通過させられます。 "0"が設定されているとL3/L4フィルタテーブル参照が行われます。 ■ PPPoE session wIPv6 drop input/outputフィールド PPPoEセッションステージにおけるパケットの上位層がIPv6プロトコルの場合, 設定値によって以下のように動作します。 "1"が設定されていると破棄されます。 "0"が設定されていると以下のPPPoE session wIPv6 pass input/output フィールドの設定に従います。 ■ PPPoE session wIPv6 pass input/outputフィールド 上記PPPoE session wIPv6 drop input/outputフィールドにおいて"0"が設定され ており,かつPPPoEセッションステージにおけるパケットの上位層がIPv6プロトコ ルの場合,設定値によって以下のように動作します。 "1"が設定されていると通過させられます。 "0"が設定されているとL3/L4フィルタテーブルの参照が行われます。 ■ PPPoE session woIP input/outputフィールド PPPoEセッションステージにおけるパケットの上位層がIPv4プロトコルでもIPv6 プロトコルでもない場合,設定値によって以下のように動作します。 "1"が設定されていると破棄されます。 "0"が設定されていると通過します。 80 第8章 FEFエンジン-フィルタの機能と設定 8.5 フィルタログ機能 フィルタによって破棄されたパケットについてはその情報を取得する機構があり ます。 一つはフィルタされたパケットの数を見るためのカウンタ,もう一つはフィルタに かかった最新のパケットの一部ヘッダ情報を最大4個まで取得できるログ取得用のレ ジスタです。 ■ フィルタログ機能の動作 カウンタは64x2件のフィルタテーブルの各エントリに対してそれぞれ255までカ ウントすることが可能です。カウンタが一杯になったら割込みを立ててCPUへ知ら せます。割込みを立てずにCPUが定期的に見にいくことも可能です。 ログ取得用のレジスタは,フィルタのどれかのルールにかかって廃棄されたパ ケットに関して最大四つのパケットのヘッダ情報(パケットの先頭から60バイト) を提供します。この四つのパケットのヘッダ情報は,設定により,以下の2種類の 登録方法が可能です。 (1)常に最新のものに更新する (2)四つ登録された時点で割込みを立てその後は更新しない 詳細については「8.5.2 フィルタログの取得」で説明します。 81 第8章 FEFエンジン-フィルタの機能と設定 8.5.1 フィルタカウント数の取得 フィルタした数を調べる場合にはフィルタカウンタレジスタ(fl_counterレジス タ)を使用します。 ■ フィルタカウントレジスタへのアクセス方法 フィルタカウントレジスタへのアクセスは以下の2とおりの方法で制御されます。 カウンタがオーバフローしたときに割込みによってfl_counterレジスタ へのアクセスが指示された場合: この割込みはfl_cnt_intenable[3:0]レジスタとfl_cnt_status[3:0]レ ジスタによって制御されます。 CPUから定期的にカウンタをアクセスする場合 いずれの場合にもリードクリアです。 カウンタがオーバフローすると,カウンタ値は0に戻り再びカウントアップをし ます。また,オーバフローを見ないで定期的にCPUがfl_counterレジスタへアクセ スする場合でもリードクリアですので,今まで取得していたカウンタ値はリセット されます。 統計情報を取得する場合などは必ずソフト上にこの値を記録するしくみを用意 してください。 以下にfl_counter,fl_cnt_intenable,fl_cnt_statusの三つのレジスタの詳細 を示します。 ■ fl_counter[63:0]*2(14'h2600∼14'h27fc) 32ビット中下位8ビットをカウンタ値として使用します。各エントリに対して一 つずつ持ちます。 アドレスの低いほう(14'h2600-14'h26fc)がIN側,すなわちFEFエンジンから見 て受信側のフィルタ用で,高いほう(14'h2700-14'h27fc)がOUT側,すなわち送信 側のフィルタ用です。 82 第8章 FEFエンジン-フィルタの機能と設定 ■ fl_cnt_intenable[3:0](14'h20d4∼14'h20e0) 32ビットレジスタを二つパート1,パート2として使用し,64個分のエントリに対 するそれぞれの割込みに割り当てます。受信側(IN側)と送信側(OUT側)の双方 にそれぞれ配されます。表 8.5-1に受信側(IN側)のレジスタ内容を,表 8.5-2 に送信側(OUT側)レジスタ内容を示します。 表 8.5-1 パート1(IN側-14'h20d4 ,OUT側- 14'h20dc) ビット 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ニーモニック id 31 intenable id 30 intenable id 29 intenable id 28 intenable id 27 intenable id 26 intenable id 25 intenable id 24 intenable id 23 intenable id 22 intenable id 21 intenable id 20 intenable id 19 intenable id 18 intenable id 17 intenable id 16 intenable id 15 intenable id 14 intenable id 13 intenable id 12 intenable id 11 intenable id 10 intenable id 9 intenable id 8 intenable id 7 intenable id 6 intenable id 5 intenable id 4 intenable id 3 intenable id 2 intenable id 1 intenable id 0 intenable id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id フィールド名 31 interrupt enable 30 interrupt enable 29 interrupt enable 28 interrupt enable 27 interrupt enable 26 interrupt enable 25 interrupt enable 24 interrupt enable 23 interrupt enable 22 interrupt enable 21 interrupt enable 20 interrupt enable 19 interrupt enable 18 interrupt enable 17 interrupt enable 16 interrupt enable 15 interrupt enable 14 interrupt enable 13 interrupt enable 12 interrupt enable 11 interrupt enable 10 interrupt enable 9 interrupt enable 8 interrupt enable 7 interrupt enable 6 interrupt enable 5 interrupt enable 4 interrupt enable 3 interrupt enable 2 interrupt enable 1 interrupt enable 0 interrupt enable 説明 1:ID31のカウンタオーバーフロー割込みenable 1:ID30のカウンタオーバーフロー割込みenable 1:ID29のカウンタオーバーフロー割込みenable 1:ID28のカウンタオーバーフロー割込みenable 1:ID27のカウンタオーバーフロー割込みenable 1:ID26のカウンタオーバーフロー割込みenable 1:ID25のカウンタオーバーフロー割込みenable 1:ID24のカウンタオーバーフロー割込みenable 1:ID23のカウンタオーバーフロー割込みenable 1:ID22のカウンタオーバーフロー割込みenable 1:ID21のカウンタオーバーフロー割込みenable 1:ID20のカウンタオーバーフロー割込みenable 1:ID19のカウンタオーバーフロー割込みenable 1:ID18のカウンタオーバーフロー割込みenable 1:ID17のカウンタオーバーフロー割込みenable 1:ID16のカウンタオーバーフロー割込みenable 1:ID15のカウンタオーバーフロー割込みenable 1:ID14のカウンタオーバーフロー割込みenable 1:ID13のカウンタオーバーフロー割込みenable 1:ID12のカウンタオーバーフロー割込みenable 1:ID11のカウンタオーバーフロー割込みenable 1:ID10のカウンタオーバーフロー割込みenable 1:ID9のカウンタオーバーフロー割込みenable 1:ID8のカウンタオーバーフロー割込みenable 1:ID7のカウンタオーバーフロー割込みenable 1:ID6のカウンタオーバーフロー割込みenable 1:ID5のカウンタオーバーフロー割込みenable 1:ID4のカウンタオーバーフロー割込みenable 1:ID3のカウンタオーバーフロー割込みenable 1:ID2のカウンタオーバーフロー割込みenable 1:ID1のカウンタオーバーフロー割込みenable 1:ID0のカウンタオーバーフロー割込みenable 83 第8章 FEFエンジン-フィルタの機能と設定 表 8.5-2 パート2(IN側-14'h20d8 ,OUT側- 14'h20e0) ビット 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 84 ニーモニック id 63 intenable id 62 intenable id 61 intenable id 60 intenable id 59 intenable id 58 intenable id 57 intenable id 56 intenable id 55 intenable id 54 intenable id 53 intenable id 52 intenable id 51 intenable id 50 intenable id 49 intenable id 48 intenable id 47 intenable id 46 intenable id 45 intenable id 44 intenable id 43 intenable id 42 intenable id 41 intenable id 40 intenable id 39 intenable id 38 intenable id 37 intenable id 36 intenable id 35 intenable id 34 intenable id 33 intenable id 32 intenable id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 フィールド名 interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable interrupt enable 説明 1:ID63のカウンタオーバーフロー割込みenable 1:ID62のカウンタオーバーフロー割込みenable 1:ID61のカウンタオーバーフロー割込みenable 1:ID60のカウンタオーバーフロー割込みenable 1:ID59のカウンタオーバーフロー割込みenable 1:ID58のカウンタオーバーフロー割込みenable 1:ID57のカウンタオーバーフロー割込みenable 1:ID56のカウンタオーバーフロー割込みenable 1:ID55のカウンタオーバーフロー割込みenable 1:ID54のカウンタオーバーフロー割込みenable 1:ID53のカウンタオーバーフロー割込みenable 1:ID52のカウンタオーバーフロー割込みenable 1:ID51のカウンタオーバーフロー割込みenable 1:ID50のカウンタオーバーフロー割込みenable 1:ID49のカウンタオーバーフロー割込みenable 1:ID48のカウンタオーバーフロー割込みenable 1:ID47のカウンタオーバーフロー割込みenable 1:ID46のカウンタオーバーフロー割込みenable 1:ID45のカウンタオーバーフロー割込みenable 1:ID44のカウンタオーバーフロー割込みenable 1:ID43のカウンタオーバーフロー割込みenable 1:ID42のカウンタオーバーフロー割込みenable 1:ID41のカウンタオーバーフロー割込みenable 1:ID40のカウンタオーバーフロー割込みenable 1:ID39のカウンタオーバーフロー割込みenable 1:ID38のカウンタオーバーフロー割込みenable 1:ID37のカウンタオーバーフロー割込みenable 1:ID36のカウンタオーバーフロー割込みenable 1:ID35のカウンタオーバーフロー割込みenable 1:ID34のカウンタオーバーフロー割込みenable 1:ID33のカウンタオーバーフロー割込みenable 1:ID32のカウンタオーバーフロー割込みenable 第8章 FEFエンジン-フィルタの機能と設定 ■ fl_cnt_status[3:0](14'h20e4∼14'h20f0) 32ビットレジスタを二つパート1,パート2として使用し,64個分のエントリに対 するそれぞれのステータスに割り当てます。受信側(IN側)と送信側(OUT側)の 双方にそれぞれ配されます。表 8.5-3に受信側(IN側)のレジスタ内容を,表 8.5-4 に送信側(OUT側)レジスタ内容を示します。 表 8.5-3 パート1(IN側-14'h20e4,OUT側-14'h20e8) ビット 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ニーモニック id 31 overflow id 30 overflow id 29 overflow id 28 overflow id 27 overflow id 26 overflow id 25 overflow id 24 overflow id 23 overflow id 22 overflow id 21 overflow id 20 overflow id 19 overflow id 18 overflow id 17 overflow id 16 overflow id 15 overflow id 14 overflow id 13 overflow id 12 overflow id 11 overflow id 10 overflow id 9 overflow id 8 overflow id 7 overflow id 6 overflow id 5 overflow id 4 overflow id 3 overflow id 2 overflow id 1 overflow id 0 overflow id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id フィールド名 31 counter overflow 30 counter overflow 29 counter overflow 28 counter overflow 27 counter overflow 26 counter overflow 25 counter overflow 24 counter overflow 23 counter overflow 22 counter overflow 21 counter overflow 20 counter overflow 19 counter overflow 18 counter overflow 17 counter overflow 16 counter overflow 15 counter overflow 14 counter overflow 13 counter overflow 12 counter overflow 11 counter overflow 10 counter overflow 9 counter overflow 8 counter overflow 7 counter overflow 6 counter overflow 5 counter overflow 4 counter overflow 3 counter overflow 2 counter overflow 1 counter overflow 0 counter overflow 説明 1:ID31のカウンタオーバーフロー割込み 1:ID30のカウンタオーバーフロー割込み 1:ID29のカウンタオーバーフロー割込み 1:ID28のカウンタオーバーフロー割込み 1:ID27のカウンタオーバーフロー割込み 1:ID26のカウンタオーバーフロー割込み 1:ID25のカウンタオーバーフロー割込み 1:ID24のカウンタオーバーフロー割込み 1:ID23のカウンタオーバーフロー割込み 1:ID22のカウンタオーバーフロー割込み 1:ID21のカウンタオーバーフロー割込み 1:ID20のカウンタオーバーフロー割込み 1:ID19のカウンタオーバーフロー割込み 1:ID18のカウンタオーバーフロー割込み 1:ID17のカウンタオーバーフロー割込み 1:ID16のカウンタオーバーフロー割込み 1:ID15のカウンタオーバーフロー割込み 1:ID14のカウンタオーバーフロー割込み 1:ID13のカウンタオーバーフロー割込み 1:ID12のカウンタオーバーフロー割込み 1:ID11のカウンタオーバーフロー割込み 1:ID10のカウンタオーバーフロー割込み 1:ID9のカウンタオーバーフロー割込み 1:ID8のカウンタオーバーフロー割込み 1:ID7のカウンタオーバーフロー割込み 1:ID6のカウンタオーバーフロー割込み 1:ID5のカウンタオーバーフロー割込み 1:ID4のカウンタオーバーフロー割込み 1:ID3のカウンタオーバーフロー割込み 1:ID2のカウンタオーバーフロー割込み 1:ID1のカウンタオーバーフロー割込み 1:ID0のカウンタオーバーフロー割込み 85 第8章 FEFエンジン-フィルタの機能と設定 表 8.5-4 パート2(IN側-14'h20ec,OUT側-14'h20f0) ビット 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 86 ニーモニック id 63 overflow id 62 overflow id 61 overflow id 60 overflow id 59 overflow id 58 overflow id 57 overflow id 56 overflow id 55 overflow id 54 overflow id 53 overflow id 52 overflow id 51 overflow id 50 overflow id 49 overflow id 48 overflow id 47 overflow id 46 overflow id 45 overflow id 44 overflow id 43 overflow id 42 overflow id 41 overflow id 40 overflow id 39 overflow id 38 overflow id 37 overflow id 36 overflow id 35 overflow id 34 overflow id 33 overflow id 32 overflow id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 フィールド名 counter overflow counter overflow counter overflow counter overflow counter overflow counter overflow counter overflow counter overflow counter overflow counter overflow counter overflow counter overflow counter overflow counter overflow counter overflow counter overflow counter overflow counter overflow counter overflow counter overflow counter overflow counter overflow counter overflow counter overflow counter overflow counter overflow counter overflow counter overflow counter overflow counter overflow counter overflow counter overflow 説明 1:ID63のカウンタオーバーフロー割込み 1:ID62のカウンタオーバーフロー割込み 1:ID61のカウンタオーバーフロー割込み 1:ID60のカウンタオーバーフロー割込み 1:ID59のカウンタオーバーフロー割込み 1:ID58のカウンタオーバーフロー割込み 1:ID57のカウンタオーバーフロー割込み 1:ID56のカウンタオーバーフロー割込み 1:ID55のカウンタオーバーフロー割込み 1:ID54のカウンタオーバーフロー割込み 1:ID53のカウンタオーバーフロー割込み 1:ID52のカウンタオーバーフロー割込み 1:ID51のカウンタオーバーフロー割込み 1:ID50のカウンタオーバーフロー割込み 1:ID49のカウンタオーバーフロー割込み 1:ID48のカウンタオーバーフロー割込み 1:ID47のカウンタオーバーフロー割込み 1:ID46のカウンタオーバーフロー割込み 1:ID45のカウンタオーバーフロー割込み 1:ID44のカウンタオーバーフロー割込み 1:ID43のカウンタオーバーフロー割込み 1:ID42のカウンタオーバーフロー割込み 1:ID41のカウンタオーバーフロー割込み 1:ID40のカウンタオーバーフロー割込み 1:ID39のカウンタオーバーフロー割込み 1:ID38のカウンタオーバーフロー割込み 1:ID37のカウンタオーバーフロー割込み 1:ID36のカウンタオーバーフロー割込み 1:ID35のカウンタオーバーフロー割込み 1:ID34のカウンタオーバーフロー割込み 1:ID33のカウンタオーバーフロー割込み 1:ID32のカウンタオーバーフロー割込み 第8章 FEFエンジン-フィルタの機能と設定 8.5.2 フィルタログの取得 フィルタログの取得では,実際のログ情報を記録するfilter_logレジスタと fl_log_cntrl,fl_log_status[1:0]の2種類の制御用レジスタを使用します。 フィルタはパケット受信側およびパケット送信側でそれぞれ用意されているため, そのそれぞれにログ取得の機構がついています。 ■ filter_logレジスタ(14'h2400∼14'h25fc) フィルタで破棄されたドロップされたパケット(ディスクリプタとパケット先頭 60バイト) ,4パケット分の記憶レジスタです。送受信用でそれぞれ存在します。 表 8.5-5に,各アドレスに対するログの割当てを示します。 表 8.5-5 ログの割当て パケットNo パケット0 パケット1 パケット2 パケット3 パケット0 パケット1 パケット2 パケット3 受信側 送信側 アドレス 0x2400∼0x243C 0x2440∼0x247C 0x2480∼0x24BC 0x24C0∼0x24FC 0x2500∼0x253C 0x2540∼0x257C 0x2580∼0x25BC 0x25C0∼0x25FC アドレスの小さいほうから順にログが蓄えられます。 なお,ログの先頭にはログ情報をのせたディスクリプタが配されます。表 8.5-6 に,ログディスクリプタのフォーマットを示します。 表 8.5-6 ログディスクリプタのフォーマット ビット [31:30] 名称 code 2'b11=fragment, 2'b10=PPPoE, 2'b01=L3L4 table, 2'b00=protocol type table [29:24] [23:16] [15:14] [13] id destination interface reserved unknown drop [12] no match [11] [10:0] reserved packet length 説明 ログの原因を示します。ビット12が セットされている場合は無効です。 テーブルエントリ番号 宛先I/F フィルタモジュールがTCP/UDP/IPヘッ ダを正しく認識できないためにドロッ プされたことを示します。 フィルタのエントリ該当なしで廃棄さ れたことを示します。 パケット長 例えば,IN側のパケット0を取り出した場合,以下のようになります。 0x2400 : ディスクリプタ 0x2404∼243C : データ 60バイト 87 第8章 FEFエンジン-フィルタの機能と設定 ■ fl_log_cntrlレジスタ(14'h20c8) 表 8.5-7に,fl_log_cntrlレジスタの詳細を示します。 表 8.5-7 fl_log_cntrlレジスタの詳細 ビット 2 ニーモニック log_PPPoE 1 log_fragment 0 log_unkown フィールド名 log dropped packet due to PPPoE setting log dropped packet due to fragment log dropped packet due to unknown reason 説明 "1":ログを取る "0":ログを取らない "1":ログを取る "0":ログを取らない "1":ログを取る "0":ログを取らない 初期値 1'b1 1'b1 1'b1 log_unkownはエントリに該当しない場合にフィルタモード設定レジスタの設定 により廃棄されたパケットのログを取得する機能を有効にするものです。 ■ fl_log_status[1:0]レジスタ(14'h20cc) ログバッファ中,どのレジスタにログが記録されているのかを示すレジスタです。 リードクリアです。 表 8.5-8に,fl_log_status[1:0]レジスタの詳細を示します。 表 8.5-8 fl_log_status[1:0]レジスタの詳細 ビット 7 ニーモニック out_3_ready フィールド名 output side packet 3 ready 6 out_2_ready output side packet 2 ready 5 out_1_ready output side packet 1 ready 4 out_0_ready output side packet 0 ready 3 in_3_ready input side packet 3 ready 2 in_2_ready input side packet 2 ready 1 in_1_ready input side packet 1 ready 0 in_0_ready input side packet 0 ready 説明 1:output側のフィルタログレジスタ中の パケット3がリード可能であることを示し ます。 1:output側のフィルタログレジスタ中の パケット2がリード可能であることを示し ます。 1:output側のフィルタログレジスタ中の パケット1がリード可能であることを示し ます。 1:output側のフィルタログレジスタ中の パケット0がリード可能であることを示し ます。 1:input側のフィルタログレジスタ中のパ ケット3がリード可能であることを示しま す。 1:input側のフィルタログレジスタ中のパ ケット2がリード可能であることを示しま す。 1:input側のフィルタログレジスタ中のパ ケット1がリード可能であることを示しま す。 1:input側のフィルタログレジスタ中のパ ケット0がリード可能であることを示しま す。 ■ fl_log_buf_lockレジスタ(14'h20d0) filter_logレジスタのログ取得にロックをかけるレジスタです。ホストからの情 報取得の際にMB86977内部の動作によるログの書込みによってログに不整合が生じ ないようにするために使用します。 88 第8章 FEFエンジン-フィルタの機能と設定 ■ ログの取得 以下,ログの取得方法について説明します。割込みがイネーブルになっている場 合,割込みを立てずにポーリングする場合,いずれの場合もログの取得方法は同じ です。 1) fl_log_buf_lockレジスタを"1"にしてfilter_logレジスタをロックしま す。これで後続のログは記録されなくなります。 2) fl_log_status[1:0]レジスタをリードし,ログが記録されているかどうか 確認します。 3) ログの記録されているfilter_logレジスタをリードします。 4) fl_log_buf_lockレジスタを"0"にし,filter_logレジスタへのログの書込 みを復帰させます。 割込みの場合は,4パケットがログバッファに取り込まれた時点で割込みが立ち, これ以上のログの取り込みは行いません。ポーリングする場合は新しく取得された ログによってfilter_logレジスタが上書きされていきます。 89 第8章 FEFエンジン-フィルタの機能と設定 8.6 テーブルへのアクセス方法詳細 L3/L4フィルタテーブルおよびプロトコルタイプテーブルにはレジスタを介してア クセスを行います。アクセス方法はコマンドレジスタ,データレジスタ,ステータス レジスタの三つのレジスタを用いて行います。 ■ テーブルへの書込み(登録/削除) まず,データレジスタであるtbl_filter_dataレジスタに目的のデータを書き込 みます。次にコマンドレジスタのtbl_filter_cmdレジスタにコマンド用のデータを 書き込みます。この時点でMB86977はテーブルへの書込みを開始します。 書込みが終わったかどうかはステータスレジスタのtbl_filter_statusレジスタ で確認します。確認した結果書込み終了が確認できれば,次の書込みデータがある 場合は引き続き前述の動作を繰り返し,テーブルへの書込みが完了したなら書込み を終了します。 この一連の動作は,「5.5 NAT/IPフォワーディング用テーブルへのアクセス」と 同様です(フローチャート参照)。 ■ テーブル内のエントリの読出し 読出しの場合は,tbl_filter_cmdレジスタに読出しコマンドを書き込みます。次 にtbl_filter_statusレジスタで読出し終了を確認し,tbl_filter_dataレジスタを 読み出します。 読出しデータが引き続きある場合はこの一連の動作を繰り返すことが必要です。 この一連の動作は,「5.5 NAT/IPフォワーディング用テーブルへのアクセス」と 同様です(フローチャート参照)。 90 第8章 FEFエンジン-フィルタの機能と設定 8.6.1 テーブルアクセスとアクセス用レジスタの詳細説 明 ここでは,L3/L4フィルタテーブルおよびプロトコルタイプテーブルへのアクセス 時に必要なアクセス用レジスタについて説明します。 ■ tbl_filter_cmdレジスタ(14'h20f4) tbl_filter_cmdレジスタのフォーマットは以下のとおりです。 id item table cmd 表 8.6-1に,tbl_filter_cmdレジスタの詳細を示します。 表 8.6-1 tbl_filter_cmdレジスタの詳細 フィールド reserved id item ビット [31:18] [17:12] [11:8] reserved table [7:6] [5:4] reserved cmd [3:1] [0] ○ 説明 id 0∼3:Src IP 4∼7:Dst IP 8:下位ポート 9:上位ポート 10:コントロール_1 11:コントロール_2 12:プロトコルデータ 0:in-ip 1:in-protocol 2:out-ip 3:out-protocol 1:書込み 0:読込み コマンドフィールド コマンドフィールドは書込み/読込みの指示です。テーブルフィールドはプロ トコルタイプテーブルかL3/L4フィルタテーブルのいずれかを指定するために 用います。外部セグメント側と内部セグメント側にそれぞれテーブルがありま すので,計四つのテーブルの中かから一つを指定することになります。 ○ Item Itemはそれぞれのテーブル内に書き込む内容を指定するためのフィールドで す。L3/L4フィルタテーブルにおいては,1ワード(32ビット)データではテー ブルの書込みが一回で終了しないために1エントリ内のどの部分を書き込むの か指定するのに必要なフィールドとなっています。プロトコルタイプテーブル のエントリ指定もこのフィールドにマージされています。 ○ Idフィールド Idフィールドはフィルタのエントリ位置(番号)を示すフィールドです。 91 第8章 FEFエンジン-フィルタの機能と設定 <注意事項> プロトコルタイプテーブル設定時(table1およびtable3の設定時)はitem0∼11を設定しないで ください。また,L3/L4フィルタテーブル設定時(table0およびtable2設定時)はitem12を設定し ないでください。 ■ tbl_filter_data(14'h20f8) tbl_filter_dataのフォーマットは以下のとおりです。 data[31:0] 表 8.6-2に,tbl_filter_dataレジスタの詳細を示します。 表 8.6-2 tbl_filter_dataレジスタの詳細(続く) item 0 ビット [31:0] 1 [31:0] 2 [31:0] 3 [31:0] 4 [31:0] 5 [31:0] 6 [31:0] 7 [31:0] 8 [31:16] [15:0] 9 [31:16] [15:0] [31:23] [22:20] 10 [19] [18] [17] [16] [15] [14] [13] [12] 92 説明 Src IPアドレスの最初の32ビット (IPv4の場合は全体) Src IPアドレスの次の32ビット (IPv6のみ) Src IPアドレスの次の32ビット (IPv6のみ) Src IPアドレスの最後の32ビット (IPv6のみ) Dst IPアドレスの最初の32ビット (IPv4の場合は全体) Dst IPアドレスの次の32ビット (IPv6のみ) Dst IPアドレスの次の32ビット (IPv6のみ) Dst IPアドレスの最後の32ビット (IPv6のみ) Dst PORT番号の下限値 Src PORT番号の下限値 (ICMPの場合にはビット[15:8]にtype を指定する。) Dst PORT番号の上限値 Src PORT番号の上限値 reserved 4:ICMP 3:TCPまたはUDP 2:UDP 1:TCP 0:プロトコルを無視 L4_dst_range L4_src_range L4_don't_care_dst L4_don't_care_src v6_don't_care_dst_TLA v6_don't_care_dst_NLA v6_don't_care_dst_SLA v6_don't_care_dst_host 表9.2-1,表9.3-1との対応 SRC_IP[127:96] SRC_IP[95:64] SRC_IP[63:32] SRC_IP[31:0] DST_IP[127:96] DST_IP[95:64] DST_IP[63:32] DST_IP[31:0] DST_LWR_PORT[15:0] SRC_LWR_PORT[15:0] DST_UPR_PORT[15:0] SRC_UPR_PORT[15:0] L4_PTYPESEL[2:0] M_Range[3] M_Range[2] M_Range[1] M_Range[0] M_Range[7] M_Range[6] M_Range[5] M_Range[4] 第8章 FEFエンジン-フィルタの機能と設定 表 8.6-2 tbl_filter_dataレジスタの詳細(続き) item 10 11 ビット [11] [10] [9] [8] [7] [6] [5] [4] [3] [2] [1] [0] [31:10] [9] [8] [7:6] [5] [4] [3] [2:0] 12 [31:26] [25] [24] [23] [22:20] [19:4] [3:1] [0] 説明 v6_don't_care_src_TLA v6_don't_care_src_NLA v6_don't_care_src_SLA v6_don't_care_src_host v4_mask_use_dst v4_mask_use_src v4_don't_care_dst v4_don't_care_src reserved icmp_don't_care ip_choice(1:IPv4,0:IPv6) entry valid reserved Log (1:ログを取る,0:ログを取らない) filter_result(1:破棄,0:通過) reserved フラグを無視 ACK reserved インタフェース選択 表9.2-1, 表9.3-1 との対応 M_Range[11] M_Range[10] M_Range[9] M_Range[8] M_Range[15] M_Range[14] M_Range[13] M_Range[12] M_Range[16] v4/v6 valid LOG Pass_Drop ACK_FG_EN[1] ACK_FG_EN[0] 3'h4:WANおよびDMZ以外のインタフェースからの 入力(への出力) 3'h3:WANまたはDMZインタフェースからの入力(へ の出力) 3'h2:DMZインタフェースからの入力(への出力) 3'h1:WANインタフェースからの入力(への出力) 3'h0:すべてのインタフェース(WAN,DMZ,LAN) からの入力(への出力) reserved log(1:ログを取る,0:ログを取らない) P_LOG filter_result(1:破棄,0:通過) P_Pass_Drop reserved Pインタフェース選択 3'h4:WANおよびDMZ以外のインタフェースからの 入力(への出力) 3'h3:WANまたはDMZインタフェースからの入力 (への出力) 3'h2:DMZインタフェースからの入力(への出力) 3'h1:WANインタフェースからの入力(への出力) 3'h0:すべてのインタフェース(WAN,DMZ,LAN) からの入力(への出力) Ether 種別 P_TYPE[15:0] reserved entry_valid P_Valid tbl_filter_cmdレジスタのitemフィールドの示す値によってデータレジスタに 書くべきデータの内容は変わります。上記のテーブルにはitemとの兼ね合いで書き 込むデータの内容を示しています 93 第8章 FEFエンジン-フィルタの機能と設定 ■ tbl_filter_status(14'h20fc) tbl_filter_status(14'h20fc)のフォーマットは以下のとおりです。 status 表 8.6-3に,tbl_filter_statusレジスタの詳細を示します。 表 8.6-3 tbl_filter_statusレジスタの詳細 フィールド status ビット [0] 説明 1:実行中 0:完了 テーブルへのアクセス制御用に使用します。 テーブルへの書込み動作が終了していない場合,"1"となります。新しいデータ の書込みの際にはこのステータスの値が"0"になっていることを確認します。 ■ アクセス方法の説明 L3/L4フィルタテーブルのエントリは表 8.2-1で示したとおり,IPアドレスをは じめ,多くの情報を1エントリで保持しています。そこで,1エントリへの書込み, 読出しに際して複数のコマンドを発行する必要があります。 以下に,IPv4/TCPパケットのフィルタの場合を例に取りそのアクセスの方法を説 明します。 1) エントリへの書込みを行う場合,まずデータレジスタに目的のデータを書 き込みます。書き込む順番に依存性はありませんが,itemの順に書き込む とします。最初のデータでは送信元IPアドレス32ビットをデータレジスタ に書き込みます。 2) 次にコマンドレジスタに適当なid(テーブルのエントリ番号)とitem=0, およびcmd=1(write)を書き込みます。 3) コマンドレジスタにコマンドデータが書き込まれた時点でMB86977では内 部のL3/L4フィルタテーブルへの情報の登録を開始します。表 8.2-1のSRC _IP[127:0]フィールドの上位32ビットへデータレジスタの値である送信 元(ソース)IPアドレスが書き込まれます。書込み動作実行中はステータ スレジスタのstatusビットは"1"となり,書込み作業中であることを示し ます。書込みが完了するとこのstatusビットは"0"となります。 4) ソフトではこのステータスレジスタを監視し,status=0になったことを確 認して次のデータをデータレジスタに書込みへ行きます。次の書込みデー タは宛先IPアドレスです。 5) 宛先IPアドレスをデータレジスタに書き込んだ後,コマンドレジスタの itemに"4"を指定します。ハードウェア内部のL3/L4フィルタテーブルにお いてはDST_IP[127:0]の上位32ビットにこのデータが書き込まれます。 6) 書込みが終了した時点で,次のデータをテーブルへ書き込みます。動作の 流れは同じなので,以下,書き込むデータの内容のみ説明します。次にコ マンドレジスタのitem=10を指定し,フィルタの制御用情報を書きにいき ます。 7) 次に,item=11を指定し,残りのフィルタの制御用情報を書き込みます。 94 第8章 FEFエンジン-フィルタの機能と設定 8.6.2 table for filter access priorityレジスタ priorityレジスタ (14'h2358) 14'h2358)について ここでは,MB86977内部におけるパケット処理を一時中断し,CPUからの参照テーブ ルへのアクセスを優先させるtable for filter access priorityレジスタ(14'h2358) について説明します。 ■ 概要 L3/L4テーブルやプロトコルタイプテーブルへのCPUからのアクセスは,パケット 処理の合間に行われます。すなわち,CPUからライト/リードのコマンドを受け付け たときに,MB86977内部でL3/L4テーブルやプロトコルタイプテーブルの参照が行わ れていた場合には,CPUからのコマンドは参照動作の終了を待って実行に移されま す。 したがって,テーブルを設定する際に,複数回のコマンドアクセスを行う間,複 数個のパケットがホストI/Fを通過する場合がありえます。 table for filter access priorityレジスタは,そのような事態を防ぎたい場合 に,MB86977内部におけるパケット処理を一時中断し,CPUからの参照テーブルへの アクセスを優先させるためのレジスタです。 ■ 設定 table for filter access priorityレジスタを1にセットすると,MB86977は現在 行っている参照動作が終了次第,内部における参照動作をストップします。その後, CPUは優先的に参照テーブルへのアクセスを行うことができます。 必要な設定が終了した後に,0にクリアすると,MB86977は再び参照動作を開始し ます。 基本的には「5.5.2 table for nat access priorityレジスタ(14'h210c )に ついて」と効果は同じです。 95 第8章 FEFエンジン-フィルタの機能と設定 8.7 フィルタサブネットレジスタ(fl_subnet フィルタサブネットレジスタ(fl_subnetレジスタ fl_subnetレジスタ -14'h20c4) 14'h20c4) fl_subnetレジスタ-14'h20c4は,フィルタがIPv4アドレスのネットマスクを必要と する際に使用する,サブネット登録用のレジスタです。 ■ 設定 IPv4アドレスのうちサブネットだけを抽出したい場合,L3/L4フィルタテーブル のM_rangeフィールドビット[15],[14]を1にしておけば,このレジスタに登録され ているサブネットマスクをかけてフィルタします。 このレジスタはサブネットマスクをビット単位で登録可能です。 96 第9章 FEFエンジン FEFエンジンエンジン-優先制御機能 この章ではFEFエンジンの優先制御機能について,テーブルの内容,アクセス方法 およびレジスタの説明をします。 9.1 優先制御機能の説明 9.2 優先制御テーブル 9.3 優先制御テーブルへのアクセス 97 第9章 FEFエンジン-優先制御機能 9.1 優先制御機能の説明 FEFエンジンとスイッチブロックの優先キューを利用することで,DMZとWANインタ フェース間の通信において優先制御が実現できます。VoIPなどの低ジッタ,低遅延の 転送が必要なアプリケーションに最適です。 ■ スイッチブロックの優先キューについて スイッチブロックは,図 9.1-1に示すように高/低の優先順位をつけたキューを 持ちます。通常優先キューは,通常のデータパケットの転送に使用されるキューで す。それに対して,高優先キューは,VoIPパケットの転送などに使用されます。 MACブロックのトラフィック・クラシファイアは優先制御テーブルの設定内容に 応じて,IPパケットの優先度を識別します。 ■ 優先制御の動作 優先制御機能の動作を,DMZ→WANの転送を例に説明します。 DMZインタフェースで受信されたパケットはクラシファイアにて優先度が判定さ れます。結果,WANへの出力で優先度が高いパケットであればホストインタフェー スブロック向けの高優先度キューに積まれます。 高優先度キューに積まれたパケットはホストインタフェースブロックへ最優先 で転送され,FEF処理されます。この際にNAT/IPフォワーディング用テーブル中の 宛先I/FをWAN High Priority Interfaceに設定しておいてください。 FEF処理後,スイッチブロックの宛先WANの高優先度キューにこのパケットは再び 積まれます。WANの出力インタフェースへはこの高優先度パケットが最優先で出力 されます。 WAN→DMZの転送においても,同様にFEFの処理をはさんでパケット転送の優先制 御を実現します。 図 9.1-1に,優先制御の動作を示します。 DMZ DMZ WAN WAN @ @ DMZ WAN WAN FEF 図 9.1-1 優先制御の動作 98 第9章 FEFエンジン-優先制御機能 9.2 優先制御テーブル MB86977は,トラフィック・クラシファイアによりトラフィックの分類を行います。 トラフィック・クラシファイアはWAN用インタフェースの入力部とDMZ用インタ フェースの入力部にそれぞれ独立に存在し,表 9.2-1に示す8エントリの優先制御 テーブルを持ちます。 このテーブルの設定条件に適合したデータパケットは高優先のデータパケットと して取り扱われます。 ■ 優先制御テーブルの設定 IPv4ではIPアドレス,TOSおよびUDPのポート番号をパラメーターとして設定可能 です。TCPはサポートしません。また,IPv6の場合,IPアドレス,Traffic Class およびFlow Labelがパラメーターとなります。 このテーブルはプログラマブルに設定可能です。 表 9.2-1に,優先制御テーブルの構成を示します。 表 9.2-1 優先制御テーブルの構成 No 0 1 コントロー ルビット [7:0] 0xcd 0xcd 7 0x00 SRC_IP [127:0] DST_IP [127:0] SRC_PORT [15:0] DST_PORT [15:0] IP1 IP4 IP2 IP5 Port1 Port2 TOS/Traffic Class [7:0] MAC2 MAC4 Flow label [19:0] Dest1 Dest3 ■ コントロールビットフィールド ビット0: valid "1"の場合,エントリが有効であることを示します。 ビット1:IPv4 or IPv6 "0"の場合,IPv4として使用されることを示します。 ビット2:don't care TOS/traffic class "1"の場合,TOS(IPv4として使用している場合)またはtraffic class(IPv6 として使用している場合)をチェックしないことを意味します。 ビット3:don't care flowlabel "1"の場合,IPv6 Flow labelをチェックしないことを意味します。IPv4パケッ トについてはこの設定は無効です。 ビット4:don't_care_src_add "1"の場合,パケットの送信元IPアドレスを参照しないことを意味します。 ビット5:don't_care_dst_add "1"の場合,パケットの宛先IPアドレスを参照しないことを意味します。 ビット6:don't_care_src_port "1"の場合,パケットの送信元UDPポート番号を参照しないことを意味します。 IPv6の場合(ビット1が"1"の場合) ,この設定は無視されます。 99 第9章 FEFエンジン-優先制御機能 ビット7:don't_care_dst_port "1"の場合,パケットの宛先元UDPポート番号を参照しないことを意味します。 IPv6の場合(ビット1が"1"の場合) ,この設定は無視されます。 ■ IPアドレスフィールド SRC_IPフィールド: 送信元IPアドレスを指定します。 DST_IPフィールド: 宛先IPアドレスを指定します。 ■ ポート番号フィールド SRC_PORTフィールド: 送信元UDPポート番号を指定します。 DST_PORTフィールド: 宛先UDPポート番号を指定します。 ■ TOS/Traffic classフィールド TOS(IPv4として使用している場合)またはtraffic class(IPv6として使用して いる場合)を指定します。 ■ Flowlabelフィールド Flow labelを指定します。 <注意事項> DMZインタフェースをLAN2モードに設定した場合,宛先MACアドレスが0xffffffffffffのブロー ドキャストパケットの内容がLAN2のクラシファイアブロックの設定にマッチしないよう注意して ください。このようなパケットはブロードキャストが行われません。 100 第9章 FEFエンジン-優先制御機能 9.3 優先制御テーブルへのアクセス 優先制御テーブルへのアクセスとアクセス用レジスタについて説明します。 ■ 概要 優先制御テーブルへのアクセスも,NAT/IPフォワーディングテーブル,フィルタ テーブル同様にコマンド,データ,ステータスの三つのレジスタによるアクセスを 行います。 101 第9章 FEFエンジン-優先制御機能 9.3.1 テーブルアクセスの方法 ここでは優先制御テーブルへのアクセス方法について説明します。 ■ テーブルアクセスの方法 優先制御テーブルへの書込みが終了していない状態で受信パケットの参照が行 われた場合,このパケットは通常の優先度,すなわち通常優先度のパケットとして 取り扱われます。 アクセス方法の詳細に関しては以下の章を参照してください。 「6.2 NAT/IPフォワーディングテーブル」 「8.2 ヘッダ処理レジスタ」 また,高優先パケット,通常優先パケットの処理に関しては「13.1 スタ」を参照してください。 102 SMIのレジ 第9章 FEFエンジン-優先制御機能 9.3.2 テーブルアクセス用レジスタの説明 ここではテーブルアクセス用レジスタについて説明します。 ■ tbl_qos_cmdレジスタ(14'2110) tbl_qos_cmdレジスタのフォーマットは以下のとおりです。 id item cmd 表 9.3-1に,tbl_qos_cmdレジスタの詳細を示します。 表 9.3-1 tbl_qos_cmdレジスタの詳細 フィールド reserved id ビット [31:16] [15:12] item [11:8] reserved cmd [7:1] [0] 説明 id(ビット15:bank select) ビット15: 1 → WAN ビット15: 0 → DMZ 0-3:SRC-IP 4-7:DST-IP 8:traffic class/tos 9:フローラベル 10:ポート番号 11:設定 1:書込み 0:読出し idは,表 9.2-1のテーブルの各エントリ指定に用います。WANインタフェースと DMZインタフェースの各々に8エントリづつありますので,WANかDMZどちらを選択す るのか決めるためにビット15を使用します。残りの3ビットで各エントリ番号を指 定します。 103 第9章 FEFエンジン-優先制御機能 ■ tbl_qos_dataレジスタ(14'h2114) tbl_qos_dataレジスタのフォーマットは以下のとおりです。 data[31:0] 表 9.3-2に,tbl_qos_dataレジスタの詳細を示します。 表 9.3-2 tbl_qos_dataレジスタの詳細 アイテム 0 ビット [31:0] 1 2 3 4 [31:0] [31:0] [31:0] [31:0] 5 6 7 8 [31:0] [31:0] [31:0] [31:8] [7:0] [31:20] [19:0] [31:16] [15:0] [31:8] [7] [6] [5] [4] [3] [2] 9 10 11 [1] [0] 説明 Src IPアドレスの最初の32ビット(IPv4の場合 は全体) Src IPアドレスの次の32ビット(IPv6のみ) Src IPアドレスの次の32ビット(IPv6のみ) Src IPアドレスの最後の32ビット(IPv6のみ) Dst IPアドレスの最初の32ビット(IPv4の場合 は全体) Dst IPアドレスの次の32ビット(IPv6のみ) Dst IPアドレスの次の32ビット(IPv6のみ) Dst IPアドレスの最後の32ビット(IPv6のみ) reserved traffic class/TOSフィールド reserved フローラベル dst UDP PORT番号 src UDP PORT番号 reserved don't_care_dst_port don't_care_src_port don't_care_dst_add don't_care_src_add don't_care_flowlabel(IPv6のみ) don't_care_traffic(IPv6の場合) don't_care_TOS(IPv4の場合) IPv4 or IPv6 (1:IPv6, 0:IPv4) entry valid 表10.2-1 との対応 SRC_IP[127:96] SRC_IP[95:64] SRC_IP[63:32] SRC_IP[31:0] DST_IP[127:96] DST_IP[95:64] DST_IP[63:32] DST_IP[31:0] TOS/Traffic Class Flowlabel[19:0] DST_PORT[15:0] SRC_PORT[15:0] Cntrlビット[7] Cntrlビット[6] Cntrlビット[5] Cntrlビット[4] Cntrlビット[3] Cntrlビット[2] Cntrlビット[1] Cntrlビット[0] コマンドレジスタのitemフィールドに対応して記述しています。優先制御テーブ ルもほかのテーブル同様一度に書込みが行えないので,1エントリ内のどこを書込 みに行くのかをコマンドレジスタのitemフィールドで指定します。 このitemフィールドに対応して書き込むデータの内容が変わります。 上の対応表はコマンドレジスタのitemフィールドと関連付けてデータレジスタ に書き込む内容を示しています。 104 第9章 FEFエンジン-優先制御機能 ■ tbl_qos_statusレジスタ(14'h2118) 以下にtbl_qos_statusレジスタのフォーマットは以下のとおりです。 status 表 9.3-3にtbl_qos_statusレジスタの詳細を示します。 表 9.3-3 tbl_qos_statusレジスタの詳細 フィールド status ビット [0] 説明 1:実行中 0:完了 105 第9章 FEFエンジン-優先制御機能 106 第10章 10章 CPUとのパケット送受信 CPUとのパケット送受信 この章では,ホストとのパケット送受信について,メモリマップ,アクセス制御レ ジスタの詳細およびパケット送受信時の動作を説明します。 10.1 動作の概要 10.2 メモリマップ 10.3 TX,RXバッファへのアクセス制御レジスタと動作説明 10.4 ループバックプロセス 107 第10章 CPUとのパケット送受信 10.1 動作の概要 FEFエンジンを含むホストI/Fブロックはホスト側にSRAMライクなインタフェース を持ち,内側にはMACブロック⇔スイッチングエンジン間と同じI/Fを持ちます。ホス ト側のインタフェースはMB86977のシステムクロックに同期したインタフェースと なっています。 なお,シングルのリード,ライトのサポートのみですので,リード信号およびライ ト信号は必ず毎回ディアサートしてください。 ■ ホストインタフェースの機能 ホストインタフェースの機能としては以下の2機能に大別されます。 TX,RXバッファ(Dual Port SRAM)へのアクセス制御: スイッチングエンジンからホストへ転送されるパケットを内蔵のDual Port RAMに格納し,その後ホストへ転送します。以下,ホストインタフェー スブロックから見て受信パケットを受け取るDual Port RAMをRXバッファ, 送信パケットを受け取るDual Port RAMをTXバッファと呼びます。 内部レジスタへのアクセス: ホストから内部レジスタへのアクセスを行います このうち,本章ではTX,RXバッファへのアクセス制御によるホストとのパケット 送受信について説明します。各内部レジスタ,テーブルへのアクセスに関しては適 宜ほかの章を参照してください。 108 第10章 CPUとのパケット送受信 ■ ホストインタフェースブロックの概要 図 10.1-1に,ホストインタフェースブロックの概要を示します。 32 Dualport RAM FEF ( Dualport RAM &NAT/ ) FIFO MAC FIFO MAC 図 10.1-1 ホストインタフェースブロック ホスト宛パケットはスイッチブロックからMACデータバスへデータが出力され, 受信FIFOにバッファリングされます。このうちFEF内で処理できなかったパケット はRXバッファへ送信されます。ホストがRXバッファを読み出すことでホストの受信 動作がなされます。 また,送信パケットはホストがTXバッファにロードすることでMACデータバスを 通してスイッチブロックに転送されます。パケットの送信においてFEFで処理され たものとホストからのものが競合してしまいますが,FEFで処理されたものの方が 優先されます。 データのタイプはビッグエンディアン,リトルエンディアンを選択できます。こ の設定は「10.3 TX,RXバッファへのアクセス制御レジスタと動作説明」を参照し てください。 109 第10章 CPUとのパケット送受信 10.2 メモリマップ TX,RXバッファはそれぞれ3KBの容量を持つDualport RAMです。パケットの蓄積構 造はリング構造をとります。 ■ メモリマップの詳細 図 10.2-1に,メモリマップの詳細を示します。 2 14’h3000 bank3 (for future use) 1 14’h2000 bank2 14’h1bff RX (3Kbyte) 14’h1000 bank1 14’h0bff TX (3Kbyte) 14’h0000 bank0 図 10.2-1 メモリマップの詳細 左に示されているアドレスは,MB86977のアドレス端子A13-A2に下位2ビットを考 慮したバイト単位のアドレスです。 <注意事項> CPUが送受信のリングバッファにアクセスするために使用するポインタ格納用レジスタの値は, すべてワード単位のアドレスになります。 110 第10章 CPUとのパケット送受信 10.3 TX, TX,RXバッファへのアクセス制御レジスタと動作説明 RXバッファへのアクセス制御レジスタと動作説明 ここでは,TX,RXバッファへのアクセス制御レジスタについて説明します。 ■ host_controlレジスタ(14'h2040) ビット[0]: ビッグエンディアン,リトルエンディアンの切替えを行います。 "1" - リトル "0" - ビッグ ビット[1]: 観測用です。予期しないフレームフォーマットがきた場合,これを廃棄する か,ホスト向けに転送するかを制御します。 "1" - 廃棄 "0" - ホスト(CPU)へ転送 ■ host_statusレジスタ(14'h2044) 表 10.3-1に,CPUとのパケットの送受信に関わる部分だけを示します。それ以外 のものについては,「4.2 割込みシーケンス」を参照してください。 表 10.3-1 host_statusレジスタ(CPUとのパケット送受信) ビット 3 ニーモニック Ovr TX フィールド名 TX overrun 2 Unr RX RX underrun 1 Packet ready packet ready 0 Tx Empty TX buffer empty 説明 TXバッファでオーバーランが起きたとき1に セットされます。 RXバッファでアンダーランが起きたとき1に セットされます。 RXバッファにパケットが存在する間1にセッ トされます。 TXバッファのすべてのパケットを送出完了 したとき1にセットされます。 ■ host_intenableレジスタ(14'h2048) 表 10.3-2に,CPUとのパケットの送受信に関わる部分だけを示します。それ以外 のものについては,「4.2 割込みシーケンス」を参照してください。 表 10.3-2 host_intenableレジスタ(CPUとのパケット送受信) ビット 3 ニーモニック Ovr TX フィールド名 TX overrun 2 Unr RX RX underrun 1 Packet ready packet ready 0 Tx Empty TX buffer empty 1: 0: 1: 0: 1: 0: 1: 0: 説明 enable TX overrun interrupt. disable enable RX under run interrupt. disable enable end of receive interrupt. disable enable TX buffer empty interrupt. disable 111 第10章 CPUとのパケット送受信 ■ host_tx_cpu_wr_strtレジスタ(14'h204c) ホストがMB86977内部のTXバッファにパケットを書き込む際,パケットの先頭を 書き込む位置を示すレジスタです。 書き込むパケットの先頭位置がワード単位のポインタ(TXバッファとして使用さ れるDualport RAMのアドレス)として示されます。 実際にはパケットの前にディスクリプタを配しますので,この位置に書き込まれ るのは送信用ディスクリプタです。 ■ host_tx_sw_rd_strtレジスタ(14'h2050) TXバッファに書き込まれた送信パケットのうち,現在スイッチブロックで処理さ れているパケットの先頭位置(ディスクリプタの位置)を示します。 ■ host_tx_strtenレジスタ(14'h2054) 送信パケットのスイッチへの転送を許可するレジスタです。 TXバッファへの書込みが終了した後,このレジスタの設定を"1"にすることでパ ケットの送信が始まります。 ■ host_rx_readendレジスタ(14'h2058) RXバッファ(受信用のDualport RAM)において,ホストが最後に読み出した位置 (アドレス)をワード単位で示します。 受信パケットのどこまでがホストへ転送されたのか知るために使用します。 ■ host_rx_pckt_inbufレジスタ(14'h205c) RXバッファ内のパケットにおいて,現在ホストに読み出されていないパケットが 何個リング構造に積まれているのかを知るために使用します。リードクリアです。 112 第10章 CPUとのパケット送受信 10.3.1 受信パケットのホストへの転送 ここでは,受信パケットのホストへの転送手順を説明します。 ■ 受信パケットの転送手順 以下の手順で,受信パケットをホストへ転送します。 1) パケット受信通知: host_statusレジスタのpacket readyが"1"になると,受信割込みを発生し ます。マスカブルなのでポーリングでの検知も可能です。 2) パケット数の確認: 受信割込みが発生すると,ホストはhost_rx_pckt_inbufレジスタにアクセ スし,RXバッファ内のパケット残存数を調べます。 3) パケットの読出し開始: 最初にhost_rx_readendレジスタによって示されるアドレスに1を加えま す(ワード単位)。これが新しいパケットの格納されているRXバッファ内 の位置(受信用Dualport RAMのアドレス)となっています。 この位置に格納されている内容は該当パケットの特徴を示すディスクリ プタです。ホストはまず,このディスクリプタをリードします。ディスク リプタの内容は以下のとおりです。 ビット [23:16] [10:0] 名称 source interface packet length 説明 受信インタフェース番号 受信パケット長 受信インタフェース番号の対応関係は以下のとおりです。 ビット 23 22 21 20 19 18 17 16 転送先インタフェース Host High Priority Interface Host Normal Priority Interface WAN High Priority Interface WAN Normal Priority Interface DMZ High Priority Interface DMZ Normal Priority Interface LAN 1 Interface LAN 0 Interface 4) パケットの順次読出し: 引き続き次の位置(アドレス)からパケットの読出しを行います。 どこまでパケットを読み出せばよいかは,先のディスクリプタの受信パ ケット長情報(バイト)および受信パケット数(パケット残存数)をもと に決定します。 5) パケット読出し終了: 読み出したパケットの最終位置(ワード単位アドレス)をhost_rx_readend レジスタに書き込みます。 6) 先のhost_rx_pckt_inbufレジスタでパケットが複数個バッファに入って いれば,引き続きパケットの受信処理を行います。こうしてパケットの残 存数が"0"になるまで受信処理が行われます。 113 第10章 CPUとのパケット送受信 host_status レ ジ ス タ , host_rx_pckt_inbuf レ ジ スタ は リ ー ド ク リ ア で す 。 host_statusレジスタからの読出しをした際に割込みはディアサートされます。ホ ストは割込み処理ルーチンに入り,パケットの受信数を調べますが,読出し後, host_rx_pckt_inbufレジスタはクリアされ,次のパケットが到着したとき,ハード ウェアがまた1からカウントアップしていきます。 host_rx_pckt_inbufレジスタで示された数だけパケットをRXバッファから読み 出したらホストは割込みルーチンから抜けますが,この時点で新たに受信パケット が到着している可能性があります。この場合はプログラムがメインルーチンに戻っ た際,あらたな受信割込みがMB86977から発生しています。 <注意事項> 割込みルーチンの中でhost_rx_pckt_inbufレジスタをリードする際は, 必ずその値が0になるま でリードを繰り返してください。そのようにしないと次の新しいパケットの受信タイミングに よっては, 次の受信割込みが発生しない可能性があります。 114 第10章 CPUとのパケット送受信 10.3.2 送信パケットのホストからの転送 ここでは,送信パケットのホストからの転送手順を説明します。 ■ 送信パケットの転送手順 パケットの送信に関する手順は以下のとおりです。 1) パケット書込み開始: TXバッファ(送信用Dualport RAM)への書込み開始位置(アドレス,ワー ド単位)を知るため,host_tx_cpu_wr_strtレジスタを読み出します。こ のポインタがパケットの前に置くディスクリプタの書込み位置になりま す。 書き込むディスクリプタのフォーマットは以下のとおりです。 ビット [25] [24] [23:16] [10:0] 名称 add CRC direct route dest if [7:0] TX packet length 説明 CRC計算on/off 1:on 0:off ルート指定 有効ビット 宛先ルート情報 送信パケット長 add_CRCに"1"を設定すると,ハードウェアでCRCの計算を行います。TX length フィールドにはCRCを付加しないパケットの長さ(バイト)を指定してください。 また,このビットがセットされている場合,CRCを付加する前のパケット長が60 バイト未満のときには,MB86977は自動的に60バイトになるまで0をパディング し,その後CRCを付加してパケットを送出します。 このオートパディング機能は,MB86977のFEF機構(NATまたはIP フォワーディ ング)を使用している際にも働きます。 direct routeビットは,ディスクリプタで転送先を指定する場合に1に設定し ます。0に設定された場合には宛先MACアドレスをL2アドレスルックアップテー ブルに参照することによって転送先が決定されます。 具体的にはDMZ,WANインタフェースへの送信を行う際には必ず"1"を設定しま す。LAN0,LAN1(またはDMZポートがLAN2ポートとして機能している場合のLAN2) インタフェースへの転送は,転送先をCPU側で指定したい場合には"1"に,L2ア ドレスルックアップテーブルによって決定させたい場合には"0"に設定します。 dest if [7:0]には各物理インタフェースに対応しており,どこのインタ フェースへ出力するのか指定するために使用します。 各ビットとインタフェースの対応は以下のとおりです。ビット22とビット23 を共に1に設定すると,ホストI/Fへのループバックとして使用できます。 ビッ ト22とビット23は,それぞれ単独ではセットしないでください。 ビット 23 22 21 20 19 18 17 16 転送先インタフェース Host High Priority Interface Host Normal Priority Interface (invalid) WAN High Priority Interface WAN Normal Priority Interface DMZ High Priority Interface DMZ Normal Priority Interface LAN 1 Interface LAN 0 Interface 2) イーサネットフレームの順次書込み: 115 第10章 CPUとのパケット送受信 アドレスをhost_tx_cpu_wr_strtレジスタ値から順次1インクリメントさ せて,パケットデータを1ワードずつ書き込みます。 3) 書込み終了: パケットデータの最後を書き込んだ後,host_tx_cpu_wr_strtレジスタに 次に書き込むパケットの先頭位置(アドレス)を書き込みます。書き込む 位置の値は以下の数式で表現できます。 新しいhost_tx_cpu_wr_strtレジスタ値=現在のhost_tx_cpu_wr_strtレジ スタ値+現在のパケットデータの書込み回数 4) 転送開始: host_tx_cpu_wr_strtレジスタ値を書き換え後,host_tx_strtenレジスタ に"1"をライトするとスイッチブロックへの転送が開始されます。 <注意事項> パケットを書き込む際には,host_tx_sw_rd_strt以上のアドレスにはデータを書き込まないで ください。この領域は,まだ送信されていないデータが格納されています。 もしも,この領域に対して書込みが行われた場合は,オーバーランエラーが検出されます。 TXバッファ上にそのパケットを書き込むのに十分な空き領域がない状態でパケットを書き込むと, そのパケットの最後尾まで納まらない不正パケット状態となります。この状態でhost_tx_strten レジスタに”1”をライトするとスイッチブロックへの転送が開始されますが, MB86977はこの不正 パケットに付随しているディスクリプタに従って転送処理を実行しようとするため, 誤動作の原 因となります。 116 第10章 CPUとのパケット送受信 10.4 ループバックプロセス このモードはCPUから送信させたパケットをMB86977内で折り返し,再びCPUへ受信 させるためのプロセスです。主に試験目的で使用します。 ■ 概要 ループバックに関して特殊な設定は必要ありません。送信用ディスクリプタにお いて,転送先インタフェースビット[23:16]を0xC0(ホスト宛て高優先とホスト 宛て通常優先の両方)に設定することで実行されます。 <注意事項> いったんスイッチまで到達して折り返してきますので,フィルタテーブル,NAT/IPフォーワー ディングテーブルなどの設定で「該当パケットを落とす」, 「FEFを通して他インタフェースへ転送 される」などの設定を行うと折り返したパケットはCPUへ到達できなくなります。 117 第10章 CPUとのパケット送受信 118 第11章 11章 MACの機能と設定 MACの機能と設定 この章ではMACの機能と設定について説明します。 MACはIEEE802.3のCSMA/CDに従ったフレーム構成および展開を行います。 送受信インタフェースではMII,RMIIの双方に対応し,フレーム形成やフレーム展 開(preamble,SFDの除去) ,コリジョン処理の様なIEEE802.3プロトコルの機能のす べてを実行します。 この章では送信用MACブロックをTXFIFO,受信用MACブロックをRXFIFOと呼びます。 11.1 MACブロック説明 11.2 MACのレジスタ 11.3 MACの機能 119 第11章 MACの機能と設定 11.1 MACブロック説明 MACブロック説明 MACブロックは送信,受信にそれぞれ128バイトのFIFOを持ちます。 ■ MACブロックの概要 受信の場合,RXFIFOに64バイトのパケットデータが蓄積された時点でMACブロッ クは受信リクエストをスイッチブロックへ送ります。 スイッチブロックは順次各インタフェースのMACブロックの受信サービスを行い ますが,サービスが間に合わないとMACのRXFIFOは一杯になります。この状態にな ると,以後の受信パケットは廃棄され,RXFIFOオーバーランとしてmac_statusレジ スタのOvr RXビットでホストに通知されます。 送信の場合,パケットがスイッチブロックから送信用のTXFIFOへ順次書き込まれ ます。 送信用のパケットデータは64バイト単位で書き込まれますが,スイッチブロック のサービスが間に合わない,インタフェースに輻輳制御がかかっているなどの理由 でTXFIFOが一杯になると,スイッチブロックは該当MACブロックへ転送を行いませ ん。不幸にもこのような理由が重なり受信パケットをストアするスイッチブロック の内蔵RAM(パケットバッファ)が一杯になると,その後の受信パケットは廃棄さ れます。 また,このようにパケットバッファが溢れそうになった場合のために,輻輳制御 のメカニズムを備えています。 120 第11章 MACの機能と設定 11.2 MACのレジスタ MACのレジスタ ここではMACのレジスタについて説明します。 ■ MACコントロールレジスタ(mac_controlレジスタ-14'h2000) MACブロックはホストから直接アクセス可能なMACコントロールレジスタを持ち ます。 表 11.2-1に,MACコントロールレジスタのフォーマットを示します。各インタ フェースごとに4ビットの情報を持つ,全16ビットのレジスタです。 表 11.2-1 MACコントロールレジスタのフォーマット WAN DMZ LAN1 LAN0 ビット 15 14 ニーモニック reserved Partition-En フィールド名 Enable-partition mode 13 Dis_port disable port 12 Flowc En enable flow control 11 10 reserved Partition-En 9 Dis_port disable port 8 Flowc En enable flow control 7 6 reserved Partition-En 5 Dis_port disable port 4 Flowc En enable flow control 3 2 reserved Partition-En 1 Dis_port disable port 0 Flowc En enable flow control Enable-partition mode Enable-partition mode Enable-partition mode 説明 パーティション機能を 1:enableする 0:disableする 初期値:1 (enable) MACを 1:disableする 0:enableする 初期値:1 (disable) フローコントロール機能を 1:enableする 0:disableする 初期値:1 (enable) パーティション機能を 1:enableする 0:disableする 初期値:1 (enable) MACを 1:disableする 0:enableする 初期値:1 (disable) フローコントロール機能を 1:enableする 0:disableする 初期値:1 (enable) パーティション機能を 1:enableする 0:disableする 初期値:1 (enable) MACを 1:disableする 0:enableする 初期値:1 (disable) フローコントロール機能を 1:enableする 0:disableする 初期値:1 (enable) パーティション機能を 1:enableする 0:disableする 初期値:1 (enable) MACを 1:disableする 0:enableする 初期値:1 (disable) フローコントロール機能を 1:enableする 0:disableする 初期値:1 (enable) 121 第11章 MACの機能と設定 ○ Flowc Enについて このビットが設定されるとフローコントロールパケットの送受信を行い,フ ローコントロール制御を行います。詳しくは「11.3.5 フローコントロール」 で説明します。 ○ Dis_portについて 各インタフェースは,MACコントロールレジスタのビット1を設定することに よりディセーブルになります。インタフェースがディセーブルのときは,その インタフェースは送受信動作を行いません。 ○ Partition-Enについて 過剰コリジョン,またはレイトコリジョンをおこした場合,インタフェース の送受信制御をMB86977に行わせるかどうかこのビットで設定します。パーティ ションモードに入ったときのMACの機能については「11.3 MACの機能」で説明 します。 ■ ステータスレジスタ(mac_status[3:0]レジスタ-14'h2004∼14'h2010) インタフェースごとに11ビットのレジスタを持ちます。 LAN0,1,DMZ,WANの各インタフェースに対応して下のアドレスから順に対応し ます。 ニーモニック collision フィールド名 collision 11 10 9 RXER retry over False CR RXER Collision retry overflow False Carrier detection 8 Unr TX TX underrun 7 Ovr RX RX overrun 6 Partition EXIT Partition Exit 5 Partition Enter Partition Enter 4 late col late collision 3 alignment alignment error 2 1 CRC Short Frame Check error packet too short 0 Long packet too long ビット 12 説明 コリジョンが検出されると1にセットされま す。 RX_ERを検出するとセットされます。 16回の再送に失敗するとセットされます。 フォールスキャリアが起きるとセットされ ます。 TXバッファでアンダーランが起きたとき1に セットされます。 RXバッファでオーバーランが起きたとき1に セットされます。 正常な受信パケットをうけ,パーティション モードから脱するとセットされます。 16回目の再送に失敗し,インタフェースが パーティションモードに入ると1にセットさ れます。 レイトコリジョンが起きたときに1にセット されます。 アライメントエラーが起きたときに1にセッ トされます。常にCRCエラーと同時にセット されます。 CRCエラーが起こったときセットされます。 最小パケット長よりも短いパケットを受信 したときに1にセットされます。 最大パケット長よりも長いパケットを受信 したときに1にセットされます。 False Carrier割込みは,MIIのRX_ERがHIGHでRXDが'b1110であるが,RX_DVがLOW の場合にアサートされます。 122 第11章 MACの機能と設定 ■ 割込みイネーブルレジスタ(mac_intenable[3:0]レジスタ-14'h2014∼14'h2020) ステータスレジスタに対応して,割込みをするか,しないかを決めるレジスタで す。 LAN0,LAN1,DMZ,WANの各インタフェースに対応して下のアドレスから順に対応 します。 ビット 12 ニーモニック collision フィールド名 collision 11 RXER RXER 10 retry over 9 False CR Collision retry overflow False Carrier detection 8 Unr TX TX underrun 7 Ovr RX RX overrun 6 Partition EXIT Partition Exit 5 Partition Enter Partition Enter 4 late col late collision 3 alignment alignment error 2 CRC Frame Check error 1 Short packet too short 0 Long packet too long 説明 コリジョン検出時の割込みを 1:enableする 2:disableする RX_ER検出時の割込みを 1:enableする 2:disableする オーバーフロー時の割込みを 1:enableする 2:disableする フォールスキャリア時の割込みを 1:enableする 2:disableする TXバッファオーバーラン発生時の割込みを 1:enableする 2:disableする RXバッファオーバーラン発生時の割込みを 1:enableする 2:disableする パーティションモード脱時の割込みを 1:enableする 2:disableする パーティションモード入時の割込みを 1:enableする 2:disableする レイトコリジョン発生時の割込みを 1:enableする 2:disableする アライメントエラー発生時の割込みを 1:enableする 2:diableする CRCエラー発生時の割込みを 1:enableする 2:disableする 最小パケットよりも短いパケット受信時の 割込みを 1:enableする 2:disableする 最大パケットよりも長いパケット受信時の 割込みを 1:enableする 2:disableする ■ IPGタイマレジスタ(mac_ipg_timerレジスタ-14'h2030) パケット送出間隔を決定するレジスタです。 設定単位は"ビット"です。デフォルト値は10Mbps,100Mbps共に最小送出間隔に 相当する"96"となっています。設定値の下位2ビットは無視されますので,4ビット 間隔での設定となります。 例えば97とライトしても96としか認識されませんし,リードしても96という数字 が戻ってきます。レジスタに書き込んだ値をIPG_valとすると,IPG値は以下の計算 で与えられます。 {IPG_val } ÷ 4 x TXCLK周期 例えば,IPG_valが112 (0x70)の場合,IPGは100Mbpsで1120ns,10Mbpsで11.2 μsとなります。本レジスタは7ビット幅です。したがって最大値は下位2ビットを 無視して,0x7c=124ビットです。 123 第11章 MACの機能と設定 ■ Min/Maxパケット長設定レジスタ(mac_min_lengthレジスタ/mac_max_lengthレジスタ -14'h2028,14'h202c) 最大および最小パケット長を設定するレジスタです。 受信パケット長の最大値および最小値エラーはこのレジスタの値と受信パケッ トの長さを比較します。 設定単位はバイトです。Mac_min_lengthレジスタのデフォルト値は64です。下限 はありませんが,"0"は設定しないでください。 Mac_max_lengthレジスタのデフォルト値は1518です。上限は1536です。 ■ フローコントロール用ポーズタイマレジスタ(mac_pause_timerレジスタ-14'h2024) ポーズパケットのポーズタイマ値を設定するレジスタです。 設定単位は512ビット1単位です。例えば100Mbpsの場合,このレジスタに"1"が設 定されるとタイマ値としては5.12μsとなります。デフォルトは16'hffff_ffffです。 このレジスタへの設定が行われた時点でポーズパケットに対するCRCも生成され ます。したがってあらかじめMB86977(ルータ)のMACアドレスをルックアップテー ブルへ登録しておいてください。 124 第11章 MACの機能と設定 11.3 MACの機能 MACの機能 ここでは,MACの機能について説明します。 ■ MAC機能の概要 MACブロックでは,フレームの送受信を行いますが,同時にコリジョンやエラー を検出してホストに割込みを発生するかどうかを判定する機能があります。実際に ホストに割込みを発生するかどうかは,割込みイネーブルレジスタの設定によりま す( 「11.2 MACのレジスタ」参照) 。 割込みをあげるかどうかの判定基準として,フレーム送信時にはコリジョンの発 生有無とコリジョンの種類を( 「11.3.1 フレームの送信」「11.3.2 送信で発生す る割込み」参照),MACブロック受信側ではエラーの発生有無とエラーの種類を チェックする機能があります( 「11.3.3 フレームの受信」「11.3.4 受信で発生す る割込み」参照) 。 MACブロック受信側機能の一つフローコントロールについては「11.3.5 フロー コントロール」で詳しく説明します。 125 第11章 MACの機能と設定 11.3.1 フレームの送信 すべてのフレームにpreamble, SFDを付け加えます。半二重モードではRX_CRS信号 がインアクティブでCOL信号もインアクティブであるとき,フレームの送信が始まり ます。全二重では送信フレームがTXFIFOにたまった時点で送信を開始します。パケッ ト送出間隔はIPGタイマレジスタで設定されます。 ■ フレーム送信の動作 パケットデータは送信インタフェースのTXD[3:0]のピンよりTX_CLK信号の立上 がりエッジで転送します。転送時にはTX_EN信号がアサートされます。 半二重モードでコリジョンが起こったときにはPHYデバイスがMACのCOL信号をア サートします。そして,即座に送信を止めて,4バイトのjam信号(8'h55を四つ) を送信します。 送信においてコリジョンが起こったとき,データの最初の64バイトの送信の間で, かつ再送の失敗が16回未満の場合には,再送を試みます。再送のタイミングは内部 的に自動で行います。 再送を16回失敗した場合パケットは廃棄されます。なお,このインタフェースは パーティションモード(後述)に入り,この状態を復帰しない間は出力キューに積 まれたパケットも廃棄されていきます。 以下,コリジョンに対する扱いについて説明します。 ○ パーティションモード 過剰コリジョンまたはレイトコリジョン(後述)が発生した場合,インタ フェースはパーティションモードへ入ります。このインタフェース宛に出力 キューに積まれたパケットは廃棄されます。 該当インタフェースに正常なパケットが受信されたときにこのモードを脱し ます。 ○ コリジョン コリジョンの検出は半二重モードの転送のとき行います。 コリジョンが最初の512ビット(すなわち64バイト)の間に起こったと想定し ます。このようなコリジョンが起こったときには,それまでにパケットの再送 信を16回失敗していないのであれば,パケットの再送信を試みます。 コリジョンが検出されたときには,jam信号(8'h55を四つ)が送信されます。 そして,TXDバスはTX_ENがディアサートされることによりディセーブルされま す。 パケットはハードウェア内で再送タイミングを制御されます。 ○ レイトコリジョン パケットの再送信を16回失敗していない場合で,コリジョンが最初の512ビッ ト(すなわち64バイト)より後に検出された場合を想定します。この場合,再 送信を行いません。 MACは最初の512ビットの送信中にコリジョンを検出した場合と同様にjam信 号を送信します。そして,TXD信号線はTX_ENがディアサートされることにより ディセーブルされます。 ○ 過剰コリジョン パケットの再送信を16回失敗した場合は再送信をしません。この場合にもMAC はjam信号を送信します。そして,TXD信号線はTX_ENがディアサートされること によりディセーブルされます。 126 第11章 MACの機能と設定 11.3.2 送信で発生する割込み ホストに割込みをあげるかどうかは,MAC割込みイネーブルレジスタの設定により ます。 ■ 送信動作中の割込み要因 送信動作では以下のケースで割込みが発生します。 1) レイトコリジョンが発生した場合(mac_status[] [4]-late col) 2) 過剰コリジョンが発生した場合(mac_status[] [11]-retry_over) 3) アンダーランが発生した場合(mac_status[] [8]-Unr TX) アンダーランとはMACのTXFIFOに出力されるべきパケットデータが到達していな い場合に発生します。スイッチブロックの各インタフェースへの送信サービスが間 に合わないときに発生します。 また,パーティションに関して以下の二つの割込みが発生します。 1) パーティションモードに入ったとき(mac_status[][5]-Partition Enter) 2) パーティションモードから脱したとき(mac_status[][6]-Partition EXIT) 127 第11章 MACの機能と設定 11.3.3 フレームの受信 ここでは,フレーム受信側の機能と動作について説明します。 ■ MACブロックの受信側機能 MACブロックの受信側には以下の機能があります。 CRCチェック アライメントのチェック RXエラー(MIIのRX_ER信号のアサート)のチェック 最小パケット,最大パケット長の定義が可能 フレームからpreambleとSFDの削除 コリジョンのチェック フローコントロール ■ フレーム受信の動作 フレームの受信はPHYからのRX_DV信号がアサートされることで始まります。 RX_DVがアサートされると,MACはRX_CLKの立上りエッジでRXD[3:0]のピンからデー タをサンプリング゙します。PHYがRX_DV信号をディアサートしたときに,受信は終 了します。 受信したパケットにおいて,CRCエラー,RXエラー,アライメントエラー,パケッ ト長エラーが発生した場合には,パケットを廃棄します。 128 第11章 MACの機能と設定 11.3.4 受信で発生する割込み ここでは,MACが受信時にMACステータスレジスタ(mac status register)の対応 するビットをセットする理由について説明します。ホストに割込みをあげるかどうか は,MAC割込みイネーブルレジスタの設定によります。 ■ 受信動作中の割込み要因 以下に受信で起こる割込みを説明します。 1) RXFIFOオーバーフロー: RXFIFOが一杯になって,次に入ってくるパケットデータを蓄えられなく なった場合に発生します(mac_status[][7]- Ovr RX) 。 2) False Carrierの発生: RX_ERがHIGHでRXDが'b1110であるが RX_DV がLOWの場合にアサートされ ます(mac_status[] [9]- False CR) 。 3) RX_ERの発生: MIIインタフェースにおいてこの信号がアサートされた場合に発生します (mac_status[] [10]-RXER) 。 4) 受信フレームのアラインメントエラー: 受信フレームがバイトアラインされていなかった場合に発生します (mac_status[] [3]-align) 。 5) 受信フレームのCRCエラー: CRCチェックの結果,エラーが検出されると発生します (mac_status[] [2]-CRC) 。 6) 最大パケット長エラー: Maxパケット長設定レジスタを超えるパケットを受信した場合に発生しま す(mac_status[] [0]-Long) 。 7) 最小パケット長エラー: Minパケット長レジスタを下回るパケットを受信した場合に発生します (mac_status[] [1]-Short) 。 8) コリジョンの発生: パケット受信途中でCOL信号がアサートされた場合に発生します。 このとき,受信中のパケットは廃棄されます。 129 第11章 MACの機能と設定 11.3.5 フローコントロール MACは,MACコントロールレジスタのFlowc Enビットがセットされていると,フロー コントロールを行います。 ■ フローコントロールの種類 フローコントロールには以下の種類があります。 1) 受信側MACがポーズパケットを受け取ったために,送信側MACがパケットの 送信を待つ 2) パケットバッファの空き領域がなくなったために,スイッチブロックの内 部信号を受けて送信側MACがポーズパケット(全二重)かjam信号(半二重) を送信する ■ ポーズパケット受信 受信側MACがポーズパケットを受け取ると,mac_pause_timerレジスタで示された 値分だけ送信側MACは送信動作を待ちます。このインタフェースへ向けて積まれた (キューイングされた)パケットは送信待ちになります。 ポーズ期間を脱すると再びこのインタフェースに積まれたパケットは送出され ます。 ■ ポーズパケット送信,jam信号送信 パケットバッファの空き領域がないことをスイッチブロックから知らされると, 送信側MACは全二重通信の場合にはポーズパケットを,半二重通信の場合にはjam 信号を送信します。 ○ ポーズパケットの送信 全二重通信のときに,パケットバッファの占有領域が閾値 (swe_flow_thresholdレジスタ)以上になるか,パケットバッファが一杯にな ると,送信側MACはポーズパケットを送信します。 MACブロックから送信中のパケットが存在する場合にはポーズパケットは送 信終了を待ちます。 ○ jam信号送信 半二重通信のときに,前述と同じ要領でスイッチブロックからの信号を受け ると送信側MACはCRS信号(RMIIモードではCRS_DV信号)のアサートの有無を調 べます。もしアサートされていればjam信号を送出します。Jam信号は8'h55が四 つです。 130 第12章 12章 SMIの機能と設定 SMIの機能と設定 SMIブロックは,SMI I/Fを通してPHYチップのMIIレジスタにアクセスし,リンクス テータスを周期的に監視します。ポーリングの結果は各インタフェースのMACブロッ クに送られます。 また,ホストからPHYレジスタへのアクセスは,このブロック中のコマンドレジス タ,データレジスタに値をセットすることで行われます。 12.1 SMIのレジスタ 12.2 SMIのレジスタによるPHYデバイス(レジスタ)のアクセス 12.3 MDCレジスタ(smi_mdcdiv – 14'h209c) 131 第12章 SMIの機能と設定 12.1 SMIのレジスタ SMIのレジスタ PHYデバイスレジスタへのアクセスに関しては,複数のレジスタにアクセスするこ とで実現します。ここでは,これらレジスタの詳細を説明します。 ■ smi_cmdレジスタ(14'h208c) コマンドレジスタはPHYデバイスのMIIレジスタへアクセスする際,ライトやリー ドのコマンドを発行するレジスタです。Phy addとreg addでデバイスとMIIレジス タの番地を特定します。 ビット [15] [14:13] [12:8] [7:5] [4:0] ニーモニック Access type reserved reg add reserved phy add フィールド名 Access type 説明 1:ライト 0:リード Register address MIIレジスタアドレス PHY chip address PHYチップアドレス ■ smi_dataレジスタ(14'h2090) 上記コマンドで指定されたPHYデバイスのMIIレジスタに対し,書き込むべきデー タを保持します。 ■ smi_cmd_stレジスタ(14'h2094) PHYデバイスへアクセスする際の制御用です。 ハードウェアがPHYデバイスへアクセスを行っている最中ならばビット0が"1"に なります。また,PHYデバイスのMIIレジスタへのアクセスが失敗した場合,ビット 1が"1"になります。 ■ smi_pollintvlレジスタ(14'h20a0) PHYデバイスへ定期的にアクセス(ポーリング)する際の周期を設定します。320 μs(128cyclex 5 @ 2MHz)が1単位です。 デフォルトで0(ポーリングしないの意味)になっています。 2MHzという値はMDCで供給する分周クロックの値に関係しており,MDCレジスタに より設定されます。 ■ smi_phy_addレジスタ(14'h2098) ポーリングを行う際に使用するPHYデバイスのアドレス設定レジスタです。 1バイト単位で四つ分割り当てられます。 ビット [28:24] [20:16] [12:8] [4:0] 132 ニーモニック dev4phy_add dev3phy_add dev2phy_add dev1phy_add PHY PHY PHY PHY フィールド名 device4 address device3 address device2 address device1 address 説明 PHYデバイス4用アドレス PHYデバイス3用アドレス PHYデバイス2用アドレス PHYデバイス1用アドレス 第12章 SMIの機能と設定 ■ smi_controlレジスタ(14'h2080) WAN DMZ (LAN2) LAN1 LAN0 ニーモニック MII En フィールド名 MII Enable 14 Link Speed link speed 13 Link Duplex link duplex 12 Link Auto 11 MII En link autonegotiation MII Enable 10 Link Speed link speed 9 Link Duplex link duplex 8 Link Auto 7 MII En link autonegotiation MII Enable 6 Link Speed link speed 5 Link Duplex link duplex 4 Link Auto 3 MII En link autonegotiation MII Enable 2 Link Speed link speed 1 Link Duplex link duplex 0 Link Auto link autonegotiation ビット 15 説明 1 : enable MII, 0 : disable MII(i.e. use RMII). 1: 100BASE , 0: 10BASE. (in the case of manual setting) 1: Full, 0: Half. (in the case of manual setting) 1: enable autonego, 0: disable autonego (manual) 1 : enable MII, 0 : disable MII(i.e. use RMII). 1: 100BASE , 0: 10BASE. (in the case of manual setting) 1: Full, 0: Half. (in the case of manual setting) 1: enable autonego, 0: disable autonego (manual) 1 : enable MII, 0 : disable MII(i.e. use RMII). 1: 100BASE , 0: 10BASE. (in the case of manual setting) 1: Full, 0: Half. (in the case of manual setting) 1: enable autonego, 0: disable autonego (manual) 1 : enable MII, 0 : disable MII(i.e. use RMII). 1: 100BASE , 0: 10BASE. (in the case of manual setting) 1: Full, 0: Half. (in the case of manual setting) 1: enable autonego, 0: disable autonego (manual) 133 第12章 SMIの機能と設定 ■ smi_statusレジスタ(14'h2084) WAN 134 ビット 19 ニーモニック Link Status Change WAN フィールド名 link status change WAN DMZ (LAN2) 18 Link Status Change DMZ link status change DMZ LAN1 17 Link Status Change LAN1 link status change LAN1 LAN0 16 Link Status Change LAN0 link status change LAN0 WAN 15 14 13 12 Link Link Link Link Status Speed Duplex Auto DMZ (LAN2) 11 10 9 8 Link Link Link Link Status Speed Duplex Auto LAN1 7 6 5 4 Link Link Link Link Status Speed Duplex Auto LAN0 3 2 1 0 Link Link Link Link Status Speed Duplex Auto link status link speed status link duplex status link autonego status link status link speed status link duplex status link autonego status link status link speed status link duplex status link autonego status link status link speed status link duplex status link autonego status 説明 WANインタフェースのリンクステータス(リン クUp or Down,スピード,duplexモード,オー トネゴ)に変化があったときに1になります。 リードクリアです。 オートネゴシエーションがイネーブルされて いるときのみ有効です。 DMZインタフェースのリンクステータス(リン クUp or Down,スピード,duplexモード,オー トネゴ)に変化があったときに1になります。 リードクリアです。 オートネゴシエーションがイネーブルされて いるときのみ有効です。 LAN1のリンクステータス(リンクUp or Down, スピード,duplexモード,オートネゴ)に変化 があったときに1になります。 リードクリアです。 オートネゴシエーションがイネーブルされて いるときのみ有効です。 LAN0のリンクステータス(リンクUp or Down, スピード,duplexモード,オートネゴ)に変化 があったときに1になります。 リードクリアです。 オートネゴシエーションがイネーブルされて いるときのみ有効です。 1: Link Up,0: Link Downを示します。 1: 100BASE ,0: 10BASE. 1: Full,0: Half. 1: autonego enabled, 0: autonego disabled 1: Link Up,0: Link Downを示します。 1: 100BASE ,0: 10BASE. 1: Full,0: Half. 1: autonego enabled, 0: autonego disabled 1: Link Up,0: Link Downを示します。 1: 100BASE ,0: 10BASE. 1: Full,0: Half. 1: autonego enabled, 0: autonego disabled 1: Link Up,0: Link Downを示します。 1: 100BASE ,0: 10BASE. 1: Full,0: Half. 1: autonego enabled, 0: autonego disabled 第12章 SMIの機能と設定 ■ smi_intenableレジスタ(14'h2088) ビット 3 ニーモニック Link Status Change 3 フィールド名 WAN link status change 2 Link Status Change 2 DMZ link status change 1 Link Status Change 1 LAN1 link status change 0 Link Status Change 0 LAN0 link status change 説明 WANリンクステータス変化時の割込みを 1:enableする 0:disableする DMZリンクステータス変化時の割込みを 1:enableする 0:disableする LAN1リンクステータス変化時の割込みを 1:enableする 0:disableする LAN0リンクステータス変化時の割込みを 1:enableする 0:disableする 135 第12章 SMIの機能と設定 12.2 SMIのレジスタによる SMIのレジスタによるPHY のレジスタによるPHYデバイス(レジスタ)のアク PHYデバイス(レジスタ)のアク セス ここでは,SMIのレジスタによるPHYデバイスのアクセスについて説明します。 ■ PHYデバイスMIIレジスタのリード リード手順は以下のとおりです。 1) smi_cmd_stのビット0を読み出し,SMIのアクセスが行われていないことを 確認します。 2) smi_cmdレジスタのアクセスのタイプをReadとし,PHYレジスタのアドレス をセットします。SMIコントロールブロックからポーリングが行われてい る場合,ホストからのコマンドは無視されます。Smi_pollintvlレジスタ に16'h0000をセットすると,SMIコントロールブロックからのポーリング を止めることができますので,コマンド実行前にこのレジスタに16'h0000 をセットすることを推奨します。 3) Commandレジスタに書き込まれた設定に従って,PHYデバイスとの通信が始 まります。PHYデバイスはコマンドにしたがって指定されたアドレスのPHY レジスタからデータを読み出します。 4) この命令の実行状況はsmi_cmd_stレジスタのビット0を見ることで確認で きます 5) smi_cmd_stレジスタのビット0が"0"になると読出し動作終了です。この状 態になったらsmi_dataレジスタから値を読み出します。なお,smi_cmd_st レジスタのビット1が"1"になった場合,読出し動作が失敗であることを示 します。この場合,smi_dataレジスタには正しい値が取り込まれていませ ん。 ■ PHYデバイスMIIレジスタのライト ライト手順は以下のとおりです。 1) ホストからsmi_dataレジスタにPHYデバイスに書き込むデータをライトし ます。 2) ホストはsmi_cmd_stレジスタのビット0を見てアクセスが行われていない ことを確かめた上で,smi_cmdレジスタのアクセスのタイプをWrite,書込 みを行うPHYレジスタのアドレスをセットします。このときsmi_pollintvl レジスタについては,リードのときと同じ設定をしておきます。 3) smi_dataレジスタ,smi_cmdレジスタに書き込まれた設定にしたがって, PHYデバイスとの通信が始まります。PHYデバイスはこのコマンドにした がって指定されたアドレスのPHYレジスタへデータを書き込みます。 4) この命令の実行状況はsmi_cmd_stレジスタをReadすることで確認できま す。 5) smi_cmd_stレジスタのビット0が"0"になったら書込み終了です。 136 第12章 SMIの機能と設定 ■ ポーリング ポーリングの前に,まずSMI I/FブロックはPHYチップの初期化を行います。 初期化は,コントロールレジスタの設定にしたがい,PHYデバイスのMIIレジスタ 0(control register),4(autonegotiation advertise register)にライトする ことを,各インタフェースごとに行います。 オートネゴをイネーブルにする場合は,オートネゴリスタートをします。その後, オートネゴに必要と見られる時間だけ待ってポーリング動作に移ります。 ポーリングは各インタフェースごとに順番に行います。Smi_phy_addレジスタ に登録した順番にPHYデバイス1→2→3→4→1→・・・と巡回します。 以下にこの動作の説明を行います。 1) 該当インタフェースのコントロールレジスタの中身が変わっている場合 (オートネゴシエーションイネーブル,スピード,duplex mode),MIIレ ジスタ0,4の設定を行い次のインタフェースに移ります。該当インタ フェースの再初期化に相当します。 2) そうでない場合は,MIIレジスタ1(status register)をリードします。 3) リンクがダウンしていれば,対応するinterrput ビットをセットして,次 のインタフェースに移ります。 4) オートネゴシエーションに対応していない場合は,対応するinterrupt ビットをセットして,次のインタフェースに移ります。 5) オートネゴシエーションが完了していない場合は,単に次のインタフェー スに移ります。 6) オートネゴシエーションが完了している場合は,MIIレジスタ5をリードし, 動作モード(スピード,duplex)を判断します。 7) 結果をステータスレジスタに反映させて次のインタフェースに移ります。 137 第12章 SMIの機能と設定 12.3 MDCレジスタ( MDCレジスタ(smi_mdcdiv レジスタ(smi_mdcdiv – 14'h209c) 14'h209c) MDCレジスタは,システムクロックからMDC用の分周クロックを生成するために使用 するレジスタです。 ■ MDCレジスタの単位 単位は整数で,以下の計算で分周値が決定されます。 分周値(Hz)= システムクロック(Hz)÷(smi_mdcdivレジスタ値+1)÷ 2 138 第13章 13章 スイッチブロックの優先制御 この章では,スイッチブロックの優先制御について説明します。 13.1 プライオリティキューイング 139 第13章 スイッチブロックの優先制御 13.1 プライオリティキューイング MB86977は各ポートからの受信要求・送信要求をアービタし,適宜サービスを行う ことで受信パケットをそれぞれの送信ポート宛のキューに積みます。この際,MB86977 は受信パケットに対し優先度を与えるプライオリティキューイングをサポートする ことができます。 ここでは,プライオリティキューイングを行う場合と行わない場合のパケットの優 先順について説明します。 ■ プライオリティキューイングを行う場合 MB86977は優先機能を持たないLAN0,LAN1の転送要求より先に優先機能を持つイ ンタフェースDMZ,WANにサービスを回します。また,単一のインタフェースをみる 限りは,高優先のキューに積まれたパケットは必ず通常優先のキューに積まれたパ ケットより先に処理されます。 ただし,高優先キューの転送先が送信可能な状態にない場合(過剰コリジョンで パーティションモードに入っているなど) ,この宛先への転送は無視されます。 なお,優先機能を使用するためには以下二つの設定が必要となります。 ○ 優先制御テーブルで優先させたい受信パケットの設定を行う なお,ホストから送信するパケットの場合は,送信パケットのディスクリプ タで該当宛先のビットを高優先側に設定します。 ○ NAT/IPフォワーディングテーブルで該当コネクションの宛先インタフェース の高優先ビットを設定する 例えば,WAN⇔DMZ間のコネクションで下り方向(WAN→DMZ)のパケットを優先さ せたい場合は,WANの優先制御テーブルを設定し,NAT/IPフォワーディングテーブ ルで該当エントリの内部側宛先インタフェースを0x08,外部側宛先インタフェース を0x10に設定してください。 ■ プライオリティキューイングを行わない場合 すべてのパケットを均等にサービスしたい場合は,パケットをすべて通常優先に します。 140 第14章 14章 L2アドレスルックアップテーブル L2アドレスルックアップテーブル この章ではルックアップテーブルの概要,レジスタの内容およびアクセス動作につ いて説明します。 14.1 ルックアップテーブルの概要 14.2 ルックアップテーブルコントロールレジスタ(lkp_controlレジスタ -14'h2150) 14.3 ルックアップエントリ自動削除タイマレジスタ(lkp_timerレジスタ -14'h215c) 14.4 ルックアップテーブルエントリへのアクセス(lkp_regr[49:0]-14'h2180 ∼14'h230c) 141 第14章 L2アドレスルックアップテーブル 14.1 ルックアップテーブルの概要 MB86977はハードウェアによるルーティング以外にもL2のMACアドレスでスイッチ できる機構があります。MACアドレスの登録可能件数は50件までです。 ■ MACアドレスでの転送 MACアドレスでの転送(スイッチ)には次の2種類があります。 LAN0,LAN1およびLAN2(DMZインタフェースの設定による)といった内部 セグメント用インタフェース間の転送 内部セグメントからホストのMACアドレスを宛先とする転送 ■ ルックアップテーブルの設定 ルックアップテーブルにはこれらの内部セグメントから受信された送信元MACア ドレスからテーブルのエントリを自動生成する自動学習機能があります。件数が50 件を越えると,その後の新しいMACアドレスの自動学習ができなくなるので注意し てください。 表 14.1-1に,テーブルの設定イメージを示します。 表 14.1-2 ルックアップテーブルイメージ No. 0 1 MACアドレス SOHO_MAC_ADR BROAD_CAST_ADR dynamic/static static static 2 3 …… 49 MAC_A MAC_B MAC_Z インタフェース ホスト ホスト+内部セグ メント WAN入力比較 1 1 DMZ入力比較 1 1 Valid Bit 1 1 dynamic dynamic 1 0 1 0 1 0 dynamic 0 0 1 エントリ番号0には,"SOHO_MAC_ADR"をユーザが登録します。ユーザがこのエン トリ番号0に書いたアドレスは無条件に"static"となります。 SOHO_MAC_ADRとは,CPUとMB86977で構成されるSOHOルータ自身が持つMACアドレ スのことです。設定については後述します。なお,ルータのMACアドレスはこのア ドレスが唯一となります。基本的に各インタフェースごとに割り振ることを前提に しておりません。もし,各インタフェースに割り振る場合には別途通常エントリで アドレスの登録を行う必要があります。 エントリ番号1には,ブロードキャストアドレスである"BROAD_CAST_ADR"が staticとして予め登録されています。アドレス値は"0xffffffffffff"です。そのほ か,マルチキャストアドレスなども必要に応じて設定してください。 なお,DMZ,WANインタフェースから入力されたパケット転送に関して,ルックアッ プテーブルの宛先インタフェース情報は無視されます。このインタフェースにおい てルックアップテーブルの登録情報が意味を持つのはSOHO_MAC_ADRとブロード キャストアドレスです。また,DMZ入力比較ビットやWAN入力比較ビットが"1"に設 定されているアドレスも,DMZやWANインタフェースから入力されたパケットに対し て比較対象になります。DMZやWANインタフェースから入力されるマルチキャストア ドレスなどには,これらの入力比較ビットを設定することにより対処できます (SOHO_MAC_ADRとブロードキャストアドレスに関しては,DMZ入力比較ビットもWAN 入力比較ビットも"1"に固定されています) 。アドレスが一致した場合,宛先はホス トインタフェースブロックとなります。 受信されたパケットの送信元MACアドレスからテーブルのエントリを自動生成す る自動学習機能について,DMZ,WANインタフェースからの入力パケットについては 142 第14章 L2アドレスルックアップテーブル MACアドレステーブルへの自動学習を行いません。なお,自動生成されたエントリ のdynamic/staticビットは"dynamic"に,WAN入力比較ビットとDMZ入力比較ビット はともに"0"に自動的に設定されます。 以下,このL2テーブルの機能に関わるレジスタを説明します。 143 第14章 L2アドレスルックアップテーブル 14.2 ルックアップテーブルコントロールレジスタ (lkp_controlレ lkp_controlレジスタジスタ-14'h2150) 14'h2150) ここでは,ルックアップテーブルをコントロールするレジスタについて説明します。 ■ ルックアップテーブルコントロールレジスタ(lkp_controlレジスタ-14'h2150) 表 14.2-1に,ルックアップテーブルコントロールレジスタのフォーマットを示 します。 表 14.2-1 lkp_controlレジスタ –14'h2150のフォーマット ビット 3 2 ニーモニック DMZ_EN no match WAN フィールド名 DMZ enable no match from WAN 1 no match DMZ no match from DMZ 0 no match LAN Host no match from LAN, host 説明 "1"— DMZモードON,"0"— DMZモードOFF WANインタフェースからの入力パケットでアド レスマッチなし "1"— to Host,"0"— drop DMZインタフェースからの入力パケットでアド レスマッチなし "1"— to Host,"0"— drop LAN,ホストインタフェースからの入力パケット でアドレスマッチなし "1"— broadcast,"0"— drop ビット[2:0]は各該当インタフェースでパケットを受信した場合,宛先MACアド レスにマッチするエントリがL2テーブル内に見つからなかった際の設定です。 ビット[0]は"1"ならブロードキャスト,"0"ならパケットを廃棄します。 ブロードキャストは受信したインタフェース以外の内部セグメントインタ フェースとホストに向けて行われます。DMZ,WANインタフェースには転送されませ ん。また,DMZ,WANインタフェースから受信されたブロードキャストパケットにつ いてはホスト宛へ転送されます。 なお,DMZインタフェースはビット[3]の設定によりon/offの切替えが可能です。 "off"の場合,このインタフェースはスイッチで処理されるLAN2として動作します。 144 第14章 L2アドレスルックアップテーブル 14.3 ルックアップエントリ自動削除タイマレジスタ (lkp_timerレジスタ lkp_timerレジスタ14'h215c) レジスタ-14'h215c) ルックアップテーブルは,長期間に渡ってアクセスされていないルックアップテー ブル内のエントリを削除することができます。この削除のために必要な未アクセス時 間の設定を行うレジスタです。 ■ 削除時間の計算式 6ビットレジスタで,削除時間T(秒)の計算式はシステムクロック周波数F(Hz) に依存して,以下の計算式で表現されます。 {232x(3xV-1)}/F < T < (232x3xV)/F・・・V:レジスタ設定値 範囲で表現されるのはハードウェアのアーキテクチャによります。上記範囲内で ルックアップテーブル内の未アクセスエントリの自動削除が行われます。 設定に際しては下位6ビットを使用します。そのほかのビットはreservedです。 <注意事項> このレジスタへは0以外の意味のある値を必ず設定してください。 設定が行われない場合,自動学習されたエントリがすぐに削除されるため,正しいスイッチ動作 を行いません。 145 第14章 L2アドレスルックアップテーブル 14.4 ルックアップテーブルエントリへのアクセス (lkp_regr[ lkp_regr[49:0] 49:0]-14' 14'h2180∼ h2180∼14' 14'h230c) h230c) L2のアドレスルックアップテーブルは,レジスタに直接書き込むことでテーブル内 のエントリを追加,削除します。 ■ ルックアップテーブルエントリ 表 14.4-1に,エントリのフォーマット(すなわちレジスタのフォーマット)を 示します。 表 14.4-1 エントリのフォーマット ビット ニーモニック フィールド名 Part1 (偶数アドレス(14'h2180+ entryNo X 8 )) [31:0] MAC_upper32 MAC address upper 32 ビット Part2 (奇数アドレス(14'h2180+ entryNo X 8 + 4 )) [31:16] MAC_lower16 MAC address lower32 ビット [15:8] reserved [7:4] dest_info destination interface info 146 [3] wan_comparison WAN comparison [2] dmz_comparison DMZ comparison [1] dynamic dynamic or static [0] entry_valid entry valid 説明 MACアドレスの上位32ビット MACアドレスの下位16ビット ビット7: Host,ビット6: LAN2, ビット5: LAN1,ビット4: LAN0 "1"— LAN,Hostだけでなく,WANからの 入力パケットも比較対象にする "0"— LAN,Hostからの入力パケットだけ を比較対象とする "1"— LAN,Hostだけでなく,DMZからの 入力パケットも比較対象にする "0"— LAN,Hostからの入力パケットだけ を比較対象とする "1"— エントリの自動削除,最新インタ フェース情報への更新を許可する (dynamic mode) "0"— エントリの自動削除,最新インタ フェース情報への更新を禁止する (static mode) "1"— エントリが有効, "0"— エントリが無効 第14章 L2アドレスルックアップテーブル ■ ブロードキャスト用のエントリ設定 なお,特殊な設定として,エントリ番号0のルータ用エントリの設定と,エント リ番号1のブロードキャスト用のエントリ設定があります。 表 14.4-2にルータ用エントリ設定の,表 14.4-3にブロードキャスト用の lkp_regrの詳細情報を示します。 表 14.4-2 ルータ用エントリ(エントリ番号0)の場合 ビット ニーモニック Part1 (14'h2180) [31:0] MAC_upper32 Part2 (14'h2184) [31:16] MAC_lower16 [15:8] reserved [7:4] dest_info [3] wan_comparison フィールド名 [2] dmz_comparison DMZ comparison [1] [0] dynamic entry_valid dynamic or static entry valid 説明 MAC address upper 32 ビット MB86977のMACアドレスの上位32ビット MAC address lower32 ビット MB86977のMACアドレスの下位16ビット destination interface info WAN comparison 固定値:4'b1000(Host I/Fのみ1) 固定値:1'b1(LAN,Hostだけでなく,WAN からの入力パケットも比較対象にする) 固定値:1'b1(LAN,Hostだけでなく,DMZ からの入力パケットも比較対象にする) 固定値:1'b0(static mode) "1'b1"— エントリが有効, "1'b0"— エントリが無効 表 14.4-3 ブロードキャスト用エントリ(エントリ番号1)の場合 ビット ニーモニック Part1 (14'h2188) [31:0] MAC_upper32 Part2 (14'h218c) [31:16] MAC_lower16 [15:8] reserved [7:4] dest_info フィールド名 [3] wan_comparison WAN comparison [2] dmz_comparison DMZ comparison [1] [0] dynamic entry_valid dynamic or static entry valid 説明 MAC address upper 32 ビット 固定値:32'hffff_ffff MAC address lower32 ビット 固定値:16'hffff destination interface info 固定値:4'b1111(LAN mode) or 4'b1011 (DMZ mode) 固定値:1'b1(LAN,Hostだけでなく,WAN からの入力パケットも比較対象にする) 固定値:1'b1(LAN,Hostだけでなく,DMZ からの入力パケットも比較対象にする) 固定値:1'b0(static mode) 固定値:1'b1(常に有効) ブロードキャスト用エントリの設定はハードウェア的に固定されており,書込み はできません。読出しのみ可となります。 なお,宛先インタフェース情報(dest_info)はDMZのON/OFFにより切り替わりま す。 "ON"の場合,DMZインタフェースから入力されたブロードキャストパケットはホ スト宛へ転送されます。また,LAN0,LAN1から入力されたブロードキャストパケッ トはこのインタフェースに転送されません。 "OFF"の場合(LAN2の場合) ,自インタフェースであるLAN2以外の内部セグメント, すなわち,LAN0,LAN1とホスト宛に転送されます。LAN0,LAN1から入力されたブロー ドキャストパケットもこのインタフェースへ転送されます。 147 第14章 L2アドレスルックアップテーブル 148 付録 付録として,各種テーブルのエントリ/レジスタへのデータ登録時の留意事項,DMZ モードにおけるDMZインタフェースとLAN間のNAT実行時の注意事項およびDMZインタ フェースからWAN側,LAN側へ共通のマルチキャストパケット転送時の注意事項を記載 しています。 A 各種テーブルのエントリまたはレジスタへのデータ登録について B DMZモードにおいてDMZインタフェースとLAN0,LAN1間でNATを行うときの注 意 C DMZモードでDMZインタフェースからWAN側,LAN側へ共通のマルチキャスト パケットを転送する場合の注意 149 付録 A 各種テーブルのエントリまたはレジスタへのデータ登録に ついて 各種テーブルのエントリまたはレジスタへデータ登録を行うときに,以下の項目に ついてはホストで認知するバイトオーダの順番で登録します。 ・MACアドレス ・IPアドレス ・TCP/UDPポート番号 ・ICMPタイプ ・プロトコルタイプ ■ MACアドレス登録例 例えばL2テーブルの番号2のエントリに48'h123456789abcというMACアドレスを 登録する場合,アドレス14'h2190,14'h2194のレジスタにそれぞれMACアドレスの 上位32ビット,下位16ビットをライトしますが,アドレス14'h2190のレジスタには 32'h12345678 をラ イ ト し , アド レ ス14'h2194 のレ ジ スタ の 上 位16 ビッ ト に は 16'h9abcをライトするようにします。 付図 A-1に,MACアドレスの登録例を示します。 MAC L2 1 2 1 2 (48 3 4 5 6 3 4 5 6 No2( 14’h2190)(32 ) 7 8 7 8 9 a b c ) 9 a L2 b No2( c 14’h2194)(32 ) 付図 A-1 MACアドレスの登録例 L2テーブル以外はハードリセットが入っても0クリアはされません。0クリアが必 要な場合には,リセット直後にこれらのテーブルを0クリアしてください。 なお,テーブルのエントリを無効にするだけであれば,テーブルエントリ内の Vallidビットを"無効"に設定してください。 150 B DMZモードにおいてDMZインタフェースとLAN0,LAN1間でNATを行うときの注意 B DMZモードにおいて LAN1間で DMZモードにおいてDMZ モードにおいてDMZインタフェースと DMZインタフェースとLAN0 インタフェースとLAN0, LAN0, LAN1間でNAT 間でNAT を行うときの注意 DMZインタフェースにおいてNATを使用するには設定上の注意が必要です。 ■ DMZインタフェース間NAT使用時の注意 付図 B-1にDMZインタフェース間NATを示し,設定上の注意点について説明します。 MB86977 LAN0 IP = p.q.r.s. LAN1 IP = p.q.r.t. WAN p.q.r.0. w.x.y.z. DMZ IP = w.x.y.z. 付図 B-1 DMZインタフェース間NAT DMZインタフェースにおいてNATを使用するには設定上の注意が必要です。 NATを使用しない場合は,ディレクションセッティングテーブルでサブネット p.q.r.0.を設定します。これでFEFはこのインタフェースから受信されたパケット が内部セグメントへ向かうものか,外部セグメントへ向かうものかの判断ができる ようになります。 しかし,DMZの公開サーバなどにグローバルアドレスを割り振ってNATを使用して いるような場合,前述のようなしくみで内部セグメント,外部セグメントを認識す ることはできません。そこで,ディレクションセッティングテーブルにルーターな どのNAT用グローバルアドレスをサブネットマスクなしで設定します(付図 B-1中" 設定"と記載されている部分) 。 こうすることで,NATモードを使用しているため内部セグメントへの宛先がグ ローバルアドレスとなっているパケットに対しても内部セグメントへの転送が可 能になります。 151 付録 C DMZモードで DMZモードでDMZ モードでDMZインタフェースから DMZインタフェースからWAN インタフェースからWAN側, WAN側,LAN 側,LAN側へ共通の LAN側へ共通の マルチキャストパケットを転送する場合の注意 概念としては「B DMZモードにおいてDMZインタフェースとLAN0,LAN1間でNATを行 うときの注意」の場合と同様です。 ■ DMZモードでDMZインタフェースからWAN側,LAN側へ共通のマルチキャストパケットを転送す る際の注意 付図 C-1にDMZモードでDMZインタフェースからWAN側,LAN側への共通のマルチ キャストパケット転送を示し,その際の注意点について説明します。 MB86977 LAN0 IP = p.q.r.s. LAN1 IP = m.l.n.o. NAT/IPF p.q.r.0. EXT IP:INT IP:EXT DST IN:INT DST IN: p.q.u.v.:m.l.n.o: DMZ. :LAN1,WAN: m.l.n.o. WAN DMZ IP = p.q.u.v. IP = m.l.n.o. 付図 C-1 DMZモードでDMZインタフェースからWAN側,LAN側への共通のマルチキャストパケット転 送 とりあえず内部セグメントの転送であると見せかけるため,ディレクションセッ ティングテーブルにマルチキャストアドレスそのもの(m.l.n.o.)を登録します。 これだけでは内部転送だけ行って終わってしまいますが,NAT/IPFテーブルの宛先 インタフェースの登録において内部宛先インタフェースにWANの宛先も指定してお きます。こうすることで,マルチキャストアドレスはLANのセグメントにもWANのセ グメントにも転送されます。 なお,WAN側からマルチキャストパケットを受け入れるのはNAT/IPFで別のエント リを追加する必要があります。このことは,マルチキャスト転送全般について該当 します。 具体的にはWAN側からの受信パケットに対し宛先IPアドレスがマルチキャスト, 送信元が外部のIPアドレスに対応するNAT/IPFテーブルの登録を行います。 152 索引 <アルファベット> A ACK_FG_EN(ACK/Don'tCare)フィールド ACK_FG_EN(ACK/Don'tCare)フィールド .... 73 Flowlabelフィールド Flowlabelフィールド .................. 100 FPT-208P-M06 外形寸法図(FPT-208P-M06) ............. 9 fragment packet input/outputフィールド fragment packet input/outputフィールド ................................. 79 H D DMZインタフェース DMZインタフェース間NAT使用時の注意 ................................ 151 DMZモードでDMZインタフェースからWAN側,LAN 側へ共通のマルチキャストパケットを転 送する際の注意 .................. 152 DMZモード DMZモードでDMZインタフェースからWAN側,LAN 側へ共通のマルチキャストパケットを転 送する際の注意 .................. 152 do_frag_ipfレジスタ do_frag_ipfレジスタの設定 ............. 45 DST IPフィールド DST IPフィールド ...................... 72 DST LWR PORTフィールド DST LWR PORTフィールド ................ 72 DST UPR PORTフィールド DST UPR PORTフィールド ................ 72 F filter_logレジスタ filter_logレジスタ(14'h2400∼14'h25fc) ................................. 87 fl_cnt_intenable fl_cnt_intenable[3:0](14'h20d4∼14'h20e0) ................................. 83 fl_cnt_status fl_cnt_status[3:0] ( 14'h20e4 ∼14'h20f0 ) ................................. 85 fl_counter fl_counter[63:0]*2 ( 14'h2600 ∼14'h27fc ) ................................. 82 fl_log_buf_lockレジスタ fl_log_buf_lockレジスタ(14'h20d0) ... 88 fl_log_cntrlレジスタ fl_log_cntrlレジスタ(14'h20c8) ...... 88 fl_log_statusレジスタ fl_log_status[1:0]レジスタ(14'h20cc) ................................. 88 host_controlレジスタ host_controlレジスタ(14'h2040) ..... 111 host_intenableレジスタ host_intenableレジスタ(14'h2048) ................................ 111 host_rx_pckt_inbufレジスタ host_rx_pckt_inbufレジスタ(14'h205c) ................................ 112 host_rx_readendレジスタ host_rx_readendレジスタ(14'h2058) ................................ 112 host_statusレジスタ host_statusレジスタ(14'h2044) ...... 111 host_tx_cpu_wr_strtレジスタ host_tx_cpu_wr_strt レ ジ ス タ ( 14'h204c ) ................................ 112 host_tx_strtenレジスタ host_tx_strtenレジスタ(14'h2054) ................................ 112 host_tx_sw_rd_strtレジスタ host_tx_sw_rd_strtレジスタ(14'h2050) ................................ 112 I Interface_selectフィールド Interface_selectフィールド ............ 73 IPGタイマレジスタ IPGタイマレジスタ(mac_ipg_timerレジスタ -14'h2030) ...................... 123 IPアドレスフィールド IPアドレスフィールド ......... 34, 56, 100 IPフォワーディング IPフォワーディング時の参照 ............ 38 IPフォワーディングの処理 .............. 30 J jam信号 ポーズパケット送信,jam 信号送信(Back Pressure)フローコントロール .... 130 153 索引 L L3/L4フィルタテーブル L3/L4フィルタテーブルの構成 ........... 71 L4_PTYPESEL(TCP/UDP/ICMP/Don'tCare)フィールド L4_PTYPESEL(TCP/UDP/ICMP/Don'tCare)フィー ルド ............................. 73 Log_enフィールド Log_enフィールド ...................... 74 M M_range(Don'tCare/Mask/Range)フィールド M_range(Don'tCare/Mask/Range)フィールド ................................. 71 MACアドレス MACアドレス登録例 .................... 150 MACアドレス MACアドレスでの転送 .................. 142 MACアドレスフィールド MACアドレスフィールド ................. 35 MAC機能 MAC機能の概要 ........................ 125 MACコントロールレジスタ MACコントロールレジスタ(mac_controlレジス タ-14'h2000) .................... 121 MACブロック MACブロックの概要 .................... 120 MACブロックの受信側機能 .............. 128 MDCレジスタ MDCレジスタの単位 .................... 138 MIIインタフェース MIIインタフェースの端子機能 ........... 14 MIIレジスタ PHYデバイスMIIレジスタのライト ....... 136 PHYデバイスMIIレジスタのリード ....... 136 Min/Maxパケット長設定レジスタ Min/Maxパケット長設定レジスタ (mac_min_lengthレジスタ /mac_max_lengthレジスタ -14'h2028,14'h202c) ............ 124 N NAT DMZインタフェース間NAT使用時の注意 ................................ 151 NAT時の処理 ........................... 31 NAT FIN/RSTステータスレジスタ NAT FIN/RSTステータスレジスタの動作 ... 42 NAT/IPF match_0レジスタ NAT/IPF match_0レジスタ ............... 40 NAT/IPF match_1レジスタ NAT/IPF match_1レジスタ ............... 40 NAT/IPF match_2レジスタ NAT/IPF match_2レジスタ ............... 41 154 NAT/IPF match_3レジスタ NAT/IPF match_3レジスタ ............... 41 NAT/IPフォワーディング NAT/IPフォワーディングのステータスレジス タについて ....................... 37 NAT/IPフォワーディングの動作について ................................. 37 NAT_FIN/RST_0レジスタ NAT_FIN/RST_0レジスタ ................. 42 NAT_FIN/RST_1レジスタ NAT_FIN/RST_1レジスタ ................. 43 NAT_FIN/RST_2レジスタ NAT_FIN/RST_2レジスタ ................. 43 NAT_FIN/RST_3レジスタ NAT_FIN/RST_3レジスタ ................. 44 NAT/IPフォワーディング FEF NAT/IPフォワーディングの概要 ...... 30 NAT/IPフォワーディング用テーブル ...... 32 NAT/IPフォワーディングテーブル NAT/IPフォワーディングテーブルの設定説明 ................................. 64 NAT/IPフォワーディングの転送 NAT/IPフォワーディングの転送の概要 .... 31 NAT動作 NAT動作時の参照 ....................... 39 no match in L3/L4 table input/outputフィールド no match in L3/L4 table input/outputフィー ルド ............................. 79 no match in protocol type table input/output フィールド no match in protocol type table input/output フィールド ....................... 79 P P_Interface_selectフィールド P_Interface_selectフィールド .......... 75 P_Pass_Dropフィールド P_Pass_Dropフィールド ................. 76 P_TYPEフィールド P_TYPEフィールド ...................... 75 P_Validフィールド P_Validフィールド ..................... 76 Pass_Dropフィールド Pass_Dropフィールド ................... 73 PHYデバイス PHYデバイスMIIレジスタのライト ....... 136 PHYデバイスMIIレジスタのリード ....... 136 Plog_enフィールド Plog_enフィールド ..................... 76 PPPoE discovery input/output フィールド PPPoE discovery input/output フィールド ................................. 79 PPPoE session wIPv4 drop input/outputフィールド PPPoE session wIPv4 drop input/outputフィー ルド ............................. 79 索引 PPPoE session wIPv4 pass input/outputフィールド PPPoE session wIPv4 pass input/outputフィー ルド ............................. 80 PPPoE session wIPv6 drop input/outputフィールド PPPoE session wIPv6 drop input/outputフィー ルド ............................. 80 PPPoE session wIPv6 pass input/outputフィールド PPPoE session wIPv6 pass input/outputフィー ルド ............................. 80 PPPoE session woIP input/outputフィールド PPPoE session woIP input/outputフィールド ................................. 80 PPPoEヘッダフィールド PPPoEヘッダフィールド ................. 35 PPPoEヘッダレジスタ PPPoEヘッダレジスタの設定 ............. 65 PPPoEレジスタ PPPoEレジスタの詳細 ................... 65 R RMIIインタフェース RMIIインタフェース(4ポート)の端子機能 ................................. 13 S smi_cmd_stレジスタ smi_cmd_stレジスタ(14'h2094) ....... 132 smi_cmdレジスタ smi_cmdレジスタ(14'h208c) .......... 132 smi_controlレジスタ smi_controlレジスタ(14'h2080) ...... 133 smi_dataレジスタ smi_dataレジスタ(14'h2090) ......... 132 smi_intenableレジスタ smi_intenableレジスタ(14'h2088) .... 135 smi_phy_addレジスタ smi_phy_addレジスタ(14'h2098) ...... 132 smi_pollintvlレジスタ smi_pollintvlレジスタ(14'h20a0) .... 132 smi_statusレジスタ smi_statusレジスタ(14'h2084) ....... 134 SMIインタフェース SMIインタフェースの端子機能 ........... 15 SRAM ホスト(SRAM)インタフェースの端子機能 ................................. 12 SRC IPフィールド SRC IPフィールド ...................... 72 SRC LWR PORTフィールド SRC LWR PORTフィールド ................ 72 SRC UPR PORTフィールド SRC UPR PORTフィールド ................ 72 T table for filter access priorityレジスタ table for filter access priorityレジスタ (14'h2358)の概要 ................. 95 table for filter access priorityレジスタ (14'h2358)の設定 ................. 95 table for nat access priorityレジスタ table for nat access priorityレジスタの概 要............................... 52 table for nat access priorityレジスタの設 定............................... 52 tbl_direct_cmdレジスタ tbl_direct_cmdレジスタ ................ 58 tbl_direct_dataレジスタ tbl_direct_dataレジスタ ............... 58 tbl_direct_statusレジスタ tbl_direct_statusレジスタ ............. 59 tbl_direct_valid_ipverレジスタ tbl_direct_valid_ipverレジスタ ........ 59 tbl_filter_cmdレジスタ tbl_filter_cmdレジスタ(14'h20f4) .... 91 tbl_filter_data tbl_filter_data(14'h20f8) ........... 92 tbl_filter_status tbl_filter_status(14'h20fc) ......... 94 tbl_nat_cmdレジスタ tbl_nat_cmdレジスタ ................... 48 tbl_nat_dataレジスタ tbl_nat_dataレジスタ .................. 49 tbl_nat_statusレジスタ tbl_nat_statusレジスタ ................ 50 tbl_qos_cmdレジスタ tbl_qos_cmd(14'2110) ............... 103 tbl_qos_dataレジスタ tbl_qos_data(14'h2114) ............. 104 tbl_qos_statusレジスタ tbl_qos_status(14'h2118) ........... 105 TOS/Traffic classフィールド TOS/Traffic classフィールド .......... 100 ToS値フィールド ToS値フィールド ....................... 36 ToS付替えフィールド ToS付替えフィールド ................... 35 ttl_0_buffer ttl_0_buffer[15:0] ( 14'h2880 ∼14'h28bf ) ................................. 53 ttl_0_buffer_full ttl_0_buffer_full(14'h214c) ......... 53 tunneling valid input/outputフィールド tunneling valid input/outputフィールド ................................. 79 V V4_V6フィールド V4_V6フィールド ....................... 71 155 索引 v4トンネルヘッダフィールド v4トンネルヘッダフィールド ............ 35 v4トンネルヘッダレジスタ v4トンネルヘッダレジスタの詳細 ........ 66 v4トンネルヘッダレジスタの設定 ........ 66 Validフィールド Validフィールド ....................... 74 <五十音> あ アクセス方法 アクセス方法の説明 ................ 50, 94 宛先インタフェースフィールド 宛先インタフェースフィールド .......... 35 アドレスマップ MB86977のアドレスマップ ............... 18 い インタフェース DMZインタフェース間NAT使用時の注意 ................................ 151 DMZモードでDMZインタフェースからWAN側,LAN 側へ共通のマルチキャストパケットを転 送する際の注意 .................. 152 MIIインタフェースの端子機能 ........... 14 RMIIインタフェース(4ポート)の端子機能 ................................. 13 SMIインタフェースの端子機能 ........... 15 ホスト(SRAM)インタフェースの端子機能 ................................. 12 インタフェース 宛先インタフェースフィールド .......... 35 え エントリ テーブル内のエントリの読出し ...... 47, 90 ブロードキャスト用のエントリ設定 ..... 147 か 外形寸法図 外形寸法図(FPT-208P-M06) ............. 9 概要 NAT/IPフォワーディングの概要 .......... 30 NAT/IPフォワーディングの転送の概要 .... 31 書込み テーブルへの書込み(登録/削除) ....... 46 管理ブロック 管理ブロックの初期化 .................. 24 く クリア ステータスレジスタのクリア ............ 27 156 索引 こ コントロールビットフィールド コントロールビットフィールド ...... 56, 99 コントロールフィールド コントロールフィールド ................ 33 SMIインタフェースの端子機能 ........... 15 その他の端子機能 ...................... 16 ホスト(SRAM)インタフェースの端子機能 ................................. 12 端子配列 MB86977の端子配列 ...................... 7 さ ち 削除時間 削除時間の計算式 ..................... 145 注意 DMZインタフェース間NAT使用時の注意 ................................ 151 DMZモードでDMZインタフェースからWAN側,LAN 側へ共通のマルチキャストパケットを転 送する際の注意 .................. 152 し シーケンス 初期化シーケンス ...................... 24 割込みシーケンスの動作概要 ............ 25 受信動作 受信動作中の割込み要因 ............... 129 受信パケット 受信パケットの転送手順 ............... 113 初期化シーケンス 初期化シーケンス ...................... 24 処理 IPフォワーディングの処理 .............. 30 NAT時の処理 ........................... 31 処理概要 MB86977の処理概要 ...................... 2 す スイッチブロック スイッチブロックの優先キューについて ................................. 98 ステータスレジスタ NAT/IPフォワーディングのステータスレジス タについて ....................... 37 ステータスレジスタ(mac_status[3:0]レジス タ-14'h2004∼14'h2010) ......... 122 ステータスレジスタのクリア ............ 27 そ 送信動作中 送信動作中の割込み要因 ............... 127 送信パケット 送信パケットの転送手順 ............... 115 た 端子機能 MIIインタフェースの端子機能 ........... 14 RMIIインタフェース(4ポート)の端子機能 ................................. 13 て ディレクションセッティングテーブル ディレクションセッティングテーブルの内容 ................................. 56 テーブル テーブル内のエントリの読出し ...... 47, 90 テーブルへの書込み(登録/削除) ....... 46 テーブルへの書込み(登録/削除) ....... 90 テーブルアクセス テーブルアクセスの方法 ........... 57, 102 と 動作概要 割込みシーケンスの動作概要 ............ 25 特長 MB86977の特長 .......................... 2 ふ フィールド ACK_FG_EN(ACK/Don'tCare)フィールド .... 73 DST IPフィールド ...................... 72 DST LWR PORTフィールド ................ 72 Flowlabelフィールド .................. 100 fragment packet input/outputフィールド ................................. 79 Interface_selectフィールド ............ 73 IPアドレスフィールド ......... 34, 56, 100 L4_PTYPESEL(TCP/UDP/ICMP/Don'tCare) フィールド ....................... 73 Log_enフィールド ...................... 74 M_range(Don'tCare/Mask/Range)フィールド ................................. 71 MACアドレスフィールド ................. 35 no match in L3/L4 table input/outputフィー ルド ............................. 79 157 索引 no match in protocol type table input/output フィールド ....................... 79 P_Interface_selectフィールド .......... 75 P_Pass_Dropフィールド ................. 76 P_TYPEフィールド ...................... 75 P_Validフィールド ..................... 76 Pass_Dropフィールド ................... 73 Plog_enフィールド ..................... 76 PPPoE discovery input/output フィールド 79 PPPoE session wIPv4 drop input/outputフィー ルド ............................. 79 PPPoE session wIPv4 pass input/outputフィー ルド ............................. 80 PPPoE session wIPv6 drop input/outputフィー ルド ............................. 80 PPPoE session wIPv6 pass input/outputフィー ルド ............................. 80 PPPoE session woIP input/outputフィールド ................................. 80 SRC IPフィールド ...................... 72 SRC LWR PORTフィールド ................ 72 SRC UPR PORTフィールド ................ 72 TOS/Traffic classフィールド .......... 100 ToS値フィールド ....................... 36 ToS付替えフィールド ................... 35 tunneling valid input/outputフィールド ................................. 79 V4_V6フィールド ....................... 71 v4トンネルヘッダフィールド ............ 35 Validフィールド ....................... 74 宛先インタフェースフィールド .......... 35 コントロールビットフィールド ...... 56, 99 コントロールフィールド ................ 33 ポート番号フィールド ............. 34, 100 フィルタ フィルタの概要 ........................ 70 フィルタの動作 ........................ 70 フィルタカウントレジスタ フィルタカウントレジスタへのアクセス方法 ................................. 82 フィルタサブネットレジスタ フィルタサブネットレジスタ(fl_subnetレジ スタ-14'h20c4)の設定 ............ 96 フィルタモード設定レジスタ フィルタモード設定レジスタの構成 ...... 77 フィルタログ機能 フィルタログ機能の動作 ................ 81 プライオリティーキューイング プライオリティーキューイングを行う場合 ................................ 140 プライオリティーキューイングを行わない場 合 .............................. 140 フレーム受信 フレーム受信の動作 ................... 128 フレーム送信 フレーム送信の動作 ................... 126 158 フローコントロール フローコントロールの種類 ............. 130 ポーズパケット受信-送信待ちフローコント ロール .......................... 130 ポーズパケット送信,jam 信号送信(Back Pressure)フローコントロール ................................ 130 フローコントロール用ポーズタイマレジスタ フローコントロール用ポーズタイマレジスタ (mac_pause_timerレジスタ-14'h2024) ................................ 124 ブロードキャスト ブロードキャスト用のエントリ設定 ..... 147 ブロック MB86977のブロックの説明 ................ 6 ブロックダイアグラム MB86977のブロックダイアグラム .......... 5 プロトコルタイプテーブル プロトコルタイプテーブルの構成 ........ 75 へ ヘッダ処理機構 ヘッダ処理機構の動作 .................. 62 ヘッダ処理レジスタ ヘッダ処理レジスタの概要 .............. 63 ヘッダフィールド PPPoEヘッダフィールド ................. 35 ほ ポーズパケット ポーズパケット受信-送信待ちフローコント ロール .......................... 130 ポーズパケット送信,jam 信号送信(Back Pressure)フローコントロール ................................ 130 ポート番号フィールド ポート番号フィールド ............. 34, 100 ポーリング ポーリング ........................... 137 ホスト(SRAM)インタフェース ホスト(SRAM)インタフェースの端子機能 ................................. 12 ホストインタフェース ホストインタフェースの機能 ........... 108 ホストインタフェースブロックの概要 ................................ 109 ホストステータスレジスタ ホストステータスレジスタ .............. 26 索引 ま マルチキャストパケット DMZモードでDMZインタフェースからWAN側,LAN 側へ共通のマルチキャストパケットを転 送する際の注意 .................. 152 め メモリマップ メモリマップの詳細 ................... 110 ゆ 優先キュー スイッチブロックの優先キューについて ................................. 98 優先制御 優先制御の動作 ........................ 98 優先制御テーブル 優先制御テーブルの設定 ................ 99 優先制御テーブルへのアクセス ......... 101 よ 読出し テーブル内のエントリの読出し .......... 47 る ループバックプロセス ループバックプロセスの概要 ........... 117 ルックアップテーブル ルックアップテーブルの設定 ........... 142 ルックアップテーブルエントリ ルックアップテーブルエントリ ......... 146 ルックアップテーブルコントロールレジスタ ルックアップテーブルコントロールレジスタ (lkp_controlレジスタ-14'h2150) ................................ 144 れ レジスタ do_frag_ipfレジスタの設定 ............. 45 filter_logレジスタ(14'h2400∼14'h25fc) ................................. 87 fl_log_buf_lockレジスタ(14'h20d0) ................................. 88 fl_log_cntrlレジスタ(14'h20c8) ...... 88 fl_log_status[1:0]レジスタ(14'h20cc) ................................. 88 host_controlレジスタ(14'h2040) ..... 111 host_intenableレジスタ(14'h2048) ................................ 111 host_rx_pckt_inbufレジスタ(14'h205c) ................................ 112 host_rx_readendレジスタ(14'h2058) ................................ 112 host_statusレジスタ(14'h2044) ...... 111 host_tx_cpu_wr_strt レ ジ ス タ ( 14'h204c ) ................................ 112 host_tx_strtenレジスタ(14'h2054) ................................ 112 host_tx_sw_rd_strtレジスタ(14'h2050) ................................ 112 IPGタイマレジスタ(mac_ipg_timerレジスタ -14'h2030) ...................... 123 MACコントロールレジスタ(mac_controlレジス タ-14'h2000) .................... 121 MDCレジスタの単位 .................... 138 Min/Maxパケット長設定レジスタ (mac_min_lengthレジスタ /mac_max_lengthレジスタ -14'h2028,14'h202c) ............ 124 NAT FIN/RSTステータスレジスタの動作 ................................. 42 NAT/IPF match_0レジスタ ............... 40 NAT/IPF match_1レジスタ ............... 40 NAT/IPF match_2レジスタ ............... 41 NAT/IPF match_3レジスタ ............... 41 NAT_FIN/RST_0レジスタ ................. 42 NAT_FIN/RST_1レジスタ ................. 43 NAT_FIN/RST_2レジスタ ................. 43 NAT_FIN/RST_3レジスタ ................. 44 PPPoEヘッダレジスタの設定 ............. 65 PPPoEレジスタの詳細 ................... 65 smi_cmd_stレジスタ(14'h2094) ....... 132 smi_cmdレジスタ(14'h208c) .......... 132 smi_controlレジスタ(14'h2080) ...... 133 smi_dataレジスタ(14'h2090) ......... 132 smi_intenableレジスタ(14'h2088) ................................ 135 smi_phy_addレジスタ(14'h2098) ...... 132 smi_pollintvlレジスタ(14'h20a0) ................................ 132 smi_statusレジスタ(14'h2084) ....... 134 table for filter access priorityレジスタ (14'h2358)の概要 ................. 95 table for nat access priorityレジスタの概 要............................... 52 tbl_direct_cmdレジスタ ................ 58 tbl_direct_dataレジスタ ............... 58 tbl_direct_statusレジスタ ............. 59 tbl_direct_valid_ipverレジスタ ........ 59 tbl_filter_cmdレジスタ(14'h20f4) ................................. 91 tbl_nat_cmdレジスタ ................... 48 tbl_nat_dataレジスタ .................. 49 tbl_nat_statusレジスタ ................ 50 159 索引 tbl_qos_cmd(14'2110) ............... 103 tbl_qos_data(14'h2114) ............. 104 tbl_qos_status(14'h2118) ........... 105 v4トンネルヘッダレジスタの設定 ........ 66 ステータスレジスタ(mac_status[3:0]レジス タ-14'h2004∼14'h2010) ......... 122 ステータスレジスタのクリア ............ 27 フィルタカウントレジスタへのアクセス方法 ................................. 82 フィルタサブネットレジスタ(fl_subnetレジ スタ-14'h20c4)の設定 ............ 96 フィルタモード設定レジスタの構成 ...... 77 フローコントロール用ポーズタイマレジスタ (mac_pause_timerレジスタ-14'h2024) ................................ 124 ヘッダ処理レジスタの概要 .............. 63 ホストステータスレジスタ .............. 26 ルックアップテーブルコントロールレジスタ (lkp_controlレジスタ-14'h2150) ................................ 144 割込みイネーブルレジスタ .............. 27 割込みイネーブルレジスタ (mac_intenable[3:0]レジスタ -14'h2014∼14'h2020) ........... 123 160 レジスタマップ MB86977のレジスタマップ ............... 19 ろ ログ ログの取得 ............................ 89 わ 割込み 受信動作中の割込み要因 ............... 129 送信動作中の割込み要因 ............... 127 割込みイネーブルレジスタ 割込みイネーブルレジスタ .............. 27 割込みイネーブルレジスタ (mac_intenable[3:0]レジスタ -14'h2014∼14'h2020) ........... 123 割込みシーケンス 割込みシーケンスの動作概要 ............ 25 AM15-10712-1 富士通半導体デバイス・CONTROLLER MANUAL 富士通半導体デバイス ASSP 通信制御 IPフォワーディングエンジン MB86977 ユーザーズマニュアル 2003年6月 初版発行 発 行 富士通株式会社 編 集 マーケティング統括部 電子デバイス営業本部 営業推進部