Cisco ルータの運用を軽減する10の手法(後半)

ビジネス推進本部 第1応用技術部
コアネットワークチーム
渡部 満幸

前回の小ネタは皆様の業務に役立っていますでしょうか。
今回はより運用に即した内容、という予定でしたが、ネタの方向に偏ってしまいました。
それではさっそく、後半5つをご紹介致します。

連載インデックス

小ネタNo.6:Interfaceで送受信しているパケットのプロトコル内訳見れます

ルータのInterfaceでInput/Outputするパケットの量を確認するコマンドといえば
show interfaces
ですが、このコマンドはIPv4/IPv6/その他各種プロトコルがどの程度混在しているのか確認することはできません。
特定のinterfaceでIPv6のパケット数だけを確認したい場合、みなさんどうしますか?

そんな時に便利なのが
show interfaces accounting
です。

C881W#show interfaces accounting

途中省略

Vlan1

Protocol   Pkts In     Chars In   Pkts Out Chars Out

Other   2450046   279575991         0         0

IP   10893296   747042266   9964609 658515688

ARP   6165477   369809570     26173   1570380

IPv6         23       3431          14       1340

このコマンドはIOSのバージョンにも依りますが、そのinterfaceに設定されているプロトコル別にパケットを分類してカウントした値を表示してくれます。

IP、ARP、IPv6の他にもCDP、STP、SCP等、設定さえすれば項目が増えます。

ただし、ハードウェア処理(ASICを使って転送)されたものは正しく表示されない場合があります。
Cisco IOSルータはほとんどがCPU処理でパケット転送を行いますが、例えばCisco 7600シリーズ、7304シリーズ(古)などはDFC、PXFといったASICを使った転送を行います。
そのため一部のカウンタが正常に機能しませんのでご注意ください。

小ネタNo.7:使ってはいけません show parser dump

dhcpの設定で使うあのコマンド、なんだったかな。。。
private-vlanってどんな設定パラメータがあるんだっけ。。。

コマンド探しで困ったときに使えるコマンドが
show parser dump
です。

という内容がCisco.comの公式コミュニティサイトにも記載されています。
シスコサポートコミュニティ”show parser dump”コマンドを使用について

しかし、これは試験用のスタンドアロン機器以外で使ってはいけません。
出力が止まらなくなる、ルータがクラッシュする等、様々な不具合が報告されています。
そして、ついにこのコマンドはIOSから削除されました。
CSCsa64830
Remove show parser dump … command from production IOS images

近年リリースされている比較的新しいIOSバージョンのほとんどで、このコマンドは利用できなくなっています。

C881W#show parser dump interface

Command accepted, but obsolete, parser dumper has been deprecated

小ネタNo.8:Configの世代管理、IOSでもできます

保存したConfigの世代管理ができるのはIOS-XRの特徴です。(ちなみに100世代)
この機能、archive設定を追加することでIOSでも利用することができます。(IOSは最大で14世代)
Configuration Replace and Configuration Rollback
http://www.cisco.com/c/en/us/td/docs/ios-xml/ios/config-mgmt/configuration/15mt/config-mgmt-15-mt-book/cm-config-rollback.html

まずはconfig archiveを保存するディレクトリをflashに作成します。

C881W#mkdir flash:archive

Create directory filename [archive]?

Created dir flash:/archive

config archiveを有効化します。
この例ではwrite memory(copy run start)を実行した際にarchiveを保存し、2世代前まで保存しておく設定です。

C881W#conf

Configuring from terminal, memory, or network [terminal]?

Enter configuration commands, one per line.   End with CNTL/Z.

C881W(config)#archive

C881W(config-archive)# path flash:archive/

C881W(config-archive)# maximum 2

C881W(config-archive)# write-memory

C881W(config-archive)#end

C881W#

次にarchive履歴を確認します。
この時点ではwriteしていませんので履歴は残っていません。

C881W#show archive

The maximum archive configurations allowed is 2.

There are currently no configuration saved.

The next archive file will be named flash:archive/-<timestamp>-0

Archive #   Name

1

2

C881W#

試しにwriteしてもう一度確認してみます。

C881W#write

Building configuration…

[OK]

C881W#

C881W#show archive

The maximum archive configurations allowed is 2.

There are currently 1 archive configurations saved.

The next archive file will be named flash:archive/-<timestamp>-1

Archive #   Name

1         flash:archive/Jun-24-11-07-36.084-JST-0 <- Most Recent

2

C881W#

保存されました。

running-configにいくつか変更を加えてもう一度。

C881W#copy running-config startup-config

Destination filename [startup-config]?

Building configuration…

[OK]

C881W#

C881W#show archive

The maximum archive configurations allowed is 2.

