メモ
==============================================
今日時点での残課題
・kernel
 ビルド。
・mpd4
 linkupのスクリプトをなんとかする。シェルスクリプトが全然わからん。
 ipcpのDNSを自動反映したい。
 pidファイルの名前、なにがどうなってる?
 ログの内容について
 /usr/local/share/doc以下doc見えるようにしたい。
・pf
 ルール見直し・・・
■簡単オペ
/usr/local/etc/mpd4/mpd.conf
mpd4 -b

■pf 備忘
/usr/etc/pf.conf
/etc/rc.d/pf start
pfctl -f /usr/etc/pf.conf
pfctl -s rules

===============================================
事前の状態
・インストール時の設定か、
rc.confに
 ifconfig_rl0=...
 defaultrouter=...
resolv.confに
 domain ...
 nameserver ...
があった。(あとで思い出した。)
これは消した。

①mpd4
☆netgraphを生かす。カーネルは後で。rc.confで
ng_pppoe_load="YES"
⇒再起動もしくは kldload /boot/kernel/ng_pppoe.ko

☆portinstall net/mpd4
⇒/usr/local/etc/mpd4/以下に設定ファイル

☆mpd.conf, mpd.links, mpd.secretの編集とパーミッション設定

☆pf設定後に、mpd.scriptでuplink時にpfを再設定してやることが必要。
 pfが生きてきたときに、まだ ng0 は設定されていない。
 (今回、mpd.conf で uplink時のスクリプトを mpd.script_PPPoE.sh )
 シェルの書き方がわからんので動かない!caseもなにも外した。動いた。
 後でしらべてちゃんとやる。

