連載 / lPv6 の実装ー① 図 6 ホップリミットの上書き里 1002 if (opt & & opt->ip6po—h1im ! = ー 1 ) = の = の 1003 ip6—>ip6—h1im = opt—>ip6po—h1im & Oxff ; 1004 else if (IN6—IS—ADDR—MULTICAST (&ip6—>ip6—dst) ) { 1005 1006 1007 1008 1009 } if (im60 ! = NULL) ip6->ip6—h1im ip6—>ip6—h1im else im60—>im60_mu1ticast_h1im; ip6—defmcasth1im; 図 7 in6-seIectroute 関数 1016 in6—seIectroute(dst—sa, opt, im60, て 0 , if ( (error 1017 1028 1029 } &ifp, &rt, clone)) ! = 0 ) { goto bad ; ip6-output の opt 引数 (ip6-pktopts 構造体 ) にトラ フィック・クラスカ甘旨定されていた場合、 IP ヘッダのトラ フィック・クラスに何も指定されなかったときだけ、 opt で指定された値を代入します。 する関数です。 in6-seIectroute が成功すると、 ifp に出 カインターフェイスへのポインタが、 rt に経路情報が代 入されます。 1045 if ()t ! = NULL) { 993 994 995 996 if if ( (ip6—>ip6—f10w & hton1(Oxfc くく 20 ) ) mask ー = Oxfc ; ( (ip6—>ip6—f10w & hto Ⅱ 1 ( 0X03 くく 20 ) ) mask ー = 0X03 ; 1046 1047 1048 } ia = (struct in6—ifaddr * ) (rt—>rt—ifa) ; rt—>rt_use 十十 ; 前半の 6 ビットにはバケットの優先度を表す値である、 mask) くく 20 ) ; ( (opt—>ip6po—tc1ass & ip6—>ip6—fIow ー = htonl if (mask ! = 0 ) ントが入ります。後半の 2 ピットは予約されています。 区分イヒサービス (Differentiated Service) のコードボイ 999 } 998 997 UNIX MAGAZINE 2002.5 ターフェイスの情報などを総合し、正しい経路情報を尺 ドレスと、 opt て指定された次ノードアドレス、出力イン 図 7 の in6-selectroute は、 dst-sa て寸旨定した終点ア された値で上書きします。 定されている場合、 IP バケットのホップリミットを指定 (ip6-moptions 構造体 ) で明示的にホップリミットカ甘旨 き処理です。 opt (ip6-pktopts 構造体 ) もしくは im60 1002 ~ 1 , 009 行目 ( 図 6 ) はホップリミットの上書 ラフィック・クラスの値を代入します。 フィック・クラスを壊さない硼で、。 pt 旨定されたト 998 行目で、すでに指定されている IP ヘッダのトラ rt->rt-ifa には、出力インターフェイスのアドレスカ呆 持されています。 rt が NULL になるのは、終点アドレス がマルチキャストで、かつ出力インターフェイスが im6 。 で指定されている場合です。マルチキャストの経路につい ては、別途管理されます。 1055 if ()a ! = NULL & & ia—>ia-ifp) 1056 1057 else 1058 origifp = ia¯>ia—ifp, origifp = ifp ; 1 , 055 ~ 1 , 058 行目では、出力インターフェイスへのポ インタを origifp に設定します。経路情報が存在してい ればその経路情報に嬲当寸けられているインターフェイス を、糸割青報がなければ in6-seIectroute カした出力イ ンターフェイス ( ifp ) を、バケットの出力インターフェイ スとします。 1059 1068 1069 1070 1060 if (in6—addr2zoneid(origifp , &src—sa->sin6—addr , &zone) Ⅱ zone ! = src—sa—>sin6—scope—id) { goto badscope ; if (in6-addr2zoneid(origifp, 65
C プログラムで制御する ネコ形ロポット 編集部 ( 2 ) 写真 1 赤外線インターフェイス・ユニット ログラミン・グキッ 前回は、バンダイの「プログラミング・ロポット BN- 1 ( わがままカプリロ ) 」の概要と C 言語開発環竟 ( 以ード、 、、 C 開発環境 " とについて簡単に説明しました。 C 開発環境では赤タ凾信は利用できませんが、 WiI ト dows 版のプログラミングキットに含まれている「 A. I. TRAINER 」は、光フェロモン ( 赤外線で ID スイング やワンダーポーグと通信する樹冓 ) の送受信も含めて、カ プリロのすべての機能を制御することができます。 A. I. TRAINER では、アプリケーションの各種の操作だけで なく、プログラミング ( 性格設定 ? ) もマウスで簡単におこ なえます。カプリロとの通信には、刊属の赤外線インター フェイス・ユニット ( 写真 1 ) を使うので、カプリロ本 体にケープルがからまったりすることもありません ( ただ し、赤タ泉インターフェイスと PC は、 9 ピンのシリアル ケープルで接続します ) 。キットにはこのほかに、ファー ムウェアの書換えに使うシリアルのフラットケープル、ソ フトウェアカ刈求された CD-ROM カ嗣属しています。 A. I. TRAINER の CD-ROM には、次の 3 つのソフ トウェアが入っています。 ・ A. I. TRAINER STANDARD ・ A. I. TRAINER PRO ・ A. I. TRAINER MOTION 前号で説明したように、 C 開発環境ではカプリロの状 態や動作を C のプログラムで制御します。一方、 A. I. TRAINER のほうは、カプリロのペットモード ( 工場出 荷時の状態 ) の動作をカスタマイズしたいという用途に向 128 いています。 A. I. TRAINER では、ある状況でカプリ 口がどのように動くかを GUI を使ってプログラミングし ます。 A. I. TRAINER STANDARD 20 不頁のシチュエーションと 4 不頁の感情、 3 不鶤頁の 活発度の設定か可能な性格シートを最大 8 枚作成し、カプ リロの重川をプログラムします。叱られたり、なでられた りといったシチュエーションごとに、、行動パターン " を選 んでいきます。行重ルヾターンには、、性格シートの切替え " もあり、たとえは図 1 では、 3 回褒めると、頭天 " とい う性格シートに移行します。つまり、同じ褒められるとい うシチュエーションであっても、性格シートの成疋によっ て異なる反応をさせることが可能になります。これを用い て、、、性格 " を形成していくわけです。 A. I. TRAINER PRO カプリロのすべての機能を制御できるアプリケーション です。 STANDARD のように決まったシチュエーション と行重ルヾターンを組み合わせるのではなく、もっと細かな 状況 ( タイマーやジェスチャー・センサー、光フェロモン ) 、、リアクション " を設定できます。リアクション ごとに、 では、歩行やポーズなどのアクション、グラフィックアイ UNIX MAGAZINE 2002.5
図 10 1188 1189 1190 1196 1197 1198 1199 図 11 1237 1254 1255 1256 1257 1258 1261 1262 1265 1169 1170 1171 1172 1168 連載 / IPv6 の実装ー① 経路 MTU の取得 if (mtu > IPV6-MMTU & & ( (flags & IPV6-MINMTU) Ⅱ got0 bad; if ( (error ip6—getpmtu(ro—pmtu , ro , ifp , &finaldst—sa, mtu = IPV6—MMTU; if (exthdrs . ip6e—hbh) { 中綫点オプションヘッダ理 (opt & & (opt—>ip6po—f1ags & IP6PO—MINMTU) ) ) ) { &dummy, &plen) く 0 ) { sizeof (struct ip6—hbh) , ((hbh->ip6h-1en + 1 ) くく 3 ) (u-int8—t * ) (hbh + 1 ) , if (ip6—process-hopopts(m, goto done ; if—flags & IFF-LOOPBACK) Ⅱ IN6_IS_ADDR_MC_INTFACELOCAL (&ip6->ip6-dst) ) { m—freem(m) ; got 0 done ; 1 , 167 ~ 1 , 171 行目は、ネットワークに流してはならな いマルチキャスト・バケットのチェックです。バケット か次の条件を満たす場合は破棄します。 ・ホップリミットが 0 出力インターフェイスがルーフ。バック・インターフェ イス ・インターフェイスローカル・スコーフ。のマルチキャス ト・アドレス宛 なお、出力インターフェイスがループバックであるパ ケットを破棄しますが、自分自身へのバケットはすでに 1 , 130 行目て酒占済みなので問題はありません。 1184 if (opt & & (opt—>ip6po—f1ags & 1185 IP6PO_REACHCONF) ) nd6—nud—hint ()t , NULL , 0 ) ; 2001 年 11 月号の「データリンク層アドレスの解 : て解説したとおーり一 : ー到達性の石忍を上位層に通知すること UNIX MAGAZINE 2002.5 で、無駄な近架索バケットを制限できます。 1 , 185 行目 で近ド蝌架索スタックに経路↑帯にを渡し、近隣キャッシュの 状態を更新します。 図 10 の 1 , 188 行目では、終点アドレスの情報をもと に経路 MTU を取得します。ただし、 ip6-output の呼 出し側は、次の 2 つのガ去で経路 MTU の代わりに最小 MTU を使うことができます。 ・ flags に IPV6-MINMTU を指定する。 ・ opt で明示的に IP6PO-MINMTU を指定する。 中経点オプションヘッダは、始点ノードでも処理する 必要があります。中経点オプションヘッダがある場合は、 ip6-process-hopopts でそれを処理し、次へ進みます ( 図 1300 tlen = m—>m—pkthdr. len; バケットの分割処理と出力です。 ip6-output の処理も終りに近づいてきました。残りは バケットの分割 11 ) 。 67 IP6PO_DONTFRÅG) & & tlen > ifp—>if—mtu 1309 if (opt & & (opt->ip6p0—f1ags & 長です。 m->m-pkthdr. len は、出力する IP バケットの全体
連載 / lPv6 の実装ー① IP'S ケットの終点アドレスを追加しています。 808 bcopy ( (caddr—t) (addr + 1 ) , (caddr—t) addr , 809 810 sizeof (struct in6—addr) ー 1 ) * (rhO—>ip6rO—seg1eft 出力インターフェイスの決定 出力インターフェイスは、 IP バケットの終点アドレス によって決まります。 811 *(addr + rhO—>ip6rO—seg1eft finaldst ; KAME では、アドレスの一碚ににスコーフ識別子力理め 込まれていることを前提としたコードか書かれています。 この形式は、実際の通信路では不正なアドレスになるた め、 813 行目でスコーフ . 別子を削除します。 813 in6—cIearscope(addr + rhO—>ip6rO—seg1eft 現在、タイプ 0 以外の経路制御ヘッダはサポートして いません。これ以、外の経路制徊ヘッダカ甘旨定されていたら 処理を中断します。 850 860 859 858 857 if (ip6—getpktaddrs (m , &src-sa' &dst-sa) ) { goto bad; if (finaldst—sa. sin6—fami1y *dst_sa; finaldst_sa AF_UNSPEC ) ip6-getpktaddrs を使って、 IP バケットの終点アドレ スを finaldst-sa に取り出します。なお、経路制徊ヘッダ カ甘旨定されている場合、 finaldstsa の値は次の中継ノー ドになります。 863 if (ro 864 865 866 } ro = &ip6route ; bzero( (caddr—t)ro, sizeof (*ro) ) ; 815 816 818 819 820 } default : break ; / * is it possible? goto bad ; 823 ~ 837 行目では始点アドレスの正当性を確認しま 823 if ( ! (flags & IPV6—UNSPECSRC) & & す。 824 831 832 } IN6_IS_ADDR_UNSPECIFIED (&ip6—> aip6—src)) goto bad ; 始点アドレスに未定義アドレスを使うことはできませ ん。ただし、 2001 年 12 月号の「 IPv6 のアドレス自動設 定の仕組み」て解説した重複アドレス検出 (DAD: Dupli- cate Address Detection) の場合は例外です。 DAD を 実行するときは、 ip6-output に IPV6-UNSPECSRC フラグを指定して呼び出す必要があります。 if (IN6_IS_ADDR_MULTICAST (&ip6-> 833 ip6-src) ) { 836 837 } goto bad ; また、マルチキャスト・アドレスも始点アドレスとして 利用することはできません。 64 867 ro_pmtu = ro ; UNIX MAGAZINE 2002.5 990 if (opt & & opt—>ip6po-tc1ass > = 0 ) { 990 ~ 999 行目はトラフィック・クラスの設定です。 アドレスへのポインタを dst ロ褓内します。 880 行目では、出力インターフェイスの決定に使われる 880 dst (struct sockaddr—in6 * ) &ro¯>ro—dst ; 的な IP バケットの終点を基準に決定します。 路 MTU は、各制御ヘッダの有無にかかわらず、最終 への経路をもとに出力インターフェイスを決定します。経 経路制御ヘッダカ甘旨定されている場合、次の中継ノード 869 ro = &opt->ip6po—route ; 868 if (opt & & opt—>ip6po—rthdr) されている場合です。 は同し経路清報になります。例外は経路制徊ヘッダカ甘旨定 のための経路情報を指し示します。通常、 ro と ro-pmtu ro-pmtu は糸響各 MTU 探索 (Path MTU Discovery) 路情報を一印判勺ロ褓内するために使います。 体です。キャッシュカ甘旨定されていなかったときに、経 は ip6-output. c で static に定義されている route 構造 合、 ro が ip6route を指すように成疋します。 ip6route 出し時に ro 経由でされているはすです。そうでない場 経路情報がキャッシュされていれば、 ip6-output の呼
UN Ⅸ便利帖 宮下イ甫 VirtuaI PC で FreeBSD VirtuaI PC は、 Connectix カ鎖反売している Mac OS 用の PC 工ミュレータです。このアプリケーションを使 うと、 Mac OS ー E で佖想的な PC 互換機を動かすことが できます。 PC UNIX の世界では、同様のソフトウェア として VMware カ陏名ですね。 Mac OS X を使っている場合、これまでは Mac OS 9 などの CIassic 環境でしか Virtual PC を動かせませ んでした。しかし、 2 月にバージョン 5 がリリースさ Mac OS X 上でも Virtual PC か動作するようになりま 私はバージョン 3 のころからのユーサーなので、 アップグレードを申し込んで 2 月末に最新版を手に入れる ことができました。 ノヾージョン 5 では、 PC-DOS 、 Windows 系 OS ( 95 、 98 、 NT 4.0 、 Me 、 2000 、 (P) 、 Linux がそれぞれゲ スト OS ( 仮想 PC ー E で動作する (S) としてサポートさ れています。 BSD 系の OS はこのなかに含まれていませ んが、今回はあえて FreeBSD をインストールしてみたの で、それについて報告します。 とはいえ、 Mac OS X は核となる部分に FreeBSD を 利用していますし、 Mac OS X 上で動作する X ウイン ドウ・システムもあります 2 。そんなところで FreeBSD を動かしてどうなるんだというご意見もあるかと思います 78 2 http://sourceforge.net/projects/xonx/ 1 http://www.connectix-japan.com/vpc5m.htm ます。 VirtuaI PC バージョン 5 のおもな特徴を以下に記し Virtual PC の特徴 が、ひとつおっきあいください。 アンドゥ可能なティスクイメージ VirtuaI PC では 1 つのファイルをハードディスク・イ メージとして利用します。たとえば、仮想 PC 上で Win- dows 系 OS を利用する場合は、 C ドライプや D ドライ プのためにそれぞれファイルを 1 っすっ用意します。 最〒版では、このハードディスク・イメージをアンドゥ 陬消し ) することができます。イ反想 PC を閉じるときに、 そのノ、一ドディスクに対しておこなわれた操作を活かすか 取り消す ( なかったことにする ) かを選択できるのです。 これにより、ゲスト OS の実行中にハードディスク上に 加えた変更を無効にすることができます。 この機能は、あるアプリケーションをためしにインスト ールしてみて、、やつばりやめ " と思ったときや、いろいろ な設定を、、取り替えながら " 試すときなどに重宝します。 バーチャルスイッチ 、バーチャルスイッチ " という機能を利用すると、 Mac OS か動いている Macintosh 本体とその上で動いている イ課 PC を、イ反想的なスイッチングハフて接続することが できます。 Macintosh 本体のネットワーク・インターフェ イスと仮想 PC のネットワーク・インターフェイスをまっ たく別のものとして利用できるのです。たとえば DHCP を用いて IP アドレスを取得する場合、仮想 PC 側で IP アドレスを要求すれば、 Macintosh 本体に割り当てられ ている IP アドレスとは別の IP アドレスが正しく振られ ます。 この機能を利用しない場合は、 Macintosh 本体のネッ トワーク・インターフェイスをイ瓦想 PC とのあいだで共 有することになります。したがって、仮想 PC カリ用す る IP アドレスは、 Macintosh 本体が使っているものと UNIX MAGAZINE 2002.5
連載 / IPv6 の実装ー① 図 8 宛先アドレスの決定 if (rt) { 1091 1092 1098 1099 1100 1101 if (opt & & opt—>ip6po—nextroute. ro—rt) { dst = (struct sockaddr—in6 * ) opt—>ip6po—nexthop , else if ( (rt—>rt—flags & RTF—GATEWAY) ) dst = (struct sockaddr—in6 * ) rt—>rt—gateway; 1102 } 図 9 mbuf にマルチキャスト・バケットが含まれるかどうか認 1104 1105 1106 1107 1108 1109 1071 1077 1078 } if ( ! IN6_ 工 S_ADDR MULTICAST(&ip6—>ip6_dst) ) { ~ (M_BCAST ー M_MCAST) ; / * just in case * / m->m-flags & = } else { struct in6_mu1ti *in6m ; (m—>m—flags & m—>m-flags &dst—sa—>sin6—addr, &zone) Ⅱ zone ! = dst_sa—>sin6_scope_id) { goto badscope ; -M_BCAST) ー M_MCAST ; 1122 1123 1124 1130 IN6_LOOKUP_MULTI (dst_sa, ifp , in6m) ; if (in6m ! = NULL & & (im60 = = NULL Ⅱ im60->im60—mu1ticast—100p) ) { ip6—m100pback(ifp, m, dst) ; IP バケットは、スコープの境界を越えることはできま せん。 1 , 059 ~ 1 , 078 行目は、 IP バケットの始点 / 終点ア ドレスのスコーフ識別子が出力インターフェイスのスコー フ常設別子と等しいかどうかを石忍しています。 dst は 880 行目で、キャッシュされている経路情報の宛 先アドレスを指すように設定されています。 ip6-output の呼出し時に、次の中継ノードが ip6po-nextroute で明 示的に指定されていたら、経路検索の結果にかかわらす指 定された宛先を採用します ( 図 8 の 1 , 098 行目 ) 。また、 バケットが同一リンクを越えて中幻される場合、糸習割青報 に RTF-GATEWAY フラグが付きます。この場合は、 1 , 101 行目で、宛先アドレスとして次のルータのアドレス を採用します。 1 , 104 ~ 1 , 172 行目は、終点アドレスがマルチキャスト・ アドレスの場合の処理です。 マルチキャスト・バケットを含む mbuf は M-MCAST フラグをもちます ( 図 9 ) 。 1116 if ( ! (ifp->if—flags & IFF—MULTICAST) ) { 終点アドレスに指定されているマルチキャスト・アドレ スに自分も参加している場合、バケットをネットワークへ 出力するだけでなく、自分自身にも酉占しなければなりま せん。 im60 で明示的にマルチキャスト・バケットをルー プバックするように指定しているときも同様てす。これら の牛を満たす場合は、 1 , 130 行目でループバック・イン ターフェイスへ出力します。 1131 } else { 1144 1152 1153 1154 1155 1156 1157 if (ip6—mrouter & & (flags & IPV6_FORWARDING) m—>m-pkthdr. rcvif = NULL ; if (ip6—mforward(ip6 , ifp , m—freem(m) ; goto done ; 1120 1121 } goto bad; 1158 } 自分が参加していないマルチキャスト・アドレスで、か っマルチキャスト・ルータとして動作していたら、 1 , 153 行目の ip6-mforward で転送が必要なすべてのインター フェイ幻ンヾケットを出力します。 1 , 116 行目では、ネットワーク・インターフェイスが マルチキャストをサポートしていることを石忍します。 66 1167 if (ip6—>ip6—h1im = 0 Ⅱ (ifp-> UNIX MAGAZINE 2002.5
連載 / 旧 v6 の実装ー① 1372 } else if (ip6—>ip6—p1en 1313 1323 1324 } 1320 1375 goto bad; goto bad; pfct1input2 (PRC—MSGSIZE , &ro—pmtu—>ro—dst , (void *)&ip6cp) ; opt で分割禁止 (IP6PODONTFRAG) を指定して いるにもかかわらす、バケットのサイズよりも出力インタ ーフェイスの MTU が小さい場合は処理を中断します。 その際、 1 , 320 行目で各プロトコル・スタックに MTU を通知します。 IP ヘッダのペイロード長が 0 になるのは、巨大ペイ ロード・オプションカ甘旨定されたときです。巨大ペイロー ドは分割できないのでエラーとなります。 続く 1 , 376 ~ 1 , 482 行目は、分割が必要な場合の処理で す。すなわち、分割禁止が明カ勺に指定されておらす、か つ経路 MTU が出力しようとしている IP バケットのサ イズよりも小さい場合です。 1376 } else { 1325 1363 1339 1340 1343 1362 if (tlen く = mtu Ⅱ (opt & & (opt—>ip6po—f1ags & IP6PO—DONTFRAG) ) m , dst , rt ) ; error = nd6—output (ifp , origifp , ip6 = mtod(m , struct ip6—hdr * ) ; got 0 done ; 1377 1378 1379 1380 1381 1382 1389 1390 1391 struct mbuf **mnext , *m—frgpart ; struct ip6—frag *ip6f ; u—int32—t id = htonl (ip6—id + + ) ; u_char nextproto ; struct ip6ct1param ip6cp ; u_int32_t mtu32 ; hlen = unfragpartlen; if (mtu > IPV6—MAXPACKET) mtu = IPV6_MAXPACKET ; 以下の牛を満たすときは、 nd6-output を呼び出して バケットを出力します。 nd6-output は、データリンク層 のアドレス鮹夬をおこない、実際の物理的なインターフェ イスの出力ルーチンを呼び出す関数です。 ・ IP バケットの全体長カ斈路 MTU 以下である。 分割禁止 (IP6PO-DONTFRAG) が明示的に指定さ れている。 後者の場合、経 %MTU よりも大きなバケットを送信 してしまう可能性があります。 IPv6 では、途中経路」 : の ルータは IP バケットを分割しません。したがってこの場 合は、最終的には ICMPv6 の Packet T00 Big 工ラー となります。 1364 } else if (mtu く IPV6—MMTU) { 出力インターフェイスが 65 , 535 オクテットよりも大 きな MTU をもつ場合、経路 MTU の初期値が 65 , 535 オクテットを超えます。しかし、 IP バケットの最大ペイ ロード長は 65 , 535 オクテット (IPV6-MAXPACKET) ですから、分割後の最大サイズも 65 , 535 オクテットを超 えることはできません。 1394 mtu32 = (u—int32—t)mtu ; 1395 bzero(&ip6cp, sizeof (ip6cp)) ; 1396 ip6cp. ip6c-cmdarg = (void * ) &mtu32 ; 1397 pfct1input2 (PRC—MSGSIZE , &ro—pmtu¯>ro—dst , (void *)&ip6cp) ; あとに続く出力でバケットの分割を防ぐために、 1 , 397 行目で各プロトコル・スタックに経路 MTU を通知しま 1371 goto bad ; す。 1399 1400 1403 1404 Ien = (mtu ー hlen ー sizeof (struct ip6—frag) ) & ~ 7 ; if (len く 8 ) { goto bad; IPv6 をサポートするインターフェイスは、かならす最 小 MTU ( 1280 ) 以上のバケットを送信できなければなり ません。経路 MTU か最小 MTU 以下になることはあり えないので、 1 , 371 行目で処理を中断します。 68 断片ヘッダを用いてケットを分割する場合、 8 オ クテット単位での分割になります。経 %MTU からへッ ダ領域 ( 分割不能部分と断片ヘッ夘のサイズを差し引い UNIX MAGAZINE 2002.5
写真 3 ロープをたぐるとか変化する 写真 2 温度センサー付き ~ き 写真 5 ローフ移動の検出のからくり ロープ・インターフェイス ドアにディスプレイを付けて音声認識 写真 3 は、部屋に垂らしたロープをたぐって画面を上下 写真 6 は、ドアに貼り付けたディスプレイに情報を表 にスクロールさせるシステムです。科・学一羽勿館怖 ] けに作っ 示し、音声認識を用いてドアを開けたり所在を知らせたり たものだそうで、ロープをたぐると熱帯い財木の画面が上下 するシステムです。床のセンサーにより、ドアの前に人が に移動し、さまざまな衄直物とその説明カ俵示されます。 いるかどうかを判断するようになっています。 ロープは天井と床を結ふ輪になっているので、無限にた 高さ認識テープル ぐることができます。写真 4 は輪状のロープの床の部分 写真 7 は、、 Chameleon Table" というシステムで、テ 、ここでロープの移動を検出しています。しつは、この ープルというものは、高さに応して使われ方が異なるだろ なかにはホイール付きマウスが入っているだけで、ロープ うという考えにもとづいて作られています。 の動きにつれてホイール部を回転させることにより、ロー たとえば、テープルをドラムの高さに設定するとこの写 プの移動を検出しています ( 写真 5 ) 。 182 UNIX MAGAZINE 2002.5
イ ン タ フ ェ イ ス の 街 角 53 増井俊之 0 MIT メディアラボ 1 Negroponte 氏は、引退したといっても、ドなを敷いただけだという だそうですが、それを捨ててまで移籍するだけの魅力がメ い地位で、制限なく予算を使えるとい引罸襭勺な立場なの た人物です。 IBM Fellow は IBM の社内ではきわめて高 り、この功績によって、、 IBM Fellow" という地位にあっ 突起でマウス操作をおこなう Track Point の発明者であ メディアラボに移った Ted Selker 氏は、キーポード上の 2000 年に IBM の Almaden Research Center から Ted Se ⅸ e 「氏の研究 近の研究に関する話を聞きました。 氏と石井裕氏、 Henry Lieberman 氏のもとを訪れ、最 こなわれているようです。今回の訪問時には、 Ted Selker もありますが、いまのところは、なんとか、、棲分け " がお 異なるグルーフ。で似たような研究を進めていたということ え、グループごとに独立に仕事をしています。したがって、 メディアラボは数多くの孝対受、学生、プロジェクトを抱 アーチストの John Maeda 氏らが副所長に就任していま したが、・広 Walter Bender 氏に交代し、メディア・ 設立者の Nicholas Negroponte 氏が所長を務めていま らたくさんの研究成果が発表されています。長いあいだ、 ACMCHI カンファレンスでは、毎年、メディアラボか り、インターフェイスに関する世界最大の国際学会である フェイス関連の研究はいまでもさかんにおこなわれてお は話題になることが少なくなった気もしますが、インター ひさしぶりに見学してきました。 1980 年の設立当初ほど MIT ( マサチューセッツ工科大学 ) のメディアラボを UNIX MAGAZINE 2002.5 噂もあるようてすゞ・・ ディアラボにはあったということなのでしよう。 selker 氏は、 Track Point 以外にも数々のおもしろい 発明をおこなっており、、、発明おじさん " とⅡヾるはどで す 2 。 selker 氏は、メディアラボでも Context-Aware Computing というグループを率いて数々の新しい発明 をおこなっており、そのいくつかを見せてもらいました。 床板によるユーサーの位置検出 SeIker 氏の研究室は、床一面に新開発の圧力センサー か嗷き詰められており、人間がいつどこにいたかが分かる ようになっています。写真 1 は、人間の位置に応して、床 面は彡される画像か変化する様子です。いろいろな応用 が考えられますが、人間の位置に応して音や画像を変化さ せたり、情報家電の学習、あるいはパーティーなどでユー ザー同士の会話をうながすために位置清報を使うといった 、 social Floor" としての応用を考えているそうです。 ラロ機肯寸き鍋敷き 写真 2 は、オープンて調理する際に使労攵きに温度セ ンサーを組み込んだ、、 TaIking Trivet" です。熱すぎて火 がつきそうになると「火事だ ! 」と叫んだり、温度が - ドが りすぎると「再加熱が必要です」とアドバイスしたり、と いったふうに甲の手助けをしてくれます。 2 Communications of the ACM の 1996 年 8 月号に、 Selker 氏 による「マーピン・ミンスキー宅訪問山という記事力甘曷載されていまし なミンスキー氏は AI 石形 ) 大笹廖斤として有名てすが、この記事によれ ばかなりの、発明おしさん " らしく、自宅には有名な 1 共焦点跳竟 " 以 外にもたくさんの発明品がそこかしこに置かれていて、さすがの Selker 氏も圧倒されたそうてす。 3 http://www.media.mit.edu/context/ 181
知っておくべきことについて、さまざまな視点からの注意 事項がべられている。 RFC3244 Microsoft Windows 2000 Kerberos Change Password and Set Password Protocols Microsoft Windows 2000 用 Kerberos のパスワード変 更・設定プロトコル fo. 、 M. Swift 他 Microsoft が Windows 2000 で採用している Ker- beros 実装のパスワード変更およひ薇疋用プロトコルの仕 様を定義している。、、広報 " として 2002 年 2 月に公開さ ーー 0 Microsoft は Windows 2000 に Kerberos を採用す る際に、既存の Kerberos のプロトコルの一部を独自に拡 張し、、、新規ューザーのパスワードを管理者か設定する " 機能を追加している。 RFC3244 は、 Microsoft 版 Kerberos 用のノヾスワー ド変更プロトコルのイ兼を公開している。 VoIP 関連 RFC3219 Telephony Routing overlP (TRIP) TRIP : 旧による電話用糸懿帋 PS. 、」 . Rosenberg 他 IP ネットワークを使って電話用の経路制御をおこなう 技術である TRIP (TeIephony Routing over (P) を 規定している。現在の状態は、、標準化への提唱 " である。 2002 年 1 月に公開された。 TRIP はシグナリング・プロトコルとは独立した広告型 の経路プロトコルで、管理主体が異なるドメイン間のポリ シー経路制御をおこなう。広告される情報は、位置サー ー間での到達生情報および各終点への経路の属性である。 RFC3219 では、 TRIP の動作およひフ。ロトコルを規 定している。 MIB 関連 RFC3201 Definitions of Managed Objects fo 「 Circuit tO lnterface Translation 回線からインターフェイスへのに関する褌里オプジェ クトの定義 PS•R: Steinberger 他 ノヾ UNIX MAGAZINE 2002.5 RFC ダイジェストー⑩ 回線型インターフェイスを ifTabIe で扱えるようにす るための MIB 刻長を規定している。現在の状態は、、標準 化への提唱 " である。 2002 年 1 月に公開された。 RFC3201 で規定された拡張は、 ifEntry を要求する他 の MIB で回線を扱う場合に有効である。 RFC3202 Definitions of Managed Objects for Frame Relay Service Level Definitions フレームリレー・サービスレベル定義用の里オプジェク トの定義 PS. 、 R. Steinberger 他 フレームリレーのサービスレベルの定義を扱うための MIB を規定している。現在の状態は、、標準化への提唱 " である。 2002 年 1 月に公開された。 Frame Relay Forum では、サービスレベルに関する 定義をおこなっている。現在の MIB の定義では、これら の値は標準 MIB の ifType 中の frameReIay(32) およ び frameRelayService(44) で扱われている。 RFC3202 では、 Frame Relay Forum によるモテフレ を表現できる MIB として、 ・ frsldPvcCtrlTable ・ frsIdSmplCtrlTabIe ・ frsldPvcDataTable ・ frsIdPvcSampleTable ・ frsldCapabilities の 5 つのオプジェクトによって規定される FRSLD-MIB を定義している。 RFC3231 Definitions of Managed Objects for Sched- uling Management Operations 樂作のスケジューリング用里オプジェクトの定義 PS. 、 D. Levi 他 ( RFC2591 奐 ) 定期的もしくは一定の日時におこなわれる管篥作を扱 うための MIB を規定している。現在の状態は、、標準化 , 、、ク是唱 " である。 RFC2591 を置き換える RFC として 2002 年 1 月に公開された。 RFC2591 からの変点としては、いくつかの定義を明 確化したはか、「セキュリティに関する考察」の章の追加 や、以下に示すオプジェクト勵里の追加か挙げられる。 ・ schedTriggers オプジェクトの追加 179