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

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

歴史の古いIOSや、使用される機会が増えつつあるIOS-XE、IOS-XRでは、本来のルーティング機能とは直接関係のない便利機能がたくさん用意されています。
前半ではそうしたCisco製ルータで利用可能なちょっとだけ便利な小ネタを5つピックアップしてご紹介します。
この記事を通じて皆様のルータ運用負荷が少しでも低減されることを願います。

連載インデックス

小ネタNo.1: terminal exec prompt timestamp

IOS及びIOS-XEで動作するCiscoルータでは、コマンドを実行した際にタイムスタンプが出力されません。

以下はCisco 881W / IOS 15.2(4)M5 でshow interfacesコマンドを実行した場合の例

C881W#show interfaces
FastEthernet0 is up, line protocol is up
Hardware is Fast Ethernet, address is 0022.903e.f416 (bia 0022.903e.f416)
MTU 1500 bytes, BW 100000 Kbit/sec, DLY 100 usec,
reliability 255/255, txload 1/255, rxload 1/255
 以下省略

一方、IOS-XRで動作するASR 9000シリーズやCRSシリーズでは、コマンドを実行した際にタイムスタンプが自動的に出力され、これはdefault状態で有効です。

以下はASR 9001 / IOS-XR 5.1.3の例

RP/0/RSP0/CPU0:ASR9001-1#show interfaces
Tue May 19 13:37:50.854 JST
MgmtEth0/RSP0/CPU0/0 is up, line protocol is up
Interface state transitions: 1
Hardware is Management Ethernet, address is 6c9c.ed79.6dbd (bia 6c9c.ed79.6dbd)
 以下省略

このタイムスタンプは操作を行った時刻をログ上から確認することが可能であり、障害解析や単位時間当たりのカウンタ増分を確認する際に有効です。

IOSルータでも以下のようにline configurationサブモード内で”exec prompt timestamp”と設定することで、IOS-XRと同じようにタイムスタンプを出力することが可能です。

line con 0
exec prompt timestamp
!
line vty 0 4
exec prompt timestamp

上記を設定した後のCisco881W show interfaceコマンド実行例

C881W#show interfaces
Load for five secs: 3%/0%; one minute: 4%; five minutes: 4%
Time source is NTP, 13:44:27.643 JST Tue May 19 2015

FastEthernet0 is up, line protocol is up
Hardware is Fast Ethernet, address is 0022.903e.f416 (bia 0022.903e.f416)
 以下省略

IOS-XRと違い、CPU負荷まで表示されます。

一時的なログイン操作で、ルータの設定を変更することが許可されていない場合でも、execモードで”terminal exec prompt timestamp”と入力することで、ログイン中のターミナルセッションに限定してタイムスタンプを有効化できます。

C881W#show interfaces
FastEthernet0 is up, line protocol is up
Hardware is Fast Ethernet, address is 0022.903e.f416 (bia 0022.903e.f416)

 中略

C881W#
C881W#terminal exec prompt timestamp
C881W#
C881W#show interfaces
Load for five secs: 4%/0%; one minute: 4%; five minutes: 4%
Time source is NTP, 13:47:46.902 JST Tue May 19 2015

FastEthernet0 is up, line protocol is up
Hardware is Fast Ethernet, address is 0022.903e.f416 (bia 0022.903e.f416)
 以下省略

このタイムスタンプは障害解析の際にテクニカルサポートへ提出する show tech-supportコマンドでも有効ですので、ルータにログインして状況を確認するような場合は使用することを強くお勧めします。

Cisco TACエンジニアの間では「show techの前のshow clockは愛」と言われているようです。
ログを記録したまさにその時の時刻情報を記録することは、問題を解決するまでの時間を短縮する手助けになります。

小ネタNo.2:クエスチョンマーク ”?” を文字として入力する

パスワードには英数大文字小文字、特殊記号を混ぜて使用するのが常識ですが、Cisco IOS CLIでは ”?” をヘルプ記号として解釈します。
そのため、以下のようにパスワードに”?”記号を混ぜることができません。

C881W#configure
Configuring from terminal, memory, or network [terminal]?
Enter configuration commands, one per line. End with CNTL/Z.
C881W(config)#
C881W(config)#enable password PAssWord?
LINE <cr>

