タグ

TCPに関するclavierのブックマーク (87)

  • 【TCP】linuxで取れるtcpのメトリクスを理解していく記事 - 地方エンジニアの学習日記

    /proc/net/netstatを頑張って理解していく。ドキュメントないものをどうやって調べていくかはちょっと悩む... netstat グラフに出てくる項目 概要 TcpExtSyncookiesSent tcp.syncookies.sent 送信されるSYNクッキーの数 TcpExtSyncookiesRecv tcp.syncookies.recv TCPスタックが受信するSYNCookieの応答パケットの数 TcpExtSyncookiesFailed tcp.syncookies.failed SYNCookieからデコードされたMSSが無効 TcpExtEmbryonicRsts tcp.misc_errors.embryonic_rsts SYN_RECV状態の接続に対して受信された無効なパケット TcpExtPruneCalled tcp.misc_errors.pru

    【TCP】linuxで取れるtcpのメトリクスを理解していく記事 - 地方エンジニアの学習日記
  • Making connections with TCP and Sockets for Workers

    Making connections with TCP and Sockets for Workers2021-11-15 Today we are excited to announce that we are developing APIs and infrastructure to support more TCP, UDP, and QUIC-based protocols in Cloudflare Workers. Once released, these new capabilities will make it possible to use non-HTTP socket connections to and from a Worker or Durable Object as easily as one can use HTTP and WebSockets today

    Making connections with TCP and Sockets for Workers
  • Socket migration for SO_REUSEPORT (Part 1) - Kuniyuki Iwashima

    TCP ソケットと `SO_REUSEPORT` オプションに関する問題を解決するために Linux カーネル v5.14 から取り込まれる予定のパッチセットについて 2 回に分けて解説します。 - https://lore.kernel.org/bpf/20210612123224.12525-1-kuniyu@amazon.co.jp/ - https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git/commit/?id=1f26622b791b6a1b346d1dfd9d04450e20af0f41 Part 1 では `SO_REUSEPORT` オプション、カーネルの挙動と問題点、パッチセットの効果について解説し、 Part 2 ではカーネルの実装と修正方法、追加した eBPF の機能について解説します。 ##

    Socket migration for SO_REUSEPORT (Part 1) - Kuniyuki Iwashima
  • GKEの内部負荷分散機能を使ってInternal Load Balancerを構築する - Qiita

    ※ 2020/04時点でIngress for internal load balancingは公開されたものの、未だプレリリースのステージにあります。Rapid channelのクラスターでしか動かないため、Stableに降りてきたら手順を更新予定です。 はじめに この記事はZOZOテクノロジーズ #1 Advent Calendar 2019 22日目の記事です。 昨日の記事は @takanamitoさんによる「teyuに届いたPullRequestで使われているRubyの高速化手法」でした。 みなさん、GKE完全に理解していますか?僕は定期的に完全理解しています。 今回は、GKEに内部ロードバランサーをデプロイする方法についてご紹介します。 Kubernetesのネットワークの世界のおさらい 内部ロードバランサーの話をする前に、まずはKubernetesのネットワークについて簡単に振

    GKEの内部負荷分散機能を使ってInternal Load Balancerを構築する - Qiita
  • 「Working with TCP Sockets」を読んだ - Fire Engine

    最近Golangを書いていると、自分でTCPをListenしたり、Acceptしたりする処理を書くことがよくあるのですが、何をやっているのか全くイメージが沸いてなかったので、「Working with TCP Sockets」を読んで勉強しました。 Working With TCP Socketswww.jstorimer.com だいたいこの手のソケットプログラミング関連のは、C言語で解説されていることが多いと思うのですが、書はサンプルコードが全てRubyなので、非常に読みやすいです。残念ながら英語版しかありません。 以下、私がポイントだと思ったことだけをまとめた読書ノートです。 読書ノート 前半はソケットとは?から始まり、ソケットプログラミング自体の入門的な内容で、そのあたりの理解が曖昧だった私にはとても勉強になりました。 後半は、ソケットプログラミングを使った実用的なアーキテクチ

    「Working with TCP Sockets」を読んだ - Fire Engine
  • When TCP sockets refuse to die — Idea of the day

    This article was first published on Cloudflare blog: When TCP sockets refuse to die Accompanying scripts While working on our Spectrum server, we noticed something weird: the TCP sockets which we thought should have been closed were lingering around. We realized we don't really understand when TCP sockets are supposed to time out! In our code, we wanted to make sure we don't hold connections to de

  • 第一回 KLab Expert Camp「TCP/IPプロトコルスタック自作開発」を開催しました : DSAS開発者の部屋

    KLab Expert Camp というイベントを8/26~29の4日間で開催しました。 KLab Expert Camp とは KLab Expert Camp は、技術的に深いテーマに取り組んでいる学生の発掘・育成を目的とした KLab の新しい取り組みです。 記念すべき第1回のテーマは「TCP/IPプロトコルスタック自作開発」で、以下のような触れ込みで開催しました。 「OSを作ってみたい」「コンパイラを作ってみたい」と思う人が多いように「プロトコルスタックを作ってみたい」と思う人も多いのではないでしょうか。今回の KLab Expert Camp のテーマは、そんな皆さんにピッタリの「TCP/IPプロトコルスタック自作開発」です。担当講師が開発している教育用のプロトコルスタック(https://github.com/pandax381/microps)を教材に、Ethernetフレー

    第一回 KLab Expert Camp「TCP/IPプロトコルスタック自作開発」を開催しました : DSAS開発者の部屋
  • When TCP sockets refuse to die

    While working on our Spectrum server, we noticed something weird: the TCP sockets which we thought should have been closed were lingering around. We realized we don't really understand when TCP sockets are supposed to time out! Image by Sergiodc2 CC BY SA 3.0 In our code, we wanted to make sure we don't hold connections to dead hosts. In our early code we naively thought enabling TCP keepalives wo

    When TCP sockets refuse to die
  • TCP/QUIC相互変換のポートフォワードツールを書いた - ASnoKaze blog

    TCP/QUICのポートフォワードツールを書いた。 概要 IETFで標準化が進められているトランスポートプロトコルQUIC。 UDPを利用しており、エンドポイントのIPアドレスが変わってもコネクションが切れなかったり、より良い再送制御が行えたりと長所は多くある。しかし、QUICをサポートしているアプリケーションプロトコル、実装が現状多くはない。 QUICの恩恵に預かるために、TCPとQUICを相互変換するポートフォワードツール 「t2q2t」 を書いた。(実態としてはただのProxy) github.com ただし、ハンドシェイク回数が増えるのでコネクション確立時のオーバーヘッドは高い 利用例 ユースケースとしては例えば: クライアントとサーバそれぞれでt2q2tを実行する。 クライアント: TCPで0.0.0.0:2022でリッスンし、QUICで192.168.0.1:22に転送する サ

    TCP/QUIC相互変換のポートフォワードツールを書いた - ASnoKaze blog
  • WebRTCの基本とP2P通信が成立するまでを学ぶ - Qiita

    はじめに 昨年新卒でSIer企業に入り、現在オンラインチャットアプリの開発に取り組んでいるのですが、 その過程でビデオチャットを取り扱う機会がありました。 WebRTCについての知識がないものでだいぶ苦戦したため、 一度WebRTCの基的な仕組みを理解して「とりあえず動く」を脱しようと思い色々調べてみました。 WebRTCって? WebRTCとは、Web Real-Time-Communicationのこと。 HTML5で新しく策定されたAPIの規格で、 P2P通信でブラウザ間のリアルタイムコミュニケーションを実現するための仕組みです。 WebRTCにおけるAPIは次の2つの仕様で策定されているそうです。 カメラ/デバイスへのアクセス Media Capture and Stream ビデオ/オーディオ/データ通信を行う WebRTC 1.0: Real-time Communicati

    WebRTCの基本とP2P通信が成立するまでを学ぶ - Qiita
  • NPNS における Erlang/OTP

    Erlang & Elixir Fest 2019 で任天堂さんの発表について、懇親会で話せる範囲でお教えていただいたことなどを交えて、Erlang/OTP を利用してパッケージ製品を開発しているプログラマー視点で見ていきます。残念ながら運用については未経験のため、その辺りは触れません。 また自分が XMPP というプロトコルはなんとなく知っているレベルということもあり、XMPP 自体には踏み込みません。 XMPP/ejabberd という選択当たり前ですがプッシュ通知を送るには TCP/IP の接続を維持するという方針になります。その上、将来的には 1 億を目指して行くわけです。 TCP の常時接続が経験ない中で 1 億同時接続を目指す際の技術選定で、自作プロトコルに行かず、 枯れている XMPP という選択をしたのは当に素晴らしいと思います。 また、そんな中で実績がある ejabbe

  • 堅牢なTCPサーバを作るために - katsubushiの知見から/kamakura.go#5

    kamakura.go #5

    堅牢なTCPサーバを作るために - katsubushiの知見から/kamakura.go#5
  • Notes on TCP keepalive in Go

    Good evening I have a TCP server clients can connect to. Pretty straightforward. But the problem is, all my clients use mobile network and are constantly on the move. Losing connection without notifying the server via FIN or RST is a common situation. So the server has this lingering connection and thinks a client is online when in reality it is not. My first solution was to wait for a while; if a

  • gRPC Unary RPC で HTTP/2 の通信を追ってみる - 理系学生日記

    gRPC でいろいろとトラブルが起きており、そのトラブルシュートをしようと思っています。 しかし、gRPC は HTTP/2 の上で動作するプロトコルであり、HTTP/2 の RFC を見ても、イマイチ HTTP/2 が見えてこない。HTTP/2 のプロトコルが見えないと、gRPC の挙動が正しいのかどうかもわからない。 というわけで、gRPC を通して HTTP/2 の挙動を知ろうというコーナーです。 HTTP/2 の特徴 Stream 多重化 Stream は状態を持っている 通信の流れを追ってみる netstat wireshark Connection Preface SETTINGS フレーム リクエスト送信 レスポンス受信 この他 HTTP/2 の特徴 HTTP/2 の RFC 他を読み、ぼくの理解している HTTP/2 の特徴をいくつか挙げてみます。 Stream 多重化 H

    gRPC Unary RPC で HTTP/2 の通信を追ってみる - 理系学生日記
  • あなたのネットワークスタック正しく設定されていますか? - Qiita

    はじめに Linux Advent Calendar 10 日目の記事です。 運用や研究開発の現場では、ソフトウェアの実験、または機器のテストや選定などのために、ベンチマークツールや自前のアプリケーションでコンピュータ間の通信速度を計測する機会が多々あると思います。一方で10Gbpsや40Gbpsといった昨今の高速ネットワークにおいては、これらの計測結果はアプリケーションの通信API部分の実装、カーネルパラメータまたはコンパイルオプションによって大きく変わってしまうため、正確な計測を行うためにはこれらを正しく設定/理解する必要があります。この記事では、ネットワーク周りのカーネルとアプリケーションの動作の概要と、その中の重要なポイントを理解することを目的にします。 ネットワークプログラミングのおさらい まず最初に、TCPを使う今時のサーバプログラムがどのようにできているか簡単におさらいします

    あなたのネットワークスタック正しく設定されていますか? - Qiita
  • net/http/pprof のheapの値は何を表しているのか - Copy/Cut/Paste/Hatena

    pprofのWeb UIの "heap" の数って何を表すんだろう? pic.twitter.com/JWlAgIL5Ka— k1LoW (@k1LoW) 2018年9月7日 tcprxyというTCPプロキシを作っています。 github.com 8月中旬くらいから「よし、プロダクションレディになるくらいまで開発してやろう」と、時間を見つけては設定ファイルを読めるようにしたり、server_starterと連携できるようにしたり、取得できる情報の充実を図ったりしていました。いろいろ機能を追加してみたのですがそれはまたの機会に。 そして、「あとは、常時起動していてメモリリークが発生しないことを確認すればよいだろう」と、とりあえず見よう見まねで net/http/pprof を使ってブラウザ上からプロファイルを確認してみました。 具体的には main.go を以下のように修正して、tcprxy

    net/http/pprof のheapの値は何を表しているのか - Copy/Cut/Paste/Hatena
  • netstatコマンドを高速化する - Qiita

    はじめに Linuxカーネルとnetstatコマンドをちょこっとだけ改造したらnetstatコマンドが早くなった、というお話です。 概要 netstatコマンドは、TCPセッションについての情報をカーネルから取得する際には/proc/net/tcpという特殊なファイル1を参照している IPv4では/proc/net/tcp、IPv6については/proc/net/tcp6と別のファイルに分かれているが、都度併記するとややこしいので以降は/proc/net/tcpと表記する procfsは内部でseqファイルシステムという仕組みを利用している seqファイルシステムについてはこちらにまとめられている seqファイルシステムについて - Qiita seqファイルシステムを利用した特殊なファイルに対してreadシステムコールを実行した際、通常はカーネル側で確保されたPAGE_SIZE(多くの環境

    netstatコマンドを高速化する - Qiita
  • 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
  • 外部向け HTTP 通信の再送検知ツールを作った話 : DSAS開発者の部屋

    このエントリは KLab Advent Calendar 2017 の最終日の記事です。 こんにちは。インフラ担当 高橋です。 このエントリでは、つい先日、少し変わった仕組みの外部向け HTTP 通信の 3way ハンドシェイクの再送検知ツールを作りましたのでご紹介します。 きっかけ このツールを作ったのは、DSAS の外部で発生するネットワーク障害を検知できるようにするためです。 例えばこのような障害がありました。 DSAS は複数のデータセンタで稼働しているのですが、ある日、特定データセンタの Web サーバから外部 API への接続が重くなる事象が発生しました。 原因は外部ネットワークからの DDoS 攻撃により、データセンタのネットワークの一部区間が飽和状態になったことによるものでした。 またある日は、特定のデータセンタの Web サーバから外部の特定 API に接続ができなくなり

    外部向け HTTP 通信の再送検知ツールを作った話 : DSAS開発者の部屋
  • IPVS のセッション同期パケットを作って送ろう - Qiita

    IPVS について LVS Project には IPVS 以外にも KTCPVS などのソフトウェアがありますが、現在では LVS (Linux Virtual Server) と言うとほぼ IPVS のことを指しているように思います。 IPVS は Linux でロードバランサを構築するためソフトウェアで、Linux kernel 内部に実装されています。 基的に L4 まで の情報を見てパケットをリアルサーバに転送するものです。 (FTP や SIP など、一部アプリケーションは上位レイヤの処理もできます) ipvsadm コマンドで設定を変更することもできますが、番環境で利用する場合はヘルスチェックや HA などを求めて keepalived から IPVS を使うことが多いと思います。 ここでは IPVS におけるセッション同期の話題を主とします。 LVS (IPVS) 自体

    IPVS のセッション同期パケットを作って送ろう - Qiita