この製品のドキュメントセットは、偏向のない言語を使用するように配慮されています。このドキュメントセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブ ランゲージの取り組みの詳細は、こちらをご覧ください。
シスコは世界中のユーザにそれぞれの言語でサポート コンテンツを提供するために、機械と人による翻訳を組み合わせて、本ドキュメントを翻訳しています。ただし、最高度の機械翻訳であっても、専門家による翻訳のような正確性は確保されません。シスコは、これら翻訳の正確性について法的責任を負いません。原典である英語版(リンクからアクセス可能)もあわせて参照することを推奨します。
このドキュメントでは、Resilient Ethernet Protocol(REP)の概要について説明します。
注:プラットフォームサポートおよびシスコソフトウェアイメージのサポートに関する情報を検索するには、Cisco Feature Navigatorを使用してください。
REP は、一部の特定のレイヤ 2 ネットワーク設計に含まれているスパニング ツリー プロトコル(STP)の代用として使用されるプロトコルです。最新の STP 仕様は 802.1Q-2005 で定義されたマルチ スパニング ツリー(MST)です。MST の代替品が必要なユーザには次のような懸念があるはずです。
ここで、REP のメリットの一部を示します。
ここで、REP の制限の一部を示します。
REP では、最小ネットワーク構成要素としてセグメントが使用されます。セグメントは、チェーンでつながれたポートの集合です。ブリッジ上の特定のセグメントに割り当てることができるポートは 2 つだけであり、それぞれのセグメント ポートに設定できる外部ネイバーは最大で 1 つです。セグメントの定義はすべてユーザ設定によって実現されます。セグメントは、ユーザによっても決定される 2 つのエッジ ポートで終端されます。セグメントに対して動作する REP プロトコルは、可能な限り最小限であり、次のプロパティだけを保証します。
画像 1.単純な構成要素としてのセグメント
図1は、4つのブリッジにまたがる6つのポートを含むセグメントの例を示しています。図の中で、設定されたエッジ ポート E1 と E2 は三角形で表現されており、論理的にブロックされたポートはバーで表現されています。すべてのポートが動作可能な場合は、左側の図のように、1 つのポートがブロックされます。ネットワークで障害が発生した場合は、右側の図のように、論理的にブロックされたポートがフォワーディング ステートに戻ります。
図1に示すように、セグメントが開いているときは、2つのエッジポート間の接続は提供されません。REP エッジ スイッチ間の接続は、セグメントの外側に存在する(STP 経由)ものと見なされます。オプションの設定では、REP セグメントで障害が発生すると、コンバージェンスを高速化するために STP トポロジ変更通知(TCN)が生成されます。
画像 2.セグメントはリングにラップ可能
図2に示すように、2つのエッジポートが同じスイッチにある場合、セグメントはリングにラップされます。この設定では、セグメント経由でエッジ ポート間が接続されます。実際には、この設定によって、セグメント内の 2 つのスイッチ間で冗長接続を構築することができます。
図1と図2に示すように、開いたセグメントと閉じたセグメントの組み合わせを使用すると、さまざまな異なるネットワーク設計を実現できます。
ポートが REP 用に設定されると、次の状態に遷移します。
ポートは次のような状況下では動作可能になりません。
デフォルトで、REP は、ネイティブ VLAN(タグなし)上のブリッジ プロトコル データ ユニット(BPDU)クラスの MAC アドレスに hello パケットを送信するため、その機能を実行していないデバイスではドロップされます。各リンクステータスレイヤ(LSL)PDUには、送信されたPDUのシーケンス番号と、最後に受信されたPDUのリモートシーケンス番号の両方が含まれます。これにより、ポート間の信頼できる送信が保証されます。各ネイバーは ACK を受信するまで、送信した各 PDU のコピーを保持します。ACK が受信されなかった場合は、タイマーが切れてから再送信します。
実際の LSL PDU には以下が含まれます。
LSL パケットは、hello インターバルごと、または、上位レイヤ プロトコルから要求された場合に送信されます。LSL PDU が構築されると、最初に、SegmentID や LocalPortID などの独自のフィールドに入力されます。次に、Block Port Advertisement(BPA)や End Port Advertisement(EPA)などの上位レイヤ プロトコル キューを調査して、追加のデータをキューに入れる必要があるかどうかを確認します。
HFL は、リンク障害後に高速コンバージェンスを実現する REP モジュールです。LSLのようにBPDUのMACアドレスにPDUを送信するのではなく、REP管理VLAN上の特別なMACアドレス(0100.0ccc.ccce)にマルチキャストPDUを送信します。このように、セグメント内のすべてのスイッチにハードウェアでフラッディングされます。
HFL パケット形式は次のように単純です。
この時点で、HFL 経由で送信される唯一の TLV は BPA です。
BPA は、ブロックする VLAN をアドバタイズするためにポート プライオリティと一緒に AP によって送信されます。これにより、リンク障害がセグメントに通知され、VLANのセグメントごとに1つのAPのみが存在するようになります。この実現は容易ではありません。
安定したトポロジでは、AP 選択が簡単です。オンラインになったポートがすべての VLAN 用の AP(ブロッキング)として起動します。そのポートがプライオリティの高い他のポートから BPA を受信したときに、それが安全にブロック解除できることを認識します。セグメント上のポートで障害が発生した場合は、このプロセスが他のポートをブロック解除するために使用されます。障害が発生したすべてのポートでは、現在のAPよりも高いポートプライオリティ(プライオリティ内の障害ビットを含む)が生成され、現在のAPのブロックが解除されます。
ただし、このリンクがアップに戻ったときに問題が発生します。この場合は、プライオリティに関する障害発生ビットがクリアされ、プライオリティが標準に戻ります。このポートが新しいプライオリティを認識している場合でも、セグメントの他の部分にこのポートからの古いBPA情報がある場合があります。次の図に、このシナリオを示します。
画像 3.セグメントを開く古い情報
このシナリオの開始時に、ポート7はブロッキング状態で、そのプライオリティを7としてアドバタイズします。次に、ポート 11 と 12 の間のリンクが壊れて、ポート 12 がプライオリティ 12 でブロックしていることを示す BPA を送信します。これらのブロッキングポートが他のポートのBPAを受信する前に、ポート12がアップに戻り、動作可能になります。その直後に、ポート 12 が、プライオリティ 7 のポート 7 の BPA を受信するため、それがブロック解除します。その後で、ポート 7 がプライオリティ 12 のポート 12 から古い BPA を取得するため、それがブロック解除します。これがループを引き起こします。この競合状態は、BPA がキーを使用しているためです。
各ポートは、次の情報を使用してポートプライオリティを計算します。
図 4.ポートの優先度
これで、障害が発生するポートがいつもセグメント上で選択された AP である理由が明らかになりました。ポートが障害発生から代替に遷移すると、そのポートはポート ID とランダム数値に基づいて一意のキーを生成し、それをポート ID と一緒にアドバタイズします。AP は、ブロックされたポートからローカル キーを含むメッセージを受信した場合にのみブロック解除します。このメカニズムによって、前述した競合状態のシナリオが回避されます。ここで、ポートがアップまたはダウンしたときに何が起きるかを図で示します。
図 5.リンク アップ時の BPA の動作
図 6.リンク障害後の BPA の動作
セグメントでリンク障害が発生すると、BPA が HFL 経由で残りのセグメントにフラッディングされます。これが十分な効果を発揮するためには、すべてのセグメント ポートで管理 VLAN を伝送し、セグメント外部のエッジ ポート間でも伝送する必要があります。 HFLでは信頼性の高い転送を保証できないため、BPAもこの情報をLSL経由で送信します。HFL 配信に問題がある場合は、LSL が再コンバージェンスの発生を確認します。
エンド ポートはエッジ ポートと障害発生ポートのどちらかです。セグメントがエッジ ポートによって両側で終端されている場合は、完全であると見なされ、VLAN ロードバランシングが使用できます。セグメントが障害発生ポートによって終端されている場合は、すべてのポートが開いているため、ロードバランシングは使用できません。
エンド ポートは LSL 経由でリレーされる EPA を定期的に送信します。これらのメッセージの機能は次のとおりです。
各エンド ポートは LSL 経由でそのポート自身に関する情報を含む EPA を定期的に送信します。各中間ポートは独自の情報を追加し、EPAを中継します。これらのメッセージは双方向でやり取りされるため、各 REP 参加スイッチが REP セグメント全体を把握しています。EPA に含まれる情報は次のとおりです。
各エッジ ポートは、そのポートのエッジ プライオリティと特殊なキー(BPA キーとは無関係)を含む特殊な選択 EPA メッセージを送信します。これを受信する最初のポートが、このメッセージ内にそのポート自身のポート プライオリティを付加して、次のスイッチにリレーします。パス上の各スイッチは、自身のポートプライオリティをEPAのポートプライオリティと比較し、プライオリティの方が高い場合は自身のポートプライオリティに置き換えます。エッジ ポートが EPA を受信すると、エッジ プライオリティとそのポート自身のプライオリティを比較します。受信したEPAのプライオリティの方が高い場合、エッジポートは次のEPAメッセージをキーと共にプライマリエッジに送信します。このメカニズムによって、次の 2 つのことが実現されます。
VLANロードバランシングは、異なるVLANをブロックする2つの異なるAPで実現されます。プライマリエッジは、VLANの少なくとも1つのサブセットのAPに対して責任があり、最もプライオリティの高いポートに残りのポートをブロックするように指示するEPAメッセージを送信します。最もプライオリティの高い中間ポートに関する情報はすでに EPA 選択メッセージでフェッチされています。このために生成されるメッセージのタイプは、最もプライオリティの高いポートがブロックする必要のある VLAN のビットマップを含む EPA コマンド TLV です。
EPA ヘッダー:
選択 TLV:
コマンド TLV:
情報 TLV:
以下に、適切なトポロジの例を示します。
SwitchA#show rep topology
REP Segment 1
BridgeName PortName edge Role
---------------- ---------- ---- ----
SwitchA Fa0/2 Pri Alt
SwitchC Fa1/0/23 Open
SwitchC Fa1/0/2 Open
SwitchD Fa0/23 Open
SwitchD Fa0/2 Open
SwitchB Fa1/0/23 Sec Open
以下に、何かが壊れている例を示します。
SwitchA#show rep topology
REP Segment 1
Warning: REP detects a segment failure, topology may be incomplete
BridgeName PortName edge Role
---------------- ---------- ---- ----
SwitchA Fa0/2 Sec Open
SwitchC Fa1/0/23 Open
SwitchC Fa1/0/2 Fail
以下に、以前の状態を示します。
SwitchA#show rep topology archive
REP Segment 1
BridgeName PortName edge Role
---------------- ---------- ---- ----
SwitchA Fa0/2 Pri Open
SwitchC Fa1/0/23 Open
SwitchC Fa1/0/2 Open
SwitchD Fa0/23 Open
SwitchD Fa0/2 Open
SwitchB Fa1/0/23 Sec Alt
障害が発生した SwitchC と SwitchD 間のリンクに関する詳細を取得するには、次のコマンドを入力します。
SwitchA#show rep topology archive detail
REP Segment 1
<snip>
SwitchC, Fa1/0/2 (Intermediate)
Open Port, all vlans forwarding
Bridge MAC: 0017.5959.c680
Port Number: 004
Port Priority: 010
Neighbor Number: 3 / [-4]
SwitchD, Fa0/23 (Intermediate)
Open Port, all vlans forwarding
Bridge MAC: 0019.e73c.6f00
Port Number: 019
Port Priority: 000
Neighbor Number: 4 / [-3]
<snip>
ここで、リンクをアップに戻した後はどうなるかを示します。
SwitchA#show rep topology
REP Segment 1
BridgeName PortName edge Role
---------------- ---------- ---- ----
SwitchA Fa0/2 Pri Open
SwitchC Fa1/0/23 Open
SwitchC Fa1/0/2 Alt
SwitchD Fa0/23 Open
SwitchD Fa0/2 Open
SwitchB Fa1/0/23 Sec Open
以前に障害が発生したポートがAPとして残り、ブロックし続けることに注意してください。これはブロックされたポート間だけで AP 選択が実行されるためです。このリンクで障害が発生すると、トポロジ内の他のすべてのポートが開かれます。リンクがアップすると、SwitchC と SwitchD の両方がそれぞれのプライオリティを含む BPA を送信します。SwitchC F1/0/2 の方がプライオリティが高いため、それが AP になります。この状態は、トポロジ内の別のポートで障害が発生するまで、または、プリエンプションが実行されるまで続きます。
ALT ポートは一部または全部の VLAN をブロックします。REPセグメントに障害が発生した場合、ALTポートは存在せず、すべてのポートが開いています。これが、障害発生時にREPがデータトラフィックにアクティブパスを提供する方法です。
REP セグメント全体(障害が発生していない場合)では、1 つまたは 2 つの ALT ポートが存在します。VLAN ロードバランシングが有効になっている場合は、セグメント内に 2 つの ALT ポートが存在します。一方の ALT ポートが指定された VLAN のセットをブロックし、常にプライマリ エッジであるもう一方の ALT ポートが VLAN の補足セットをブロックします。VLAN ロードバランシングが有効になっていない場合は、セグメント内にすべての VLAN をブロックする 1 つの ALT ポートが存在します。
ポートがオンラインになる順序と、組み込みポートプライオリティによって、セグメント内のどのポートがALTポートになるかが決まります。特定のポートを ALT ポートにする場合は、preferred キーワードを使って設定します。ランダム データの例は次のとおりです。
interface gig3/10
rep segment 3 edge preferred
gig3/1 がプライマリ エッジで、VLAN ロードバランシングを設定するとします。
interface gig3/1
rep segment 3 edge primary
rep block port preferred vlan 1-150
この設定では、プリエンプション後に、ポート gig3/10 が VLAN 1 ~ 150 をブロックする ALT ポートに、ポート gig3/1 が VLAN 151 ~ 4094 をブロックする ALT ポートになります。
プリエンプションは、rep preempt segment 3 コマンドで手動で実行するか、または、プライマリ エッジ ポートで rep preempt delay <seconds> を設定することによって、自動的に実行されます。
リンク障害後にセグメントが復旧した場合は、障害箇所に隣接する 2 つのポートのどちらかが ALT ポートになります。その後、プリエンプション後に、ALT ポートの位置が設定で指定された位置に変更されます。
次のコマンドを入力して、隣接関係が存在するかどうかを確認します。
SwitchC#show interface fa1/0/23 rep
Interface Seg-id Type LinkOp Role
---------------------- ------ -------------- ----------- ----
FastEthernet1/0/23 1 TWO_WAY Open
次のコマンドを入力して、詳細情報を入手します。
SwitchC#show interface fa1/0/23 rep detail
FastEthernet1/0/23 REP enabled
Segment-id: 1 (Segment)
PortID: 001900175959C680
Preferred flag: No
Operational Link Status: TWO_WAY
Current Key: 000400175959C6808335
Port Role: Open
Blocked VLAN: <empty>
Admin-vlan: 1
Preempt Delay Timer: disabled
Configured Load-balancing Block Port: none
Configured Load-balancing Block VLAN: none
STCN Propagate to: none
LSL PDU rx: 255547, tx: 184557
HFL PDU rx: 3, tx: 2
BPA TLV rx: 176096, tx: 2649
BPA (STCN, LSL) TLV rx: 0, tx: 0
BPA (STCN, HFL) TLV rx: 0, tx: 0
EPA-ELECTION TLV rx: 870, tx: 109
EPA-COMMAND TLV rx: 2, tx: 2
EPA-INFO TLV rx: 45732, tx: 45733
ほとんどのデバッグは出力が多過ぎてあまり役に立ちません。以下に完全なリスト(一部は service internal を使用した場合にのみ出力可能)を示します。
SwitchB#debug rep ?
all all debug options
bpa-event bpa events
bpasm BPA state machine
database protocol database
epasm EPA state machine
error protocol errors
failure-recovery switchover events
lslsm LSL state machine
misc miscellaneous
packet protocol PDU
prsm Port Role state machine
showcli show debug info
デバッグに有効なコマンドをいくつか紹介します。
debug rep error:このデバッグは、非常に有用である可能性があります。
*Mar 5 05:01:11.530: REP LSL-OP Rx EXT Local (Fa0/23 seg:1, tc:1, frs:0) prio:
*Mar 5 05:01:11.530: 0x80 0x00 0x19 0x00 0x17 0x59 0x59 0xC6
*Mar 5 05:01:11.530: 0x80
*Mar 5 05:01:11.530: REP Flush from Fa0/23 to REP, sending msg
*Mar 5 05:01:11.530: REP LSL-OP Rx INT Local (Fa0/2 seg:1, tc:1, frs:0) prio:
*Mar 5 05:01:11.530: 0x80 0x00 0x19 0x00 0x17 0x59 0x59 0xC6
*Mar 5 05:01:11.530: 0x80
*Mar 5 05:01:11.530: REP Flush from Fa0/2 to REP, sending msg
4d05h: %LINK-3-UPDOWN: Interface FastEthernet0/2, changed state to up
4d05h: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/2,
changed state to up
*Mar 5 05:06:19.098: rep_pr Fa0/2 - pr: during state FAILED_PORT,
got event 5(no_ext_neighbor)
*Mar 5 05:06:19.098: @@@ rep_pr Fa0/2 - pr: FAILED_PORT ->
FAILED_PORT_NO_EXT_NEIGHBOR[Fa0/2]rep_pr_act_no_ext_neighbor@272:
PRSM->fp_no_ext_neighbor state
[Fa0/2]rep_pr_lsl_event_handler@448: REP_MSG_EXT_PEER_GONE rcvd
4d05h: %REP-4-LINKSTATUS: FastEthernet0/2 (segment 1) is operational
*Mar 5 05:06:22.236: rep_pr Fa0/2 - pr: during state FAILED_PORT_NO_EXT_
NEIGHBOR, got event 0(link_op)
*Mar 5 05:06:22.236: @@@ rep_pr Fa0/2 - pr:
FAILED_PORT_NO_EXT_NEIGHBOR ->
ALTERNATE_PORT[Fa0/2]rep_pr_act_ap@162: PRSM->alternate state
[Fa0/2]rep_pr_lsl_event_handler@431: REP_MSG_LINKOP_TRUE rcvd
*Mar 5 05:06:23.125: rep_pr Fa0/2 - pr: during state ALTERNATE_PORT,
got event 2(pre_empt_ind)
*Mar 5 05:06:23.133: @@@ rep_pr Fa0/2 - pr: ALTERNATE_PORT -> UNBLOCK_VLANS_ACT
*Mar 5 05:06:23.133: rep_pr Fa0/2 - pr: during state UNBLOCK_VLANS_ACT,
got event 3(no_local_block_vlan)
*Mar 5 05:06:23.133: @@@ rep_pr Fa0/2 - pr: UNBLOCK_VLANS_ACT ->
OPEN_PORT[Fa0/2]rep_pr_act_op@252: PRSM->active state
[Fa0/2]rep_pr_act_uva@222: PRSM unblock vlans
[Fa0/2]rep_pr_sm_prempt_ind@374: Posting pre empt indication
以下に、ポートがオフラインになった場合の出力を示します。
*Mar 5 04:48:31.463: rep_epa_non_edge Fa0/2 - epa-non-edge: during state
INTERMEDIATE_PORT, got event 1(lr_eq_fp)*Mar 5 04:48:31.463: @@@ rep_epa_non_
edge Fa0/2 - epa-non-edge: INTERMEDIATE_PORT -> FAILED_PORT[Fa0/2]rep_epa_non_
edge_act_failed_port@164: Trigger archiving
[Fa0/23]rep_epa_set_peer_archive_flag@1084: set arch flag
[Fa0/2]rep_epa_non_edge_act_failed_port@171: no edge, failed port
*Mar 5 04:48:35.473: rep_epa_non_edge Fa0/2 - epa-non-edge: during state
FAILED_PORT, got event 0(epa_hello_tmo)
*Mar 5 04:48:35.473: @@@ rep_epa_non_edge Fa0/2 - epa-non-edge: FAILED_PORT ->
FAILED_PORT[Fa0/2]rep_epa_non_edge_act_periodic_tx@90: archiving on port down
[Fa0/2]rep_epa_copy_topology@913: deip=0x3396F18,pe=0,se=1,fp=0,ap=0,op=2
[Fa0/23]rep_epa_non_edge_handle_info_tlv@1560: archiving on internal flag
[Fa0/23]rep_epa_copy_topology@913: deip=0x33961F0,pe=1,se=0,fp=0,ap=1,op=3
[Fa0/2]rep_epa_non_edge_act_periodic_tx@102: epa non edge, send info tlv
[Fa0/23]rep_epa_set_peer_archive_flag@1084: set arch flag
[Fa0/2]rep_epa_non_edge_handle_election_tlv@325: archiving on seg cfg change
[Fa0/2]rep_epa_copy_topology@913: deip=0x3396F18,pe=0,se=1,fp=0,ap=0,op=2
[Fa0/2]rep_epa_set_peer_archive_flag@1084: set arch flag
[Fa0/23]rep_epa_non_edge_handle_election_tlv@325: archiving on seg cfg change
[Fa0/23]rep_epa_copy_topology@913: deip=0x33961F0,pe=1,se=0,fp=0,ap=1,op=3
[Fa0/2]rep_epa_non_edge_handle_info_tlv@1560: archiving on internal flag
[Fa0/2]rep_epa_copy_topology@913: deip=0x3396F18,pe=0,se=1,fp=0,ap=0,op=2
ポートがオンラインになったときの出力を次に示します。
*Mar 5 04:49:39.982: rep_epa_non_edge Fa0/2 - epa-non-edge: during state FAILED_PORT,
got event 2(lr_neq_fp)
*Mar 5 04:49:39.982: @@@ rep_epa_non_edge Fa0/2 - epa-non-edge: FAILED_PORT ->
INTERMEDIATE_PORT[Fa0/2]rep_epa_non_edge_stop_timer@123: epa non edge, stop the timer
[Fa0/2]rep_epa_copy_topology@913: deip=0x32E2FA4,pe=0,se=1,fp=0,ap=1,op=1
[Fa0/2]rep_epa_copy_to_stable_topology@1040: copy to stbl
[Fa0/23]rep_epa_copy_topology@913: deip=0x3ACFFB8,pe=1,se=0,fp=0,ap=0,op=4
[Fa0/23]rep_epa_copy_to_stable_topology@1040: copy to stbl
[Fa0/23]: BPA: Sending ext pak to bparx
[Fa0/2]: BPA: Enqueued internal pak
[Fa0/2]: BPA: Sending int msg to bparx
[Fa0/2]: BPA: Relay pak
[Fa0/2]: BPA: Enqueue ext pak
*Mar 5 04:44:23.857: rep_bpa_rx BPA RX sm: during state BPA_RX_IDLE,
got event 0(bpa_rx_bpa_msg)
*Mar 5 04:44:23.857: @@@ rep_bpa_rx BPA RX sm: BPA_RX_IDLE -> BPA_RX_IDLE
[Fa0/23]: BPA Rx sm: Received bpa: <internal> 0, <vlan_detail> 0
[Fa0/23]: BPA Rx sm: Role 2: TC 0; Internal 0; Frm Remote Segment 0
*Mar 5 04:44:23.857: rep_bpa_rx BPA RX sm: during state BPA_RX_IDLE,
got event 0 (bpa_rx_bpa_msg)
*Mar 5 04:44:23.857: @@@ rep_bpa_rx BPA RX sm: BPA_RX_IDLE -> BPA_RX_IDLE
[Fa0/2]: BPA Rx sm: Received bpa: <internal> 1, <vlan_detail> 0
[Fa0/2]: BPA Rx sm: Role 2: TC 0; Internal 1; Frm Remote Segment 0
*Mar 5 05:03:10.564: REP Fa0/23 seq:4411 ACK'ed (ref: 1)
*Mar 5 05:03:10.564: REP Fa0/23 seq:4412 ACK'ed (ref: 1)
*Mar 5 05:03:10.564: REP LSL: Fa0/23 rx expected seq# (4744),
process it (TLV: 0).
*Mar 5 05:03:10.782: REP Fa0/2 seq:440 ACK'ed (ref: 1)
改定 | 発行日 | コメント |
---|---|---|
3.0 |
08-Mar-2024 |
画像とキャプション、SEO、およびフォーマットを更新。 |
2.0 |
20-Jan-2023 |
書式を更新し、CCWアラートを修正。再認定 |
1.0 |
03-Jul-2013 |
初版 |