debiancdn

AWS, Content Delivery Network and Debian

カテゴリーアーカイブ: network

TCP window controlが肝な話

クラウドはクラウドというくらいでネットワークの先に資源があり、そこにたどり着かない限りなんにもならない。そして、世の中遠くのネットワーク資源を使うための工夫は数限りなくある。

B2B的な、通信相手が固定されているなら、AsperaでもSteelheadでもSkeedでも好きなものを使えばいいのだが、マスが相手となるとそうは行かない。TCPを使うしか事実上ない。もっというとHTTP+TCP(よくてHTTPS)をどうするかということに注力するしかない。

で、基礎知識としてはTCP Windowコントロールとなる。自分のブログで “TCP window” で検索→https://debiancdn.wordpress.com/?s=TCP+window すると、けっこう頻繁にTCP Windowコントロールのことを書いているな。。

とはいえパイプ計算機について書いたことがなかったようだ。

SWITCH – For universities – Network & Internet – University Network – Tools – Throughput Calculator (TCP)

Bandwidth-delay Product and buffer size BDP (8.1 Mbit/sec, 80.0 ms) = 0.08 MByte required tcp buffer to reach 8.1 Mbps with RTT of 80.0 ms >= 82.9 KByte maximum throughput with a TCP window of 12 KByte and RTT of 80.0 ms <= 1.17 Mbit/sec. Further readings about network performance in eduPERT knowledge base

まあいわゆるLong-Fat Pipe問題は昔からあるのでいまよんでもおもしろいものがある。また、自分で書いてもいいのだが、かぶってもどうしょうもないので、参考になるものをはっておく

.ssh/configのDynamicForward

.ssh/configにDynamicForwardなるオプションがあるのを今日しった。

いままでいつもいつも

ssh hostname -D1080 

とかしていた。

so-net -> i-revoにかえてみた

週末夜はバンダイチャンネルの再生がとまってしまう、動画をみない妻からも「今日遅いねえ」と言われることが多いので、家のVDSLマンションBフレ東京をso-netからi-revoにしてみた。

不思議なのは、pppoeが与えるDNSがAS的には3つもとなりにあること…ってAS2527はso-netではないか。
とはいえ7msecくらいで、IIJの210.130.0.1が15msecくらいなので別にASの中にありゃいいってわけでもないのですが。

AWS東京リージョンまで。

$ traceroute -a x.y.z.w
..
 1  [AS1] 10.0.1.1 (10.0.1.1)  0.673 ms  0.374 ms  0.300 ms
 2  [AS2497] tokyo10-n04.flets.2iij.net (210.149.34.70)  6.177 ms  5.894 ms  5.480 ms
 3  [AS2497] tokyo10-ntteast1.flets.2iij.net (210.149.34.145)  5.421 ms  5.258 ms  5.386 ms
 4  [AS2497] tky001lip21.iij.net (210.149.34.101)  5.348 ms  5.239 ms  5.474 ms
 5  [AS2497] tky001bb11.iij.net (58.138.100.221)  5.321 ms  5.321 ms  5.244 ms
 6  [AS2497] tky008bf01.iij.net (58.138.80.37)  6.185 ms
    [AS2497] tky008bf00.iij.net (58.138.80.33)  6.138 ms  6.217 ms
 7  [AS2497] tky001ip58.iij.net (58.138.82.46)  6.418 ms
    [AS2497] tky001ip58.iij.net (58.138.82.34)  5.738 ms
    [AS2497] tky001ip58.iij.net (58.138.82.42)  6.039 ms
 8  [AS2497] 202.232.8.166 (202.232.8.166)  6.248 ms  6.566 ms  5.830 ms
 9  [AS10026] ge-0-0-0-0.gw3.nrt5.asianetcom.net (202.147.1.54)  5.582 ms  6.039 ms  6.021 ms