C881W(config)#enable password PAssWord

IOS CLIに”?”を文字として入力するには、Ctrl+v の後に Shift+? を使用します。

C881W(config)#enable password PAssWord?-0290141
^ここでCtrl+v, Shift+?を入力
C881W(config)#do sh run
 中略
!
!
enable password PAssWord?-0290141
!
 以下省略

これでパスワードの強度を少しだけ上げることができます。

もちろん、このショートカットはIOS、IOS-XE、IOS-XRの全てで共通して利用することができます。

小ネタNo.3:ルータでSNMP Get、できます。

SNMPを使用した機器情報の確認には、SNMPマネージャソフトが必要です。
通常、ターミナル用PCや監視サーバにNet-SNMP等をインストールしてMIBを取得します。

実はIOS及びIOS-XEにはsnmp manager機能が実装されています。
残念なことにIOS-XRには実装されていません。
Configモードでsnmp-server managerと設定すると、IOSのexecモードでsnmp getコマンドが利用できるようになります。

C881W#conf
Configuring from terminal, memory, or network [terminal]?
Enter configuration commands, one per line. End with CNTL/Z.
C881W(config)#
C881W(config)#snmp-server manager
C881W(config)#
C881W(config)#snmp-server community public ro
C881W(config)#end
C881W#
C881W#snmp get v2c 192.168.1.1 public oid 1.3.6.1.4.1.9.3.6.5.0
SNMP Response: reqid 9, errstat 0, erridx 0
chassis.5.0 = Cisco IOS Software, C880 Software (C880DATA-UNIVERSALK9-M), Version 15.2(4)M5, RELEASE SOFTWARE (fc2)
C881W#

IPで疎通が取れない隔離ネットワークにルータが設置されている場合に威力を発揮しますが、実際のところあまり使い道はなさそうです。

小ネタNo.4:XML-Programmatic Interface(PI)

Cisco IOS及びIOS-XEには、showコマンドの出力結果をXML形式で表示する機能が実装されています。
大抵のshowコマンド出力は、人間による可読性を考慮した形式で表示されます。
しかし、出力を文字列としてプログラム等で読み込もうとした場合、使いづらい場合があります。
showコマンドの内容をどのようにタグ付するかといったフォーマットデータは、自分で記述してCompact Flash等に保存しておく必要がありますが、いくつかのコマンドについてはIOSに初めから定義されているものもあります。
なお、IOS、IOS-XEではNetconf経由で設定変更が可能で、その際にもこのXML-PIを利用することができます。

例えばCisco881W / IOS 15.2(4)M5 のビルトイン定義済みコマンド

C881W#show format

The following CLI are supported in built-in
show inventory
show ip interface brief
show waas token
show waas statistics peer
show waas statistics pass-through
show waas statistics lz
show waas statistics global
show waas statistics dre
show waas statistics dre peer
show waas statistics class*
show waas statistics aoim
show waas statistics auto-discovery
show waas statistics auto-discovery blacklist
show waas statistics application*
show waas alarms
show waas status extended
show waas status
show waas connection*
show waas auto-discovery list
show parameter-map type waas*
show class-map type waas*
show policy-map type waas*
show waas auto-discovery blacklist
show waas statistics errors
show waas accelerator
show waas accelerator detail
show waas accelerator ssl-express
show waas statistics accelerator ssl-express ciphers
show waas statistics accelerator ssl-express
show waas statistics accelerator ssl-express peering
show waas accelerator cifs-express
show waas statistics accelerator cifs-express
show waas statistics accelerator cifs-express detail
show waas accelerator http-express
show waas statistics accelerator http-express
show waas statistics accelerator http-express detail
show waas statistics accelerator http-express https
show waas cache http-express metadatacache*
show waas statistics accelerator http-express debug
show waas cache http metadatacache*
show mediatrace session stats*
show mediatrace session hops*
show mediatrace session data*
mediatrace poll*
show mediatrace initiator*
C881W#

通常表示のshow ip interface briefコマンドの出力

C881W#show ip interface brief

