今日は、平成19年度秋期テクニカルエンジニア(ネットワーク)午後I 問3を解こうと思います。
問題文および模範解答(解答のみ、解説はありません)は下のリンクからどうぞ。
※IPAのサイトで公開されているPDFにリンクしています
各問解説
設問1
設問1の各問は、一見NTP(Network Time Protocol)について訊かれているようですが、実はNTPについての予備知識はほとんど必要ありません。ネットワークに関する一般常識と問題文中の説明からほぼ解くことができます。
(a)
時刻源となるのは、『正確な時刻』を表すものです。原子時計や標準電波(電波時計にも使われていますね)などが有名ですが、GPSの電波もよく使われます。
GPSでは、原子時計(正確な時刻源)を搭載した人工衛星が時刻情報と自身の位置を電波で送信しています。受信器はその電波を受信しますが、人工衛星の電波が受信器に到達するまでにその距離によって遅延が生じます。受信側はその遅延時間によって、自身と人工衛星との距離を求めることができます。
GPSの人工衛星は複数あるので、\(i\)番目の衛星の座標を\( (X_i,\ Y_i,\ Z_i) \)、受信器の座標を \( (x,\ y,\ z)\)、衛星の電波から得られた時刻を \(T_i\) 、受信時刻を \(t\) 、伝播の速度を \(c\) とすると、
\[ c\times|t-T_i|=\sqrt{(X_i-x)^2+(Y_i-y)^2+(Z_i-z)^2}\]
となります。
一瞬ややこしい式に見えるかもしれませんが、高校で習う『空間の2点間の距離の式』です。
\( (X_i,\ Y_i,\ Z_i) \) および \(T_i\) は衛星からの電波に含まれているので、受信器が原子時計に接続されているなど \(t\) が信頼できる場合は未知数が \( (x,\ y,\ z) \) の3つ、受信器の時刻も不正確な(または時計を内蔵していない)場合は未知数が \((x,\ y,\ z)\) および \(t\) の4つとなるため、それぞれ人工衛星3つ/人工衛星4つからの電波を受信できれば連立方程式をたてて計算で求めることができます。
GPSの人工衛星が正確な時刻情報を発信していることは、ネットワーク技術者でなくても知っておくべきでしょう。
(b)、(c)
図2によると、
T1:CLからSVへのパケットをCLが送信した時刻
T2:CLからSVへのパケットをSVが受信した時刻
T3:SVからCLへのパケットをSVが送信した時刻
T4:SVからCLへのパケットをCLが受信した時刻
となっています。ただし、T1とT4はCLの時計によって・T2とT3はSVの時計によって計測されており、CLとSVの時計はtだけずれている(SVの方が進んでいる)ことに注意が必要です。
ここで、
CLからSVへの通信にかかる時間を \(a\)
SVでの処理にかかる時間を \(b\)
SVからCLへの通信にかかる時間を \(c\)
とすると、CLの時計で計った時刻T1を基準として、
T2=T1+a+t
T3=T1+a+b+t
T4=T1+a+b+c
となります。T2とT3はSVの時計で計った時刻なので、CLの時計より t だけ進んだ値となる(+t という項がある)ことに注意して下さい。
ここで、問題文中には『ネットワーク内の遅延時間が送信と受信で等しい』、つまり a=c ということが仮定されているので、
T4=T1+2a+b
と表すことができます。
ここから t を求める式を作るのは、連立方程式に慣れていないとちょっと難しいかもしれませんが、問題文中にはすでに (T2+T3) という式の一部が見えています。 T2+T3=2T1+2a+b+2t で、ここから 2T1 と 2a と b を消す( t だけが残る)ようにすれば良いわけです。既に書かれている部分に含まれていない T1 と T4 を用いると、 T1+T4=2T1+2a+b となることに気付けば、
\[\mathrm{t}=\frac{\{(\mathrm{T2}+\mathrm{T3})-(\mathrm{T1}+\mathrm{T4})\}}{2}\]
を導くのはそれほど難しくないでしょう。
(d)
『NTPのデータ構造なんて知らないよ!』という声が聞こえてきそうですが、実は簡単な計算で求めることができます。
nビット符号なし整数は \(0 \sim 2^n-1\) の数を表すことができます。問題文には『42億9496万7295秒』まで数えられる、とありますので、 \(2^{32}-1=4294967295\) より、NTPの整数部は32ビットだと判ります。
『電卓を使わないと \(2^{32}\) なんて計算できないよ!』という方は、
\(2^{10}\)がだいたい1000
ということを憶えておくと良いでしょう。
\(2^{32} = 2^2\times2^{10}\times2^{10}\times2^{10} \simeq 4\times1000\times1000\times1000 =\) 40億
として、答を得ることが出来ます。
設問2
選択肢の略語はそれぞれ以下の意味と思われます。
- DST:夏時間 Daylight Saving Time
- GMT:グリニッジ標準時 Greenwich Mean Time
- JST:日本標準時 Japan Standard Time
- TAI:国際原子時 Temps Atomique International
- UTC:協定世界時 Coordinated Universal Time
(※頭文字の順が違いますがこれが正式な英語表記です )
このうち、GMTとTAIとUTCはだいたい同じ時刻を指しています。
GMTはイギリスのグリニッジ天文台(経度0°)の位置における平均太陽時(太陽が一番高い位置に来た瞬間を正午とする時刻)で、古くはこれが国際的な基準時刻として使われていました。
TAIは国際度量衡局によって管理される時刻で、セシウム原子時計などによって測定されています。複数の原子時計による校正で、ナノ秒単位の精度が維持されています。
UTCはTAIをもとに、地球の運行によって求められる時刻(UT)との誤差が0.9秒以内となるように調節されたものです。時々ある『閏秒』はこの調整のためのものです。1972年1月1日にUTCはTAIとの差が10秒となるように調整され、以来2019年5月までに27回の閏秒調整が行われたため、現在UTCはTAIに対して37秒(『約37秒』ではなく『ぴったり37秒』)遅れています。
このうち、NTPはUTCを採用しています。
まぁ現在多くの場面でUTCが標準時刻として使われているので、『NTPについて』の知識がなくてもUTCを選んだ…という受験者は少なからずいるのではないでしょうか。
JSTは日本の標準時です。日本の法令による中央標準時の定義は『東経135度子午線における時刻』となっているそうなのでが、実際にはUTCより9時間(『約9時間』ではなく『ぴったり9時間』)進んだ時刻であるJSTが使用されています。
DSTは『夏時間=Daylight Saving Time』だと思いますが他の選択肢に較べて少し異質な感じがします。もしかしたらブログ主が不勉強で知らないだけで別の言葉があるのかもしれません。『夏時間』とは『夏期に時刻を早める』制度のことです。日本より緯度が高く、季節によって日照量の変化の大きいヨーロッパ諸国では多く採用されています。日本でもたびたび導入が議論され、その度に反発が多く見送られていますね。
各時刻の正確な定義を知らない人は多いと思いますが、コンピュータ技術者ならば
UTC…世界の標準時として多く使われている。GMTとだいたい同じ。
JST…日本の標準時で、UTC+9時間
という程度だけでも押さえておくのがよいと思います。
設問3
(1)
NTPとはほとんど関係なく、ネットワークの常識を問うような問題です。
たとえば、ネットワークエンジニアのタマゴにとってNTPよりも馴染みの深そうなダイナミックルーティングについて考えてみましょう。ダイナミックルーティングプロトコルでは、同じ宛先ネットワークに対して複数の経路が通知された場合、『ネットワーク的に近い方』の経路が学習されます。プロトコルによって、何を基準に『近い』と判断するかは違うのですが、例えば
- RIPの場合…経由するルータの数が少ない方が『近い』
- OSPFの場合…経路の帯域などに基づいて計算されたコストが小さい方が『近い』
となります。というわけで、この設問の答もそれを参考にすればよいでしょう。
(2)
これもNTPというよりは、ネットワークの常識のような問題です。下線部2には
『時刻を取得する機器を限定し、その取得した時刻を組織内に展開する構成』
とありますが、これは要するに『時刻サーバに直接接続する機器の台数を減らす』ということです。その理由は、サーバや経路の負荷を軽減することでしょう。設問では『どのような問題を回避することができるか』となっていますから、公開されている上位の時刻サーバにアクセスが集中することで正確な時刻が取得できなくなってしまうかもしれない、ということを書けばよいでしょう。
(3)
これもネットワークの一般論を問う問題です。NTPに限らず、自社内に何らかのサーバを設置する場合と比較した、インターネット上のサーバを利用するデメリットを答えればいいでしょう。設問で『可用性』という言葉が使われているのもヒントになります。つまり、インターネットを経由することで、『使いたいときに使えない』可能性を指摘すれば良いわけです。
設問4
(1)
やっとNTPそのものの知識を問われる問題が出てきました。
stratumとはNTPの階層構造のことで、0~16の値で表されます。数字が小さい方が上位で、
『時刻ソースそのもの』が stratum 0
『時刻ソースに直接接続している時刻サーバ(つまりサーバとしては最上位)』が stratum 1
…
となり、以下それぞれ自分より上位の(自分よりstratumの値の小さい)時刻サーバから時刻情報を取得して同期します。stratum 16はサーバとしては機能しないので(上位のサーバから時刻情報を取得するだけの機器ということ)、時刻サーバとしては stratum 15 が最下位となります。
この設問では、『標準電波(時刻ソースそのもの)』から直接時刻を取得するサーバについて訊かれていますから、stratum 1 です。
(2)
またNTPとほぼ関係ない設問になってしまいました。
問題文によるとA社が導入予定のタイムサーバにはポートが3つありますが、図1によるとA社内のネットワークはFWによって4つのセグメントに区切られています。よって1つのセグメントにはタイムサーバを接続できないことになりますが、それはどれか…?という問題です。
問題文の冒頭部を読むと、FWのポート0側の機器は『通信事業者からのレンタルであり、管理も通信事業者が行っている』とあります。よって、それらの機器の内蔵時計の時刻もA社のタイムサーバから供給する必要はない、と判断できます。
設問には『図1中の機器の名称を用いてこたえよ』とありますので、SW0-のあるセグメントのような解答にします。『ポート0側のセグメント』と書いてしまうと、問題文の指定に沿っていないとして減点されるのかもしれません。
(3)
これもNTPについての知識は必要なく、『問題文に書かれた条件を正確に読み取れるか』という国語の問題のような気がします。
導入予定のタイムサーバの3つのポートを、A社内ネットワークのどのセグメントに接続するか、という問題ですが、これは各セグメントにどんな機器が接続されているか、また割り当てられているアドレスは何か、をよく見れば解答できます。
まずポートAです。
表2には、ポートAはNTPの他にSMTPを使用する、と書かれています。SMTPは Simple Mail Transfer Protocol、つまりメール転送のためのプロトコルです。これがタイムサーバの説明文中にある『トラブル発生時は、電子メールによって管理者にアラートを送信する』機能に対応したものであることは容易に想像できます。よって、ポートAの接続先はメールサーバの存在するセグメントとなります。
図1中にメールサーバは外部・内部の2つがありますが、ポートAに割り当てられたIPアドレスがプライベートアドレスであることから、内部メールサーバの存在するFWのポート2側のセグメントであると判断できます。
設問ではタイムサーバを『接続する機器の名称』を答えることになっていますので、SW-2となります。
次にポートBです。
表2には、ポートBはSNMPを使用する、と書かれています。SNMPは Simple Network Management Protocol、つまりネットワーク機器を監視・制御するためのプロトコルです。タイムサーバの説明文中の『標準電波を受信できなくなったときにトラップを送信する』の『トラップ』とはSNMP上で異常等を通知するためのメッセージのことです。つまりポートBは、トラップにより異常を通知したい相手の存在するセグメントに接続することになります。
問題文冒頭の記述には、機器の管理は『監視サーバ』が行っているとあり、ここからタイムサーバのトラップ送信先も監視サーバであると判断できます。よってポートBの接続先はFWのポート3側、SW-3となります。
最後のポートCです。
表2によると、ポートCにはグローバルIPアドレスが割り当てられています。よって、唯一グローバルIPアドレスが割り当てられているセグメントであるFWポート1側、SW-1に接続します。
感想
IPAが公開している講評によると正答率が低かったのだそうです。NTPという、一般的なネットワークエンジニアのタマゴにはあまり馴染みのない分野を扱った問題ということで、難問と感じて焦ってしまった受験者が多いのでしょうか?しかし問題文をよく見ると、NTPについての知識が必要な設問はほとんどなく、実はネットワークの常識的な事柄と国語力だけでほぼ解答できる内容なのです。個人的には、むしろ平成19年度の午後Iの中では一番易しいのではないかと思います。
受験では一般的な注意ですが、
『問題文をよく読む』
『問題文に書かれていないことを勝手に想定しない』
ということをしっかり心に留め、平静を保って受験して下さい…。
コメント