uIP TCP/IPについて

先ごろ(だいぶ前ですが)ルネサスサイトから uIP TCP/IP Protocol Stack Demostration Document number:R01AN0169EU0100 Ver 1.01 NOTEs: * The demostration directory structure is explained in the application note. * This application note supports RX62N and the demostration project runs on RSK+RX62N. UIPのサンプルを入手しましてSH7670へ移植しました、その結果とても良好な結果を得ましたので報告します 自前のソースでTCP/IPを実装して稼動させていましたがよく応答ができなくなったりしていました いろいろな遷移状態でわけがわからないような(たぶんプロトコルが十分でない)遷移もありました UIPにすると必ず応答して、応答不良などまだ経験がありません、 ただこのUIP長い(大きい)データ転送には弱いんです、”どうしてこんなに時間がかかるの”というぐらい なにか説明ではACKが200mセコンドウェイト方式を採用しているからだとか これの速度はもっと速くはならないものでしょうか? IWIPなど聞きますが、UIPと比べてどうなのでしょうか、IWIPのほうがいいのでしょうか?
  • シェルティさん

    できました、ありがとうございました。

  • IKUZOさん

    こんにちは、シェルティです

    おお、見事にインタプリタの入出力がtelnetに繋がっていますね。
    telnetサーバの通信端点を増やせば、複数人同時ログインもできると思います。

    後発の方のために、IKUZOさんの疑問点(キャンセル動作)にも回答しておきたいと思います。

    ■前提条件
    (1)通常はmain()ループでプログラムカウンタが周回している
    (2)10ms周期タイマ割り込みまたは、Etherコントローラ割り込みを起点とし
     TCP/IPの処理が実行される。(必要に応じてTCP/IPからユーザにコールバックする)

    ■1通信端点での送信・受信同時動作(受信キャンセル動作の応用)
    (1)main()でまずはTCP接続の1回目の接続待ち受け(tcp_acp_cep())をノンブロッキングコール
    (2)TCP接続が完了するとコールバックが発生、イベントコードはTFN_TCP_ACP_CEPとなる。
    (3)TFN_TCP_ACP_CEPを伴ってコールバックが来たら、tcp_rcv_dat()を実行し
     受信予約(インタプリタへのコマンド待ち)
    (4)TCP受信が完了するとコールバックが発生、イベントコードはTFN_TCP_RCV_DATとなる。
    (5)TFN_TCP_RCV_DATを伴ってコールバックが来たら、tcp_rcv_dat()で
     指定した受信バッファポインタに受信データが入っているので
     これを取り出してインタプリタ側に送出、
     続いてtcp_rcv_dat()を実行し受信予約(次のインタプリタへのコマンド待ち)
    (6)main()ではインタプリタの制御を行っており、(5)で詰め込まれたキューを監視しているとして、
     キューに何かが入ってきたら、キューに登録されたコマンド処理を実行し、実行結果を
     送信バッファに書き込み、tcp_can_cep()を使用して、(5)の受信をキャンセルする
    (7)キャンセルが完了するとコールバックが発生、イベントコードはTFN_TCP_RCV_DATとなる。
    (8)TFN_TCP_RCV_DATとエラーコード(E_RLWAI)を伴ってコールバックが来たら、
     tcp_snd_dat()で(6)の送信バッファを指定して実行
    (9)TCP送信が完了するとコールバックが発生、イベントコードはTFN_TCP_SND_DATとなる。
    (10)TFN_TCP_SND_DATを伴ってコールバックが来たら、tcp_rcv_dat()で再度受信待ちする
     一見(6)~(10)の間に受信したデータは取りこぼしそうですが、TCP/IP内部の受信ウィンドウに
     自動的に保持されACKが返る(溢れた分もEtherコントローラに数KBは保持される模様、
     これも溢れて本当に受信データが破棄されてもTCPの再送制御で通信相手は
     もう一度同じデータを送ってくる)ので、受信データが消えてしまうことはありません。
     
    以上です

  • 管理人です。

    TCP/IPのデモおよびアプリケーションノートに関して、利用中止の注意がルネサスHPに掲載されていますのでご注意ください。

    <件名>
    オープンソースソフトウェアの TCP/IP プロトコルスタックを用いた Ethernet 通信デモンストレーションおよびアプリケーションノートの利用中止について
    <URL>
    https://www.renesas.com/jp/ja/document/oth/renesas-response-uip-open-source-tcp-ip-stacks-vulnerability-issue

    よろしくお願いします。

  • 利用中止も致し方無いですね

    telnet等今どきインターネットに繋ぐ人もいなでしょうし

    実験程度ならともかくルネサス社として商用利用するには無理があると思いましたから

    納得いきます。