1.1MB

本ドキュメントは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月 初版発行
発 行
富士通株式会社
編 集
マーケティング統括部
電子デバイス営業本部
営業推進部