SiTCPに関する情報を共有するためのフォーラムです。この目的に反しない範囲で、質問、コメント、回答などご自由にご投稿ください。
This forum is for sharing information about SiTCP. Please do not hesitate to post any questions, comments or answers within the scope of this purpose.

SiTCPの実装について / Consult on the SiTCP implementation

Date: Mon, 26 Apr 2021 15:31:40 +0800 (GMT+08:00)
Gu,

I have some questions about the implementation of SiTCP core.
After resetting the core, network connection seems to be unstable sometimes.
I wonder if there is any requirements for the reset signal inputting to RST port.
Is the reset is synchronous or asychronous inside the core?
The system clock frequency of the core is 125MHz, and the recommended frequency is 130MHz.
Will the system clock with the frequency of 125MHz make the core to be unstable?

Besides, I still have some questions about data transmission.
What is the size of the transmission buffer? How does the core start to transmit one packet?
Is the time interval between two data packets a fixed value?
When retransmission happens, is there any sequential relationship between the retransmission data and the normal data?
Does every data packet have a retransmission timer or does SiTCP retransmit all the packets without ACK every 500 ms?


SiTCPコアの実装についていくつか質問があります。
コアをリセットした後、ネットワーク接続が不安定になることがあります。
RSTポートにリセット信号を入力するための要件はあるのでしょうか。
リセットはコア内で同期的ですか、それとも非同期的ですか?
コアのシステムクロック周波数は125MHzで、推奨周波数は130MHzです。
125MHzの周波数のシステムクロックはコアを不安定にしますか?

その上、私はまだデータ送信についていくつか質問があります。
送信バッファのサイズはどれくらいですか? コアはどのようにして1つのパケットの送信を開始しますか?
2つのデータパケット間の時間間隔は固定値ですか?
再送信が発生した場合、再送信データと通常のデータの間に連続的な関係はありますか?
すべてのデータパケットに再送信タイマーがありますか、それともSiTCPは500ミリ秒ごとにACKなしですべてのパケットを再送信しますか?

Comments

  • Date: Tue, 27 Apr 2021 11:54:27 +0900
    ASAI,

    After resetting the core, network connection seems to be unstable sometimes.

    When you reset SiTCP, the PHY is also reset.
    Depending on the nature of the network instability, if the L1 link is unstable, there may be a problem with the PHY.

    I wonder if there is any requirements for the reset signal inputting to RST port.

    It is OK if you continue resetting for about 10 clocks. There are no other requirements.

    Is the reset is synchronous or asychronous inside the core?

    It's asynchronous.

    The system clock frequency of the core is 125MHz, and the recommended frequency is 130MHz.
    Will the system clock with the frequency of 125MHz make the core to be unstable?

    130MHz or higher is recommended, but this is a condition for maximum performance.
    There is no problem because it has a track record of operation at 125MHz.

    What is the size of the transmission buffer?

    The name of the library is as follows.

    [SiTCP_ffff_sss_BBT_V110.V]
    

    The above 'ffff' is the FPGA family name and 'sss' is the number of bytes in the send buffer. Usually 32kbyte.

    How does the core start to transmit one packet?

    When Nagle buffering is enabled, the data in the buffer is sent when there is no writing to the buffer and about 4ms have passed, or when the written data reaches the MSS value.

    If Nagle buffering is disabled, it will start sending as soon as it is written. However, on V110, if writing continues, it will wait until the MSS value is reached or writing stops. This is a measure to prevent frequent occurrence of small packets.

    Is the time interval between two data packets a fixed value?

    The transmission conditions are as described above and are not fixed.
    In any case, the IPG specified in the IEEE802.3 standard is secured.

    When retransmission happens, is there any sequential relationship between the retransmission data and the normal data?

    If it is determined to resend, the current transmission is interrupted and the data is transmitted from the Sequence Number that was determined to be resent.
    If the TCP protocol stack is processed correctly, the only effect of retransmission of the upper stack is the delay time. There is no data discontinuity or loss.

    Does every data packet have a retransmission timer or does SiTCP retransmit all the packets without ACK every 500 ms?

    When the retransmission timer expires, if the Acknowledgment Number has not been updated, it will start retransmitting from the Acknowledgment Number that has already been received.

    If Fast Retransmit is ON, it will be retransmitted when the same Acknowledgment Number is received four times.


    コアをリセットした後、ネットワーク接続が不安定になることがあります。

    SiTCPをリセットするとPHYもリセットされます。
    ネットワークの不安定の内容によりますが、L1リンクが不安定な場合はPHYに問題があるかもしれません。

    RSTポートにリセット信号を入力するための要件はあるのでしょうか。

    10クロック以上リセットを継続すれば、他には要件はありません。

    リセットはコア内で同期的ですか、それとも非同期的ですか?

    非同期です。

    コアのシステムクロック周波数は125MHzで、推奨周波数は130MHzです。
    125MHzの周波数のシステムクロックはコアを不安定にしますか?

    130MHz以上が推奨ですが、これは最大性能を出すための条件です。
    125MHzでの動作実績はありますので、問題ありません。

    送信バッファのサイズはどれくらいですか?

    ライブラリの名称は以下のようになっています。

    SiTCP_ffff_sss_BBT_V110.V
    

    ここのffffはFPGAのファミリ名、sssは送信バッファのbyte数です。
    通常32kbyteです。

    コアはどのようにして1つのパケットの送信を開始しますか?

    Nagleバッファリングが有効な場合、バッファへの書き込みがなくなって約4msが経過した場合
    または書き込んだデータがMSSに達した場合にバッファ内のデータを送信します。

    Nagleバッファリングが無効な場合、書き込まれるとできるだけ速やかに送信を開始しますが、
    V110では、小さいパケットが多発することを防止するために、書き込みが続いている場合は
    MSSに達するか書き込みが停止するまで送信を待ち合わせます。

    2つのデータパケット間の時間間隔は固定値ですか?

    送信条件は前述の通りであり、固定ではありません。
    いかなる場合も、IEEE802.3の規格で定めるIPGは確保されます。

    再送信が発生した場合、再送信データと通常のデータの間に連続的な関係はありますか?

    再送することが判断されると、現在の送信を中断し、再送が決定されたSequence Numberから
    データを送信を行います。
    TCPのプロトコルスタックが正しく処理された場合、上位スタックの再送による影響は遅延時間のみです。
    データの不連続や損失は発生しません。

    すべてのデータパケットに再送信タイマーがありますか、それともSiTCPは500ミリ秒ごとにACKなしですべてのパケットを再送信しますか?

    再送タイマは、Acknowledgment Numberが更新されないまま再送タイマが満了すると
    既に受信済みのAcknowledgment Numberから再送を開始します。
    なお、Fast RetransmitがONの場合は、同じAcknowledgment Numberが4回受信されると再送します。

Sign In or Register to comment.