10  [AS3549] azn-0002.gw3.nrt5.asianetcom.net (203.192.150.90)  6.447 ms  6.289 ms  6.226 ms
11  [AS16509] 27.0.0.131 (27.0.0.131)  8.220 ms  7.886 ms  7.977 ms
12  [AS16509] 27.0.0.155 (27.0.0.155)  7.577 ms
    [AS16509] 27.0.0.147 (27.0.0.147)  8.123 ms
    [AS16509] 27.0.0.155 (27.0.0.155)  7.436 ms
13  [AS16509] ec2-175-41-192-212.ap-northeast-1.compute.amazonaws.com (175.41.192.212)  8.161 ms
    [AS16509] ec2-175-41-192-20.ap-northeast-1.compute.amazonaws.com (175.41.192.20)  7.918 ms
    [AS16509] ec2-175-41-192-212.ap-northeast-1.compute.amazonaws.com (175.41.192.212)  7.561 ms
14  [AS16509] ec2-175-41-192-165.ap-northeast-1.compute.amazonaws.com (175.41.192.165)  15.182 ms *  14.835 ms

指定されたDNSサーバまで。

$ traceroute -a 202.238.95.24
traceroute to 202.238.95.24 (202.238.95.24), 64 hops max, 52 byte packets
 1  [AS1] 10.0.1.1 (10.0.1.1)  0.681 ms  0.234 ms  0.188 ms
 2  [AS2497] tokyo10-n04.flets.2iij.net (210.149.34.70)  5.958 ms  5.952 ms  5.879 ms
 3  [AS2497] tokyo10-ntteast1.flets.2iij.net (210.149.34.145)  5.383 ms  5.372 ms  5.181 ms
 4  [AS2497] tky001lip21.iij.net (210.149.34.101)  5.345 ms  5.179 ms  5.537 ms
 5  [AS2497] tky001bb10.iij.net (58.138.100.217)  11.623 ms  5.464 ms  5.164 ms
 6  [AS2497] tky009bf00.iij.net (58.138.80.17)  5.528 ms
    [AS2497] tky001bf01.iij.net (58.138.80.5)  5.344 ms
    [AS2497] tky001bf00.iij.net (58.138.80.1)  5.305 ms
 7  [AS2497] tky008ix01.iij.net (58.138.80.134)  5.593 ms
    [AS2497] tky008ix01.iij.net (58.138.80.142)  6.466 ms
    [AS2497] tky008ix01.iij.net (58.138.80.134)  5.908 ms
 8  [AS7521] 210.173.177.5 (210.173.177.5)  6.729 ms  7.117 ms  6.570 ms
 9  [AS2914] xe-7-0-2.a20.tokyjp01.jp.ra.gin.ntt.net (203.105.72.9)  6.112 ms
    [AS2914] xe-6-0-2.a20.tokyjp01.jp.ra.gin.ntt.net (203.105.72.57)  6.545 ms
    [AS2914] xe-6-0-2.a21.tokyjp01.jp.ra.gin.ntt.net (203.105.72.61)  6.752 ms
10  [AS2914] xe-1-1.a14.tokyjp01.jp.ra.gin.ntt.net (61.120.145.186)  6.949 ms
    [AS2914] xe-2-1.a14.tokyjp01.jp.ra.gin.ntt.net (61.120.145.190)  7.756 ms *
11  [AS2914] xe-7-4.a14.tokyjp01.jp.ra.gin.ntt.net (61.120.145.10)  16.950 ms  6.887 ms  7.009 ms
12  [AS2527] 202.213.197.45 (202.213.197.45)  6.662 ms  6.648 ms  7.009 ms
13  [AS2527] 202.213.193.206 (202.213.193.206)  6.527 ms  6.778 ms  6.558 ms
14  [AS2527] 202.213.193.106 (202.213.193.106)  8.026 ms  17.213 ms  7.116 ms
15  * * *

PING 202.238.95.26 (202.238.95.26): 56 data bytes
--- 202.238.95.26 ping statistics ---
6 packets transmitted, 6 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 6.548/6.808/7.162/0.199 ms

