タグ

Linuxとnetworkに関するtri-starのブックマーク (6)

  • net.ipv4.tcp_tw_recycle は廃止されました ― その危険性を理解する - Qiita

    Disclaimer 私はネットワークの勉強もちゃんとしたことないし、Linux のソース読むのもはじめてな素人です。 何かおかしなところなどあれば、遠慮なくコメント欄でまさかりをお願いいたします。 ソースコードの引用に関して 文中で Linux のコード/ドキュメントを引用している箇所がありますが、すべてタグ v4.11 のものです。また、日語のコメント・翻訳文は筆者が入れたものです。 TL; DR Linux のカーネルパラメータ net.ipv4.tcp_tw_recycle は、バージョン4.12から廃止されました。 今後はこの設定は行わないようにしましょう(というかできません)。 一方、net.ipv4.tcp_tw_reuse は安全であり、引き続き利用できます。 …というだけの話なのですが、自分用にメモがてら経緯・背景などを記録しておきます。 なんで気がついたか このパラ

    net.ipv4.tcp_tw_recycle は廃止されました ― その危険性を理解する - Qiita
  • Linuxがifconfigやnetstatといった昔からおなじみのネットワークコマンドを置き換える本当の理由 - YAMDAS現更新履歴

    Chris's Wiki :: blog/linux/ReplacingNetstatNotBad もはや Linux で ifconfig や netstat といった昔からある(つまり Unix 由来の)ネットワークツールを非推奨にして、ss や ip といったものに置き換えているという話をワタシが知ったのは……記憶を辿ると、どうやら山形浩生経由らしい。 この方針に対し、古手のシステム管理者には、なんで安定して動いているものを置き換えなければならないのかとイライラする向きもあるのだが、それが必要な理由について解説している。 まず一つには、/proc 配下のいろんなファイルを読む ifconfig や netstat は、iproute2 の一部であり netlink ソケットを利用する ss や ip よりもコマンドの実行が非効率というのがある。これが大規模なシステムだと問題になるとい

    Linuxがifconfigやnetstatといった昔からおなじみのネットワークコマンドを置き換える本当の理由 - YAMDAS現更新履歴
  • 相手がいないのに ESTABLISHED になってる TCP ポート - tmtms のメモ

    最近 ParallelServer というライブラリを作ったのですが、その最中に奇妙な状態になってる TCP ポートを見つけたので、メモっておきます。 Ruby では TCP サーバーは次のような感じで作ることができます。お手軽ですね。 require 'socket' Socket.tcp_server_loop(12345) do |socket, client_addr| socket.puts "Your IP address: #{client_addr.ip_address}" name = socket.gets socket.puts "Hello, #{name}" socket.close end これは 12345 ポートでクライアントからの接続を待ち、接続されたらクライアントのIPアドレスとクライアントからの入力をクライアントに送信して切断するだけの簡単なプログラム

    相手がいないのに ESTABLISHED になってる TCP ポート - tmtms のメモ
    tri-star
    tri-star 2015/02/20
    BSD系とLinux系で接続のキューの実装が異なるので、listenのバックログを超過した際の動作が異なる
  • TCPを使う(サーバ、SO_REUSEADDR):Geekなぺーじ

    前述したTCPサーバ例では、サーバを終了した直後にもう一度サーバを起動しようとすると、bindがエラーで終了することがあります。 ここでは、その問題を回避するためにSO_REUSEADDRを有効にする方法を説明したいと思います。 TIME_WAIT TCPサーバのプログラムを書いていて、TCPサーバを終了して直後にもう一度起動したときに、 bindが「Address already in use」というようなエラーで失敗してしまったとこは無いでしょうか? 「あれ?もうTCPのサーバプロセスは終了しているのに。何故、bind出来ないのだろう?」と思いつつ、 しばらく時間がたってからもう一度実行すると問題なくbindが成功したりします。 この問題はTCP自体の仕組み(仕様)によって引き起こされています。(Linuxソケットの問題ではなく、TCPの仕様です)。 具体的にはTIME_WAIT状態と

    tri-star
    tri-star 2015/01/06
    TIME_WAITについての説明。なぜ存在するのか。どういう状況で発生するか。
  • よくわかるLinux帯域制限 | GREE Engineering

    矢口です。 みなさんはLinuxのtcという機能をご存知でしょうか。送信するパケットの帯域制御を行うことができる大変強力な機能で、グリーでもいくつかの用途で使用されています。 具体的な事例の一つはRedisです。Redisではreplicationを新規に開始する際やfailoverが発生しmasterが切り替わった際(特に2.6系)にストアされている全データが転送されます。しかし帯域制限をかける機能がないため、ネットワーク帯域を圧迫してしまう危険性があります。また通常のクライアントとの通信でも大量のクエリにより予想以上の帯域を使用してしまう可能性があります。このような場合にtcを用いることでRedisの使用する帯域をコントロールできます。 このように有用なtcですが残念なことに日語/英語ともにわかりやすい解説や詳細な情報は多くありません。 私も社内において使われていたtcの設定に問題が

    よくわかるLinux帯域制限 | GREE Engineering
  • ヘッダ構造体メモ - TECHNERD::INIT

    Ethernetヘッダ(DIX規格) linux/if_ehter.h struct ethhdr { unsigned char h_dest[ETH_ALEN]; /* destination eth addr */ unsigned char h_source[ETH_ALEN]; /* source ether addr */ unsigned short h_proto; /* packet type ID field */ }; IPv4ヘッダ netinet/ip.h struct iphdr { #if __BYTE_ORDER == __LITTLE_ENDIAN unsigned int ihl:4; unsigned int version:4; #elif __BYTE_ORDER == __BIG_ENDIAN unsigned int version:4; un

    ヘッダ構造体メモ - TECHNERD::INIT
  • 1