Hatena::ブログ(Diary)

mura日記 (halfrack)

2016-02-02

雑な LVS/TUN の解説図

LVS で IPIP と DR(DSR) を用いる場合のパケット解釈フローについて、雑に図を起こしたので Web へ放流しておきます。

リンク先にオリジナルサイズもあります。

ホワイトボードを写真に撮ったレベルでツッコミどころもありますが、新人に聞かれて説明するときのお供に便利かもしれません。

f:id:halfrack:20160202204212p:image

keepalived + ipvs + tunl0 + lo0 の構成は文章で説明するにはややこしすぎるので、解説するためにこういう図を何度もホワイトボードに書いた覚えがあります。

2015-12-28

2015-08-28

パンドー156A

パンドー156AないしはTB156Aの高解像度画像です。リンク先に飛んでオリジナル画像を表示すれば、表面の説明とか読めます。

f:id:halfrack:20150828194820j:image

f:id:halfrack:20150828194742j:image

ロードスターの幌を補修するのに使う接着剤をどうするかで、マツダ純正のパンドー156Aを使うか、よりモダンと思われるセメダインスーパーXにするか悩んでいて、インターネット上にはパンドー156Aのデータが無さそうなのでえいやっと買ってみた次第。

が、特に有益な情報は得られず。最高使用温度とか知りたかったんだけどなぁ。

炎天下では幌はかなり高温になるので、弾性接着剤の中でも耐熱性に優れたものを選ぶ必要があります。普通の接着剤は 100度以下でダメになるものも多いです。

なお幌の接着でなくとも、大量なのに安い接着剤として良さげ。

2015-02-13

HD-PNF1.0U3-BWC の中身

東芝でした。

f:id:halfrack:20150214000218p:image

HD-PNFU3 の情報はあるんだけど、 HD-PNFU3-C はググっても見つからなかったので、ここに記す。

あと、何か ugen が見えるのは、気になるところである。

ugen3.2: <BUFFALO> at usbus3
umass0: <BUFFALO HD-PNFU3, class 0/0, rev 2.10/1.01, addr 2> on usbus3
umass0:  SCSI over Bulk-Only; quirks = 0x0100
umass0:4:0:-1: Attached to scbus4
da0 at umass-sim0 bus 0 scbus4 target 0 lun 0
da0: <BUFFALO HD-PNFU3 0000> Fixed Direct Access SCSI-6 device
da0: Serial Number 00000XXXX000XXXX
da0: 40.000MB/s transfers
da0: 953869MB (1953525168 512 byte sectors: 255H 63S/T 121601C)
da0: quirks=0x2<NO_6_BYTE>

2014-07-10

FreeBSD MCA

libreoffice を何回かこねている最中、なんか面白メッセージが出た。

Jul  9 21:18:02 halfrack kernel: MCA: Bank 4, Status 0x9400c00000080813
Jul  9 21:18:02 halfrack kernel: MCA: Global Cap 0x0000000000000107, Status 0x0000000000000000
Jul  9 21:18:02 halfrack kernel: MCA: Vendor "AuthenticAMD", ID 0x600f20, APIC ID 16
Jul  9 21:18:02 halfrack kernel: MCA: CPU 0 COR BUSLG Source RD Memory
Jul  9 21:18:02 halfrack kernel: MCA: Address 0x3d5221ec0

Machine Check Architecture と言うものらしい。

http://gihyo.jp/admin/clip/01/fdt/201205/28

COR とか書かれている行はフラグが列挙されている雰囲気だが、まだ man とか無いので意味が知りたければ sys/x86/x86/mca.c を読むのが手っ取り早い。

2014-06-02

Android GoogleMap でレーン表示が出るようになった

8.0.0 からだと思うけど、 AndroidGoogle Maps のカーナビ機能で、交差点でのレーン表示が出るようになった。

合わせて、マップに別経路が提案されるようにもなった。多少はずれても選んだ経路へ戻るルートを提案し続ける傾向になった気もするが、これはよく分からん。

f:id:halfrack:20140601180918p:image

レーン表示はアプライアンスなカーナビの優位点だと思っていたので、これはカーナビメーカー危うしという感じがする。

まだ優位性は残っていると思うけど、数がものを言う通信機能なんかは Google Maps に先を行かれているので、普及価格帯の製品にも付けるとかして頑張ってほしい。

とはいえ、 20万円も取るような商売はもう出来ないだろうなぁ。 PC/AT互換機の登場に近い雰囲気を感じる。

2014-03-13

質感まで表現できるカメラが欲しい

手に入れた気がする。

このぐらいになってくると、画像の縮小アルゴリズムとかも雰囲気に影響するようになってくる。その点、はてなフォトライフはいまいちである。オリジナルサイズの画像をアップロードした方と比較するとなんか違う。

f:id:halfrack:20140314012820j:image

iG50 は良いタイヤでした。バンパーでラッセルする深雪でも再発進出来るし、深夜の凍結路でも一度のトラブルも無くこの冬を越せました。

シャーベット状の雪を漫然と走っていたときはヒヤッとしたけど、これは私が悪い。

2013-11-27

Intel SSD のファームウェアを USB メモリで更新する

Intel SSD Firmware Update Tool は ISO イメージを dd で直接 USB メモリに書き込むと、その USB メモリから boot して使える。

具体的にはこう。

dd if=issdfut_2.0.6.iso of=/dev/da0 bs=1M

この da0 の USB メモリから起動すると、暫く ISOLINUX とか表示され動かなくなるが、放っとくと起動する。

前の issdfut は ISO イメージからファイル引っこ抜いて FreeDOS でほにゃららみたいなことをする必要があり面倒だったが、久しぶりに同じことをしようと mount_cd9660 したら、 vmlinz とか見えたので試したら上手くいった。 2系から変わったんかな?

たぶん isolinux さん辺りがよきに計らってくれてるぽいが、 CD boot 用の bootloader なのに USB メモリからも起動するのは面白い。

2013-11-12

SNS にアップロードして満足しちゃってるの良くないので、多少は写真エントリも書くようにしたい…。

2013-09-19

今年こそ Android で IPv6 元年

日本国内で Android にて 3G/LTEIPv6 が使えるようになった、という話。

の 3つについて、 Nexus 7 2013 での設定方法もメモしておきます。

DoCoMo Xi

DoCoMo 純正の Xi SIM で IPv6 接続する場合について。 Xperia SP か何かと一緒に契約した気がします。

  1. My docomo にて mopera U を追加で契約
  2. http://www.mopera.net/customize/ にて「IPv6 アドレスを利用する」に設定
  3. APN 設定画面にて APN プロトコルに IPv4/IPv6 を選択

www.mopera.net で設定をいじる必要があるのがミソ。下記 PDF の序盤とかを参考にすればいいと思います。

http://www.mopera.net/manual/option/ipv6_l02c_win.pdf

実際の設定画面はこんな感じ。

f:id:halfrack:20130919211729j:image:w300

DoCoMo 純正端末だと殺されている選択項目が Nexus 7 2013 ではまともに使える。

f:id:halfrack:20130919211916j:image:w300

NTT DOCOMO で…

f:id:halfrack:20130919211406j:image:w300

IPv6 です。

f:id:halfrack:20130919211438j:image:w300

au iPhone 5 SIM

au LTE の SIM で IPv6 接続する場合。 iPhone 5 から引っこ抜いた SIM ですが、 Android と同じ SIM だと思われます。

  1. au お客さまサポートにて LTE NET for DATA を追加で契約
  2. 一晩待つ
  3. APN を下記に設定
  4. 安定しない場合はキャリアサーチで KDDI に固定

なお、 au はどっかのキャリアと違って素晴らしいので、 au 販売の端末でも LTE NET for DATA を契約し上記 APN に変更すれば、 IPv6 が使えるものと推測しています。未確認なので誰か試して!

なお、 uno.au-net.ne.jp では IPv6 が使えなかったので、 LTE NET for DATA の契約は必須である模様。

Nano SIM なのでこういうことをします。

f:id:halfrack:20130919220158j:image:w300

