Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

The Art of Network Protocols - RIP編 -

2,419 views

Published on

中央付近のゾーンでルートを設定したときの動画。
http://www.youtube.com/watch?v=zY6IkpsPVr0
隅でルートを設定したときの動画。
http://www.youtube.com/watch?v=OUTFnov_vM8
新春ハッタリ企画
The Art of Network Protocols
- RIP編 -
2012年1月28日
東京OpenSolaris勉強会
きりんぐみ
秋山 尚之

Published in: Technology
  • Be the first to comment

  • Be the first to like this

The Art of Network Protocols - RIP編 -

  1. 1. 1 1 新春ハッタリ企画 The Art of Network Protocols - RIP編 - 2012年1月28日 東京OpenSolaris勉強会 きりんぐみ 秋山 尚之 The Art of Network Protocols, RIP Edition by AKIYAMA, Takayuki
  2. 2. 2 2 自己紹介 •秋山 尚之 •「ネットワークアーティスト」 •@kirin_gumi •takayuki.akiyama@gmail.com Self-introduction: “Network Artist”
  3. 3. 3 3 前回の発表 •新春大ボラ企画 耐故障性状態可視化ツールの試作 •2011年1月29日 •東京OpenSolaris勉強会 •http://kirin-gumi.net/doc/20110129/ Last presentation in January 29, 2011
  4. 4. 4 4 略歴 •某ISPで15年ほどお手伝い。 •立ち上げからその後の運用、構築まで •サーバ •ネットワーク •ツール作り Career: an ISP engineer
  5. 5. 5 5 サーバ(1) •必須 •DNS •Mail •少なくとも当初はおまけ扱い •ユーザ用Web •News Servers
  6. 6. 6 6 サーバ(2) •認証、課金 •radius •DB •AP用 •管理用 •機器の状態管理 •運用支援ツール Servers (continued)
  7. 7. 7 7 ネットワーク機器 •HUB、L2SW •L3SW、ルータ •ATM SW •ダイヤルアップルータ Networking devices
  8. 8. 8 8 ネットワークプロトコル •可視化で教育的効果が得られそうなもの •STP •VRRP •RIP •OSPF •BGP Network protocols
  9. 9. 9 9 今回のテーマ •RIP •Routing Information Protocol (RFC 1058) •RIP Version 2 (RFC 2453) •RIPng for IPv6 (RFC 2080) RIP is the theme of this presentation.
  10. 10. 10 10 ルーティングの必要性 Sample network diagram Client Server1 Server2 Server3 Router1 Router2 Network1 Network2 Network0 Network3
  11. 11. 11 11 同一ネットワーク内の通信 Communication in a network Client Server1 Server2 Server3 Router1 Router2 Network1 Network2 Network0 Network3
  12. 12. 12 12 デフォルトルートを指定 Adding a default route Client Server1 Server2 Server3 Router1 Router2 Network1 Network2 Network0 Network3 デフォルトルート
  13. 13. 13 13 ルータに経路があれば Routing on the routers Client Server1 Server2 Server3 Router1 Router2 Network1 Network2 Network0 Network3 デフォルトルート
  14. 14. 14 14 スタティックルーティング Static routing Router1 Router2 Network1 Network2 Network0 Network3 Network3は あちら Network1と Network2は あちら
  15. 15. 15 15 ダイナミックルーティング Dynamic routing Router1 Router2 Network1 Network2 Network0 Network3 Network1と Network2は こちら Network3は こちら
  16. 16. 16 16 RIP(1) RIP •ディスタンスベクタアルゴリズム •宛先へのディスタンス(メトリック)を隣接 ルータ間で交換 •メトリックはホップ数(ルータを経由すると+1) •各ルータはメトリックが最小のものを採用 •メトリックは1〜16 •16は「無限大」
  17. 17. 17 17 RIP(2) RIP (continued) •520/udp •ブロードキャスト •タイマー •30秒ごとに更新応答 •180秒間更新がこないと有効期限切れ •その後120秒で抹消
  18. 18. 18 18 RIP-2 RIP-2 •マルチキャスト •サブネットマスク、ネクストホップをエントリ に含む •認証機能
  19. 19. 19 19 RIPng RIPng •IPv6対応
  20. 20. 20 20 Solaris 11のRIP Routing daemon on Solaris 11 •in.routed(1M) •RIPv2 •デフォルトで起動される。 •/etc/defaultrouterがあると起動されない。 •routeadm(1M)で制御可能
  21. 21. 21 21 routingとforwarding •routingとforwardingは別 •IPv4とIPv6でも別 •デフォルトでipv4-forwardingはdisabled Routing and forwarding
  22. 22. 22 22 Solarisをルータとして使う Solaris server as a router Router1 Solaris Network1 Network2 Network0 Network3 forwarding
  23. 23. 23 23 ルータとして使うには •Router1がRIPをしゃべってくれればよい。 •20世紀にはよく見られた構成? •今でも残っているため、ルータのRIPを止め られないところがあるらしい。 •ただしforwardingを有効にしないと、経路 はあっても転送はできない。 Using a Solaris server as a router
  24. 24. 24 24 今回やりたいこと •ルータを多数用意し、相互接続 •RIPを設定し、経路の伝達を観察 Now I will show you ...
  25. 25. 25 25 10x10 RIPグリッド 10x10 RIP grid
  26. 26. 26 26 使用する機器 •HP ProLiant ML110 G6 •CPUはCeleronで十分 •NICは4つ必要(4ポートものを増設) •400W •Solaris 11 11/11をインストール •これを100台用意します。 Running 100 servers
  27. 27. 27 27 ラックの様子(一部) Rack view
  28. 28. 28 28 実際の構成 •1台のサーバにゾーンを100個作成 •ML110 G6 •Core i3-530 •16GB •ノートPC(メモリ4GB)でも動いた。 •ただしSolaris 11 Express 100 zones on a server indeed
  29. 29. 29 29 ゾーン作成方針 Cloning a template zone, non-interactive install •まずテンプレートゾーンを作成。 •それを100個複製する。 •ゾーンの初回起動時の対話式設定は、一 切行わない。 •100回もやっていられない。
  30. 30. 30 30 ネットワーク構成要素(例) Network configuration ゾーン z305 v3_4 V3_5 h2_5 h3_5 e3_5 192.168.135.1 w3_5 192.168.125.2 n3_5 s3_5 192.168.43.2 192.168.53.1 z304 z405 etherstub vnic X Y
  31. 31. 31 31 命名規則 Naming convention •記号 + 「”%02d%02d”, x, y」としたかっ たが、etherstub、vnicでは使えない。 •英字で始まり、数字で終わること。 •最後の数字を0で始めてはいけない。 •e304はよいが、e0304は不可。 •最終的に前図のとおりとなった。
  32. 32. 32 32 テンプレートゾーン(1) ネットワークの構成 Template zone ゾーン z0 d0 d0 d0 d0 e0 10.0.2.2/24 w0 10.0.4.4/24 n0 s0 10.0.1.1/24 10.0.3.3/24 etherstub(全vnic共用) vnic
  33. 33. 33 33 テンプレートゾーン(2) etherstub、vnicの作成 Creating an etherstub and vnics # dladm create-etherstub d0 # dladm create-vnic -l d0 n0 # dladm create-vnic -l d0 e0 # dladm create-vnic -l d0 s0 # dladm create-vnic -l d0 w0
  34. 34. 34 34 テンプレートゾーン(3) プロファイルの作成 従来のJumpStartのsysidcfgに相当するもの。 # sysconfig create-profile -o z0.xml 対話式に設定していく。 Making a profile
  35. 35. 35 35 テンプレートゾーン(4) sysconfig 最初の画面 System Configuration Tool System Configuration Tool enables you to specify the following configuration parameters for your newly-installed Oracle Solaris 11 system: - network, time zone, date and time, user and root accounts, name services System Configuration Tool produces an SMF profile file in ./z0.xml. How to navigate through this tool: - Use the function keys listed at the bottom of each screen to move from screen to screen and to perform other operations. - Use the up/down arrow keys to change the selection or to move between input fields. - If your keyboard does not have function keys, or they do not respond, press ESC; the legend at the bottom of the screen will change to show the ESC keys for navigation and other functions. F2_Continue F6_Help F9_Quit sysconfig create-profile: the first screen
  36. 36. 36 36 テンプレートゾーン(5) sysconfigの設定内容 •コンピュータ名: z0、 ネットワーク設定: None (今回はしない) •タイムゾーン: Japan •日時 •rootのパスワードを設定、ユーザは不要 sysconfig components
  37. 37. 37 37 テンプレートゾーン(6) sysconfig 最終確認画面 System Configuration Summary Review the settings below before continuing. Go back (F3) to make changes. Time Zone: Japan Language: *The following can be changed when logging in. Default language: C/POSIX Keyboard layout: *The following can be changed when logging in. Default keyboard layout: US-English Terminal type: sun-color Users: No user account Network: Computer name: z0 Network Configuration: None F2_Apply F3_Back F6_Help F9_Quit sysconfig create-profile: the last screen
  38. 38. 38 38 テンプレートゾーン(7) zonecfg コマンドファイル # cat z0.cfg create -b set zonepath=/zones/z0 set brand=solaris set autoboot=false set ip-type=exclusive add net set allowed-address=10.0.1.1/24 set configure-allowed-address=true set physical=n0 end add net set allowed-address=10.0.2.2/24 set configure-allowed-address=true set physical=e0 end (つづく) zonecfg command file
  39. 39. 39 39 テンプレートゾーン(8) (つづき) (つづき) add net set allowed-address=10.0.3.3/24 set configure-allowed-address=true set physical=s0 end add net set allowed-address=10.0.4.4/24 set configure-allowed-address=true set physical=w0 end zonecfg command file (continued)
  40. 40. 40 40 テンプレートゾーン(9) ゾーンのインストール # zonecfg -z z0 -f z0.cfg # zoneadm -z z0 install -c $PWD/z0.xml # -cで指定するプロファイルは、絶対パスでないと動かなかった。 # zoneadm -z z0 boot -s # ここではシングルユーザモードで起動。 # zlogin -C z0 # プロファイルで指定したパスワードを使い、rootでコンソールからログイン。 # 事後設定が不要なことを確認。 # ^D # ここでゾーンを停止してもよいが、不要なサービスを止めることとする。 Installing a template zone
  41. 41. 41 41 テンプレートゾーン(10) 不要なサービスの停止 メモリの使用量を減らすため、サービスを極力停止する。 # svcadm disable svc:/network/smtp:sendmail # svcadm disable svc:/network/sendmail-client:default # svcadm disable svc:/network/ssh:default # svcadm disable svc:/network/ipmp:default # svcadm disable svc:/system/filesystem/autofs:default # svcadm disable svc:/network/security/ktkt_warn:default # svcadm disable svc:/network/rpc/gss:default # svcadm disable svc:/network/inetd:default # svcadm disable svc:/system/fmd:default # svcadm disable svc:/network/rpc/bind:default # svcadm disable svc:/system/fm/smtp-notify:default # svcadm disable svc:/system/system-log:default # svcadm disable svc:/system/cron:default Disabling unnecessary services
  42. 42. 42 42 テンプレートゾーン(11) サービスを停止した効果 prstat -Z の出力の比較 ZONEID NPROC SWAP RSS MEMORY TIME CPU ZONE 8 29 163M 85M 0.5% 0:00:22 0.0% z0 ZONEID NPROC SWAP RSS MEMORY TIME CPU ZONE 9 17 81M 47M 0.3% 0:00:06 0.3% z0 停止前 停止後 Reported memory size is reduced.
  43. 43. 43 43 RIP用ゾーンの作成(1) zonecfgコマンドファイル z0.cfgをゾーンごとに変更 ... set zonepath=/zones/z0 ... set allowed-address=10.0.1.1/24 set physical=n0 ... set allowed-address=10.0.2.2/24 set physical=e0 ... set allowed-address=10.0.3.3/24 set physical=s0 ... set allowed-address=10.0.4.4/24 set physical=w0 ... zonecfg command file for new zones
  44. 44. 44 44 RIP用ゾーンの作成(2) プロファイル z0.xmlをゾーンごとに変更 ... <service version="1" type="service" name="system/identity"> <instance enabled="true" name="node"> <property_group type="application" name="config"> <propval type="astring" name="nodename" value="z0"/> </property_group> </instance> </service> ... profile for new zones
  45. 45. 45 45 RIP用ゾーンの作成(3) ゾーンの起動 シェルスクリプトでループを回し、ゾーンを100個つくる。 # zoneadm -z z0 shutdown # ゾーンごとのループ # コマンドファイル生成 # プロファイル生成 # zonecfg -z zone -f command_file # zoneadm -z zone clone -c profile z0 # zoneadm -z zone boot # zoneadm -z zone shutdown -r # # 再起動しないとNICのアドレスが有効にならなかった。 Making new zones
  46. 46. 46 46 RIP用ゾーンの作成(4) フォワーディングの設定 シェルスクリプトでループを回し、各ゾーンで設定する。 # zlogin -z zone routeadm -u -e ipv4-forwarding これだけでは各IFは、forwardingになっていない。 # ipadm show-ifprop IFNAME PROPERTY PROTO PERM CURRENT PERSISTENT DEFAULT POSSIBLE … w0 forwarding ipv4 rw off -- off on,off リブートして対処した。 # zlogin -z zone shutdown -r Enabling ipv4-forwarding
  47. 47. 47 47 デモの内容 •任意のゾーンにスタティックルートを設定 •172.16.0.0/16 •グローバルゾーンからrtquery(1M)で取得 •netstat -r でもよいが、 •rtqueryだとメトリックも得られる。 Demonstration: adding route 172.16.0.0/16 on some zone
  48. 48. 48 48 netstat -r の出力例 z505# netstat -rn Routing Table: IPv4 Destination Gateway Flags Ref Use Interface -------------------- -------------------- ----- ----- ---------- --------- 10.5.5.0 10.5.5.1 U 2 0 t5_5 127.0.0.1 127.0.0.1 UH 3 30556 lo0 172.16.0.0 10.5.5.2 UG 1 0 192.168.1.0 192.168.145.1 UG 1 0 w5_5 192.168.1.0 192.168.45.1 UG 1 0 n5_5 192.168.2.0 192.168.145.1 UG 1 0 w5_5 192.168.2.0 192.168.45.1 UG 1 0 n5_5 192.168.3.0 192.168.45.1 UG 1 0 n5_5 192.168.4.0 192.168.45.1 UG 1 0 n5_5 192.168.4.0 192.168.145.1 UG 1 0 w5_5 ... Sample output of netstat -r
  49. 49. 49 49 rtqueryの出力例 z505# rtquery -n 127.0.0.1 received on interface lo0 (1): RIPv2 504 bytes 10.5.5.0/24 metric 1 192.168.1.0/24 metric 9 nhop=192.168.45.1 192.168.3.0/24 metric 7 nhop=192.168.45.1 192.168.2.0/24 metric 8 nhop=192.168.45.1 192.168.5.0/24 metric 5 nhop=192.168.45.1 192.168.6.0/24 metric 6 nhop=192.168.45.1 192.168.4.0/24 metric 6 nhop=192.168.145.1 192.168.8.0/24 metric 8 nhop=192.168.45.1 ... Sample output of rtquery
  50. 50. 50 50 デモ用データ取得 スクリプト A shell script on the global zone gathers routes in non-global zones. •シェルスクリプト •グローバルゾーンから各ゾーンのデータを 取得 •zlogin ゾーン rtquery -n •nhopを矢印(↑→↓←)に変換 •メトリックを表示
  51. 51. 51 51 データ表示例 Sample output of the script: next hops and metrics →↓→↓↓↓↓↓↓← 9 8 7 6 5 6 7 8 910 ↓↓→↓↓←↓↓↓↓ 8 7 6 5 4 5 6 7 8 9 →↓↓→↓←↓←←← 7 6 5 4 3 4 5 6 7 8 →→↓↓↓←↓←←← 6 5 4 3 2 3 4 5 6 7 →→→→○←←←←← 5 4 3 2 1 2 3 4 5 6 →→↑↑↑←←←↑↑ 6 5 4 3 2 3 4 5 6 7 ↑↑↑↑↑↑←←←← 7 6 5 4 3 4 5 6 7 8 →→→↑↑↑↑↑↑↑ 8 7 6 5 4 5 6 7 8 9 →→↑↑↑←↑↑←↑ 9 8 7 6 5 6 7 8 910 →→↑↑↑↑↑↑↑↑ 10 9 8 7 6 7 8 91011
  52. 52. 52 52 スクリプトの実行速度 The script is slow; should it be multi-threaded? •遅い •各ゾーンを順番に読みにいくので、待ちが多 い。 •マルチスレッド化すればよい? •めんどうくさい。
  53. 53. 53 53 Node.jsなら簡単? Is Node.js suitable? •http://nodejs.org/ •Node.js uses an event-driven, non- blocking I/O model ... •サーバサイドJavaScript •非同期処理
  54. 54. 54 54 Node.jsをインストール Installing Node.js # pkg install gcc-3 # gcc-45でもよさそう。 # pkg install system/header ソースを入手し、展開。以下は今回使ったもの。 http://nodejs.org/dist/v0.6.7/node-v0.6.7.tar.gz $ ./configure $ gmake # makeではダメだった。 # gmake install
  55. 55. 55 55 node-canvasも 入れてみる Installing node-canvas OSのlibjpegをリンクすると、実行時にエラーが発生するので、別途インストールする。 以下を入手し、展開 http://www.ijg.org/files/jpegsrc.v8c.tar.gz $ ./configure $ make $ make test # make install $ PATH=${PATH}:/usr/local/bin LD_OPTIONS='-L/usr/local/lib -R/usr/local/lib' CXXFLAGS='-I/usr/local/include' npm install canvas npmは/usr/local/binに入っている。
  56. 56. 56 56 Node.js版を実行 Node.js script is much faster than the shell script. •こちらの方が断然速い。
  57. 57. 57 57 canvasでお絵かき Drawing with canvas
  58. 58. 58 58 観賞方法 Wear 3D glasses!
  59. 59. 59 59 ご注意 Red is left, blue is right. •左が赤、右が青です。 •見え方には個人差があります。 •気持ち悪くなった場合は即座に中止してく ださい。 •プロジェクタの大スクリーンの場合は、左 右逆にしてください。
  60. 60. 60 60 ルートの観察例 中央付近のゾーンでルートを設定 # zlogin z505 route add 172.16.0.0 10.5.5.2 # zlogin z505 route delete 172.16.0.0 10.5.5.2 隅でルートを設定 - メトリックの上限を超えたゾーンには経路がない # zlogin z1010 route add 172.16.0.0 10.10.10.2 # zlogin z1010 route delete 172.16.0.0 10.10.10.2 ※ここではルート設定用のvnicを使用しています(今までの説明には入っていません)。 Adding and deleting routes on some zones
  61. 61. 61 61 IPv6の設定(1) アドレスを追加 select net physical=n10_10 set allowed-address=192.168.100.2/24,fe80::8:20ff:fefb:fefb/10,2001:db8:0:100::2/64 set configure-allowed-address=true end select net physical=e10_10 set allowed-address=192.168.210.1/24,fe80::8:20ff:feaf:d694/10,2001:db8:0:210::1/64 set configure-allowed-address=true end select net physical=s10_10 set allowed-address=192.168.110.1/24,fe80::8:20ff:fec5:21b1/10,2001:db8:0:110::1/64 set configure-allowed-address=true end select net physical=w10_10 set allowed-address=192.168.200.2/24,fe80::8:20ff:fe04:7e67/10,2001:db8:0:200::2/64 set configure-allowed-address=true end zonecfgのコマンド - リンクローカルアドレスの指定が必須 Adding IPv6 addresses; link-local addresses are required.
  62. 62. 62 62 IPv6の設定(2) リンクローカルアドレス MACアドレスの取得 $ dladm show-vnic n10_10 -p -o macaddress 2:8:20:fb:fe:fb set allowed-address=192.168.100.2/24, fe80::8:20ff:fefb:fefb/10, 2001:db8:0:100::2/64 これに対応するアドレス  EUI-64アドレスにもとづくもの。  ただし最上位オクテットの下から2番目のビットは反転する。 How to generate a link-local address
  63. 63. 63 63 IPv6の設定(3) ルーティング等 # zlogin zone routeadm -u -e ipv6-forwarding -e ipv6-routing Enabling IPv6 routing and forwarding IPv6のルーティングとフォワーディングを有効にする。 ルーティングデーモン in.ripngd
  64. 64. 64 64 in.ripngdの挙動の観察 Use netstat to get the IPv6 routing table; metrics cannot be obtained. •rtqueryは使えない。 •かわりにnetstat -r [-f inet6] •メトリックは得られない。
  65. 65. 65 65 IPv6での表示例 Sample output for IPv6 routing ・・・・↓→↓↓↓↓ ・・・↓↓→↓↓↓↓ ・・↓↓↓→↓→→↓ ・→↓↓↓↓↓↓↓↓ →→→↓↓→→→→↓ ↓→→→↓↓→↓→↓ →→→→↓↓→↓↓↓ ↓↓→→→→→↓↓↓ →→→→→→→→→↓ →→→→→→→→→○ メトリック16のとき、IPv4では表示されていたが、 IPv6では出てこない。
  66. 66. 66 66 実際にルータとして 使うときの注意 •dladm show-linkprop •protectionとallowed-ipsに注意 •今回のゾーン作成方法では、実際にはフォ ワーディングできない。 If you use a Solaris router in practice, data link protection prevents forwarding.
  67. 67. 67 67 protectionを変更する例 うまくいかない例 z101# ping 192.168.102.2 no answer from 192.168.102.2 設定変更 # dladm show-linkprop -p protection n1_2 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE n1_2 protection rw ip-nospoof -- mac-nospoof, restricted, ip-nospoof, dhcp-nospoof # dladm reset-linkprop -p protection n1_2 この後 z101# ping 192.168.102.2 192.168.102.2 is alive Reset protection to forward packets
  68. 68. 68 68 おしまい That's all. Thank you! ありがとうございました。

×