タグ

networkに関するtztのブックマーク (90)

  • FreeBSD VIMAGEを使ったTCP/IPのルーティング デモンストレーション

    こんにちわ。 @hasegaw です。あけましておめでとうございます。今年もよろしくお願いいたします! 日は カーネル/VM Advent Calendar 私の当番!ということで、 FreeBSD 8.0-RELEASE から標準装備になった VIMAGE がどんなモノで、どういう使い方ができるかについて軽く紹介したいと思います。 ■ バックグラウンド: 新人研修で「ネットワークを教えることになったが……」 実は2010年4月、弊社の新人研修の一環として、丸1日かけてネットワークの基について教えることになりました。 新人研修には、これまでコンピュータなどを専攻してきた新人もいますが、まったく違う分野からやってきた人たちもいます。そこで、インターネットを使うとどうして世界中のコンピュータと通信できるのか、ルーティングの動きを体験してもらおうと思いました。 INTEROP で NICT

  • InfoQ: HTTPSコネクションの最初の数ミリ秒

    ほとんどの人がHTTPSとSSL (Secure Sockets Layer) を結びつけて考えます。SSLは1990年代半ばにNetscape社が開発した仕組みですが、今ではこの事実はあまり正確でないかもしれません。Netscape社が市場のシェアを失うにしたがって、SSLのメンテナンスはインターネット技術タスクフォース(IETF)へ移管されました。Netscape社から移管されて以降の初めてバージョンはTransport Layer Security (TLS)1.0と名付けられ、1999年1月にリリースされました。TLSが使われだして10年も経っているので、純粋な"SSL"のトラフィックを見ることはほとんどありません。 Client Hello TLSはすべてのトラフィックを異なるタイプの"レコード"で包みます。ブラウザが出す先頭のバイト値は16進数表記で0x16 = 22。 これは

    InfoQ: HTTPSコネクションの最初の数ミリ秒
  • 拙著「Linuxネットワークプログラミング」:Geekなぺーじ

    Linuxネットワークプログラミング」というを書きました。 LinuxでCを利用してネットワークプログラミングを行うための解説書で、私にとって初の書籍執筆です。 昨年2月にソフトバンククリエイティブさんから書籍執筆のオファーを頂き、開始から約一年後の発売となります。 今回、C言語によるLinuxのネットワークプログラミング解説書籍を執筆する機会を頂けたのですが、書籍の大きな方向性として以下の点が挙げられます。 可能な限り、ソースコード全文を掲載する。断片的なソースコードだと手元で即座に試しにくい メインはIPv4を意識しながら書く ただし、getaddrinfo()を前提とし、IPv6が存在することを前提に書く IPv6移行がメインの書籍ではない。インターネットの世界がIPv4/IPv6デュアルスタックで運用されることになるという前提でネットワークプログラミング解説書を書いているだけ

  • C++と Pthreads でミニマルなHTTPサーバを書く - いやなブログ

    C++と Pthreads でミニマルなHTTPサーバを書く 『UNIXネットワークプログラミング』を読んでいると、自分でも何かネットワーク系の小さなプログラムを書いてみたくなりました。そこで、ミニマルなHTTPサーバを C++と Pthreads で書いてみました。 同じ著者の「詳解UNIXプログラミング」もそうだったように、今回のもほとんどすべてのページに、重要なことが書かれています(最後のほうのXTIの部分は例外かもしれませんが)。 たとえば、27章ではネットワークサーバの実装として、次の設計方針がそれぞれ検討され、実際のコード付きで解説されています。 クライアントごとに fork 事前に fork - 各プロセスで accept 事前に fork - ファイルロックで accept を保護 事前に fork - Mutex ロックで accept を保護 (PTHREAD_PRO

  • ミニマルなHTTPサーバ - かそくそうち

    http://0xcc.net/blog/archives/000178.html このコードには長時間動作させる上で明らかにマズい点が二つあります。 (22:58追記: 問題のコードは既に修正されています。高林さん、すばやい対応ありがとうございます。) 「UNIXネットワークプログラミング」の別の節に解説はありますが、コードだけコピペした人が困らないよう指摘しておきます。 一つ目はSIGPIPEシグナルの発生に備えていない点です。 サーバーがレスポンスを返す前にクライアントがソケットを閉じてしまうと、write()がSIGPIPEシグナルを生成することがあります。 SIGPIPEの既定の動作はプロセスの終了なので、この状況が発生しただけでサーバーは勝手に(coreを残さず)終了してしまいます。 通常は次のような関数でSIGPIPEを無視します。 #include <cstring> #i

    ミニマルなHTTPサーバ - かそくそうち
    tzt
    tzt 2010/02/11
    「SIGPIPEは無視する」「accept()がエラーを返してもリトライする」
  • Kazuho@Cybozu Labs: TCP通信ではデータの送信をまとめて行うべき、もうひとつの理由(& サーバのベンチマーク手法の話)

    TCP通信をするプログラムを書く際に「データの送信はまとめて1回で」行うべき、というのは鉄則と言っていい、と思います。その理由としては、パケット数を最小限に抑えることでオーバーヘッドを少なくするためだと一般に説明されますが、自分はもうひとつポイントがあると考えています。次のグラフを見てください。 グラフは、一定量のデータを転送するのにかかる時間と使用するブロックサイズ(1回のwrite(2)で書き込むサイズ)の関係を表したものです注1。 ホスト間のTCP通信を行っている場合は、TCPのバッファが有効に機能するので、ブロックサイズ(=パケット数の逆数)による速度の変化は、ほぼありません。一方、同一ホスト上で通信を行うと、ブロックサイズと反比例して所要時間が反比例の関係にあることがわかります。 原因は、同一ホスト上の通信では、送信プロセスがwrite(2)を呼ぶたびにコンテクストスイッチが発生

  • VPNをわずか数クリックで作成できる『Comodo EasyVPN』 | ライフハッカー・ジャパン

    Windowsのみ:『Comodo EasyVPN』は、パソコン間の安全な仮想プライベートネットワークをお手軽に作成できるフリーアプリ。つまり、職場にいながらあたかも同じローカルネットワーク上にあるかのように、家のパソコンへアクセスできるということです。 『Comodo EasyVPN』は過去に米ライフハッカーで採り上げた『VPN(Virtual Private Network)アプリHamachi』(英語記事、日語の解説はこちら)と同様、セットアップはかなりシンプル。 アプリをインストールし、アカウントを登録してログイン。二つ以上のパソコンでこのアプリを起動したら、簡単にかつ安全に一つのパソコンから他のパソコンへまるで同じローカルネットワーク上かのようにアクセスが可能になります。VPNの作成は下記のようなことをしたい!というときに、とても便利です。 外出中に自分の職場や自宅のPCへ安全

    VPNをわずか数クリックで作成できる『Comodo EasyVPN』 | ライフハッカー・ジャパン
  • 「QoS」の しくみ---目次

    すべてのパケットを“早い者勝ち”に扱うIPネットワーク。しかし最近,Webアクセスや電子メールより優先して送る必要のあるIP電話のようなアプリケーションが出てきた。こうした通信を使うには,IPネットでも,急ぎの通信を優先させたり,必要な帯域を確保する技術が必要となる。これがQoS機能だ。今回はQoS機能に焦点を当てて,そのしくみと効果をじっくり探っていく。 ■プロローグ IP電話の通信を守れ ■パート1 送信順を変える優先制御  パケットの列を分けるのがミソ ■パート2 帯域制御は「待たせて捨てる」 捨て方にテクニックあり ■パート3 パケットを正確に識別 4種類の情報で見分ける ■エピローグ QoSって意外に簡単

    「QoS」の しくみ---目次
  • ウノウラボ Unoh Labs: サーバのネットワーク速度の調査/測定方法

    こんにちは。kyagi です。先日データセンタ内のサーバ群のうち、なぜか特定の1台だけネットワークの速度が極端に遅いという問題がありました。今回はサーバマシンのネットワーク速度の測定方法と原因についてお話しします。同様のトラブルが発生している方のお役に立てば幸いです。問題解決までの手順としては以下になります。 1. 現在の状態を調べる 2. ハード/ソフト含めて考えられる原因をいくつか挙げる 3. 原因について改善されるまでひとつひとつ検証していく まず現在の NIC の HW 情報とドライバを lspci で調査します。ここでは Broadcom の NetXtreme BCM5722 という NIC を使用していることがわかります。 # lspci -vvv | grep Ether 01:00.0 Ethernet controller: Broadcom Corporation

  • 3億のユーザーを抱えるFacebookのデータセンター。移動は自転車、希望は100Gbイーサネット

    ユーザー数が全世界合計で3億人を突破した、と9月15日に発表したばかりのFacebook。Webサイトの利用者数は、グーグル、ヤフー!に次ぐ規模だといわれています。 同社のエンジニアDonn Lee氏が、そのFacebookのデータセンターとネットワーク構成の内容を、Ethernet Allianceのイベントで紹介していました。EETimesが公開しているプレゼンテーションのビデオから、3つほど興味深いシーンを紹介しましょう。 まずは同社のデータセンターで稼働している典型的なサーバラックの様子。クアッドコアをマザーボード上に複数搭載した強力な1Uのサーバが、ラック上部でアグリゲーションされている、と説明されています。 データセンターのこの巨大さはどうでしょう。奥の方までずっとラックが続いています。これは標準サイズのデータセンターとのこと、そして写真中央にあるように、移動にはしばしば自転車

    3億のユーザーを抱えるFacebookのデータセンター。移動は自転車、希望は100Gbイーサネット
    tzt
    tzt 2009/10/02
  • YANO's digital garage - パケット受信タイムスタンプ

    Linuxでパケット受信契機のタイムスタンプ採取方法。 ユーザーアプリからはsetsockoptでSO_TIMESTAMPを設定しておき、recvmsgで受信する都度せっせとCMSG_DATA(cmsg)経由で取得する形での仕組みが用意されている。具体的なコーディングサンプルだと char    inbuf[BUFSIZ]; char    cmsgbuf[CMSG_SPACE(sizeof(struct timeval))]; struct  cmsghdr *cmsg; struct  msghdr  msghdr; struct  iovec   msg_iov; struct timeval  *pTime, tv; const int on = 1; setsockopt(sock, SOL_SOCKET, SO_TIMESTAMP, &on, sizeof(on)); msg_

  • Manpage of CMSG

    Section: Linux Programmer's Manual (3) Updated: 1998-10-02 Index JM Home Page roff page 名前 CMSG_ALIGN, CMSG_SPACE, CMSG_NXTHDR, CMSG_FIRSTHDR - 補助データにアクセスする。 書式 #include <sys/socket.h> struct cmsghdr *CMSG_FIRSTHDR(struct msghdr *msgh); struct cmsghdr *CMSG_NXTHDR(struct msghdr *msgh, struct cmsghdr *cmsg); size_t CMSG_ALIGN(size_t length); size_t CMSG_SPACE(size_t length); size_t CMSG_LEN(size_t

  • Manpage of RTNETLINK

    Section: Linux Programmer's Manual (7) Updated: 2008-08-08 Index JM Home Page roff page 名前 rtnetlink, NETLINK_ROUTE - Linux IPv4 ルーティングソケット 書式 #include <asm/types.h> #include <linux/netlink.h> #include <linux/rtnetlink.h> #include <sys/socket.h> rtnetlink_socket = socket(AF_NETLINK, int socket_type, NETLINK_ROUTE); 説明 rtnetlink はカーネルのルーティングテーブルを読んだり変更したり するためのものである。これはカーネルが内部のサブシステムと 通信するためにも用いられて

  • Manpage of NETLINK

  • Manpage of NETLINK

    Section: Linux Programmer's Manual (7) Updated: 2008-08-08 Index JM Home Page roff page 名前 netlink - カーネルとユーザー空間の通信 (AF_NETLINK) 書式 #include <asm/types.h> #include <sys/socket.h> #include <linux/netlink.h> netlink_socket = socket(AF_NETLINK, socket_type, netlink_family); 説明 netlink はカーネルモジュールとユーザー空間のプロセス間で 情報をやりとりするために用いられる。 netlink は、ユーザープロセスに対しては 標準的なソケットベースのインターフェースを、 カーネルモジュールにはカーネルの内部 API を提供

  • Ident - Wikipedia

    tzt
    tzt 2009/09/30
  • Linux の identd が遅い理由 〜 debian の pidentd はひと味違う? : DSAS開発者の部屋

    identd というのは,いわゆる ident プロトコル(RFC 1413)を実装したデーモンの総称です.最近は使われる場面も減ってきたかもしれませんが,DSAS では一部この identd の返答結果に基づいてアクセスの可否を決定しているサービスが存在します(※1).そのため,identd の返答速度は重要になります. ※1 ident プロトコルは,クライアントからサーバ側への TCP 接続に関して,サーバ側がクライアント側に,その TCP 接続を所有しているユーザは誰であるかを問い合わせるためのものです.問い合わせた結果を何に用いるかはサーバ次第ですが,その仕組み上,問い合わせるサーバ側は問い合わせ先となるクライアント側の identd が自分が期待した回答を返してくれるものと信頼していることが前提となります.つまり,インターネット上のクライアントの identd の返答に基づいて

    Linux の identd が遅い理由 〜 debian の pidentd はひと味違う? : DSAS開発者の部屋
  • Linux Advanced Routing & Traffic Control HOWTO

    Table of Contents1. 献辞2. はじめに2.1. 免責およびライセンス2.2. 事前に必要な知識2.3. Linux にできること2.4. この文書の管理についてのメモ2.5. 取得、CVS およびアップデートの投稿2.6. メーリングリスト2.7. この文書の構成3. iproute2 入門3.1. なぜ iproute2 なのか?3.2. iproute2 の概略3.3. 事前の必要条件3.4. 現在の設定を調べてみる3.5. ARP4. Rules - ルーティングポリシーデータベース4.1. 簡単なソースポリシールーティング4.2. 複数のアップリンク/プロバイダに対するルーティング5. GRE トンネル、その他のトンネル5.1. トンネルに関する一般的な事柄5.2. IP in IP トンネリング5.3. GRE トンネリング5.4. ユーザランドのトンネル6.

  • カーネルのネットワークパラメータ あまり知られていない設定

    13.2.1. ipv4 全体一般的な注意ですが、ほとんどの速度制限機能は loopback に対しては効きません。 ですので、ローカルでのテストはしないでください。 制限は 'jiffies' 単位で与えられ、先に紹介したトークンバケツフィルタによって 適用されています。カーネル内部の時計は、1 秒あたり 'HZ' 刻み (あるいは 'jiffies') で動作します。 Intel では 'HZ' は大抵の場合 100 です。よって *_rate ファイルを、 例えば 50 と設定すると、一秒当たり 2 パケットを許可することになります。 トークンバケツフィルタは、十分なトークンが溜まった場合、 最大 6 パケットまでのバーストを許すような設定になっています。以下のリストの一部は、Alexey Kuznetsov <kuznet@ms2.inr.ac.ru> と Andi Kleen

  • DeleGate version 9.9 リファレンスマニュアル の日本語訳

    DeleGate reference manual version 9.9