☆/etc/rc.conf
mpd_enable="YES"
mpd_flags="-s mpd -b"
☆/etc/syslog.conf
!mpd
*.* /var/log/mpd.log
(logファイルのtouch、パーミッションの扱いは http://freebsd.fkimura.com/pppoe-a0.html# )

☆/etc/newsyslog.conf
/var/log/mpd.log 640 3 100 * JC /var/run/mpd.pid

☆/usr/local/etc/rc.d/mpd4/mpd4
pidファイルの名前がインストール時は mpd4.pid なのだが、
どうも再起動等おかしい?うまくいかないのでとりあえず
/etc/newsyslog.conf でもそうしているので mpd.pid にした。
あとで調べる。

☆/etc/resolv.conf
DNSサーバはmpd4がipcpでプロバイダからとったものを入れたいのだが・・・;
あ、指定しなければどうなるのだろう?
まあ、結局ipcpの内容を調べてじか書き。
あとで調べる。

☆/etc/rc.conf
 ifconfig_rl0=...
 defaultrouter=...
の固定指定を消す。

☆開始・・・
結局リブートしたが、要するに
/usr/local/etc/rc.d/mpd4 start
か。

接続。resolv.confでは悩んだが結局OK。

②pf
基本
http://www.crimson-snow.net/hmsvr/bsd/memo/packet_filter.html
のまま・・・
☆カーネル
pfは5.3以降?組み込み済ということなのでカーネル再生成せず

☆rc.conf
pf_enable="YES"
pf_rules="/etc/pf.conf"
pf_flags=""
pf_program="/sbin/pfctl"
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
pflog_flags=""

☆/etc/pf.conf
同ページの「国別IPアドレスリスト破棄の設定」
もやってみた。

☆ALTQ
有効にしていないので、いつもいつもエラーが出る。
なんか不快なので、有効にしちゃおう。

☆いくらやっても起動時にうまくいかない。
結局ng0のできる前に有効化してほっといてるからのようだ。
linkupスクリプトで再有効化。
http://www.seichan.org/wiki/index.php?FreeBSD-mpd

これでうまくいった。

==============================================

FreeBSD 備忘録「mpd4でPPPoEを試すメモ」
 ⇒NetGraphを生かすrc.conf
 ⇒mpd4のインストール、設定、接続
http://freebsd.fkimura.com/pppoe-a0.html

日替わり実験室
☆包括的。とてもありがたい。
http://www.daily-labo.com/

第14回 FreeBSD+mpdによるブロードバンドルータの高速化
FreeBSD4.8 + mpd
 ⇒NetGraphを生かすカーネル
 ⇒mpdのインストール、設定、接続
 ⇒mpd.confとても詳しい
http://www.daily-labo.com/ygg14.html
第22回 FreeBSDでPacketFilter(pf)を使う
☆詳しくて分かりやすい。
http://www.daily-labo.com/content_22.html

FreeBSD で PPPoE ルータ (mpd 編)
FreeBSD-mpd Wiki
http://www.seichan.org/wiki/index.php?FreeBSD-mpd

FreeBSDでPPPoE複数セッション接続
FreeBSD?? + ppp + ipfw
☆DNS周りの扱い、
http://euc.jp/network/pppoe.ja.html

FreeBSD+mpdでマルチセッションPPPoE
FreeBSD?.? + mpd3.18? + ipfw
ちょっとだけ昔か?
☆設定ファイル群詳しい
http://www.j.dendai.ac.jp/~fujimoto/FreeBSD/mpd.html

ハンドブックの[8.3. カスタムカーネルの構築とインストール]
☆今回は、まだGENERICです。
http://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/kernelconfig-building.html

PF: パケットキューイングと優先順位付け
OpenBSD + altq
2chより漂流。キャッシュしかねえ・・・
☆altqについて、とても詳しい。
http://openbsd.bug.it/faq/pf/ja/queueing.html
http://72.14.253.104/search?q=cache:LuYil2yBILgJ:openbsd.bug.it/faq/pf/ja/queueing.html+pf+altq+priq&hl=ja&ct=clnk&cd=1&gl=jp

フィルタリング
FreeBSD?.? + IPFW/IPFilter
☆稚内北星のテキスト?わかりやすい。よくできてるなあ。
http://www.wakhok.ac.jp/~kanayama/summer/02/site/node96.html

ハンドブックの「ファイアウォール」
http://www.jp.freebsd.org/www.FreeBSD.org/doc/ja_JP.eucJP/books/handbook/firewalls.html

PPPoE ルータ同志で IPsec を構築するときの問題
☆これ読んで pf に決めた。
http://nabe.blog.abk.nu/IPsec_on_PPPoE

★★M/M/1モデル

★★最初に、以下のものを書き出してしまえ。
   λとμとρ (時間or分or秒であわせておくこと。)
   上記がわかれば、単に逆数である『平均到着間隔』と『平均サービス時間』も書き出す。
   使用率ρ=λ/μ
   待ち行列長さの公式 ρρ/(1-ρ)
   待ち時間の公式 tw=ts( ρ/(1-ρ) )
   その変形 tw= ρ / μ(1-ρ)

★★平均応答時間と平均待ち時間でダマシがある。
   平均応答時間 = 平均待ち時間+平均処理時間 だ!!

★★可能な限り最終解をxとして、代数のままいい形にもっていってから解くこと!

★★分数で割るのは、分数の逆数をかけること。

★★分子が分数の場合、そいつの分母は下にもっていける。

★★割り算の桁数にはくれぐれもきをつけること。

★★1時間は3600秒。

★★★記号
λ:平均到着率(人数/時間)
μ:平均サービス率(人数/時間)
s:窓口の数
ρ:平均利用率
P0:系の中の客数0の確率(またされない確立)
Pn:系の中の客数がn人である確率
L:系の中にいる客の平均人数
Lq:サービス待ちの人の平均人数
W:系の中の平均時間
Wq:平均待ち時間

★★ケンドールの記号
M:ランダム分布(到着がポアソン分布、サービス時間が指数分布)
G:一般分布(等間隔)
D:一定分布
Ek:アーラン分布(位相k)


平均到着率 λ(ラムダ) 
 要求の到達頻度
 単位時間あたりλ件の要求入力
 単位時間に到着する客数の平均値
 ⇒ 1/λは、1件ごとの到着間隔になる。
 ★1時間に3人:λ=3(人/時間)
   10分に2人:λ=2(人/10分)=0.2(人/分)=12人(人/時間)

平均サービス率 μ(ミュー)
 処理時間分布
 単位時間にサービスを受ける客数の平均値
 単位時間あたりμ件の処理能力
 ⇒ 1/μは、1件あたりの必要処理時間 Ts になる。
 ★1時間に5件:μ=5(件/時間)
   10分に2件:μ=0.2(件/分)=12件(件/時間)

平均利用率、占有率、使用率ρ(ロー)
 要求の頻度に対する処理能力の大きさの比率
 ⇒ρ = λ / μ

★★公式1
 P0(t) = 1-ρ
 (系に0人いる確率=待たされない確率=1-ρ )

★★公式1からの導出
 待たされる確率=ρ
 待たされる確立=系に0人いるのではない確率=ρ

★★系内の平均客数(L)
 L= ρ / (1-ρ)

★★待ち行列内の平均客数(Lq)
 Lq = (p^2) / (1-ρ) 

★★リトルの公式
 ①Lq = λ Wq 
 Lq:待ち行列の長さ
   サービスを待っている人の平均人数
 λ:平均到着率
 Wq:平均待ち時間
   到着してからサービスを受けるまでの平均待ち時間

 L=Lq+(λ/μ)
  系内客数 = 待ち行列客数+ (平均到着率/平均サービス率)
  いくらでも変形できる。L=ρ/(1-ρ) で、Lq=ρρ/(1-ρ) としても実は同じ。

 Wq=Lq/λ
  行列待ち時間=待ち行列客数 / 平均到着率
  Lq=ρρ/(1-ρ)、ρ=λ/μ で Wq = ts ( ρ/1-ρ ) を変形しても同じ。

 W=Wq+1/μ
  系内平均時間 = 行列待ち時間 + (1/平均サービス率)
  で、平均サービス率の逆数は平均サービス時間なので、
  「待ってる時間+サービス時間」が系内にいる時間。実はあたりまえ。

★★平均待ち時間(Wq)
 (客が待ち行列に到着して最後尾に並び始めてからサービスを受け始めるまでの時間)
 Wq = ρ / (μ(1-p))
 Wq = ts ( ρ/(1-ρ) )

  変形すれば同じもの。
   tw=ts ・ ρ/(1-ρ) ※※ twは記号で言うWq、tsはμの逆数

『MACが自分宛で、IPが自分宛でない場合、ルータのお仕事開始となる。』

ちょっと混乱してたが、なるほど、わかりやすいなこの Wikipedia の項目。