動的ルーティング(EIGRP概要編)
EIGRPの特徴
DUALを使用した高速コンバージェンス
ルーティングアルゴリズムにDUAL(Diffusing Updete ALgorithm)を使用し、各宛先ネットワークに対し、ループフリーな最適経路とバックアップルート(代替パス)を選択し、ルーティングテーブルに格納する。
ネイバー(隣接ルータ)から受信したすべての経路をトポロジテーブルに格納するため、最適経路障害時には迅速にバックアップルートを適用し、高速コンバージェンスを実現する。
部分的アップデート
安定したネットワーク下ではネイバー(隣接)関係を維持するためのHelloパケットだけを送信し、定期的なアップデートは行わない。
経路パス・メトリックに変更があった場合に、影響を受けるルータに対してのみ、該当経路に関する部分的な情報をトリガードアップデートで送信する。
等・不等コスト経路のロードバランシング(負荷分散)対応
ネットワークのトラフィックフロー(特定通信相手間での通信パケット量・通信状態)をより適切に分散させることが可能。
EIGRPの動作
EIGRPパケットの分類
EIGRPで使用されるパケットは、受信時に確認応答が必要な「高信頼性パケット」と確認応答不要の「無信頼性パケット」に大別できる。
高信頼性パケット
- アップデートパケット(Update)
ルーティング情報を通知するために使用。EIGRP設定ルータはネイバー(隣接ルータ)を検出すると、アップデートパケットを送信する。
このパケットはユニキャスト(1対1)またはマルチキャスト(1対多)で送信される。
- クエリパケット(Query)
宛先へのサクセサ(最適ルート)がダウンし、その宛先へのフィージブルサクセサ(バックアップルート)が存在しない場合にネイバーに対しての問い合わせに使用する。
ネイバーはクエリパケットを受信することで、宛先へのルートがダウンしたことを把握する。
- 応答パケット(Reply)
クエリへの応答として使用する。このパケットはクエリパケットの送信者に対してユニキャストで送信される。
無信頼性パケット
- Helloパケット
EIGRP設定ルータはネイバーの検出にHelloパケットを使用する。
- Ackパケット
アップデート・クエリ・応答の各高信頼性パケットを受信した際に、信頼性を高めるための確認応答として使用される。
このパケットはユニキャストで送信される。
EIGRPテーブル
- ネイバーテーブル
ネイバー(隣接)関係を確立したEIGRPルータのリスト。
ネイバーのアドレス・リンクしているインターフェイスが記録されている。
- トポロジテーブル
1:ネイバーによってアドバタイズ(通知)されたすべてのネットワーク経路情報
2:EIGRPを有効化したインターフェイスの直接接続ネットワーク
3:ルータで実行した集約経路情報
4:他のルーティングプロセスからEIGRPに配布されたネットワーク経路情報
以上の4点が格納される。
各エントリでは、宛先ネットワークとそれを通知したネイバーが関連付けされている。
また、通知されたメトリックと、自身からその宛先に到達するまでのメトリックが記録されている。
※トポロジテーブルのエントリ状態
Passive:経路が利用可能でルーティングできる状態 Active:クエリを送信・応答待ち(経路使用不能)状態
- ルーティングテーブル
トポロジテーブルから得た最適経路のリスト。
DUAL(Diffusing Update Algorithm)
DUALはすべてのネイバーが通知した全経路をチェックし、メトリックによって各宛先へのループのない経路を選択し、その経路をルーティングテーブルに格納する。
ADとFD
- AD(アドバタイズドディスタンス)
ネクストホップルータ(隣接ルータ)から宛先ネットワークまでのメトリック値
- FD(フィージブルディスタンス)
ローカルルータ(送信元)から宛先ネットワークまでのメトリック値
サクセサとフィージブルサクセサ
- サクセサ
ループしないことが保証されている最小メトリック(FD)をもつネクストホップルータを指す。
最適経路のネクストホップとしてルーティングテーブルに格納され、実際にパケット転送に使用される。
- フィージブルサクセサ
バックアップ用のネクストホップルータを指す。
選定の条件として、ADが現在指定されているサクセサのFDよりも小さい必要がある。
サクセサの選択
宛先ネットワークまでのFDが最小となるネクストホップルータがサクセサに選択される。
最小FDの経路が複数ある場合はサクセサが複数存在する。
デフォルト設定では最大4個のサクセサをルーティングテーブルに格納できる。
下図の場合、R2経由のルートがサクセサに選択される。
フィージブルサクセサの選択
フィージブルサクセサは、サクセサに選択された経路以外のものから以下の条件によって決定される。
サクセサ以外の経路のAD < サクセサ経路のFD
特定の宛先ネットワークに対して複数の経路がフィージブルサクセサとしての条件を満たしている場合には、該当する複数の経路がトポロジテーブルに保持される。
トポロジ変更によるルーティングテーブルの更新(サクセサダウン時のフローチャート)
1:DUALがリンク障害を検知 ↓ 2:ネイバー関係を解消 ↓ 3:ネイバーから学習した全ルート情報を削除 ↓ 4:フィージブルサクセサの有無の確認 →YES:フィージブルサクセサをサクセサに切り替えてルーティングテーブルを更新(ローカル処理による高速コンバージェンス) ※更新経路はすぐにPassive(利用可能)となる。 →NO :他のネイバーにQueryを送信して問い合わせ ※この時点で経路はActive(利用不可)状態となる ↓ 全てのネイバーからReplyを受信 ↓ DUAL再計算でサクセサを選択しルーティングテーブルを更新 ※この時点で経路がPassive(利用可能)となる。
メトリック
EIGRPは複合メトリックによって最適経路を決定する。
- 遅延
- 信頼性(オプション※)
- 負荷(オプション※)
※信頼性・負荷をメトリックに追加するとトポロジテーブルの再計算頻度が高くなるため、メトリックへの追加は非推奨されている。
メトリック計算法
宛先ネットワークまでのリンクが持つ変数(帯域幅・遅延など)に重み付けをした数値の合計。
重み付けとなる係数はK値と呼ばれる。
K1=1 K2=0 K3=1 K4=0 K5=0
EIGRPメトリック計算には以下の公式を使用する。
メトリック = 256*[(K1*帯域幅)+(K2*帯域幅)/(256-負荷)+(K3*遅延)]*[K5/(信頼性+K4)]
ただし、K2・K4・K5の値は0なので、実際は以下の式に簡略化が可能。
メトリック = 256*(帯域幅+遅延) 帯域幅 = 10^7/リンクの最小帯域幅(kbps) 遅延 = リンクの累積遅延/10
※メトリック計算例
R1からネットワーク10.1.1.0/24までのルートは
①R2-R3経由
②R4経由
となるため各メトリックは以下のようになる。
R2-R3経由のメトリック
リンクの最小帯域幅 = 128kbps 累積遅延 = (20,000+20,000+20,000+100)/10 = 6,010 ↓ 帯域幅 = 10^7/128*256 = 20,000,000 遅延 = 6,010*256 = 1,538,560 20,000,000+1,538,560=21,538,560
R4経由のメトリック
リンクの最小帯域幅 = 64kbps 累積遅延 = (20,000+20,000+100)/10 = 4,010 ↓ 帯域幅 = 10^7/64*256 = 40,000,000 遅延 = 4,010*256 = 1,026,560 40,000,000+1,026,560=41,026,560
R2経由のメトリック<R4経由のメトリックとなるため、R2がサクセサ(最適ルート)となりルーティングテーブルに格納される。
ACL設定で行き詰まっている話
これまではただひたすら自作したネットワークの疎通確認ばかり取ってきましたが、今回はGNS3上でACL(アクセス制御リスト)を作成・設定して動作確認を行ってみました。
ACLの概要
ACL(Access Control List):アクセス制御リスト
ルータを通過する通信アクセスを制御するリストのこと。
特定の端末・ネットワークからのアクセスに対して許可・拒否の設定が可能。
ACLが設定されたルータはパケットを受信するとACLの条件を1行目から順番に照合し、最初に合致した条件に従ってパケットの通過を許可or拒否する。
ACLの重要規則:暗黙のdeny any
ACL作成時に注意しなければならないのが「暗黙のdeny any」という規則。
作成したACLの最終行に必ず「deny(拒否)any(全て) ⇒すべてのパケット通過を拒否する」という設定が付加される。
この最終行のdeny anyはACLには表示されないため「暗黙のdeny any」と呼ばれる。
ACLの種類
GNS3上でのACL設定
以前作成したネットワーク構成にACLを設定して、特定の端末・ネットワークからのアクセスを制御してみました。
今回のACL設定
- 特定端末のアクセス制御:PC3(192.168.2.2)からPC1(192.168.1.1)へのアクセスを拒否
- 特定ネットワークのアクセス制御:192.168.3.0ネットワーク(PC4・5)からのPC1(192.168.1.1)へのアクセスを拒否
ACLはR1(PC1側)のインターフェイスg0/0、インバウンドで設定しました。
R1(config)#access-list 101 deny ip host 192.168.2.2 host 192.168.1.1 →ACL[101]を作成し、「ホスト192.168.2.2からホスト192.168.1.1へのIPアクセスをdeny(拒否)する」設定を追加 R1(config)#access-list 101 deny ip 192.168.3.0 0.0.0.255 host 192.168.1.1 →ACL[101]に「192.168.3.0ネットワークからホスト192.168.1.1へのIPアクセスをdeny(拒否)する」設定を追加 R1(config)#access-list 101 permit ip any any →ACL[101]に「全てのIPアクセスをpermit(許可)する」設定を追加 R1(config)#interface gigabitethernet 0/0 ←R1のインターフェイスg0/0設定へ移行 R1(config-if)#ip access-list 101 in ←ACL[101]をインバウンドに設定
ここで作成したACL設定を確認することに。
R1#show access-lists
Extended(拡張)ACL[101]に3行ほど条件文が追加されています。
表示されていませんが、最終行には「暗黙のdeny any」が設定されています。
1・2行目の拒否設定のみだと、設定外の他の端末・ネットワークからのアクセスは暗黙のdeny anyに該当してしまいパケットが破棄されます。
そのため、3行目にすべてのIPアクセスを許可する条件文を足してあります。
動作確認
PC2(192.168.2.1)からのPing
ACL設定外のPC2は、PC1(192.168.1.1)へのPingが5回通っています。
PC3(192.168.2.2)からのPing
ACLで拒否設定をしたPC3はちょっと様子が違います…。
Pingが192.168.10.1(R1のg0/0のIPアドレス)で返って来ています。
あとは謎の「communication administratively prohibited」の表示…。
英語読めませんが調べてみると、「通信が管理上遮断されている」というICMPメッセージでした。
PC4・5のPing結果も同様に、管理上遮断のICMPメッセージが返ってきました。
ここまでは全く問題なくOKでした。
行き詰まった話
ACLは一方向設定なので、今回設定したPC1へのアクセス制御はできていることが分かったのですが…
逆にPC1からそれぞれの端末にアクセスすると、ACLに設定してある端末(PC3~5)へのアクセス(Ping)がすべてタイムアウトになってしまいました…
原因考察
PC1(192.168.1.1)からPC3~5へのICMPエコー要求は通ってる(と思いたい…)が、エコー要求を受けたPC3~5からPC1へのエコー応答がR1に設定したACLで遮断されている(?)
対策
テキストに書いてある構文を試しに試しましたが…全く分かりません。
設定を追加すればいいのか、そもそもの設定自体を変えればいいのかもこんがらがってきました。
あと一歩のところという感覚はあるのですが、ここで行き詰まりました。
IPv6アドレス手動設定~スタティックルーティング
今回はIPv6について書きました。
初心者の自分でもあとあと見返してわかるように書いてます。
訂正箇所あったらコメントをお願いします。
IPアドレスの種類
IPv6のメリット
膨大なアドレス数
世界の全人口一人ひとりにアドレスを100兆個割り当ててもまだ余るほどの膨大なアドレス数。
IPv4ではアドレス枯渇対策として、NAT(Network Address Translater)/PAT(Port Address Translation)を使用している。
(※NAT/PATについてはまだ勉強中です…)
プラグアンドプレイによる自動設定
IPv6にはルータからホスト端末にIPアドレスを自動で割り当てるAuto Configulation機能が備わっている。
専門的な知識がなくとも簡単にネットワーク接続が可能。
(※オートコンフィグ機能はまだ検証段階ですが確かに便利でした。)
ルータ・仮想端末(VPCS)上でのIPv6手動設定
今回は以下のトポロジで検証を行いました。
- R1設定
R1(config)#ipv6 unicast-routing ←ノードレベルでのIPv6ルーティングの有効化 --FastEthernet側設定 R1(config-if)#ipv6 enable ←インターフェイスレベルでのIPv6の有効化 R1(config-if)#ipv6 address 2001:db8:0:1::254/64 ←IPv6アドレスの設定 R1(config-if)#ipv6 address fe80::1 link-local ←リンクローカルアドレスの設定 R1(config-if)#no shutdown ←アドレス設定の有効化 ==GigabitEthernet側設定 R1(config-if)#ipv6 enable R1(config-if)#ipv6 address 2001:db8:0:2::1/64 R1(config-if)#ipv6 address fe80::1 link-local R1(config-if)#no shutdown
- R2設定
R2の設定もR1と同様に行いました。
R2(config)#ipv6 unicast-routing --FastEthernet側設定 R2(config-if)#ipv6 enable R2(config-if)#ipv6 address 2001:db8:0:3:254/64 R2(config-if)#ipv6 address fe80::2 link-local R2(config-if)#no shutdown ==GigabitEthernet側設定 R2(config-if)#ipv6 enable R2(config-if)#ipv6 address 2001:db8:0:2::2/64 R2(config-if)#ipv6 address fe80::2 link-local R2(config-if)#no shutdown
- PC1・2設定
--PC1設定-- PC1>ip 2001:db8:0:1::1 ==PC2設定== PC2>ip 2001:db8:0:3::1
R1~R2間のスタティックルーティング
--R1側設定-- R1(config)#ipv6 route 2001:db8:0:3::/64 gigabitethernet fe80::2 ==R2側設定== R2(config)#ipv6 route 2001:db8:0:1::/64 gigabitethernet fe80::1
PC1~PC2間疎通確認
PC1>ping 2001:db8:0:3::1 PC1>trace 2001:db8:0:3::1
疎通確認が取れたのでとりあえず一安心です。
履歴書
今回は勉強から離れて自分のことについて少し振り返ってみようと思います。
かなり長いですが、難しい言葉は使っていません。使えません。
もしこのBlogを見てくださってる方がいれば、Author(太郎)の自己紹介的なものとして読んでください。
自己紹介
Author(太郎)について
1980年代生まれ
男
臨床検査技師⇒インフラ系SE(見習い)
HNの「太郎」は本名から取ってます。
Authorの趣味
バイク
いまだに中・大型自動二輪免許は持っていませんが、ヤ○オクで落札したジャンクのYAMAHA YB-1(2st)49ccをレストアして乗り回しています。
将来的には中型免許を取ってYAMAHA SR400に乗りたい…
音楽・オーディオ
父の音楽・オーディオ好きからか、自分もそっちの方向に傾倒しています。
邦・洋、ジャンル問わず広く浅く聴きますがややRock・Metal寄りです。コレクション数だけで見ると軽くレンタルショップ開けそうなくらい。
特に好きなのはGREEN DAYと奥田民生。
www.youtube.com
www.youtube.com
Marshallのヘッドホンを愛用してます。
写真
バイクで行った先々で撮ったものや、その時々に聴いてる音楽、美味しかったものなどをInstagramに上げています。
Blogを始めたきっかけ
IT業界に異業種転職して全く0からのスタートになるので、勉強したこと・感じた事を備忘録にして記録したかった。
仕事について
医療系からITに進んだきっかけ
友達や職場の方から「なんで医療系からIT?」とよく聞かれます。
自分でもそうそうこの流れは無いと思ってますが、ITを目指したのには下の理由がありました。
Author自身の臨床検査技師としての適性の問題
臨床検査技師を目指していた専門学校時代からすでに体調不良を起こしていました。
もとはメンタル的なものだったのですが、次第に身体的にも状態が悪くなっていきました。
何とか国家試験をパスしてとある病院に就職しましたが…心身の状態が悪い中仕事を続けられず、退職。
その後も検査センターで検査技師・臨床検査に伴うルート営業もしたりしましたが体調は以前戻らず…
当時の状況を深く思い出せないほど混乱もしていました。傍目から見てもだいぶおかしかったみたいです。
ある時連れていかれた病院の当時の主治医の判断や職場判断の結果、「臨床検査技師としての適性に疑義が生じる」とのことでした。
2015年1月、ここで臨床検査技師の職を辞することに。
(国家資格としてはまだ有効ですがAuthor個人的にも資格を使うつもりはもうないです。)
臨床検査技師を辞めてから
それまで曲がりなりにも臨床検査技師としてやってきましたが、職を辞めた途端にさらに体調が悪化しました。
新しい仕事の前にまず体調を何とかしないと以前の二の舞だと思い、近所のとある作業リハビリに通いました。
作業リハビリで頭・体を使いながら徐々に体調を戻していきました。
心身面でかなりキツい出来事もありましたが…いま考えると作業リハビリ通っててよかったと思っています。
通ってなかったら本当にポンコツになっていました。
半年ほど作業リハビリに通った2015年の夏、検査技師時代には考えられないくらい体調も戻って、「そろそろ社会復帰!」と考え出しました。
ただし、手元にあった仕事に使えそうな資源は中古で買ったノートPCが1台。
かなり無謀と思うかもしれません。正直いまでも「まだおかしい状態が続いているのかも」と思います。
ただその時は、「この中古PCを活用して何かできないだろうか…。」その1点だけでした。
ITを目指したのはそこからでした。
勉強の進捗
当初はWeb系言語の勉強をしていましたが、「肌に合わない…頭に入らない…。」
開発系の言語も同じでした。
そこで目を付けたのがネットワーク・サーバなどのインフラ系。
ここから先はBlog記事を参照ください。現在進行形で勉強中です。
要約
ダラダラ書きましたが…
今まで2*年生きてきて、今ほど「人とのつながりを大事にしたい」と思ったことはありません。
家族や友人をはじめ、検査技師時代の同期や作業リハビリ関係でお世話になった人、IT業界に入るきっかけをくれたいまの職場の方々…
そもそもAuthorは意識高い系ではありません。
根っからの意識低い系、かつ人生経験もそんなにありません。体調不良をひきずり、周囲にかなり迷惑をかけました。
ただ、1度社会のレールからズレて色々失ったからこそ見えたものもあります。
「このク○みたいなAuthorを見放さずに、いま現在仕事ができるまでに回復させてくれた方々に恩返しがしたい。」
いまはこの1点を原動力に生活しています。
Ciscoルータ上のDHCP設定方法~VPCSへの割り当て・設定検証
今回はGNS3上のルータをDHCPサーバとして機能させるところを検証してみました。
今回のネットワーク設定です。
R1 Fastethernet 1/0 :192.168.1.254 /24 PC1-4 : DHCP割り当てのため未設定
早速R1のDHCPサーバ設定を行ってみます。
R1のDHCPサーバ設定
R1#configure terminal R1(config)#ip dhcp pool dhcp1 ←DHCPプール「dhcp1」を作成 R1(dhcp-config)#network 192.168.1.0 /24 ←DHCPプールのネットワークアドレス・サブネットマスクを指定 R1(dhcp-config)#default-router 192.168.1.254 ←デフォルトゲートウェイ(R1のFa1/0)を指定 R1(dhcp-config)#exit R1#ip dhcp excluded-address 192.168.1.101 192.168.1.254 ←割り当てから除外するIPアドレス範囲を指定
ここで作成したプール「dhcp1」を確認することに。
R1#show ip dhcp pool dhcp1
すると以下の画面が。
斜め読みすると…
DHCPプール内の合計アドレス数:254個 リース(割り当て)されたアドレス:0個 割り当て除外されたアドレス:154個 次に割り当てるアドレス:192.168.1.1 割り当てるIPアドレス範囲:192.168.1.1~192.168.1.254 リースされたアドレス数:0個
まだPC1~4にIPアドレスを割り当てていないので動きはありません。
次に、作成したDHCPプールからPC1-4(VPCS)にIPアドレスを割り当てることに。
各PCのコンソール上で以下を入力すると割り当てられました。
PC1-4 >dhcp
PC1のDHCP割り当て時のコンソールが以下のキャプチャです。
ここで再度R1のDHCPプール情報を見てみると…
DHCPプール内の合計アドレス数:254個 リース(割り当て)されたアドレス:4個 割り当て除外されたアドレス:154個 次に割り当てるアドレス:192.168.1.5 割り当てるIPアドレス範囲:192.168.1.1~192.168.1.254 リースされたアドレス数:4個
これでR1のDHCPサーバとしての機能が確認されました。