New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

losing/gaining data when routing at different incoming rates #732

Closed
ienorand opened this Issue Mar 8, 2018 · 1 comment

Comments

Projects
None yet
2 participants
@ienorand

ienorand commented Mar 8, 2018

Hello,

I am experimenting with a fairly simple setup where a router "bounces/forwards" incoming data in one interface into another interface, and I'm seeing loss/gain of data when sending data into the bounce interface at higher rates.

The results seem really strange, at some rates (above 100kbyte/s) data is either lost or gained(?!) at the routing stage, with the router not transmitting all of, or more than, the incoming data on the interface.

I'm also seeing similar inconsistencies when removing the "TEST" interface and just listening directly using netcat from the outgoing router port 7201.

Is this an actual issue/limitation in cosmos routing performance, or is this routing setup fundamentally incorrect?


For testing I'm using pv and netcat:
head -c10M /dev/zero | pv -L1M | nc localhost 7200

At 100kbyte/s:
TEST:
Bytes Rx: 10485760
ROUTER_BOUNCE_TEST:
Bytes Rx: 10485760
BOUNCE_ROUTER:
Bytes Tx : 10485760
(as I would expect)

At 1Mbyte/s:
TEST:
Bytes Rx: 12864734
ROUTER_BOUNCE_TEST:
Bytes Rx: 10485760
BOUNCE_ROUTER:
Bytes Tx: 12864734

At 1Mbyte/s again:
TEST:
Bytes Rx: 16239943
ROUTER_BOUNCE_TEST:
Bytes Rx: 10485760
BOUNCE_ROUTER:
Bytes Tx: 16239943

At 10Mbyte/s:
TEST:
Bytes Rx: 6152865
ROUTER_BOUNCE_TEST:
Bytes Rx: 10485760
BOUNCE_ROUTER:
Bytes Tx: 6152865


ROUTER_BOUNCE_TEST/cmd_tlm_server.txt:

# incoming
INTERFACE ROUTER_BOUNCE_INT tcpip_server_interface.rb 7200 7200 nil nil
  DONT_LOG
  TARGET ROUTER_BOUNCE_TEST

# outgoing
ROUTER BOUNCE_ROUTER tcpip_server_interface.rb 7201 7201 nil nil
  ROUTE ROUTER_BOUNCE_INT

ROUTER_BOUNCE_TEST/cmd_tlm/router_bounce_test_tlm.txt:

TELEMETRY ROUTER_BOUNCE_TEST DUMP BIG_ENDIAN "Catch-all telemetry dump"
  HIDDEN

TEST/cmd_tlm_server.txt:

# incoming
INTERFACE TEST_INT tcpip_client_interface.rb localhost 7201 7201 nil nil
  TARGET TEST

TEST/cmd_tlm/test_tlm.txt:

TELEMETRY TEST DUMP BIG_ENDIAN "Catch-all telemetry dump"
@ryanatball

This comment has been minimized.

Member

ryanatball commented Mar 19, 2018

This is a bug in tcpip_server_interface I discovered when implementing DART. It is fixed in a one line change to tcpip_server_interface.rb in this changeset:

afb723a

This will be included in COSMOS 4.2. Due to spring break the current target release for this is the first week of April.

@ryanatball ryanatball closed this Mar 19, 2018

@ryanatball ryanatball added the bug label Apr 11, 2018

@ryanatball ryanatball added this to the v4.2.2 milestone Apr 11, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment