Python – Measuring Performance of a Network Simulator

networkingpython

I have written a python program to test a new network routing algorithm, that uses a Content Centric Network Approach for handling requests (CCN), where the CCN router keeps 3 data structures:

  • A PIT or Pending Interest Table, that holds requests for which a router has not yet received a response.
  • A FIB or Forwarding Interest Base, which maps requests to the next router to which the request can be forwarded.
  • A Content store to which the router can cache content from previous requests.

The Simulator is simple:
– It follows the Event-Based design where 'Dummy Packets' are sent from server object to other server objects containing data of what content is being requested and the destination of where the content object is.

Specifically, how could I design my simulator or tests to get a birds eye view of how my new algorithm matches up against standard IP routing?

My hunch is that I will need to test speed, which I believe can be done by timing the round trip time for a request. But I don't know how I would test other aspects of this algorithm.

I have little to no networking experience so any advice or direction is appreciated.

Best Answer

As MichaelT pointed out you need to be clear on metrics that you are trying to measure and the ones that make sense to you. Some common metrics when it comes to measuring network performance are

  1. Throughput.
  2. Latency.
  3. Server and client response time.

In my opinion just measuring RTT is not sufficient to measure performance of routing because the RTT is influenced by lots of external factors like link performance not necessarily routing performance also your RTT for the same link and same router may be different over number of trial. Throughput on the other hand will give you fairly better idea over how your network performs(keeping the network very minimal is the key to get exact routing throughput).

To answer your second part of the question:
Any homegrown system to measure traffic performance will require a bit of an effort and time and may not be able to provide accurate numbers, if you have budget try looking for commercial solutions like Ixia, Spirent or shenick.

If you do not have the budget I cannot think of a single tool that will help you get all the metrics but can integrate different tools to a wholesome system.

I have found pmacct to be very powerful and flexible to account for traffic,It collects different metrics about the data flows,The issue with this is it also includes layer 7 data so your numbers will be a bit skewed on the lower side(routing throughput will be way higher than the actual application throughput).

But if you are not really concerned about publishing the numbers to your customers this will help you get a fairly decent baseline to compare against different routing protocols.

A much simpler solution will be to use bwm-ng which will display the traffic rate on an interface.It gives only throughput data nothing else, at least nothing that I know of.

Generating traffic to push to the limit of the link will be a challenge you will probably need a fairly huge machine(like a Dell 8000 series) to pump around a gig of data.There are lots of open source traffic generation tools like curl-loader, scapy etc.. which will help you generate traffic.

Related Topic