]
トップ «前の日記(2009-02-15) 最新 次の日記(2009-02-17)» 編集

Yukiharu YABUKI の tDiary



このtDiaryを検索します。

2009-02-16 [長年日記]

_ lenny release

Desktopとしては常用しているので、私自身はとくに変わらず。Server は、今のところ外だしには自前で運用してないので、かなり気が楽だ。

中のためのサーバなら仕事のピークが過ぎて、不都合がなくなったときに upgrade か、新規に再インストールしようかと思う。

_ かわいそうな TOS と Linux における pfifo_fast、prio

通信の世界で利用されている TCP/IP で IPのヘッダーには TOS フィールドがある。これの説明が Google でひっかかる IPヘッダーの資料を読むと、あまりに邪険にされすぎてかわいそうというか、近年では TOS を使っている例もあるんだから、「ほとんど使われてない」ってのは言い過ぎだろう。

RFC 1349(http://www.ietf.org/rfc/rfc1349.txt)のTOSの図は、linux で パケットの優先制御をするときには必要な概念なんだがなあ。スティーブンソンのTCP/IP Illustrated, Volume 1:The Protocolsなら p38-39 を参照せよ。

下記は、RFC 1349の図で、(http://www.linux.or.jp/JF/JFdocs/Adv-Routing-HOWTO/lartc.qdisc.classless.html)の pfifo_fast qdisc についての説明の補足がいると思ったんで抜き出してみた。

   0     1     2     3     4     5     6     7
+-----+-----+-----+-----+-----+-----+-----+-----+
|                 |                       |     |
|   PRECEDENCE    |          TOS          | MBZ |
|                 |                       |     |
+-----+-----+-----+-----+-----+-----+-----+-----+
    

The first field, labeled "PRECEDENCE" above, is intended to denote the importance or priority of the datagram. This field is not discussed in detail in this memo.

The second field, labeled "TOS" above, denotes how the network should make tradeoffs between throughput, delay, reliability, and cost. The TOS field is the primary topic of this memo.

The last field, labeled "MBZ" (for "must be zero") above, is currently unused. The originator of a datagram sets this field to zero (unless participating in an Internet protocol experiment which makes use of that bit). Routers and recipients of datagrams ignore the value of this field. This field is copied on fragmentation.

で、precedenceは優先度で、TOSは、サービス型、MBZは常に0だという略語。で、私が混乱しそうになった部分は、上の図の書いててある7がLSB(もっとも小さなビット)に該当し、0がMSB(もっとも大きなビット)に相当するようだと判るまでだった。

で、(http://www.linux.or.jp/JF/JFdocs/Adv-Routing-HOWTO/lartc.qdisc.classless.html)には

第 4 列は Linux カーネルによる TOS ビット列の解釈です。どの優先度にマップされるかを示しています。
とあっさりと書いてありますが
TOS     Bits  Means                    Linux Priority    Band
------------------------------------------------------------
0x0     0     Normal Service           0 Best Effort     1
0x2     1     Minimize Monetary Cost   1 Filler          2
0x4     2     Maximize Reliability     0 Best Effort     1
0x6     3     mmc+mr                   0 Best Effort     1
0x8     4     Maximize Throughput      2 Bulk            2
0xa     5     mmc+mt                   2 Bulk            2
0xc     6     mr+mt                    2 Bulk            2
0xe     7     mmc+mr+mt                2 Bulk            2
0x10    8     Minimize Delay           6 Interactive     0
0x12    9     mmc+md                   6 Interactive     0
0x14    10    mr+md                    6 Interactive     0
0x16    11    mmc+mr+md                6 Interactive     0
0x18    12    mt+md                    4 Int. Bulk       1
0x1a    13    mmc+mt+md                4 Int. Bulk       1
0x1c    14    mr+mt+md                 4 Int. Bulk       1
0x1e    15    mmc+mr+mt+md             4 Int. Bulk       1
のLinux Priorityというものがあり、優先度(3ビット分だから0から、7の値になる(index つまり Linux Priority))に分類され、デフォルトの優先度map(下記)が反映されてBANDになります。
index|0, 1, 2, 3, 4, 5, 6, 7
-----------------------------------------------------
value|1, 2, 2, 2, 1, 2, 0, 0 , 1, 1, 1, 1, 1, 1, 1, 1
これが理解し、下記を理解すると、 pfifo_fast だけでなく prio についても自信をもてるようになると思います。

9.5.2.2. ハードウェアへパケットをデキューする(http://www.linux.or.jp/JF/JFdocs/Adv-Routing-HOWTO/lartc.qdisc.classful.html)を読んで、どの順番でパケットがdequeueされるか?が大事かと。

_ ip moo command ...

yabuki@yelona:~$ ip moo
 
 _ __ ___   ___   ___
| '_ ` _ \ / _ \ / _ \
| | | | | | (_) | (_) |
|_| |_| |_|\___/ \___/
 
 
P.S. no real cows were harmed for this moo

_ RATS and Flawfinder

両方とも、C,C++などのプログラムからセキュリティ上のリスクを取り除く「手始め」になるプログラムです。もちろん、Debian GNU/Linux lenny には入っています。

いまだと、svnなどのソース管理ソフトウェアをつかえば、これらのツールが検出できる程度のリスクが増えているのか、減っているのかもわかります。

(http://www.linux.or.jp/JF/JFdocs/Secure-Programs-HOWTO/tools.html)の部分や、その他の部分も役立つかもしれません。