This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

low tcp/ip

I send data from evaluation board MCB2300 (with LPC 2378 microprocessor)
to a user's PC via Ethernet using TCP/IP protocol.
A program named Ethereal shows that MCB2300 transfers 1024 bytes segment
during 7-8 ms after ACK is received from PC. Why the transfer is so low?
(Program sample is EasyWeb).

Parents Reply Children
  • I don't use this product, so I don't have access to all information.

    Check what options you have for configuring memory and sliding window size. If you can't find anything about sliding window support (many outstanding TCP messages before stopping to wait for an acknowledge) then you may have to call Keil support and check if the stack supports this. Without sliding window support, your transfer rate will be greatly affected by the ping times.

  • I use Keil tutorial program EASYWEB for Keil MCB2300.
    While initializing the EMAC ethernet controller I configure 100MBit mode.
    Real speed is 800 Kbit per second.
    That is my question to Keil company:
    Why the MCB2300 board works like a turtle?

  • Two things.

    1) You are not asking the "Keil company" anything. You are asking end users on a forum hosted by Keil. Check the "Support" link in the page header for how to send an official support request.

    2) You are missing my point. This is not a question of 100Mbit or 10Mbit mode. 100Mbit mode means that the bits within a packet has a timing of 100Mbit/s. But that does not mean that a 100Mbit interface can transfer 12.5MB/s. It only says the baudrate inside a packet. Even a PC has a hard time to reach 50% efficiency, i.e. 50Mbit/s effective transfer rates.

    My post was about how many packages the TCP/IP stack can have outstanding, before receiving an acknowledge from the other side. A stack running with only a single packet outstanding will use a stop-and-go mode. One packet is sent. One acknowledge is received. A new packet is sent. In such a configuration, the total transfer capacity will be greatly affected by the ping times, i.e. the turn-around time from that you send a data packet until the acknowledge is received so a new packet can be sent.

    Have you checked if there are any memory or configuration options for number of outstanding packets? Any setting for sliding window? An embedded device does not have as much RAM as a PC, so it can't really run with large sliding windows and if the stack does support sliding windows, it will then be quite natural that the setting is minimized.

  • Are you using the Keil protocol stack? The Keil RL?

    If so, what period have you got the TCP maintenance tick set to?

    Our tests indicate that it is not a turtle; if you configure it to match your requirements!

  • I create project in Keil uVision.
    Algoritm on board is realized so
    that the TCP/IP stack can have 1 packet before receiving an acknowledge from PC.
    Yes this is no effect. But the question is :
    the board sends next packet only after 7-8 ms. I think that this is slowly or not?

  • "I do not Keil RL."

    I would suggest you consider doing so - Or an equivalent.

    Our tests show performance is very good.

  • Really ? Gladly believe.
    What time will be measured at your miracle test?
    Do me favour:
    1. You run timer at PC and send request to the board
    2. The board wil send 4K to PC after request receiving
    3. PC receives 4K and stops the timer
    4. What is measured time?
    P.S. Data are transfered via Ethernet (TCP/IP)
    Best regards

  • When we were conducting our tests, we transmitted 16Kb blocks.

    Each TCP packet was 1Kb, so there were 16 transmissions.

    It initially took 7.6ms to send the complete 16Kb block.

    By increasing the TCP tick frequency, we could achieve the same transfer in 4.2ms.

    Very acceptable.

  • Please tell me :
    What is TCP tick?
    How can I increase the TCP tick frequency without RL?

  • The TCP tick is the name given to the TCP internal maintenance call.

    In the Keil TCP implementation, it is called by

    timer_tick();
    

    So you must call it more frequently.

  • I set in program:
    1. wait max. 8 x 262ms for an ACK (about 2 sec.)
    2. max. time to wait for an ACK of a FIN before closing TCP state-machine (about 0.5 s).
    What is TCP tick frequency?

  • I DO NOT have Keil RL.I use Keil evaluation kit.
    Is it possible to program Ethernet controller registers
    for MCB2300 (LPC 2378)?

  • "Is it possible to program Ethernet controller registers"

    Of course it is.

    But YOU need to learn what they do and how to configure them.

    Regardless, the delay YOU are seeing is almost certainly not going to be with the way in which the registers have been configured. It is far more likely that YOUR code is not checking the status of the ethernet (and subsequently TCP) reception fast enough.

  • 1.Program EasyWeb include module in which Ethernet controller initialize.This controller is configured using the registers : power, interrupts and so on.
    Nobody work with this program - is that so?

    2. question for Gladys Slavek
    Each TCP packet was 1Kb, so there were 16 transmissions
    You wait acknowledge after each transmissions?