There are currently 2 archive configurations saved.

The next archive file will be named flash:archive/-<timestamp>-2

Archive #   Name

1         flash:archive/Jun-24-11-07-36.084-JST-0

2         flash:archive/Jun-24-11-09-57.521-JST-1 <- Most Recent

C881W#

copy run startでも機能します。

この機能の面白いところはarchiveと現在のrunning-configのdiffをとれる点です。

C881W#show archive config differences flash:archive/Jun-24-11-07-36.084-JST-0

!Contextual Config Diffs:

interface Vlan1

-ipv6 address 2001:DB8:1::1/64

-interface Vlan55

-ip address 192.168.55.1 255.255.255.0

 

C881W#

archive番号の1番と、現在のrunning-configを比較すると、archive番号の1番には
・vlan1にipv6 addressの設定が入っていない
・int vlan55の設定が入っていない
ということがわかります。

なお、archiveの最大数に達すると古いarchive番号から順に削除されていきます。
archive先がflash:であった場合、flash:のディレクトリにも残りませんので注意してください。

小ネタNo.9:最新SMUリストをXML形式で取得する方法

まず、SMUってなんですか。
SMU : Software Maintenance Upgrade = 特定のBugを修正するためのソフトウェアパッチファイルで、IOS-XRで動作するルータで使用します。
SMUに関するet ceteraはまた別の機会にお話しすることにして、今回はこのSMUの一覧をXML形式で入手する方法です。

SMUリストはCisco Software Manager(CSM)というCisco社が提供する無料ソフトウェアを使用することで、様々な便利機能とともにGUI環境で確認することが可能です。
Cisco Software Manager User Guide

なおCSMそのものは無料ですが、ダウンロードするためにはASR 9000シリーズ等、IOS-XRで動作するルータの保守契約が必要です。

このCSMが情報源として参照しているCisco.com公式サイトのとあるURLを覗き見ると、CSMで見ることができる情報をXML形式で入手することが可能です。
このアクセスが許されるのかどうか、私には判断できませんのであくまでも参考程度に。

とあるURLの例(一部伏せています)
http://www.cisc○.c○m/web/Cisc○_I○S_XR_S○ftware/SMUMetaFile/asr9k_px_5.3.0.xml

とあるURLの中身抜粋(一部伏せています)

<smuInfo>

<platform>ASR9K-PX</platform>

<release>5.3.0</release>

<creationDate>06/17/2015 05:59:57 PM</creationDate>

<smuSuffix>pie</smuSuffix>

<smuSoftwareTypeID>2XXXXXXXXX</smuSoftwareTypeID>

<spSoftwareTypeID>28XXXXXXXX</spSoftwareTypeID>

<platformMDFID>

<pid>ASR-XXXXXXXXXX</pid>

<description>Cisco ASR 9010 Router</description>

<mdfID>28XXXXXXXX</mdfID>

</platformMDFID>

<smu status=”Posted” id=”AXXXXXXXX3″>

<description>

YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYn

</description>

<name>ZZZZZZZZZZZZZZZZZZZZ</name>

<smuType>Optional</smuType>

<ddts>ZZZZZZZZZZZ2</ddts>

<impact>HZZZZZZ</impact>

<supercedes/>

<supercedesPartial/>

<supercededBy/>

<pre-requisites/>

<functionalAreas>QOS</functionalAreas>

<packageBundles>asrZZZZZx</packageBundles>

<compressedImageSize>4ZZZZZZ3</compressedImageSize>

<unCompressedImageSize>ZZZTTTT0</unCompressedImageSize>

<ccoFileName>CCCPPPUUU</ccoFileName>

<postedDate>03/09/2015 10:59:09 PDT</postedDate>

<customerETA>03/23/2015 00:00:00 PDT</customerETA>

<creationDate>01/30/2015 09:38:59 PST</creationDate>

</smu>

小ネタNo.10:全部見えます show history all

show historyコマンドは現在ログイン中のターミナルセッションで入力したコマンド一覧を表示します。

Username: piko

Password:

C881W>en

C881W#show history

en

show history

C881W#

IOS 12.4(22)T以降のIOSでは、allオプションを指定することで全てのターミナルセッションで入力したコマンド及びsyslogを全て表示することができます。
このallオプション付きshow historyはcrashinfoにも含まれている重要な情報で、execコマンドだけでなくconfigコマンドまで含め、パスワード関連を除き全て記録されます。
以下は一部抜粋した表示例です。

C881W#show history all

CMD: ‘sh run | i ip route’ 15:42:50 JST Tue Jun 23 2015

CMD: ‘show proc cpu history ‘ 15:43:22 JST Tue Jun 23 2015

CMD: ‘conf’ 15:43:27 JST Tue Jun 23 2015

 

