【★インフラエンジニア必見★】Ciscoルータ障害時の原因特定に役立つコマンド

#初めに

どうも、クソ雑魚のなんちゃてエンジニアです。

今回はインフラエンジニアさん向けの記事になります。
そのインフラエンジニアさんの中でもネットワークインフラに従事しているかた向けですね。

基本的にCiscoIOSを想定したコマンドの紹介になります。

障害発生時の迅速な対応の参考になればなと思います。

※前提として障害はCiscoルータ周りで発生したと仮定します。（syslogがこの周辺から飛んできているとする。）
※この時点で障害箇所をだいぶ絞り込めてると思いますが

#目次

+ 環境想定
+ ASRシリーズとは？
+ コマンド紹介
    + show platform
    + show logging
    + show interfaces ...\*/\*/\*
    + ルーティング系コマンド
    + show buffer
+ まとめ 

#環境想定
皆さんは大規模ネットワークを構築した際に拠点間の通信でCiscoのASR1000シリーズを採用し、運用していたと想定。
運用期間中に何やらネットワーク通信障害が発生し、あなたはネットワークの原因特定、早期復旧をしなければなりません。
監視ネットワークからのsyslogやPingでの調査によって、採用していたASRシリーズで障害が発生している模様ということは分かってます。
そこで、ASR1000シリーズにコマンドを打ち込んで、原因を探っていかなければなりません。

#ASR1000シリーズとは？
Ciscoルータの大規模ネットワーク構築時に用いるエッジルータになります。ネットワークインフラエンジニアにとってはよく見るルータになるでしょうか？
Ciscoの技術者検定（CCNA等）でのコマンドでは大体対処できないような気がします（笑）
※上記検定では対処できないであろうこともあり、筆を執りました。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/30836f61-4d07-3a0d-82e5-10900a0152a6.jpeg">

詳細は以下のCiscoのサイトをご覧ください

+ [Cisco ASR 1000 シリーズ アグリゲーション サービス ルータ](https://www.cisco.com/c/ja_jp/products/routers/asr-1000-series-aggregation-services-routers/index.html)

>添付画像
https\://www\.cisco\.com/c/ja_jp/products/routers/asr-1000-series-aggregation-services-routers/index.html

<br>
以下にルータのそれぞれのパッケージの説明をさっくりと記載します。

|パッケージ名|説明|
|---|---|
|RP|ルータの脳みそ、各パッケージへ指令を出します。|
|ESP|ルータのスイッチング的役割、RPで考えられたテーブルをもとに各パケットを捌きます。コマンドライン上では`F0`や`F1`と表示されます。|
|SPA|インターフェースを複数差し込めるアダプタです。|
|SIP|SPAのインターフェイスプロセッサです。|
|PWR|電源です。|
|FAN|ファンです。|

パケットの基本的な流れ方は以下です。
インターフェース→SPA→SIP→ESP→SIP→SPA→インターフェース

#コマンド紹介
##show platform
ASRシリーズでのハードのステータス情報を確認可能確認コマンドになります。
ここで上記パッケージのどこに異常があるか、ある程度見極めることができます。

```Bash
Router#show platform
 
Chassis type: ASR1001
 
Slot      Type                State                 Insert time (ago)
--------- ------------------- --------------------- -----------------
0         ASR1001             ok                    3y35w
0/0       ASR1001             ok                    3y35w
R0        ASR1001             ok, active            3y35w
F0        ASR1001             ok, active            3y35w
P0        ASR1001-PWR-AC      ok                    3y35w
P1        ASR1001-PWR-AC      ok                    3y35w
P2        ASR1001-FANTRAY     ok                    3y35w
```

上記の`State`欄を確認しましょう。基本は`ok`となりますが、パッケージが冗長されている場合は`ok, active`と`ok, standby`の表示になると思います。
※ちなみに上記`0`は「SIP」の0番目のパッケージ、`0/0`は「SIP」の0番目のパッケージに乗っている「SPA」の0番目のパッケージ意味になります。

##show logging
装置のsyslogを確認するコマンドです。
まずこのコマンドで障害発生時刻のログを確認し、原因を特定しましょう。
※何故これが重要かというと、複雑系障害の場合は一つのパッケージ故障起因で誘発的に他のパッケージも死ぬ可能性があるからです。

##show interfaces ...\*/\*/\*

SPAに搭載されているインターフェースの確認コマンドです。

```Bash
Router#show interfaces gigabitethernet1/0/2
GigabitEthernet3/0/2 is down, line protocol is down (notconnect)
  Hardware is Gigabit Ethernet, address is 2037.064d.4381 (bia 2037.064d.4381)
  MTU 1500 bytes, BW 1000000 Kbit/sec, DLY 10 usec,
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation ARPA, loopback not set
  Keepalive set (10 sec)
  Auto-duplex, Auto-speed, media type is 10/100/1000BaseTX
  input flow-control is off, output flow-control is unsupported
  ARP type: ARPA, ARP Timeout 04:00:00
  Last input never, output never, output hang never
  Last clearing of "show interface" counters never
  Input queue: 0/2000/0/0 (size/max/drops/flushes); Total output drops: 0
  Queueing strategy: fifo
  Output queue: 0/40 (size/max)
  5 minute input rate 1243425 bits/sec, 1531 packets/sec
  5 minute output rate 0 bits/sec, 0 packets/sec
　
　…
    
```

上記はインターフェースが落ちている場合の表示です。この場合は対抗の装置のインターフェースが原因で落ちているのか、こちらのインターフェースが原因で落ちているのかわからないので`5 minute input rate`と`5 minute output rate`を見ましょう。
見にくい場合は`| inc rate`とパイプで渡して出力を絞りましょう。

```Bash
Router#show interfaces gigabitethernet1/0/2 | inc rate
  Queueing strategy: fifo
  5 minute input rate 1243425 bits/sec, 1531 packets/sec
  5 minute output rate 0 bits/sec, 0 packets/sec

　…
```

一行目にノイズが入ってきますが、それでも見やすくなりますね。
結果としては、インプットは正常に受信できているのですが、アウトプットが出来ていないようですので、対抗の装置ではなくこちらの装置に原因がありそうですね。

##ルーティング系コマンド
+ show ip route
+ show ip ospf neighbor
+ show ip eigrp neighbors
+ show bgp all summary

今までのコマンドはハード面の異常を見てきましたが、今度はIP層の制御に異常がないか確認していきます。
使用しているネットワークのプロトコルにもよりますが、基本的にはここら辺のコマンドで異常がないか確認します。
表示は個々のネットワークの構成によりけりなので、事前に正常な状態の表示結果を記録しておく必要があります。

##show buffer
DoS攻撃を受けた際のコントロールポリシー(CoPP)を設定している場合、どこが容量を食っているか特定するコマンドになります。
そのDoS攻撃を受けているVlanや、チャンネルグループを特定できるので、一時的にシャットダウンし、ルータ本体の障害を食い止めることも可能です。


#まとめ
第三回の投稿いかがだったでしょうか？
今回はCiscoの技術者検定では学べないであろう大規模ネットワークのエッジルータの障害位置確認コマンドを紹介いたしました。
これはほんの一部の状態確認コマンドになりますので、ある程度障害位置を特定できれば、さらなる分析が必要になるかなと思います。

...こんな感じで、ネットワークインフラエンジニアの皆さんの助けになればなと思います。

※いったん投稿はここで打ち止めにします。