APN はこんな感じ。

f:id:halfrack:20130919221120j:image:w300

f:id:halfrack:20130919221409j:image:w300

WCDMA 端末でも LTE Band 1 対応なら繋がり…

f:id:halfrack:20130919221604j:image:w300

IPv6 アドレスが付く。

f:id:halfrack:20130919221723j:image:w300

IIJmio 高速モバイル/D

IIJmio SIM も例によって IPv6 に対応している。

  1. APN 設定画面にて APN プロトコルに IPv4/IPv6 を選択

極めて簡単。契約とか網側設定とかを Web 経由で設定したりする必要は無い。本来こうあるべき。

ASUS Shop で IIJmio プリペイドパックなるキャンペーン商品を購入している人はかなり居るはずなので、設定の容易さも相まってモバイル環境での IPv6 普及率を押し上げてくれるんじゃないかと期待している。

f:id:halfrack:20130919234428j:image:w300

特に IIJmio とか出ないんですが…

f:id:halfrack:20130919234453j:image:w300

アドレスはこうなる。

f:id:halfrack:20130919234612j:image:w300

Nexus 7 2013 のプリセットで入ってる APN もデフォルトで IPv4/IPv6 にしないのかなぁ?

背景

日本では、割と前からモバイルネットワーク側は IPv6 に対応していた。

が、スマートフォン側は下記のような状況で、なかなか IPv6 を試すことが出来ないで居た。

  • mopera UIPv6LTE 端末専用
    • PGW のみ IPv6 対応であるためと推測*4
  • au の LTE 端末は私が持っていなかった
  • 国内の DoCoMo LTE 端末はわざわざ IPv6 を殺してある
  • 海外端末
    • 国内の Band 1 LTE に対応する端末が最近まで存在し無かった
    • 外国人旅行者の知人に手伝ってもらわないと電波法的にホワイトで無い

そこに颯爽と Nexus 7 (2013) なる端末が現れた。

  • 国内 Band を含む LTE Band 1,2,3,4,5,7,20 対応
  • キャリアによる IPv6 を殺す余計なカスタマイズが無い
  • 技術適合取得済み

これらの条件により、日本で心置きなくモバイルで IPv6 を楽しむ環境が整った。

なお、 au ユーザはもうちょっと前から IPv6 を楽しむことが出来ていた模様。俺、 WiMAX が使えるんで愛用している Motorola Photon が 2年経ったら au LTE 端末をゲットするんだ…。

その他 Nexus 7 2013 雑感

OTA を適用した後、右上の「初期設定にリセット」するとプリセットでこれだけ出てくる。

f:id:halfrack:20130919211658j:image:w300

この亀の躍動感をお伝えすることが出来ないのが残念です。

f:id:halfrack:20130919213520j:image:w300

キャリアサーチするとこんな感じ。

f:id:halfrack:20130919222725j:image:w300

さあ皆も Nexus 7 2013 で IPv6 だ!

2013-08-28

halfrack@halfrack> dig a www.nytimes.com

; <<>> DiG 9.8.5-P2 <<>> a www.nytimes.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62505
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;www.nytimes.com.               IN      A

;; ANSWER SECTION:
www.nytimes.com.        7736    IN      CNAME   nytimes.com.
nytimes.com.            7737    IN      A       141.105.64.37

;; AUTHORITY SECTION:
nytimes.com.            64969   IN      NS      ns2.syrianelectronicarmy.com.
nytimes.com.            64969   IN      NS      ns1.syrianelectronicarmy.com.

;; ADDITIONAL SECTION:
ns1.syrianelectronicarmy.com. 208 IN    A       141.105.64.37
ns2.syrianelectronicarmy.com. 208 IN    A       141.105.64.37

;; Query time: 1 msec
;; SERVER: 192.168.x.x#53(192.168.x.x)
;; WHEN: Wed Aug 28 11:12:19 JST 2013
;; MSG SIZE  rcvd: 152

halfrack@halfrack> 

2013-06-17

六丁峠

始めて通ったときに見た、雲がかかった山並みの眺望が綺麗で、強く印象に残っている。

雰囲気も好き。 WUXGA 縦ぐらいでお楽しみください。

f:id:halfrack:20130609175821j:image

なお、後方は離合不能な道が数百メートル、前方は最小旋回半径が気になるレベルのつづら折れなので覚悟して突っ込みましょう。

2013-06-10

ダイアリーの下書きばかりがどんどん溜まっていくっ!

chown -R による壊滅的な状況を切り抜ける方法

ある日、ぼーっと DB のコピーをした後に、コピー元と uid が違っていたので以下のようなコマンドを叩いた。ぼーっと。

chown -R mysql:mysql ../

これを叩いたときのカレントディレクトリは /var/lib/mysql である。ドットが一個多いので /var/lib 以下が全部 mysql になって大惨事。

こういうとき FreeBSD だったらmtreeを使うんですが、 GNU/Linux だと無いようなのでどうするねん。と困っていたところ、 satoh_fumiyasu@ さんに getfacl/setfacl というポインタを教えてもらいました。

同一構成の適当なホストからパチってきて合わせる。

-bash-3.2# hostname
rokuchotouge
-bash-3.2# pwd
/var
-bash-3.2# getfacl -R lib | nc tochugoe.localdomain 30000
-bash-3.2# 
-bash-3.2# hostname
tochugoe.localdomain
-bash-3.2# pwd
/var
-bash-3.2# nc -l 30000 | setfacl --restore=-
setfacl: lib/hoge: No such file or directory
(snip)
-bash-3.2# 

残りは ls -Rl | grep mysql とかで探してよきに計らう。

10年に一度ぐらいしか作らないようなホストを作る最後の方でヘマやらかして、作り直しに心折れていたところなので大変役に立ちました。

2013-04-22

警察庁の有識者は torrc.sample も読んでいないのではないだろうか

念のため強調しておきますが、個人の見解なので誤りなど多分に含まれうるものです。ご注意を。

発信元の特定を困難にする匿名化システム「Tor(トーア)」を悪用した犯罪対策を検討していた警察庁の有識者会議は18日、サイト管理者の判断で通信を遮断することが抑止に効果があるとする報告書をまとめた。警察庁は提言を踏まえ、インターネット接続事業者の業界などに自主的な取り組みを促す。

(中略)

具体策として、同システムが経由地に使うパソコンのうち、最後の3台目に割り当てられたIPアドレスの一覧が公開されている点に着目。このIPアドレスからアクセスがあった場合、通信を遮断するようにすれば犯罪抑止に一定の効果があると提言した。

http://mainichi.jp/select/news/20130418k0000e040232000c.html

コンテンツサービスプロバイダ(CSP)側で Tor によるアクセスの遮断を警察が要請するそうで。ここでは原文に当たった上で CSP サイドでのフィルタと判断し議論します。*1

CSP 側によるフィルタリングも Tor は考慮している*2んですが、有識者の皆様におきましては torrc.sample ぐらいはお読みになられたのでしょうか。

177 ## Bridge relays (or "bridges") are Tor relays that aren't listed in the

178 ## main directory. Since there is no complete public list of them, even an

179 ## ISP that filters connections to all the known Tor relays probably

180 ## won't be able to block all the bridges. Also, websites won't treat you

181 ## differently because they won't know you're running Tor. If you can

182 ## be a real relay, please do; but if not, be a bridge!

183 #BridgeRelay 1

https://gitweb.torproject.org/tor.git/blob/release-0.2.4:/src/config/torrc.sample.in

ISP サイドでのフィルタリングについては、凄いコストを ISP に強いることになるわ、通信の秘密とは何だったのかとなるわ、挙句の果てに Tor の仕組みから全然効果が無いので言語道断だと思います。

CSP サイドでのフィルタリングも上記の仕組みにより面倒くさくする程度の効果しかなく、例えば Socks Proxy たる Tor の先に国外の野良 HTTP Proxy を挟むという手法で突破出来、*3効果が無いでしょう。

多段プロキシによるTorのExitノードの隠蔽についてが追試せんでも見りゃ分かる良い資料*4ですね。