CMD: ‘no ip route 172.17.99.0 255.255.255.0 Vlan1 192.44.115.52 ‘ 15:43:46 JST Tue Jun 23 2015

CMD: ‘end’ 15:43:50 JST Tue Jun 23 2015

Jun 23 15:43:50.326 JST: %SYS-5-CONFIG_I: Configured from console by piko on vty0 (192.241.98.19)

Jun 23 15:53:50.635 JST: %SYS-6-TTY_EXPIRE_TIMER: (exec timer expired, tty 8 (192.241.98.19)), user piko

Jun 23 15:53:50.635 JST: %SYS-6-LOGOUT: User piko has exited tty session 8(192.241.98.19)

Jun 23 16:13:59.463 JST: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user: piko] [Source: 192.30.59.40] [localport: 23] at 16:13:59 JST Tue Jun 23 2015

Jun 23 16:55:22.091 JST: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user: piko] [Source: 192.241.98.19] [localport: 23] at 16:55:22 JST Tue Jun 23 2015

CMD: ‘en’ 16:55:23 JST Tue Jun 23 2015

CMD: ‘conf’ 16:55:24 JST Tue Jun 23 2015

CMD: ‘kron policy-list test ‘ 16:55:30 JST Tue Jun 23 2015

 

CMD: ‘exit’ 16:56:50 JST Tue Jun 23 2015

CMD: ‘no kron policy-list test ‘ 16:56:53 JST Tue Jun 23 2015

CMD: ‘end’ 16:56:54 JST Tue Jun 23 2015

Jun 23 16:56:54.452 JST: %SYS-5-CONFIG_I: Configured from console by piko on vty0 (192.241.98.19)

CMD: PASSWORD statement not printed

CMD: ‘show running-config linenum ‘ 17:03:51 JST Tue Jun 23 2015

CMD: ‘conf’ 17:11:01 JST Tue Jun 23 2015

CMD: ‘archive ‘ 17:11:06 JST Tue Jun 23 2015

CMD: PASSWORD statement not printed

CMD: ‘write-memory ‘ 17:11:25 JST Tue Jun 23 2015

CMD: ‘maximum 14 ‘ 17:11:33 JST Tue Jun 23 2015

CMD: ‘exit’ 17:11:37 JST Tue Jun 23 2015

CMD: ‘exit’ 17:11:40 JST Tue Jun 23 2015

Jun 23 17:11:40.621 JST: %SYS-5-CONFIG_I: Configured from console by piko on vty0 (192.241.98.19)

CMD: ‘show run’ 17:11:43 JST Tue Jun 23 2015

CMD: ‘show running-config partition archive’ 17:12:00 JST Tue Jun 23 2015

CMD: ‘show runn’ 17:12:03 JST Tue Jun 23 2015

CMD: ‘hsow ‘ 17:12:29 JST Tue Jun 23 2015

CMD: ‘sh ip int biref’ 11:52:51 JST Wed Jun 24 2015

CMD: ‘sh ip int brief ‘ 11:52:55 JST Wed Jun 24 2015

CMD: ‘show history all ‘ 11:54:06 JST Wed Jun 24 2015

C881W#

username pikoで何人かログインしていろいろ試しているようですね。

このログは障害解析の際にも威力を発揮しますが、機器を再起動すると消えてしまう点には注意が必要です。
show techだけでなく、取得可能であればshow hist allも取っておくと良いでしょう。

まとめ

さて、2回に分けて10個の小ネタをお届けしました。振り返ってみると、明らかにタイトルとは違う方向に進んできたように思いますが、皆様の業務に役立つものはありましたでしょうか。
Cisco機器にはここでご紹介できなかった、役立つ機能や便利ツール、使用に堪えないネタ実装まで、様々な機能が山盛り実装されています。
こんな機能あったらいいのに。という声にCisco IOSは応えてくれることも案外あるかもしれません。お手元に自由になるCiscoルータをお持ちの方は、固定観念を捨てて純真な子供のような心と共にCisco IOS CLIの世界にDeep Diveしてみてください。

執筆者プロフィール

渡部 満幸
ネットワンシステムズ株式会社 ビジネス推進本部 第1応用技術部 コアネットワークチーム
所属
入社以来約10年以上、応用技術部でルータ製品の調査及び研究を行い、その結果をもってお客様への提案支援やネットワーク設計、障害解析等の支援を行う。
Cisco製品ではローエンドからハイエンド、キャリアグレードルータまで、Juniper/Alcatel製品では主にエッジルータを評価している。
Ethernet/IP/MPLS/PPP(oX)等、ルータ製品で動作するプロトコル全般を調査対象としている器用貧乏型

イベント/レポート

pagetop