みんなだいすきgoogle public dns

$ traceroute -a 8.8.4.4
traceroute to 8.8.4.4 (8.8.4.4), 64 hops max, 52 byte packets
 1  [AS1] 10.0.1.1 (10.0.1.1)  0.735 ms  0.307 ms  0.214 ms
 2  [AS2497] tokyo10-n04.flets.2iij.net (210.149.34.70)  6.377 ms  6.005 ms  5.490 ms
 3  [AS2497] tokyo10-ntteast1.flets.2iij.net (210.149.34.145)  5.565 ms  5.342 ms  5.453 ms
 4  [AS2497] tky001lip21.iij.net (210.149.34.101)  110.112 ms  13.689 ms  74.824 ms
 5  [AS2497] tky001bb11.iij.net (58.138.100.221)  35.448 ms  5.588 ms  5.225 ms
 6  [AS2497] tky008bf00.iij.net (58.138.80.33)  6.191 ms
    [AS2497] tky001bf01.iij.net (58.138.80.29)  5.416 ms
    [AS2497] tky001bf00.iij.net (58.138.80.25)  5.298 ms
 7  [AS2497] tky001ix05.iij.net (58.138.82.14)  6.146 ms
    [AS2497] tky008ix05.iij.net (58.138.80.166)  6.408 ms
    [AS2497] tky001ix01.iij.net (58.138.80.102)  42.693 ms
 8  [AS2497] 210.130.133.34 (210.130.133.34)  6.595 ms
    [AS2497] 210.130.133.38 (210.130.133.38)  36.664 ms
    [AS2497] 210.130.133.78 (210.130.133.78)  5.591 ms
 9  [AS15169] 209.85.249.192 (209.85.249.192)  135.876 ms
    [AS15169] 72.14.239.48 (72.14.239.48)  5.936 ms
    [AS15169] 209.85.249.195 (209.85.249.195)  7.018 ms
10  [AS15169] 209.85.255.34 (209.85.255.34)  8.757 ms
    [AS15169] 209.85.255.58 (209.85.255.58)  9.395 ms  8.633 ms
11  [AS15169] 209.85.255.39 (209.85.255.39)  38.596 ms  40.136 ms  54.381 ms
12  [AS15169] 209.85.243.21 (209.85.243.21)  88.581 ms  39.861 ms
    [AS15169] 209.85.250.101 (209.85.250.101)  39.359 ms

$ ping 8.8.4.4
PING 8.8.4.4 (8.8.4.4): 56 data bytes
64 bytes from 8.8.4.4: icmp_seq=0 ttl=46 time=38.863 ms
64 bytes from 8.8.4.4: icmp_seq=1 ttl=46 time=38.195 ms
64 bytes from 8.8.4.4: icmp_seq=2 ttl=46 time=39.193 ms
^C
--- 8.8.4.4 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 38.195/38.750/39.193/0.415 ms

MPLS Japan 2011の資料をよんでみる

MPLS Japan 2011に行けなかった(仕事がいそがしすぎ)なので、webを見ると資料がわんさかなのですばらしい。どれもいいのだが、当然ながら技術トレンドは有名なものばかりでいろんな人が書きそうなので、そうじゃないもの2つをメモ.

http://mpls.jp/presentations/MPLS_Japan_2011_Cloud_Networking_1IIJ.pdf IIJの資料。27%が閉域接続。そのうちの4割WAN, 6割VPN。ってこの数字すげえな。さすがIIJ。

http://mpls.jp/presentations/111024-mpls-japan-print.pdf インテックのExage(←ドキュメントへのリンク)。Intec+IDCF+ATworks

ファイヤウォールの背後

 

“企業というのはファイアウォールの背後で、古い技術によって守られながら業務を遂行している。” 「ファイアウォールの存在が“ソーシャルデバイド”を作りだす – インタビュー:ITpro」 http://nkbp.jp/ndpDYo