雑感

  • 「我が国に Tor は不要」*5という内容の発言をしちゃうような人が警察側に居る事実より、匿名であることを技術的に担保出来る仕組みの存在は非常に重要であると認識を新たにしました。
  • 某市政とか見てると日本においても「政府の弾圧」が無いとは言いきれないと思うので、遮断するんであれば日本を中国と同等の国にする覚悟が必要かと思います。(それが良いことかどうかはお読みの方にお任せします。)
  • というか、前述の仕組みもあり某検閲先進国の金盾でも Tor を止められないのですが、日本なら出来ると考えてるんですかね?
  • 便所の落書き程度の追跡性しか無い代物に過剰な反応してるのがそもそもの間違いだと思います。
  • 便所の落書きを書いた奴が発覚した場合の対応を考えるに、犯行予告は呼び出して事情聞いて要注意人物として様子見るぐらいが正しいんではないか、というのが個人的見解です。*6
  • Tor 自体の研究すべきだが民間じゃ利益が出ないのでうんぬんとあるけど、お前どの口でそれを言っているのかと(ry
    • その受け皿たる国立研究機関をドンドン追い出したツケですねアホー
    • 匿名化システムを作り動かす研究とそれを突破する研究は表裏一体
  • Tor より先に、スパマーなりアタッカーなりを通報しても、踏み台の中に海外 IP アドレスが出てくるだけで諦めちゃうのをどうにかした方がよっぽど有益じゃないでしょうかね。
    • Tor を解析出来たとしても、接続先ノードが海外だったらどうするの?
    • 黒子のバスケ事件はどうなったんだろう?

あ、武雄市とか中国が嫌いな人たちはお呼びでないです。武雄市とか中国が嫌いな人たちはお呼びでないです。大事なことなので二回言いました。

結論

「Tor ノードをブロックしても効果無いでしょ」という指摘が 2013/4/23 の時点で存在していることが重要だと思うので、ここに記す。

ちなみに私は、商取引など匿名や追跡可能性の欠如が問題となるサービスについては、デジタル署名出来る IC カードやワンタイムパスワードトークン等の下層の安全性に左右されない認証方法を用いるか、フレッツ網や携帯電話網みたいな管理された閉域網でやれ、という立場でございます。

そもそも Tor を悪用されて困るような使い方を、有象無象が繋がるインターネットの上でしてはいけない。

*1:誤読してる人も多いので、新聞記者各位には「インターネット接続事業者(ISP)」の狭義の意味と、その文脈における「コンテンツ(サービス)プロバイダ(CP/CSP)」という用語の意味を理解して記事とか書いてほしく思います。

*2:なお、 ISP 側によるフィルタリングに対してはさらに効果がない。

*3:多段プロキシとかガキでも思いつく

*4:悪用するものには常識であり利益が無く、悪用しないものにはリスクを犯さず概要が理解出来る。

*5:原文当たらずに批判する人は躓いて転べば良いと思っているのでワザと表現変えました。「サイバー犯罪捜査の課題と対策」部会 第3回 7ページを参照。

*6:正しいリスクマネジメントの出来ない人は嫌いです。

2013-04-17

サーバ用途でコンシューマ SSD へ調子に乗って書き込みすぎると壊れるという話

Crucial M500 の write endurance が 75TB しか無いというのが話題になっていて、同じく 75TB である m4 をわざと虐待していたホストはどうなったのか気になって調べて見たところ、面白い結果が観測されたという話。

石橋を叩いて壊し障害時の挙動を見るべく「自社全サービスのアクセスログを受け止める syslog サーバ」という、どう見ても書き込み中心で SSD にやさしくないホストをあえて動かしていた。具体的には下記のようなノリのホストである。 iostat の一行目なので uptime 数百日における平均値であることに注意。

[root@touge ~]# iostat -k -x -d sda | sed -n '3,4p'
Device:         rrqm/s   wrqm/s   r/s   w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda              27.36   414.31 47.72 82.46  2902.21  3431.04    97.30     0.39    2.96   0.62   8.04
[root@touge ~]# 

平均で 3431KB/s 出ている。上記は HV 上での値なので、 VM の block device layer における write merge 前では write 900IOPS ぐらい。

SMART Attribute を確認して見たところ、 14ヵ月でだいぶ磨り減ったことが観測された。*1 202 Perc_Rated_Life_Used は保証期間に関する値で、書き込みまくって VALUE が 0 になるとメーカ保証の範囲外となる。 Perc は Percentage の略で、 RAW VALUE は「何パーセント使ったか」であろう。

[root@touge smartmontools-6.1]# ./smartctl -i /dev/sda | egrep '(Model|Firm|Capa)'
Model Family:     Crucial/Micron RealSSD m4/C400
Device Model:     M4-CT512M4SSD2
Firmware Version: 0309
User Capacity:    512,110,190,592 bytes [512 GB]
[root@touge smartmontools-6.1]# ./smartctl -A /dev/sda | egrep '^(ID|  5|  9|173|195|202)'
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
  9 Power_On_Hours          0x0032   100   100   001    Old_age   Always       -       13748
173 Wear_Leveling_Count     0x0033   033   033   010    Pre-fail  Always       -       2018
195 Hardware_ECC_Recovered  0x003a   100   100   001    Old_age   Always       -       106
202 Perc_Rated_Life_Used    0x0018   034   034   001    Old_age   Offline      -       66
[root@touge smartmontools-6.1]#

m4 の保証値である 75 TB を 3431KB/s で焼きつづければ単純計算で 271日なので、そら当たり前だろうという話ではあり、設計段階から分かっててわざとやった結果である。むしろ 3.4MB/s で 426日ほど*2焼きつづけたのにまだ 1/3 残ってることが驚きである。 2.35倍ぐらい持っている。

173 Wear_Leveling_Count の RAW VALUE も興味深い。 25nm 世代 NAND の書き換え回数が 3000回なので、これがページの平均書き換え回数だと色々しっくりくる。

14ヵ月で 1/3 まで減っているので、単純計算すると上記の使い方でこいつは 2年弱しか持たない。実環境の最悪値かつ保証が切れるだけだが「容量が手狭になるまで持てばいい!」で済ますには微妙なラインである。

結論

最近の*3コンシューマ向け SSD は書き込みまくる用途だと壊れうる。

常日頃から「SSD は壊れない」とか言っていますが、これは「お前が言ってる書き込み量はバーストの値*4でライフサイクル平均でそんな書いてる訳じゃないだろ」ないしは「DB 用途でヘビーに使っていても実は書き込みは*5そんなに多くない」という側面が強く*6、裏を返せばライフサイクル平均で書き込み量が重くのしかかる用途だと寿命を気にする必要がある。

気にする必要がある、なので、たとえば「同じぐらいの平均書き込み量で 10台ストライプするから 4000日=11年ぐらい保証の範囲で使えるので大丈夫だろう」なり、「書き込み 3倍あって同じく単体で使う予定だから 4ヵ月でいつ壊れてもおかしくない」という話ではある。

コンシューマ向け SSD も登場から年月が経ち、各ベンダーとも読みが正確になってきたのかマージンが削られる傾向にある。*7エンタープライズ向け SSD を選択肢に入れるなど、きちんと書き込み量のキャパシティプランニングを行う必要がある時期に達しつつあるのではないだろうか。

備考

以下は、生の smartctl 出力と備考。

続きを読む

昔の SSD はタフだった

d:id:halfrack:20130417:1366193468 を見た同僚が教えてくれた X25-M G2 のホストについて、古い SSD はマージンたっぷりだったという話。

このホストは DB サーバだが、メッセージングサービス的なものに使われているので、更新ヘビーで辛い DB になる。

[root@nantokagoe smartmontools-6.1]# uptime
 19:29:02 up 1028 days,  2:49,  2 users,  load average: 0.00, 0.05, 0.04
[root@nantokagoe smartmontools-6.1]# iostat -k -x -d sda | sed -n '3,4p'
Device:         rrqm/s   wrqm/s   r/s   w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.12   246.21 114.24 260.99  1434.11  6111.88    40.22     0.02    0.19   0.11   4.19
[root@nantokagoe smartmontools-6.1]#

書き込み量は前エントリの倍近いレートの 6.1MB/s である。

しかし、 SMART Attribute を確認すると、この書き込み量で 36ヵ月以上虐待し続けたにも関わらず、 233 Media_Wearout_Indicator は 39% 残っている。*8

[root@nantokagoe smartmontools-6.1]# ./smartctl -i /dev/sda | egrep '(Model|Firm|Capa)'
Model Family:     Intel X18-M/X25-M/X25-V G2 SSDs
Device Model:     INTEL SSDSA2M080G2GN
Firmware Version: 2CV102G9
User Capacity:    80,026,361,856 bytes [80.0 GB]
[root@nantokagoe smartmontools-6.1]# ./smartctl -A /dev/sda | egrep '^(ID|  5|  9|225|233)'
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0032   100   100   000    Old_age   Always       -       164
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       26935
225 Host_Writes_32MiB       0x0030   200   200   000    Old_age   Offline      -       16741249
233 Media_Wearout_Indicator 0x0032   039   039   000    Old_age   Always       -       0
[root@nantokagoe smartmontools-6.1]#

225 Host_Writes_32MiB に至っては RAW VALUE がカンストしてしまっていて、メーカー想定外の酷い使い方である雰囲気を感じる。また、この値を信じるなら最低でも 535TB は書き込んでいることとなり、 X25-M G2 公称値の 15TB を 35回ほどブッちぎっている。ほんと良く壊れてないなこいつ。

結論

危険側に倒さなそうなメーカの初期製品は、マージンもりもりで美味しい。*9

初期の製品だったので、ありとあらゆるところを安全側に倒してこの SSDIntel は設計・開発したのだろう。また、 X25-M G2 の NAND は 34nm のものであり 5000回の書き換えに耐え、最近の微細化が進んだ NAND より書き込み量の面で大きな余裕がある。

備考

以下備考と全ログ。

続きを読む

*1:SMART Database が最新じゃないと unknown ばかりで読みづらいので最新版の smartmontools を使っている。

*2:Power On Hours と合わないが電源入れてから直ぐに使ってる訳ではない

*3:具体的には 25nm 世代以降のものを指している

*4:サーバ捨てるまでの4年間を考えれば日単位もバーストである

*5:Web アプリケーションは九割方参照である則

*6:メーカが安全側へ盛大に倒してるのでマージンを美味しくしゃぶりましょうという意図ももちろんある

*7d:id:halfrack:20130417:1366197019

*8:最初 100 でした。

*9:という場合もある

2013-04-10

赤色灯が付いたオービスが目印の山中越にて。

モニタが真っ暗になるぐらい暗くてオートフォーカス出来なかったら無限遠になるだろ、と撮影したら無限遠ではない何かのピントになってしまったの巻。

露光時間が秒単位になる場合は1枚撮る度に再生モードにしてピントを確認しながら MF 撮影する必要があると学びました。

f:id:halfrack:20130408030004j:image

送電容量が大きいのかごつい送電線である。撮影時は雨上がりの夜で湿度が高いためか、ジージーという放電音が聞こえていた。

2013-04-03

CPU もディスクも貧弱なホストで portmaster+packages にて binary only FreeBSD をしたい。という話。

  • portsnap.conf の REFUSE に全カテゴリ指定
  • portmaster.rc は以下
PM_PACKAGES=only
PM_ALWAYS_FETCH=pm_always_fetch
PM_INDEX=pm_index
PM_INDEX_ONLY=pm_index_only
PACKAGESITE="http://ftp10.us.freebsd.org/pub/FreeBSD/ports/amd64/packages-8-stable/"
MASTER_SITE_INDEX="http://ftp10.us.freebsd.org/pub/FreeBSD/ports/amd64/packages-8-stable/"
INDEXFILE="INDEX"

portsnap update で INDEX とか UPDATING の類だけ更新して、 portmaster はデフォルトで -PP 相当になるようにする、という感じ。これで上手く動くかな?

ports tree を持てばもっと楽ちんなことは確実だが、容量ちいさくて置いとけないんです…。

こういうのは freebsd-users-jp で相談したら良さそうな気もする。

2013-04-01

Comet 的な HTTP トラフィックのベンチマークを weighttp でやってみる

HTTP コネクションは張ったままだけど大して通信しないという、いわゆる Comet のような負荷をベンチマークするのは意外と難しい。

以下の patch を当てた weighttp でベンチマークすると良い感じだった。 weighttp はいわゆるベンチマークツールだが、軽量かつイベントドリブンなのでコネクション数について良くスケールする。

&#42;* worker.c.orig       2013-04-01 16:59:12.000000000 +0900
--- worker.c    2013-04-01 17:06:02.000000000 +0900
***************
*** 17,22 ****
--- 17,23 ----
        worker = W_MALLOC(Worker, 1);
        worker->id = id;
        worker->loop = ev_loop_new(0);
+       ev_set_io_collect_interval(worker->loop, 3);
        ev_ref(worker->loop);
        worker->config = config;
        worker->num_clients = num_clients;

上記パッチを当てると、トラフィックは 3秒に 1回ぐらいしか流れなくなりぬるくなる。コネクション数以外の部分では当たらなくなるので好都合。

こいつを使ってクライアント 10台ぐらいで nginx をイジメると簡単に C10K を突破する。ソースポートの数とか色々当たってくるので、(頑張ればもっと張れるのは知っているが)クライアント 1台あたり数千〜数万コネクションに抑えた方が面倒は無い。

参考

weighttp 自体は以下を見て知ったので、詳細は直接見た方が早い。 ulimit まわりの話もあります。

http://www.iij.ad.jp/company/development/tech/activities/weighttp/

追記

便利

https://github.com/y-uuki/weighttp/commit/631d1c7522410a6d009b9affcbc378cff9ce813a

2013-03-23

大抵の場合 NEX-5R のオートモードに負けるので辛い気持ちになるのだが、絞り優先でオートより綺麗に写るというパターンを初経験。三脚を使った夜景撮影だが、例によってカメラを遊ぶ目的なので構図とか適当である。(なんか写り込んでるし...)

上は ISO100 WB:蛍光灯 の絞り優先、下は三脚夜景モード。 ISO3200 なのと WB:AUTO なのがアカン感じ。

f:id:halfrack:20130324021533j:image

f:id:halfrack:20130324021642j:image

ISO400 WB:蛍光灯 DRO:OFF で、対象が照明に照らされて入れば AF のまま、対象が点光源とかなら MF で撮影、ってのが良さげ。手持ちでも ISO400 で頑張った方が良い。 FullHD ぐらいに縮小して見る場合は ISO800 だと荒さの違いが見える。

(芸術的センス以外の部分は)ソフトウェアが人間に勝つ世界、要するにオートでシャッターボタン押すだけが一番綺麗に撮れるという世界の方が、個人的な理想に近くはある。

2013-03-18

SSD に関する雑感

  • SSD は block erase やら wear leveling で作業領域としての DRAM に大きく頼らざるを得ない。
  • 電源断により DRAM の dirty な領域が消失することを考慮しながらメタデータの破損を防ごうとすると、 DRAM -> NAND の書き込み順序に強い制約が生じ、高速化に支障を来す。(ファイルシステムにおけるそれと同じように)
  • DRAM with BBU を仮定すると、ファームウェアが書き込みの順序をイジる自由度が大幅に増す。
  • HDD と違い、 NAND は短時間ならキャパシタの電力で書き込みを行うことが出来るので、 SSD 内部での DRAM with BBU が容易であり広く普及するだろう。
    • コンデンサ二次電池と違い、はめ殺しに出来る程度に寿命が長い。
    • 定期的な交換を必要とせずメンテナンスが楽なので、コンシューマ向けにも普及するだろう。
  • 安価な SSD であっても、コントローラは数十チャンネルの NAND インターフェイスを持ち、それぞれを並列に動作させることが出来る。
  • 多チャンネルの NAND インターフェイスと、 BBU で保護された DRAM があれば、並行な I/O 要求や block erase, ware leveling を強力に最適化したファームウェアを書けるので、 SSD は大幅に高速化する。
  • ケミカルコンデンサも電気二重層コンデンサも経年劣化で容量が減るので、バックアップされてるはずだったが実は容量が足りなくて消えた!という事故が今後 10年ぐらいで起きるだろう。
    • しかし RAID カードの BBU で同様の事が起きるリスクと大して変わらないと思っている。
    • 将来的に SSD にも「定期的にバックアップキャパシタの容量をチェックする」みたいな機能が入るだろう。
  • コンシューマ向けのくだりで定期的な交換は不要と言っているが、全体の製品寿命に対しては十分な寿命があり問題ない、と考えている。(マザーボード上のキャパシタ同様)
  • 電源断についてあーだこーだ書いたが、私が欲しいのは「電源断でも壊れない堅牢なストレージ」ではなく、「電源断を恐れずに高度に性能を追求したストレージ」である。
    • もちろん電源断でも壊れない方が良いです。
  • 電源断まで厳密に保証したミッションクリティカルなストレージを選んで使うより、ノード冗長を取る方が低コストである。
    • ノード冗長の副次的な作用としてオペミスに強くなるというのも、個人的に重視している。
    • 他にも色々ありますが、大体こういう思想です。 http://nippondanji.blogspot.jp/2009/03/ssd.html
  • 商用 UNIX でカチカチに固めた環境じゃないし、一度電源断したホストの DB を使いつづけたりしないでしょ。
  • Linux なんてファイルシステム・ブロックデバイスレベルでテキトーなので、 kernel panic したら一巻の終わり。

つらつら書きましたが、上のようなことを考えながら日々 SSD を使っています。

私は SSD を作る人ではないし、最新の Linux kernel について深い知見があるわけではないので、 Linux kernel hacker からすれば最近の kernel なら問題ないという意見が出てくるでしょうし、 NAND ストレージベンダーからすればツッコミどころ満載かと思いますが、あくまでこういう考えの奴も居るということで。

2013-03-17

NEX-5R で遊ぶ

お手軽コンデジよりあきらかにムズい。デジカメの性能を試そうなので構図が酷いのはご愛嬌。

まずオートフォーカス時々効かなくて、手ブレよりピンボケ写真を量産したので、 DMF か MF で合わせた方が良い。

f:id:halfrack:20130316223913j:image

気合があればシャッタースピード 1.3秒でもブレないので ISO400 ぐらいは使える。むしろピント合わない。

f:id:halfrack:20130316224144j:image

上の ISO400 と比較すると ISO3200 やっぱノイジー。空とか。

f:id:halfrack:20130316224517j:image

高感度撮影するなら連射合成したほうがノイズは少ない。

f:id:halfrack:20130316224719j:image

しかし、下の ISO400 と連射合成で、遠景部分を見てると、彩度が落ちるのか、やっぱり連射合成しないほうが好みな写り方をする。フォトライフの画像縮小がちょっと微妙なので拡大して見た方が良い。

f:id:halfrack:20130316224041j:image

f:id:halfrack:20130316224635j:image

f:id:halfrack:20130316224951j:image

f:id:halfrack:20130316224921j:image

ちなみに、各写真とも連射合成の場合ホワイトバランスが正しい感じになっているのは、多分カメラが勝手に AWB ではなく適当なホワイトバランスに固定しているから。ナトリウムランプなのでオレンジ色に写るのが正しいので、 AWB から蛍光灯あたりに固定するのが良さげ。

なんというか、一番気に入った子の写真が手持ち夜景モードである辺り、素直にカメラに任せた方が一番綺麗なのではないかという疑惑はある。今度は手持ちじゃない方の夜景モードであるとか、レタッチ前提の撮り方も試してみよう。

f:id:halfrack:20130316224835j:image

ホワイトバランスを蛍光灯に、 ISO400 ぐらいで撮影、 DMF でピント合わせる、ぐらいが得られた知見だった。

それなりにちゃんとしたカメラを使うと、 NIKON P300 のお手軽っぷりを再認識出来る…。テキトーに撮ってもソコソコ綺麗に撮れる。

2013-03-12

同一 URL でスマートフォンと PC を出し分けたい vs (キャッシュ出来なくなるので URL 分けるべき or 同一コンテンツで表示変わるようすべき)

みたいな議論を聞いていると、 HTTP レイヤでのキャッシュに用いる key を見直すべき時期に来ているのかなぁ、と思ったりする。

2013-02-03

梶が谷駅

始発まで酒飲んだ帰り道、朝焼けの梶が谷駅。

f:id:halfrack:20130127055146j:image

夜景は、人間の目玉よりデジカメの方が、綺麗に写せると思う。

しっかし、いざ写真を撮ってみると、もっとダイナミックレンジ欲しいとか RAW 使いたいとか色々欲求が出てくるなぁ。だがお手軽さも諦めたくないでござる。

2013-01-27

川崎駅

久しぶりに川崎に来たら、アゼリア入り口がたいへん綺麗になっていてびっくり仰天ですよ。

f:id:halfrack:20130127050154j:image

でも変わらないところもある。

f:id:halfrack:20130127050358j:image

2013-01-22

  • 学生のうちは、暇はあるが技術的刺激が足りない。
  • 社会人になると、技術的刺激に満ち溢れているが、それによって発生した興味を消化しきるだけの時間が無い。

特に低レイヤーな分野とか運用みたいな分野にこの傾向が強い。

よって、学生のうちはスパルタンな OS/distro を使うべきだし、人様が使うサービスを動かす機会があるなら、その機会を失わないように・十分活用し良いものを提供出来るように、努力してみることをオススメする。

それらは仕事で得られる刺激を学生のうちに与えてくれるし、そこで得た経験はとても役に立っている。これを学ぶのは暇な学生のうちじゃないと大変だったろうなとも思う。

2013-01-05

CG-WLR300GNZ を分解した

久しく NW 機器を分解していなかったので、ついムラムラしたので分解した。今は UART を叩いている。

と言う訳で、 CG-WLR300GNZ を分解してみた。

普段買ってる機器と比べるとずいぶんと丸い感じですが、安くて速くて /29 な PPPoE の終端だけする箱が欲しかったので購入。普段は NEC アクセステクニカ製品が鉄板だと考えているので WR9500N を使おうとしたのですが、最近の製品は Unnumbered PPPoE に対応していないことが発覚。

CG-WLR300GNZ は安い民生品なのに PPPoE で 723Mbps とか出るらしい。 NAPT も DNS forwarder も使わんのでテキトーな箱でもきっと大丈夫なはず。はず。

中身は大変シンプル。

f:id:halfrack:20130105233157j:image

その他 IO とか。裏面には初期化ボタンがある。もうシリアル番号とか隠すの面倒くさくなってきた…。

f:id:halfrack:20130105233326j:image

f:id:halfrack:20130105233337j:image

f:id:halfrack:20130105233407j:image

ゴム足が両面テープではなくはめ込み式というところに分解フレンドリーを感じましたが、別に分解されたい訳ではなく、壁掛けにするときにネジを引っ掛けるようになっているだけであった。ネジはヘックスローブが必要。

f:id:halfrack:20130105233555j:image

ネジを 4本外すだけでパカーン。ツメとか無いので分解しやすい。

f:id:halfrack:20130105234607j:image

基板表裏。蟹尽くしである。リンク先に高解像度な画像があります。

f:id:halfrack:20130105234656j:image

f:id:halfrack:20130105235922j:image

メインは Realtek RTL8198 という 500MHz の MIPS を積んだ SoC と、 ESMT M13S2561616A -5TG という 200MHz 32MB の DDR SDRAM かな。

f:id:halfrack:20130105234755j:image

500MHz の MIPS で PPPoE 723Mbps とかどうやって出すねん、と思ったら、以下のような文章を発見した。

Due to its powerful protocol parser, the RTL8198 can recognize and hard-wire-forward VLAN-tagged, SNAP/LLC, PPPoE, IP, TCP, UDP, ICMP, IGMP, and PPTP packets.

http://www.realtek.com/products/productsView.aspx?Langid=1&PNid=9&PFid=11&Level=4&Conn=3&ProdID=308

なーんと PPPoE を "hard-wire-forward" するらしい。スゲーけどちゃんと実装されてるのか不安。まあ PPPoE ってパケット転送単位ではステートレスだから、ワイヤーロジックでも TSO/TOE みたいな地雷は少ないか。

RTL8198_Datasheet_Cleaned_0.91.pdf でググるとデータシートを発見できる。

WLAN は RTL8192CE の模様。 "Single-Chip IEEE 802.11b/g/n 2T2R WLAN Controller with PCI Express Interface" だそうです。 USB じゃないあたりちゃんとしている。

f:id:halfrack:20130105235116j:image

地味に電源まわりは日本ケミコンを使っている。良い。

f:id:halfrack:20130105235256j:image

お次はみんな大好き UART を探す。探すまでもなくピンヘッダが出ている。

f:id:halfrack:20130105235656j:image

裏面のパターンを追っかけるに、 UART で間違いなさそう。

f:id:halfrack:20130106000322j:image

例によって真ん中 2本が TX/RX で、ボーレートは 38400 だった。

long# cu -s 38400 -l /dev/cuaU0
Connected

Booting...
========== SPI =============

SFCR_8198(0xb8001200)=3fc00000

---CG-WLR300GNZ at 2012.03.05-09:44+0800 version:6.0 [16bit](500MHz)
no sys signature at 00010000!
no sys signature at 00020000!
no rootfs signature at 000D0000!
no rootfs signature at 000E0000!
no rootfs signature at 000F0000!

### Press down Esc key to escape booting by user!! ###
Set GPHY Parameter OK
Jump to image start=0x80500000...
decompressing kernel:
Uncompressing Linux... done, booting the kernel.
done decompressing kernel.
start address: 0x80003790
CPU revision is: 0000dc02
Determined physical RAM map:
 memory: 02000000 @ 00000000 (usable)
Zone PFN ranges:
  Normal   0x00000000 -> 0x00002000
Movable zone start PFN for each node
early_node_map[1] active PFN ranges
    0: 0x00000000 -> 0x00002000
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 8128
Kernel command line: console=ttyS0,38400 root=/dev/mtdblock2
icache: 16kB/32B, dcache: 8kB/32B, scache: 0kB/0B
NR_IRQS:48
PID hash table entries: 128 (order: 7, 512 bytes)
console handover: boot [early0] -> real [ttyS0]
Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
Memory: 25272k/32768k available (2337k kernel code, 7496k reserved, 567k data, 104k init, 0k highmem)
Calibrating delay loop... 498.07 BogoMIPS (lpj=2490368)
Mount-cache hash table entries: 512
net_namespace: 536 bytes
NET: Registered protocol family 16
bio: create slab <bio-0> at 0
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 1024 (order: 1, 8192 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 1024 bind 1024)
TCP reno registered
NET: Registered protocol family 1
squashfs: version 4.0 (2009/01/31) Phillip Lougher
msgmni has been set to 49
io scheduler noop registered
io scheduler cfq registered (default)
AUTO BRIDGE SWITH ON    !!!
Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled
serial8250: ttyS0 at MMIO 0x18002000 (irq = 8) is a 16550A
PPP generic driver version 2.4.2
NET: Registered protocol family 24
RTL8192C/RTL8188C driver version 1.6 (2011-07-18)
=====>>INSIDE rtl8192cd_init_one <<=====
PCIE reset (0)
Do MDIO_RESET
98 - 40MHz Clock Source
Find Port=0 Device:Vender ID=819110ec
vendor_deivce_id=819110ec
=====>>EXIT rtl8192cd_init_one <<=====
=====>>INSIDE rtl8192cd_init_one <<=====
=====>>EXIT rtl8192cd_init_one <<=====
=====>>INSIDE rtl8192cd_init_one <<=====
=====>>EXIT rtl8192cd_init_one <<=====
=====>>INSIDE rtl8192cd_init_one <<=====
=====>>EXIT rtl8192cd_init_one <<=====
=====>>INSIDE rtl8192cd_init_one <<=====
=====>>EXIT rtl8192cd_init_one <<=====
=====>>INSIDE rtl8192cd_init_one <<=====
=====>>EXIT rtl8192cd_init_one <<=====



Probing RTL8186 10/100 NIC-kenel stack size order[3]...
chip name: 8196C, chip revid: 0
==Set GPHY Parameter OK
NOT YET
Set threshould idx 0
eth0 added. vid=9 Member port 0x2...
eth1 added. vid=8 Member port 0x1...
eth2 added. vid=9 Member port 0x4...
eth3 added. vid=9 Member port 0x8...
eth4 added. vid=9 Member port 0x10...
[peth0] added, mapping to [eth1]...
SPI INIT
 ------------------------- Force into Single IO Mode ------------------------
|No chipID  Sft chipSize blkSize secSize pageSize sdCk opCk      chipName    |
| 0 c22016h  0h  400000h  10000h   1000h     100h   86    0      MX25L3205D/E|
 ----------------------------------------------------------------------------
SPI flash(MX25L3205D/E) was found at CS0, size 0x400000
Creating 5 MTD partitions on "flash_bank_1":
0x000000000000-0x000000030000 : "boot+cfg"
0x000000030000-0x000000130000 : "linux"
0x000000130000-0x0000003e0000 : "root fs"
0x0000003e0000-0x0000003f0000 : "pppoe session id"
0x0000003f0000-0x000000400000 : "nvram"
nf_conntrack version 0.5.0 (512 buckets, 2048 max)
ip_tables: (C) 2000-2006 Netfilter Core Team
arp_tables: (C) 2002 David S. Miller
TCP cubic registered
NET: Registered protocol family 17
Bridge firewalling registered
Ebtables v2.0 registered
Netlink[Kernel] create socket for igmp ok.
VFS: Mounted root (squashfs filesystem) readonly on device 31:2.
Freeing unused kernel memory: 104k freed
/etc/rc.d/rc: 29: cannot create /proc/wan_port: Directory nonexistent
/etc/rc.d/rc: 30: cannot create /proc/sys/net/core/hot_list_length: Directory nonexistent
mtd = /dev/nvram
flatfsd: flat1_checkfs 4, hdr.magic=cafe2345, hdr.length=16968, hdr.chksum=1478119

flatfsd: Created 10 configuration files (16625 bytes)


BusyBox v1.01 (2012.06.18-06:09+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

/ # 00:26:87:12:30:6c
mtd = /dev/nvram
flatfsd: Wrote 16968 bytes to flash in 1 seconds
00:26:87:12:30:6D
00:26:87:12:30:6E
00268712306D
00268712306D
Interface doesn't accept private ioctl...
set_mib (89F1): Operation not permitted
mtd = /dev/nvram
flatfsd: Wrote 16968 bytes to flash in 0 seconds
 in the AB mode
Start infoHdl moniter

SIOCGIFFLAGS: No such device
Configuring LAN , lan_ifname = br0 ........
device eth0 entered promiscuous mode
br0: port 1(eth0) entering forwarding state
$Starting Service:
LAN 0 plug off
LAN 1 plug off
LAN 2 plug off
LAN 3 plug off
wan cable plug off :(
$Starting uhttpd:
$Starting dnsmasq:
$Starting udhcpd:

error, Failure parsing line 10 of /var/udhcpd.conf

info, udhcpd (v0.9.9-pre) started
error, max_leases value (254) not sane, setting to 30 instead
error, Unable to open /tmp/udhcpd.leases for reading
The httpd server is running ...


WPAPSKWPA2PSK
TKIPAES
41135464
37323333313736323133323537
IF_handle start....
device wlan0 entered promiscuous mode
[PHY_ConfigMACWithParaFile][MACPHY_REG_92C]
===> Load_92C_Firmware
<=== Load_92C_Firmware
br0: port 2(wlan0) entering forwarding state
wlan led
initializing wlan0-va0
device wlan0-va0 entered promiscuous mode
br0: port 3(wlan0-va0) entering forwarding state
wps start
***********************************************
*** ptr = uuid = 6304125310192006122800268712306c
device_name = "CG-WLR300GNZ"
manufacturer = "Allied Telesis K.K."
manufacturerURL = "http://corega.jp/"
modelURL = "http://corega.jp/prod/wlr300gnz"
model_name = "CG-WLR300GNZ"
model_num = "CG-WLR300GNZ"
serial_num = "123456789012347"
modelDescription = "CG-WLR300GNZ"
device_attrib_id = 1
device_oui = 0050f204
device_category_id = 6
device_sub_category_id = 1

# PASS_ID_DEFAULT=0, PASS_ID_USER=1, PASS_ID_MACHINE=2, PASS_ID_REKEY=3,
# PASS_ID_PB=4, PASS_ID_REG=5, PASS_ID_RESERVED=6
device_password_id = 0

tx_timeout = 5
resent_limit = 2
reg_timeout = 120
block_timeout = 60
# Those parameters are supported by WPS daemon starting from V1.2.
# Need to patch /rtl8186/linux-2.4.18/drivers/char/rtl_gpio.c if
# you want to use wireless LED instead of WPS LED.
WPS_START_LED_GPIO_number = 2
WPS_END_LED_unconfig_GPIO_number = 0
WPS_END_LED_config_GPIO_number = 0
WPS_PBC_overlapping_GPIO_number = 5
PBC_overlapping_LED_time_out = 30
WPS_ERROR_LED_GPIO_number = 6
WPS_ERROR_LED_time_out = 120
WPS_SUCCESS_LED_GPIO_number = 3
WPS_SUCCESS_LED_time_out =300

# When 0, WPS daemon will issue command 'flash set wlan0 value' to update setting
# When 1, WPS daemon will issue command 'flash set value' to update setting
# When 2, WPS daemon will update setting to a file '/tmp/flash_param'
No_ifname_for_flash_set = 0

# Disable to send dis-association to STA after WPS is done. 1:disable, 0:enable
#disable_disconnect = 1

# Disable auto generate SSID in un-configured state
#disable_auto_gen_ssid = 1


#(A)Manual assigned encryption type. 0:disable, 1:WPA-TKIP, 2:WPA2-AES, 3:Mixed-AES-TKIP
#manual_key_type = 2

#(A1)if manual_key_type == 1~3 ,
# you can alternative select 1)assigned manual psk value(manual_key)
# or 2)assignbr0: port 2(wlan0) entering disabled state
ed random key length(random_key_len)
# PSK valid key length between 8~64 ; if manual_key no assigned  and random_key_len no assigned
# then use 1234567890 as default
#manual_key = 1234567890
#random_key_len = 64

#(A2)if manual_key_type == 0,you can assigned PSK length between 8~64
#PSK_LEN = 64

# Disable hidden AP when wsc is activiated
disable_hidden_ap = 1

#if "use_ie"!=2 and "disable_auto_gen_ssid" != 1 then use this parameter as prefix of SSID
#default case use "WPS"  as prefix of SSID
#SSID_prefix = "RTKAP_"

button_hold_time = 1

# Enable the fix for Windows-Zero-Config WEP issue
fix_wzc_wep = 0

#for 92D concurrent mode, there are two wlan interfaces, we can use this parameter to select one interface to do WPS
#if bo[PHY_ConfigMACWithParaFile][MACPHY_REG_92C]
===> Load_92C_Firmware
<=== Load_92C_Firmware
tton_hold_time_for_wlan0 <= 5, do trigger to wlan0, if botbr0: port 2(wlan0) entering forwarding state
ton_hold_time_for_wlan0 >5, do trigger to wlan1.
#if wlan0 and wlan1 are both on AP mode, we don't care this parameter.
button_hold_time_for_first_if = 5
# for WPS2;if wps1.0 don't define
# 0x2008|0x480|0x680(CONFIG_METHOD_VIRTUAL_PIN | CONFIG_METHOD_PHYSICAL_PBC | CONFIG_METHOD_VIRTUAL_PBC )
config_method =  9864

status.st_size = 3519

WiFi Simple Config v2.3 (2012.06.18-06:11+0000).

starting app
wlan led
@ez-server port = 10000
@ez-server ip = 192.168.1.1
Corega ez-tools start
Auto Bride mode start !!!

AB_log: [Flow] ***** Flow A - Start *****

AB_log: redirect function ON
status led
internet led
AB_log: [LED] internet orange on, 121

例によって Linux ベース。 eth0-eth4 と見えてるのとか面白い。メモリマップの "pppoe session id" ってのがとても気になるところ。 busybox/ash が上がった後のメッセージは、ユーザーランドプロセスのものっぽい気がする。

手持ちの USB-Serial 変換アダプタの問題か、 TX が通らず文字を入力出来なかったので、今日はここまで。

その他の画像はフォトライフに置いてある。 http://f.hatena.ne.jp/halfrack/wlr300gnz/

2012-11-29

ttl inherit

IPIP トンネルを作る。

-bash-3.2# ip tunnel add tun0 mode ipip remote 10.0.66.160 local 10.0.66.159 dev eth0
-bash-3.2# ip addr add 172.18.10.3 peer 172.18.10.4 dev tun0
-bash-3.2# ip addr show tun0
5: tun0@eth0: <POINTOPOINT,NOARP> mtu 1480 qdisc noop
    link/ipip 10.0.66.159 peer 10.0.66.160
    inet 172.18.10.3 peer 172.18.10.4/32 scope global tun0
-bash-3.2# 

ping を投げつつ tcpdump でパケットを観察する。 TTL に注目してほしい。

-bash-3.2# ifconfig tun0 up
-bash-3.2# ping -t 1 172.18.10.4 &
[2] 16929
-bash-3.2# PING 172.18.10.4 (172.18.10.4) 56(84) bytes of data.
-bash-3.2# tcpdump -n -i eth0 -v -c 1 host 10.0.66.160
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
22:10:01.099068 IP (tos 0x0, ttl   1, id 0, offset 0, flags [DF], proto: IPIP (4), length: 104) 10.0.66.159 > 10.0.66.160: IP (tos 0x0, ttl   1, id 0, offset 0, flags [DF], proto: ICMP (1), length: 84) 172.18.10.3 > 172.18.10.4: ICMP echo request, id 8514, seq 44, length 64
1 packets captured
1 packets received by filter
0 packets dropped by kernel
-bash-3.2#

内側だけでなく、外側も TTL が 1 になっている。

なんでこんなことになっているかというと、 Linux では TTL を指定せずに IPIP トンネルを作ると ttl inherit となって、中を通るパケットの TTL が外側の TTL になる。

-bash-3.2# ip tunnel show tun0
tun0: ip/ip  remote 10.0.66.160  local 10.0.66.159  dev eth0  ttl inherit
-bash-3.2#

この上で OSPF を回そうとしたらだいぶハマって辛い気持ちになった。 ping とかは TTL 64 のパケットを投げるので疎通するが、 OSPF は TTL 1 のパケットを投げるので疎通しない。

トンネルの中身が外側に影響するというのはセンス悪いと思う。

2012-11-21

X200s の iwn(4) が完全ではないらしく、 scan してるとき稀に crash するんだが、以下ファイルが壊れて辛い気持ちになることがちょくちょくある…。

  • ~/.mozilla/firefox/profiles.ini が吹っ飛ぶので頑張って書く
  • ~/.anthy/last-record* に壊れた行があると scim-launcher が暴走する

備忘録。

2012-11-11

文章が長くなると最も伝えたい点がブレて伝わらなくなってくる。文章が短いと必要な内容が伝わらないか、正確ではなくなる。

人に何かを伝える文章を書くというのは難しい。

2012-11-06

EC2 m3.xlarge で FreeBSD が動く

EC2 に新しいインスタンスが追加された。

404 Not Found

そして、こいつらは cc2.8xlarge などと同様に Virtualization: HVM なインスタンスが動く。

つまり、 FreeBSD on EC2 が動作するインスタンスが増えたということであり、今までは t1.micro か Cluster Compute インスタンスか High I/O インスタンスという極端な選択肢しかなかったところに常識的な選択肢がやってきたということである。と言うわけで早速試してみる。

先人の知恵が us-east にあるので、サクッと探して起動する。名前に Cluster Compute って入ってる奴です。

f:id:halfrack:20121105011433p:image

ウィザードを進めると、ちゃんと m3.xlarge が出てくる。ちなみに、まだ us-east (virginia) でしか使えないようですが、 Cluster Compute インスタンスと違って需要の多いインスタンスなのでそのうち日本とかにもやってくると思います。

f:id:halfrack:20121105011432p:image

でポチポチ進めるとログイン可能。

halfrack@halfrack> ssh -i ./work/hoge.pem root@ec2-23-20-19-47.compute-1.amazonaws.com
Last login: Sun Nov  4 15:17:59 2012 from hoge
FreeBSD 9.0-RELEASE (XENHVM) #0: Sat Jan  7 20:02:13 UTC 2012

Welcome to FreeBSD/EC2!
(snip)
ip-10-159-8-131# 

そこで FreeBSD が動いている限り、我々は dmesg を採取し公開しなければならない。

ip-10-159-8-131# dmesg 
Copyright (c) 1992-2012 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 9.0-RELEASE #0: Sat Jan  7 20:02:13 UTC 2012
    root@ip-10-17-24-118:/usr/obj/usr/src/sys/XENHVM amd64
CPU: Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz (2600.07-MHz K8-class CPU)
  Origin = "GenuineIntel"  Id = 0x206d7  Family = 6  Model = 2d  Stepping = 7
  Features=0x1781fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,MMX,FXSR,SSE,SSE2,HTT>
  Features2=0x80982201<SSE3,SSSE3,CX16,SSE4.1,SSE4.2,POPCNT,HV>
  AMD Features=0x20100800<SYSCALL,NX,LM>
  AMD Features2=0x1<LAHF>
real memory  = 16106127360 (15360 MB)
avail memory = 15482839040 (14765 MB)
Event timer "LAPIC" quality 400
ACPI APIC Table: <Xen HVM>
FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs
FreeBSD/SMP: 1 package(s) x 4 core(s)
 cpu0 (BSP): APIC ID:  0
 cpu1 (AP): APIC ID:  2
 cpu2 (AP): APIC ID:  4
 cpu3 (AP): APIC ID:  6
ioapic0: Changing APIC ID to 1
MADT: Forcing active-low polarity and level trigger for SCI
ioapic0 <Version 1.1> irqs 0-47 on motherboard
kbd1 at kbdmux0
acpi0: <Xen> on motherboard
acpi0: Power Button (fixed)
acpi0: reservation of 0, a0000 (3) failed
Timecounter "ACPI-fast" frequency 3579545 Hz quality 900
acpi_timer0: <32-bit timer at 3.579545MHz> port 0x1f48-0x1f4b on acpi0
cpu0: <ACPI CPU> on acpi0
cpu1: <ACPI CPU> on acpi0
cpu2: <ACPI CPU> on acpi0
cpu3: <ACPI CPU> on acpi0
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
pci0: <ACPI PCI bus> on pcib0
isab0: <PCI-ISA bridge> at device 1.0 on pci0
isa0: <ISA bus> on isab0
atapci0: <Intel PIIX3 WDMA2 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0xc100-0xc10f at device 1.1 on pci0
ata0: <ATA channel 0> on atapci0
ata1: <ATA channel 1> on atapci0
pci0: <bridge> at device 1.3 (no driver attached)
vgapci0: <VGA-compatible display> mem 0xc0000000-0xc1ffffff,0xc3000000-0xc3000fff at device 2.0 on pci0
xenpci0: <Xen Platform Device> port 0xc000-0xc0ff mem 0xc2000000-0xc2ffffff irq 28 at device 3.0 on pci0
xenstore0: <XenStore> on xenpci0
hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed003ff on acpi0
Timecounter "HPET" frequency 62500000 Hz quality 950
attimer0: <AT timer> port 0x40-0x43 irq 0 on acpi0
Timecounter "i8254" frequency 1193182 Hz quality 0
Event timer "i8254" frequency 1193182 Hz quality 100
atrtc0: <AT realtime clock> port 0x70-0x71 irq 8 on acpi0
Event timer "RTC" frequency 32768 Hz quality 0
atkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: model IntelliMouse Explorer, device ID 4
fdc0: <floppy drive controller> port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on acpi0
fdc0: does not respond
device_attach: fdc0 attach returned 6
uart0: <Non-standard ns8250 class UART with FIFOs> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
uart0: console (9600,n,8,1)
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x100>
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
ppc0: cannot reserve I/O port range
Timecounters tick every 10.000 msec
xenbusb_front0: <Xen Frontend Devices> on xenstore0
xn0: <Virtual Network Interface> at device/vif/0 on xenbusb_front0
xn0: Ethernet address: 22:00:0a:9f:08:83
xenbusb_back0: <Xen Backend Devices> on xenstore0
xctrl0: <Xen Control Device> on xenstore0
xn0: backend features: feature-sg feature-gso-tcp4
xbd0: 10240MB <Virtual Block Device> at device/vbd/768 on xenbusb_front0
xbd0: attaching as ad0
SMP: AP CPU #1 Launched!
SMP: AP CPU #2 Launched!
SMP: AP CPU #3 Launched!
Trying to mount root from ufs:/dev/ad0a [rw]...
xn0: 2 link states coalesced
ip-10-159-8-131# 

見どころは xn0 とか xbd0 でしょうか。 HVM ですがドライバは paravirtualized なので、ちゃんと速い。

EC2 は TCP/UDP/ICMP ぐらいしか通らないので FreeBSD の強力なネットワークスタックの威力は制限されるが、それでも 1時間単位でサーバ借りれるのは便利。ちょいと FreeBSD ホストが数十台欲しい、みたいなときに活用していこう。

m3.xlarge でも上げっぱなしにすると月数千円単位でかかるので、上げっぱなしは各種 VPS を使い、短時間使うのは EC2 という使い分けが便利そうである。

背景

FreeBSD/amd64 はメモリ周りの Xen 対応が進んでいない?ので、 Virtualization: paravirtual な Xen 環境では DomU としても動かない。なので、 Windows インスタンスとしてマイクロソフトに税を納めながら使ったり、あえて i386 で動かすなど微妙なことをする必要があった。そこに Xen HVM (PV on HVM) で動作する Cluster Compute インスタンス*1が登場し、割とちゃんと FreeBSD を使えるようになった。

要するに以下のような状況で、 FreeBSD を EC2 で動かすとちょっと微妙な気分になるのであった。

  • 我慢ならんぐらい CPU が遅い t1.micro
  • 使ってもいない Windows に金を払う
  • ちょっとオーバスペック過ぎる Cluster Compute or High I/O

が、今回の m3.xlarge, m3.2xlarge の追加によりリーズナブルな選択肢が追加され、状況が一気に変化したと言える。わーい。

とまあ勢いで説明しましたが、背景については私の話より下記ページ見た方が正確かと。

FreeBSD on EC2 status

この記事を書き始めた時は上記ページでの言及は無かったが、今見たら FreeBSD 9.1-RC2 に "m3" の言及が追加されていた。この件について更新されそうな雰囲気。

PV on HVM または PVHVM とは

また、「お前の PV とか HVM の理解はまぜこぜじゃないか?」という向きには、下の記事を推奨しておきます。最近混ざってる…。

Linux PV on HVM

PV on HVM - Xen

新しい Xen を触る機会がなかったので、 Xen がこんなに進化してるとは予想外だった。個人的にも仕事上も Xen をガンガン使っているので、もっと勉強せねば。

*1:特に cc2.8xlarge は HVM のみのサポートとなるが、これは数値計算で多用されるメモリアクセスにおいて paravirtual な環境だとオーバーヘッドが無視できないためと推測している。