インターネット上の応用サービスの中継・変換・統合技

インターネット上の応用サービス
の中継・変換・統合技術
プロキシサーバ「DeleGate」
産業技術総合研究所
情報処理研究部門
佐藤豊
http://www.delegate.org/
DeleGateの概要

1994年生まれ・現在も成長中


多用途プロキシサーバ


HTTP,FTP,SMTP,POP,NNTP,Telnet,DNS,SOCKS,SSL,…
マルチプラットフォーム対応


アクセス制御、キャッシュ、経路制御、トンネリング、プロトコル変換、
サーバ統合、コンテンツフィルタ、コンテンツ変換、…
マルチプロトコル対応


小規模Gopher専用プロキシ(SunOS版)からの持続的な成長
Unix,Windows,OS/2,MacOS-X
配布形態・配布状況

オープンソース・フリーソフト、148カ国・24,000サイト
DeleGateの多用途化の経緯








必要性
ファイアウォール越え
日本語非対応のブラウザ
低速な広域ネットワーク
不安定なネットワーク接続
IP的に不連続なネットワーク
内部サーバ群を外部へ提供
翻訳中継・画像圧縮中継
プライバシー保護
⇒
⇒
⇒
⇒
⇒
⇒
⇒
⇒
⇒
機能
アクセス制御付き中継
コード変換
キャッシュ
経路制御・迂回
トンネリング中継
サーバ統合
外部フィルタ呼び出し
暗号化通信
DeleGateの対応プロトコル












応用プロトコル
応用サービス
HTTP,ICP
ウェブ、キャッシュ
SMTP,POP,IMAP
電子メール
NNTP
電子ニュース
FTP
ファイル転送
SOCKS,VSAP
プロキシ中継
SSL
暗号化通信
DNS
ドメイン名検索
Telnet,X
遠隔端末
Tcprelay,Udprelay
単純中継
LDAP
ディレクトリサービス
Lpr
遠隔プリンタ
Gopher,Wais,CU-SeeMe,Ident
絶滅?
DeleGateのプログラム規模の推移
8年間に500回の改訂版リリース
140000
100000
97年1月
Windows
対応
80000
60000
40000
20000
02
年
3月
20
01
年
3月
20
00
年
3月
20
99
年
3月
19
98
年
3月
19
97
年
3月
19
96
年
3月
19
19
95
年
3月
0
94
年
3月
94年3月
開発開始
94年6月
配布開始
19
プログラムサイズ(行数)
120000
6月
20
02
年
6月
20
01
年
6月
20
00
年
6月
19
99
年
15000
6月
配布先サイト数
20000
19
98
年
6月
19
97
年
6月
19
96
年
6月
19
95
年
6月
19
94
年
DeleGateの配布状況(1)
+7サイト/日
25000
海外
国内
全体
10000
5000
0
DeleGateの配布状況(2)
140000
(配布元サーバからのダウンロードホスト数)
120000
100000
80000
60000
40000
20000
02
年
6月
20
01
年
6月
20
00
年
6月
20
99
年
6月
19
98
年
6月
19
97
年
6月
19
96
年
6月
19
95
年
6月
19
19
94
年
6月
0
クライアント/サーバモデル

インターネット上の応用サービスの実現モデル


サーバは情報や機能を提供し、クライアントは通信を実行しながら
それを利用する
応用プロトコル



サーバ/クライアント間の要求・応答の手順とデータの形式
各々の応用サービスごとに規定される
HTTP,SMTP,FTP,…
プロキシサーバ

クライアントとサーバの間の通信を中継するサーバ

サーキットレベルプロキシ


単なるバイト列として要求と応答を中継 (SOCKS)
アプリケーションレベルプロキシ

応用プロトコルに固有な、要求と応答の手順とデータの形式を解釈
しながら中継
プロキシサーバの種類別得失

サーキットレベルプロキシ(SOCKS等)




単なるバイト列として要求と応答を中継
実装が容易、全ての応用プロトコルに共通に適用可
中継以外の用途への発展性は乏しい
アプリケーションレベルプロキシ

応用プロトコルに固有な要求と応答の手順とデータの形式を理解して中継
実装が複雑(クライアントとサーバのサブセット機能×各プロトコル)
理解している内容にしたがってきめ細かな制御が可能

ただ中継するだけでなく、手順やデータの変換、フィルタ、統合ができる


⇒ 多様な付加価値サービスの実現可能性

DeleGateは両者を実現。後者の可能性を追及
ファイアウォール用プロキシ

プロキシの一般的な用途




クライアントサイト側での利用
アクセス制御付き中継
コンテンツキャッシュ
有害コンテンツ除去
サーバ統合プロキシ


複数のサーバを一つのサーバのように見せて提供する
サーバサイト側でのサーバ運用維持支援


各部門では独自にローカルにサーバを運用
• 内容の更新やログの管理が容易
各サーバを組織の代表サーバに統合し提供
要求の書き換え・転送
(プロトコル変換)
(応答のキャッシュ)
応答の書き換え・転送
コンテンツ変換プロキシ


プロキシが中継するコンテンツの変換
翻訳、通訳、圧縮、等、様々な応用
 変換機能を外付けするインターフェイスが必要
Hi,
どーも
翻訳
通訳
CFI:Common Filter Interface

プロキシに機能を外付けするインターフェイス


プロキシサーバ用CGI、のようなもの


コンテンツ変換、コンテンツフィルタ、プロトコル変換
外付けフィルタプログラム+CFIスクリプト
開発の背景・動機




DeleGateに付加価値を付けて商用利用する申し込み
組み込みだとライセンス上の問題が生じる(国有財産
…)
独立なプログラム同士として連携するだけなら無問題
CGI的な機能をプロキシに導入するとどうなるかに興味
CGI:Common Gateway Interface

動的コンテンツの提供


外部プログラムによる、
HTTPサーバの機能拡張
インターフェイス仕様

入力
• 環境変数
• プログラム引数
• 標準入力

出力
• 標準出力

プログラム記述言語


任意の言語
適用プロトコル

HTTP
CFI-CGIとの対比

付加価値サービスの提供


外部プログラムによる、プロ
キシサーバの機能拡張
インターフェイス仕様

入力
• 環境変数
• プログラム引数
• 標準入力

出力
• 標準出力、標準エラー出力

プログラム記述言語


任意の言語
適用プロトコル

任意のプロトコル
CFIの使用法

CFIスクリプト



適用フィルタの選択
ヘッダの加工
ボディの加工
#!cfi
Content-Type: text/
Filter: en2ja
-Content-Type:image/gif
Filter: gif2jpeg

フィルタの挿入位置

--
要求フィルタ・応答フィルタ・双方向フィルタ
CFIによる暗号化プロキシの実現


任意のSSL非対応プロトコル、SSL非対応クライ
アント/サーバを、SSL対応に
SSL用フィルタは、CFIにより接続(OpenSSL使用)
CFIの利点
単純・普遍的なインターフェイス仕様
 任意の記述言語でフィルタを実装できる
 既存ソフトをフィルタとして再利用が容易
 DeleGateを改変せず利用可・独立な頒布
 栄枯盛衰する基盤技術からの独立

応用プロトコル
 記述言語

コンテンツ変換の応用実例

日本語コード変換

JIS,Shift_JIS,EUC-JP,UTF-8

SSL暗号化中継

英日翻訳中継


画像圧縮変換中継



O社、S社、 農水省農業生物資源研究所*
H社
大阪弁変換フィルタ*
携帯端末用コンテンツ圧縮・分割フィルタ