208

最近、Richards Stevens の著書「UNIX Network Programming, Vol. 1」を調べたところ、TCP と UDP 以外に第 3 のトランスポート層標準であるSCTPがあることがわかりました。

概要: SCTP はトランスポート レベルのプロトコルであり、UDP のようにメッセージ駆動型ですが、TCP のように信頼性があります。以下は、IBM DeveloperWorks からの簡単な紹介です。

正直なところ、私は SCTP について聞いたことがありません。それについてネットワーキングの本で読んだり、受講したクラスで聞いたりしたことを思い出せません。SCTP に言及している他のスタックオーバーフローの質問を読むと、この知識不足は私だけではないことがわかります。

なぜSCTPはそれほど知られていないのですか? あまり使われていないのはなぜですか?

4

11 に答える 11

103

実際、SCTP は主に電気通信分野で使用されています。従来、テレコム スイッチは SS7 ( Signaling System No. 7 ) を使用して、テレコム ネットワーク内のさまざまなエンティティを相互接続していました。たとえば、通信事業者の加入者データベース (HLR) は、交換機 (MSC) を使用して、加入者も接続されています (MSC)。

通信エリアは、より高速で到達可能な環境へと移行しています。これらの変更の 1 つは、SS7 プロトコルをより洗練された、高速で柔軟な IP ベースのプロトコルに置き換えることです。

テレコム分野は非常に保守的です。SS7 ネットワークは、ここで何十年も使用されています。これは非常に信頼性の高い閉じたネットワークです。つまり、通常のユーザーはアクセスできません。

対照的に、IP ネットワークはオープンで信頼性が低く、少なくとも SS7 が処理する負荷を処理できない場合、テレコムは IP ネットワークに移行しません。これが SCTP が開発された理由です。それは試みます:

  • 数十年にわたって蓄積された SS7 ネットワークのすべての利点を模倣します。
  • 速度、セキュリティ、および冗長性において TCP よりも優れた接続指向のプロトコルを作成する

Linux の最新リリースでは、すでに SCTP がサポートされています。

于 2009-07-23T14:27:21.057 に答える
72

現在、いくつかのアプリケーションで SCTP を展開しており、さまざまなホーム ルーターでの SCTP サポートに関する重大な問題に遭遇しました。彼らは単に SCTP を正しく処理していません。これは主にパフォーマンスの問題だと思います (SCTP プロトコルの仕様では、ヘッダーだけでなく、パケット全体のチェックサムを再計算する必要があります)。

他の多くの有望なプロトコルと同様に、D-link と Netgear が壊れた NAT ボックスを修正するまで、SCTP は悲しいことに水中で死んでいます。

于 2011-09-09T09:09:11.647 に答える
56

SCTP を最大限に活用するには、アプリケーション内でより多くの設計が必要です。TCP よりも多くのオプションがあり、ソケットのような API は後で登場し、まだ新しいものです。しかし、それを理解するのに時間がかかる (そして TCP の欠点を知っている) ほとんどの人は、それを高く評価していると思います。これは、TCP と UDP についての約 30 年の知識に基づいて構築された、適切に設計されたプロトコルです。

いくつかの考慮が必要な側面の 1 つは、ストリームの側面です。ストリームは (通常はオフにできると思います) 順序保証を提供しますが (TCP 接続のように)、SCTP 接続ごとに複数のストリームが存在する可能性があります。アプリケーションのデータを複数のストリームで送信できる場合は、受信側が 1 つの誤ったパケットのために不足するヘッドオブライン ブロッキングを回避できます。互いに影響を与えることなく、同じ接続を介して効果的に異なる会話を行うことができます。

もう 1 つの便利な追加機能は、マルチホーミングのサポートです。1 つの接続を両端の複数のインターフェイスにまたがることができ、障害に対処できます。これは TCP でエミュレートできますが、アプリケーション層でエミュレートできます。

非一時的な接続に TCP を使用するアプリケーションが最初に実装する適切なリンク ハートビートは、無料で提供されます。

SCTP の個人的な要約は、十分なアプリケーション サポートを備えた別の方法 (TCP または UDP) で実行できないことは何も実行しないということです。それが提供するのは、そのコードを(ひどく)自分で実装する必要がないことです。

参考までに、SCTP は、Diameter でサポートされるように義務付けられています (RADIUS next gen を参照)。RFC 3588 を参照

   Diameter クライアントは TCP または SCTP をサポートする必要がありますが、エージェントと
   サーバーは両方をサポートする必要があります。この仕様の将来のバージョンは MAY
   クライアントが SCTP をサポートすることを義務付けます。
于 2009-09-14T11:25:25.700 に答える
54