Interface          IP-Address OK? Method Status
Protocol
FastEthernet0 unassigned YES unset up up
FastEthernet1 unassigned YES unset down down
FastEthernet2 unassigned YES unset down down
FastEthernet3 unassigned YES unset down down
FastEthernet4 unassigned YES unset administratively down down
FastEthernet4.1 unassigned YES manual deleted down
FastEthernet4.2 unassigned YES unset deleted down
FastEthernet4.10 unassigned YES unset deleted down
NVI0 192.168.1.1 YES unset up up
Virtual-Access1 unassigned YES unset up up
Vlan1 192.168.1.1 YES manual up up
Vlan10 1.1.1.1 YES manual down down
Vlan100 10.10.10.100 YES manual down down
Vlan2020 unassigned YES unset down down
Wlan-GigabitEthernet0 unassigned YES unset up up
wlan-ap0 unassigned YES unset administratively down down
C881W#

上記をビルトインフォーマットを使用してXML表示した場合

C881W#show ip interface brief | format
<?xml version=”1.0″ encoding=”UTF-8″?>
<ShowIpInterfaceBrief xmlns=”ODM://built-in//show_ip_interface_brief”>
<SpecVersion>built-in</SpecVersion>
<IPInterfaces>
<entry>
<Interface>FastEthernet0</Interface>
<OK>YES</OK>
<Method>unset</Method>
<Status>up</Status>
<Protocol>up</Protocol>
</entry>
<entry>
<Interface>FastEthernet1</Interface>
<OK>YES</OK>
<Method>unset</Method>
<Status>down</Status>
<Protocol>down</Protocol>
</entry>
<entry>
<Interface>FastEthernet2</Interface>
<OK>YES</OK>
<Method>unset</Method>
<Status>down</Status>
<Protocol>down</Protocol>
</entry>
<entry>
<Interface>FastEthernet3</Interface>
<OK>YES</OK>
<Method>unset</Method>
<Status>down</Status>
<Protocol>down</Protocol>
</entry>
<entry>
<Interface>FastEthernet4</Interface>
<OK>YES</OK>
<Method>unset</Method>
<Status>administratively down</Status>
<Protocol>down</Protocol>
</entry>
<entry>
<Interface>FastEthernet4.1</Interface>
<OK>YES</OK>
<Method>manual</Method>
<Status>deleted</Status>
<Protocol>down</Protocol>
</entry>
<entry>
<Interface>FastEthernet4.2</Interface>
<OK>YES</OK>
<Method>unset</Method>
<Status>deleted</Status>
<Protocol>down</Protocol>
</entry>
<entry>
<Interface>FastEthernet4.10</Interface>
<OK>YES</OK>
<Method>unset</Method>
<Status>deleted</Status>
<Protocol>down</Protocol>
</entry>
<entry>
<Interface>NVI0</Interface>
<IP-Address>192.168.1.1</IP-Address>
<OK>YES</OK>
<Method>unset</Method>
<Status>up</Status>
<Protocol>up</Protocol>
</entry>
<entry>
<Interface>Virtual-Access1</Interface>
<OK>YES</OK>
<Method>unset</Method>
<Status>up</Status>
<Protocol>up</Protocol>
</entry>
<entry>
<Interface>Vlan1</Interface>
<IP-Address>192.168.1.1</IP-Address>
<OK>YES</OK>
<Method>manual</Method>
<Status>up</Status>
<Protocol>up</Protocol>
</entry>
<entry>
<Interface>Vlan10</Interface>
<IP-Address>1.1.1.1</IP-Address>
<OK>YES</OK>
<Method>manual</Method>
<Status>down</Status>
<Protocol>down</Protocol>
</entry>
<entry>
<Interface>Vlan100</Interface>
<IP-Address>10.10.10.100</IP-Address>
<OK>YES</OK>
<Method>manual</Method>
<Status>down</Status>
<Protocol>down</Protocol>
</entry>
<entry>
<Interface>Vlan2020</Interface>
<OK>YES</OK>
<Method>unset</Method>
<Status>down</Status>
<Protocol>down</Protocol>
</entry>
<entry>
<Interface>Wlan-GigabitEthernet0</Interface>
<OK>YES</OK>
<Method>unset</Method>
<Status>up</Status>
<Protocol>up</Protocol>
</entry>
<entry>
<Interface>wlan-ap0</Interface>
<OK>YES</OK>
<Method>unset</Method>
<Status>administratively down</Status>
<Protocol>down</Protocol>
</entry>
</IPInterfaces>
</ShowIpInterfaceBrief>
C881W#