IE6が支配する世界とか、オレオレプライベートIP(1.0.0.0とか..)とか、似たような話は多い。

そんな会社もある一方で、VPCをつかって必要なリソースを伸び縮みさせてる会社もあるんだから、世の中はおもしろい。

tokyo.vclで発表してきた。varnish+squid混在ネタで。

Varnish3のリリースパーティーも兼ねたTokyo.vclのためにクックパッドさんへ。

その時の様子はtogetterに。はじめての人が集う集会はいろいろむずかしいですなあ。

なぜかイカが表示されないslideshareの資料もつけとく。

CentOSにvarnishをinstallする

特にむずかしいことは何もないが、dependの解決が微妙にいいかげんなので、2行目でdependしているpackageをいれている。

 rpm --nosignature -i http://repo.varnish-cache.org/redhat/el5/noarch/varnish-release-2.1-1.noarch.rpm
 yum install  logrotate libgomp gcc cpp binutils kernel-headers glibc-headers glibc-devel expect -y
 yum install varnish -y

Squid27のpurgeを有効にする2つの方法:aclに書いてしまう

禁止URLをこんなかんじでsquid.confにでも追記すればok.

aclに

acl cacheclear00 url_regex ^http://www.araki.net/tmp/24.html$
acl cacheclear00 url_regex ^http://www.araki.net/tmp/25.html$
no_cache deny cacheclear00

この時点で,このfileはキャッシュされなくなる.

アクセスはできるので,DIRECT または sibling で取りにいくことになる.

この行を追加した時点でcacheは消えているので、PURGEコマンドの代替としても使える。

Squid27のpurgeを有効にする2つの方法:PURGEコマンド

purgeができないと実際の運用ではやってらんない。

ひとつめの方法はPURGEコマンドを使う方法。

purge.conf

acl PURGE method PURGE
http_access allow PURGE localhost
http_access allow PURGE localnet
http_access deny PURGE

とかを作っておいて,includeする.purgeするときはsquidclientを使う.

 squidclient -m PURGE http://www.araki.net/tmp/24.html

リモートホストのcacheを消すなら,-h でホスト名を指定する.

 squidclient -h squid2 -m PURGE http://www.araki.net/tmp/24.html

squidのsibling設定

「お前のcacheはおれのもの、俺のcacheも俺の物」これがsquidのsiblingの基本。

squidはsiblingの設定をしていると、次のように動作する。

  1. 自分のcacheを確認。あったらクライアントに返す。
  2. なかったらsiblingに問い合わせ。あったら自分にcacheして、クライアントに返す。
  3. それでもなかったらoriginに問い合わせ。あったら自分にcacheして、クライアントに返す。

つまりsiblingのcacheは自分のcacheのように使える。

http://www.flickr.com/photos/ediblexart/1557458575/ Siblings by EdiblexArt, on Flickr

二台hostがあったとして、それぞれのhostには自分のsiblingを書いてやりさえすればok

1.2.3.7の/etc/squid/sibling.confには

 cache_peer 1.2.3.6 sibling 3128 3130

1.2.3.6の/etc/squid/sibling.confには

 cache_peer 1.2.3.7 sibling 3128 3130

とでも書いて、include /etc/squid/sibling.conf してやればいい。

おまけ。

 refresh_pattern .               0       100%      20160

としているが,20160は,最大cache時間が20160分(=14日)という意味.

結局のところ、/etc/squid/squid.conf

acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl localnet src 10.0.0.0/8     # RFC1918 possible internal network
acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 443         # https
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access allow localhost
http_access deny all
icp_access allow localnet
icp_access deny all
http_port 3128
hierarchy_stoplist cgi-bin ?
access_log /var/log/squid/access.log squid
refresh_pattern .               0       100%      20160
coredump_dir /var/spool/squid
include /etc/squid/sibling.conf