SCTP はあまり知られておらず、あまり使用/展開されていません。その理由は次のとおりです。

  • 広く: TCP/IP スタックに広く統合されていません (2013 年: 最新の Mac OSX および Windows ではまだネイティブに欠落しています。2020 の更新: まだ Windows にも Mac OS X にもありません)
  • ライブラリ: 使いやすい言語による高レベルのバインディングはほとんどありません (免責事項: 私はpysctp、Python の SCTP easy stack サポートのメンテナーです)
  • NAT: NAT をうまく (またはまったく) 通過しません (1% 未満のインターネット ホームおよびエンタープライズ ルーターが SCTP で NAT を実行します)。
  • 人気度:一般向けアプリは使用していない
  • プログラミング パラダイム: 少し変更されました: まだソケットですが、多くのホストを多くのホストに接続できます (マルチホーミング)。
  • 複雑さ: SCTP スタックは実装が複雑です (上記の理由により)
  • 競争: マルチパス TCP が来ており、マルチホーミングのニーズ/機能に対処する必要があるため、可能であれば SCTP の実装を控え、MTCP を待つ必要があります。
  • ニッチ: ニーズ SCTP フィルは非常に特殊であり (順序付けられた信頼できるデータグラム、マルチストリーム)、多くのアプリケーションでは必要ありません
  • セキュリティ: SCTP はセキュリティ制御を回避します (一部のファイアウォール、ほとんどの IDS、すべての DLP は、CentOS/Redhat/Fedora を除いて netstat に表示されません...)
  • 監査能力: 世界の 3 社のような企業が定期的に SCTP セキュリティの監査を行っています (免責事項: 私はそのうちの 1 社で働いています)。
  • 学習曲線: SCTP で遊べるツールチェーンはあまりありません ( netcat とうまく組み合わせるか、 socatを使用する優れた withsctp を確認してください。2020 年編集: nmap は数年前からサポートしています)
  • ボンネットの下: 主に電気通信で使用され、SMS を送信したり、携帯電話でネットサーフィンを開始したり、電話をかけたりするたびに、SCTP (GSM/UMTS を使用した SIGTRAN/SS7、LTE/IMS を使用した直径) を介して流れるメッセージをトリガーすることがよくあります。 /RCS、S1AP/X2AP with LTE)、実際にはよく使用しますが、それについては決して知りません;-) 2020 編集: コア 5G ネットワークから削除され (Diameter はなくなり、代わりに HTTP/2)、アンテナとコアの間の 5G 無線アクセス ネットワークでのみ使用されます。
于 2013-11-29T17:20:07.347 に答える
15

p1. IPv4 に直接マッピングされた SCTP には、NAT ゲートウェイでのサポートが必要です。NAT ゲートウェイは、どこにも広く展開されたことはありません。それがなければ、典型的な NAT ゲートウェイは、一度に SCTP を使用することを、パブリック アドレスごとに 1 つのプライベート ホストのみに許可します。

p2. UDP/IPv4 にマッピングされた SCTP は、パブリック アドレスごとにより多くのプライベート ホストを許可しますが、IPv4/NAT ゲートウェイの UDP マッピングは、NAT が追跡するための明示的な状態を持たないコネクションレス トランスポートであるため、IPv4/NAT ゲートウェイの UDP マッピングを確立して維持するのが難しいことで有名です。 .

p3. IPv6 に直接マッピングされた SCTP には、IPv6 が必要です。IPv6 の展開を試みましたか? そうであれば、IPv6 ファイアウォールを購入しようとしましたか? SCTPをサポートしていますか? ロードバランサーはどうですか?SSLアクセラレータ?

p4. 最後に、インターネットの多くは、TCP ポート 80 とポート 443 を通過できるものにかなり制限されているため、どのような種類の SCTP もそこで失われる傾向があります。したがって、IETF のMPTCPワーキング グループのような取り組みが見られます。

于 2013-03-01T20:31:24.907 に答える
13

SCTP は、UDP の上に TCP のような信頼性の高いレイヤーを作成するために WebRTC データチャネルで使用されるため、私たちの多くはすぐに SCTP を使用することになります。SCTP over DTLS over UDP: https://datatracker.ietf.org/doc/html/draft -ietf-rtcweb-data-channel-13#section-6

于 2013-03-02T13:06:45.280 に答える
6

SCTP Wikipediaページを読む主な理由は、SCTPが非常に若いプロトコル(2000年に提案)であり、現在主流のOS(WindowsOS XLinux)でサポートされていないことです。

「非常に若い」と思われる場合は、IPV6について考えてみてください。「2008年12月、標準化過程プロトコルとして10周年を迎えたにもかかわらず、IPv6は一般的な世界展開の観点からはまだ始まったばかりでした。」

于 2009-07-23T13:16:11.073 に答える
3

SCTP は、Diameter が AAA に使用される 4G LTE ネットワークで広く使用されています。

于 2014-05-20T21:52:12.660 に答える
2

市販のルーターが壊れている、または SCTP をサポートしていないというすべてのコメントを参照すると、問題は、NAT を使用した SCTP がまだ IETF のドラフト形式であるということです。したがって、それを実装するための RFC 仕様はありません。

https://datatracker.ietf.org/doc/html/draft-ietf-behave-sctpnat-09

于 2014-11-19T16:19:11.263 に答える
2

あまり知られていないかもしれませんが、未使用ではありません。ごく最近、Using SCTP as a Transport Layer Protocol for HTTPに関するドラフトがIETFで公開されました。

于 2009-07-23T13:17:30.090 に答える
-1

Sctpの誕生は遅すぎます。多くの場合、TCPで十分です。

また、私が知っているように、その使用法のほとんどは電気通信分野です。

于 2009-07-23T13:21:26.450 に答える