IOS-XRではshowコマンドベースではなく、機器情報の大部分をカバーするxml-schemaを表示することが可能なXML schema browserが実装されています。

RP/0/RSP0/CPU0:ASR9001-1#show xml schema / XML schema browserモードへ移行
Username:admin
Password:
Enter ‘help’ or ‘?’ for help
xml-schema[config]:> oper
xml-schema[oper]:> walkdata HardwareModuleNP
HardwareModuleNP.NodeTable.Node{0/0/CPU0}.NPTable.NP{“np0”}.Counters
Value:
prm_np_counters
NPCounters
Entry
CounterIndex: 16
CounterValue: 2018369
Rate: 3
CounterType: “FWD”
CounterName: “MDF_TX_LC_CPU”
Entry
CounterIndex: 37
CounterValue: 360725012
Rate: 513
CounterType: “FWD”
CounterName: “PARSE_INTR_RECEIVE_CNT”
Entry
CounterIndex: 41
CounterValue: 11709
Rate: 0
CounterType: “FWD”
CounterName: “PARSE_INJ_RECEIVE_CNT”
Entry
CounterIndex: 49
CounterValue: 3391284
Rate: 5
CounterType: “FWD”
CounterName: “PARSE_TM_LOOP_RECEIVE_CNT”
Entry
CounterIndex: 68
CounterValue: 3391284
Rate: 5
CounterType: “FWD”
CounterName: “PRS_HEALTH_MON”
Entry
CounterIndex: 77
CounterValue: 2006663
Rate: 3
CounterType: “FWD”
CounterName: “INTR_FRAME_TYPE_7”
Entry
CounterIndex: 122
CounterValue: 11709
Rate: 0
CounterType: “FWD”
CounterName: “PARSE_LC_INJ_DIAGS_CNT”
Entry
CounterIndex: 285
CounterValue: 2018371
Rate: 3
CounterType: “FWD”
CounterName: “DBG_RSV_EP_L_RSV_ING_PUNT”
Entry
CounterIndex: 790
CounterValue: 11709
Rate: 0
CounterType: “PUNT”
CounterName: “DIAGS”
Entry
CounterIndex: 902
CounterValue: 2006660
Rate: 3
CounterType: “PUNT”
CounterName: “PUNT_STATISTICS”
Entry
CounterIndex: 1206
CounterValue: 1
Rate: 0
CounterType: “DROP”
CounterName: “MODIFY_PUNT_REASON_MISS_DROP”

小ネタNo.5:set default-afi/safi/vrf/bgp-instance

IOS-XRのCLIでは、showコマンドにAFI/SAFIを明示的に指定しなければならないケースが多々あります。
AFI: Address Family Information / IPv4やIPv6等のプロトコル種別
SAFI:Sub-AFI / UnicastやMulticast等、AFIの中の詳細種別
また、特定のvrfに関連する情報はコマンドにそのvrfを指定しなければ見ることはできません。
vrf Mgmt内のipv6 unicastのルーティングテーブルを表示する場合の例

RP/0/RSP0/CPU0:ASR9001-1#show route vrf Mgmt ipv6 unicast
Tue May 19 15:34:27.590 JST

Codes: C – connected, S – static, R – RIP, B – BGP, (>) – Diversion path
D – EIGRP, EX – EIGRP external, O – OSPF, IA – OSPF inter area
N1 – OSPF NSSA external type 1, N2 – OSPF NSSA external type 2
E1 – OSPF external type 1, E2 – OSPF external type 2, E – EGP
i – ISIS, L1 – IS-IS level-1, L2 – IS-IS level-2
ia – IS-IS inter area, su – IS-IS summary null, * – candidate default
U – per-user static route, o – ODR, L – local, G – DAGR
A – access/subscriber, a – Application route, (!) – FRR Backup path

Gateway of last resort is not set

L 2001:db8::1/128 is directly connected,
00:00:08, Loopback100
RP/0/RSP0/CPU0:ASR9001-1#

vrf Mgmt内のbgp ipv4 unicastテーブルを表示する場合の例

