インフラストラクチャの運用
トラブルシューティング
主なエラーカウンタの内容
主なエラーカウンタの種類
no buffer、giants、input errors、CRC、ignored、collisions、late collision
no buffer
・受信したが、バッファが足りずに廃棄したフレームの数
・ブロードキャストストームによりカウンタが増える
giants
・IEEE 802.3フレームの最大サイズを超えるサイズのフレームを受信した数
・giantsカウンタが増加している場合はNIC不良の可能性が考えられる
input errors
・runts、giants、no buffer、CRC、frame、overrun、ignoredの合計数
・各種カウンタの増加
CRC
・FCSに格納されているCRC値と、受信データから再計算したCRC値が一致しなかったフレームの数
・コリジョン、NIC不良、デュプレックスの不一致などによりカウンタが増える
ignored
・バッファが足りず、受信せずに無視したフレームの数
・ブロードキャストストームによりカウンタが増える
collisions
・コリジョン(フレームが衝突した)数
・リンクの使用率が高い状態での通信、半二重を使った通信、デュプレックスの不一致などによりカウンタが増える
late collision
・通常よりも遅れて検出したコリジョンの数(512ビットを送信した後に検出したコリジョン)
・規定値を超える長さのケーブルの使用、デュプレックスの不一致(半二重側で増加)などによりカウンタが増える
トラブルシューティング
ボトムアップ
・物理層から順に確認していくトラブルシューティングの方法
・各層の主な確認ポイントは下記の通り
レイヤ1
ケーブル
レイヤ2
・NIC
・インターフェースのカプセル化タイプ
・clock rate(シリアルインターフェースのDCE側)
レイヤ3
・IPアドレスとサブネットマスク
・ルーティング情報
レイヤ4~7
・ファイアウォール、ACL
・URL
・各種アプリケーション
オートメーション
ネットワーク自動化(Automation)
ネットワーク自動化とは
・SDNコントローラや構成管理ツールなどを採用してできるだけ手動作業をなくす運用のこと
・ネットワーク自動化をすすめることで、障害発生時の対応時間の短縮や、設定変更にかかる負担を減らしたり、ミスをなくして精度の高い作業結果を得られるようになる
従来のコンフィグ(構成)管理の問題点
・機器を実ネットワークに接続後、機器上で反映した設定が原本ファイルに反映されない場合がある
・設定変更の意図と変更箇所の管理が煩雑になる
・全機器のコンフィグを管理する必要があるため、修正が必要になった場合には原本ファイルと実機にもれなく適用する必要がある
構成管理ツールによる自動化(オートメーション)
・集中管理している設定ファイルを編集することで、実機の設定に反映できる
・特定の範囲(機器の役割、機器種別、サブネットなど)を指定して処理が実行できる
・反映処理の結果が確認でき、後続処理の実行判断に使える
・適用した変更をもとに戻すことができる
・実機に適用する前に、変更内容の検証ができる
・処理完了後の実機の状態と、構成管理ツールで作成した状態が一致するかが確認できる
・テンプレート(雛形)を使って、一部の異なる値以外はすべて共通の設定を多数の機器に展開できる
・実行する処理をファイルに記述すれば良いので、スキルのあるエンジニアがいなくても実行できる
構成管理ツールの動作
「PUSH型」と「PULL型」がある
PUSH型
・「構成管理ツールから機器へ設定を行う」方式
・機器側に「エージェント」と呼ばれる特別なプログラムを必要とせず動作する(エージェントレス)ので、サポート対象機器が限定されにくいというメリットがある
PULL型
・「設定対象の機器が構成管理ツールから情報を取得して自身を設定する」方式
・機器側に構成管理ツールと通信する「エージェント」が必要なため、エージェントが動作しない機器はサポートされない
代表的な構成管理ツール
「Ansible、Puppet、Chef」がある
Ansible
・PUSH/PULL:PUSH型
・使用するプロトコル:SSH、NETCONFなど
・定義ファイルの名称:プレイブック(Playbook)
・定義ファイルの記述形式:YAML形式
・サーバ側の待受ポート:なし
・エージェントの要否:不要(エージェントレス)
Puppet
・PUSH/PULL:PULL型
・使用するプロトコル:HTTP
・定義ファイルの名称:マニフェスト(Manifest)
・定義ファイルの記述形式:独自形式
・サーバ側の待受ポート:8140/tcp
・エージェントの要否:必要(外部エージェントも利用可能)
Chef
・PUSH/PULL:PULL型
・使用するプロトコル:HTTP
・定義ファイルの名称:レシピ(Recipe)、クックブック(Cookbook)
・定義ファイルの記述形式:Ruby言語
・サーバ側の待受ポート:10002/tcp
・エージェントの要否:必要
RESTベースAPI(RESTful API)
REST(REpresentational State Transfer)
・ソフトウェアアーキテクチャ(基本構造)の一つ
・以下の6つの要件を満たすもの
クライアント・サーバ型
要求(リクエスト)を行うクライアントと、要求を処理して応答(レスポンス)するサーバで構成される
ステートレス
・処理を行うにあたって、前提となる状態などを保持しない
・例)「認証済み」という状態を持たず、リクエストごとに「認証情報」を送信する
キャッシュの制御
レスポンスの情報を一定時間保持(キャッシュ)可能かを指定できる
統一されたインターフェース
リクエストの方法やデータ形式などが統一されている
階層構造
データや処理ごとに階層構造を取り、それぞれが独立している
コードオンデマンド(任意)
サーバだけでなくクライアント側での処理実行を可能とする
RESTベースAPI(REST-Based API)
・RESTに従ったAPI(Application Programming)のこと
・HTTP(Hypertext Transfer Protocol)はRESTと相性が良いので、多くのRESTful APIで使われている)
・RESTful APIを使って送受信するデータ形式には、主にJSONやXMLが使われる
HTTPの基本
HTTPはクライアントからサーバに対して、どのように動作してほしいか(リクエスト)を送信し、それを受信したサーバが指定された動作を実行した結果(レスポンス)を返却する、リクエスト-レスポンス型のプロトコル
HTTPのリクエストメソッドとCRUD動作
・HTTPではどのように動作してほしいかを「リクエストメソッド」で指定する
・指定されたリクエストメソッドに従って、サーバは自身の持つ情報を送信したり更新したり、あるいは削除したりする
・このような情報の更新動作を「CRUD(Create:作成/Read:読み出し/Update:更新/Delete:削除)」と呼ぶ
HTTPのリクエストメソッドとCRUD動作の関係
・POST:新規作成:C(Create)
・GET:読み出し:R(Read)
・PUT:更新(置き換え):U(Update/Replace)
・PATCH:更新(変更):U(Update/Modify)
・DELETE:削除:D(Delete)
HTTPステータスコード
・サーバからクライアントに返されるHTTPレスポンスの意味を表す3桁のコード
・ステータスコードは以下の5つのクラスに分類される
情報レスポンス
・リクエストを受理し、処理を継続している
・例)100:現時点まで問題はなく、クライアントはリクエストを継続できる
成功レスポンス
・リクエストを理解し、処理された
・例)200:リクエストが成功した
リダイレクト
・要求されたリソースの代わりに新しいリソースを使用した
・例)301:リクエストしたリソースが恒久的に移動した
クライアントエラー
・クライアントが送信したリクエストに問題があった
・例)404:リクエストしたリソースが見つからない
サーバエラー
・サーバー上のエラーでリクエストの処理に失敗した
・例)500:サーバの内部でエラーが発生した
URI(Uniform Resource Identifier)
・リソースを識別する名前の統一された書式
・HTTPでは、リクエストするリソースをURIで指定する
JSON(JavaScript Object Notation)
・HTTP通信を使ったAPI(RESTful API)でよく用いられるデータ形式
・構造が単純で軽量であり、また人間にとってもプログラムにとっても読み書きしやすい形式であるため、多くのプログラミング言語でサポートされている
JSONの基本的なデータ形式
{
”sitename”: “Ping-t”,
”url”: “https://ping-t.com”,
”you_can_learn”: [“network”, “linux”, “database”]
}
JSONデータの読み解き方
・「{}(波括弧)」で囲まれた範囲は「オブジェクト」という1つのデータのかたまり
・「:(コロン)」はキー(値を識別する名前)と値(バリュー)のペア。コロンの左がキー、コロンの右が値
・キーと値のペアは「,(カンマ)」で区切られる
・キーは「”(ダブルクォーテーション)」で囲む
・値が数値の場合はそのまま記述し、値が文字列の場合は「”(ダブルクォーテーション)」で囲む
・キーと値は1対1のペアだけではなく、「[](角括弧)」で囲まれた「配列」や、オブジェクトを値に持つことができる。上記の例では「you_can_learn」というキーに3つの値(network, linux, database)を持つ配列が格納されている
JSONデータの規約
・キーと値のペアが複数ある場合、最後のペアはカンマで終わってはならない
・キーを含め、文字列として扱うものは「””(ダブルクォーテーション)」で囲む
・波括弧({})、角括弧([])、ダブルクォーテーション(””)はペアで使用する(閉じ忘れは構文エラーになる)
Cisco DNA Center
Cisco DNA Center
Cisco DNA Centerを使用したネットワークの特徴
・ネットワークが管理の主体となる
・通信はポリシーによって定義される
Cisco DNA Centerを導入することにより実現できること
・自作プログラムによるネットワークの制御
・迅速な展開
Cisco DNA Centerを使用したネットワーク管理
・ネットワーク機器の導入時にOSイメージとコンフィグを自動投入することが可能であり容易にデバイスを追加できる
・GUI画面上で対処すべきネットワーク上の問題が表示されるためネットワーク監視に役立つ
・各種ツールを用いてネットワークの運用管理を自動化することができる
Cisco DNA Centerの機能を拡張する際に使用するもの
・REST API
・マルチベンダSDK
Cisco DNA CenterのNBI
REST API
Cisco DNA CenterのSBIについて
・Telnet/SSH/SNMPといった従来どおりのアクセス方法もサポートする
・比較的新しい機器ではNETCONF/RESTCONFを使用する
Cisco DNA Centerが提供する「Scalable Groups」について
・セキュリティポリシー適用のコンポーネント
・ネットワーク機器への直接的な設定は必要ない
ネットワーク機器がCisco DNA Centerに情報を通知するのに使う手段
・Syslog
・SNMP
SD-Accessのコントローラ
Cisco DNA Center