RP/0/RSP0/CPU0:ASR9001-1#show bgp vrf Mgmt ipv6 unicast
Tue May 19 16:03:24.254 JST
BGP VRF Mgmt, state: Active
BGP Route Distinguisher: 65501:1
VRF ID: 0x60000002
BGP router identifier 1.1.1.1, local AS number 65501
BGP table state: Active
Table ID: 0xe0800011 RD version: 2
BGP main routing table version 2

Status codes: s suppressed, d damped, h history, * valid, > best
i – internal, r RIB-failure, S stale, N Nexthop-discard
Origin codes: i – IGP, e – EGP, ? – incomplete
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 65501:1 (default for vrf Mgmt)
* 2001:db8::1/128 :: 0 32768 ?

Processed 1 prefixes, 1 paths
RP/0/RSP0/CPU0:ASR9001-1#

複数のvrfやAFI/SAFIを使用してサービス運用を行うような場合、コマンド入力の際に何度も同じ文字列を繰り返し入力しなければなりません。

set default-afi/safi/vrf/ bgp-instanceターミナルオプションを使用することで、特定のvrfやAFI、SAFIに限定して入力を省略することができます。

ipv6 / unicast / vrf Mgmt をdefaultとしてsetした場合の例

RP/0/RSP0/CPU0:ASR9001-1#set default-afi ipv6Tue May 19 16:03:54.852 JST
%% Default Address Family Identifier is set to ipv6
RP/0/RSP0/CPU0:ASR9001-1#set default-safi unicast
Tue May 19 16:03:57.887 JST
%% Default Sub-Address Family Identifier is set to unicast
RP/0/RSP0/CPU0:ASR9001-1#set default-vrf Mgmt
Tue May 19 16:04:03.125 JST
%% Default Virtual Routing/Forwarding is set to Mgmt
RP/0/RSP0/CPU0:ASR9001-1#
RP/0/RSP0/CPU0:ASR9001-1#show route / vrfとipv6 unicastのオプションを省略してもvrf Mgmt ipv6 unicastと同じ出力結果
Tue May 19 16:04:05.579 JST

Codes: C – connected, S – static, R – RIP, B – BGP, (>) – Diversion path
D – EIGRP, EX – EIGRP external, O – OSPF, IA – OSPF inter area
N1 – OSPF NSSA external type 1, N2 – OSPF NSSA external type 2
E1 – OSPF external type 1, E2 – OSPF external type 2, E – EGP
i – ISIS, L1 – IS-IS level-1, L2 – IS-IS level-2
ia – IS-IS inter area, su – IS-IS summary null, * – candidate default
U – per-user static route, o – ODR, L – local, G – DAGR
A – access/subscriber, a – Application route, (!) – FRR Backup path

Gateway of last resort is not set

L 2001:db8::1/128 is directly connected,
00:29:46, Loopback100
RP/0/RSP0/CPU0:ASR9001-1#
RP/0/RSP0/CPU0:ASR9001-1#show bgp vrf Mgmt / ipv6 unicastのオプションを省略してもvrf Mgmt ipv6 unicastと同じ出力結果
Tue May 19 16:04:12.772 JST
BGP VRF Mgmt, state: Active
BGP Route Distinguisher: 65501:1
VRF ID: 0x60000002
BGP router identifier 1.1.1.1, local AS number 65501
BGP table state: Active
Table ID: 0xe0800011 RD version: 2
BGP main routing table version 2

Status codes: s suppressed, d damped, h history, * valid, > best
i – internal, r RIB-failure, S stale, N Nexthop-discard
Origin codes: i – IGP, e – EGP, ? – incomplete
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 65501:1 (default for vrf Mgmt)
* 2001:db8::1/128 :: 0 32768 ?

Processed 1 prefixes, 1 paths
RP/0/RSP0/CPU0:ASR9001-1#

このsetオプションはログイン中のターミナルセッションだけで有効化されるため、一度ログアウトするとdefaultのvrf none / ipv4 / unicastにリセットされます。

残念ながらIOSとIOS-XEにはこのオプションは実装されていません。

まとめ

ここではご紹介しきれませんが、他にもさまざまな便利機能がCisco製ルータには実装されています。
次の後半記事では、もう少し実用性のある便利機能をご紹介します。

執筆者プロフィール

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

イベント/レポート

pagetop