Testing a software bridge application using virtualization - networking

Good evening,
I am stuck at a certain point of development.. As a part of a Routing/Switching course, we have to program a two port software switch/bridge.. But the main problem for me is testing it.. I dont have multiple network cards in my laptop, and i have only one computer. i need to simulate a topology like this:
However, i dont know how to do it.. i have a Windows XP installed as two Virtualbox machines.. But i dont know how to set it up to make it work.. Neither network option was sufficient(NAT, bridge, host only...)
Can you please help me?
I thank you in advance for all your advice.
Robert

Why don't you split your single network port to multiple subinterfaces like eth0:1 eth0:2 etc. You can run your switching program on these subinterfaces. You can work on the subinterfaces the same way you work with regular interfaces, though these subinterfaces are bydefault attached to the parent interface.

Related

Basic network simulation with VirtualBox Images

to test a project I'm developing for my bachelor thesis I need a basic network setup (a few subnets, routers...). I've tried to create a virtual network with the VirtualBox Images I have to use but I'm struggling quite a bit here since the beginning of the week. Do you have any recommendations for a network virtualization/simulation software that allows using custom VirtualBox Images for the hosts and is easy to use? I looked into GNS3, Emulab and others but I'm not quite sure which software is the best one to use here. Sorry if it seems I did not invest much time but the actual practical testing of my project is just a small part. It would even suffice to have two subnets with one router in between although scalability would be neat.
Thanks in advance.
basic network setup (a few sub nets, routers...)
for this propose you can simply use Cisco Packet Tracer for test network setup or education proposes, you can check the website for more information.
using custom VirtualBox Images
Cisco Packet Tracer network gives you network adapter config and shell command and basic networking tools on your hosts to test your network but if you need your custom OS images to be hosted in the network virtualization/simulation software you better look at this article that
How to emulate a network using VirtualBox.

Getting started with line-rate virtual machine

I am beginning to study the use of virtual machines with realtime applications, specifically network applications.
While I do understand the limitations and concerns, I'd like to get ideas as to how to get started on this task.
I am going to use a DPDK sample application over Linux, and probably use VMWare for starters. However, I do not know what my first steps with respect to setting up VMWare should be.
First I think it is better to use open source solution like QUEM/KVM for your virtualization platform. Many platform exist for run high performance network functions on virtualized platforms you can see OpenNetVM for example in order to get basic ideas.

How to test/reproduce bad network behavior?

On Windows, I've used NEWT in the past, but it's difficult to use, not current (but I can find old copies on non-MS sites), and difficult though possible to degrade just the app's view of the network without messing up everything else on the machine like the VPN connection and NAS volumes.
On Mac, the Network Link Conditioner that is available with Xcode is far too limited and in particular doesn't model bursts, which is my current immediate interest.
I'm also interested in Windows programs running in a VMware VM, and that's already going through an emulated network connector. I wonder if that can be made to do the traffic shaping?
In summary, can someone suggest a tool that I ought to be using for this?
I guess http://henrydu.com/blog/how-to/simulate-a-slow-link-by-linux-bridge-123.html should work on your mac. It uses traffic control with ifconfig, something you might want to google for.

How to ping a remote machine with Qt

I am developping a cross-platform (Windows-Mac-Unix) application using Qt.
This is my first time using this framework so I am discovering it.
I need to ping a distant machine based on its IP address and I can't find a way to perform this task with the Qt framework, though it seems pretty basic...
I've found examples on the web but they use OS-dependant methods, which is precisely what I want to avoid since I have to run on different environments. Isn't there a simple ping command in the Qt framework? And how to use it?
Any help would be much appreciated, thank you in advance.
To my knowledge there is no direct way to ping another system in QT since it requires some superuser privileges in different Operating Systems. So the best way would be to try and establish a connection (preferably TCP) between the two machines.

Hardware/Software inventory open source projects

I would like to develop a Network Inventory application that works on any operating system.
Reports on every possible resource attacehd to a network.
Reports all pertinent details of hardware and software.
Thats (and i hate to use the phrase) my "End Game".
However I am running before i can crawl here.
I have no experience of this type of development, e.g. discovering a computers hardware and software settings.
I've spent almost two weeks googling and come up short! :-(.
So I am turning to you to ask these questions:-
My first step is to find an existing open source project i can incorporate into my own code that extracts the fine grained details i am after, e.g. EVERYTHING there is to know about the hardaware and software on a single machine.
Does this project exist? or do i have to develop that first?
Have i got to write all this in C?
I am guessing getting this information about a computer is going to be easier than for printers, scanners, routers etc... e.g. everything else you would find attached to a network.
Once i have access to a single computers details i then need to investigate how i can traverse an entire newtork of printers, scanners, routers, load balancers, switches, firewalls, workstations, servers, storeage devices, laptops, monitors, the list goes on and on
One problem i have is i dont have a 1000 machine newtork to play on!
Is there any such resource available on theinternet? (is that a silly question?)
Anywho, if you dont ask you wont find out!
One aspect iam really looking forward to finding out how to travers the entire network,
should i be using TCP/IP for this?
Whats a good site, blog, usergorup, book for TCP/IP development?
How do i go about getting through firewalls?
How many questions can i ask in one go? :-)
My previous question on this topic ended up with PYTHON being championed as the language/script to go with to develop this application in.
Having looked at a few PYTHON examples they all seemed to be related to WINDOWS networks
and interrogating Windows Management Instrumentation (WMI). I had the feeling you cant rely on whats in WMI, and even if you can that s no good for UNIX netwrks.
Surely there exist common code for extracting hardware and software details from a computer? Why cant i find it on the internet?
Pease help?
Theres no prizes though :-(
Thanks in advance
I would like to appologise if i have broken forum rules or not tried hard enough on my own before asking for assistance.
I just would like to start moving forward with this as its one of the best projects i have been involved with.
I am inspired by the many differnt number of challenges involved and that if i manage to produce a useful application at the end of it it would hopefully be extremely helpful to many people.
That sit
Thanks in advance
DD
as a software vendor of a discovery solution, I can just say: Respect, that you want to start a new one :-). Just in case you are interested in what it could look like: http://www.jdisc.com
Now to some of our experience:
Programming Language:
I wouldn't write it in C. Use Java or .NET. Those languages have great advantages when it comes to tracking down errors or problems. For instance, in Java (and I guess also in .NET), you can see the stack trace when something is failing. For some pieces of code (e.g. WMI access), you might need to use C++ or C (e.g. access to native APIs from Microsoft). Use a native interface or a COM bridge from Java. In .NET, it should even be easier to access the Windows APIs).
Devices:
well, network printers, router, and switches are actually easier to discover. They usually expose their information via SNMP. SNMP is pretty easy to use and pretty robust. Getting information from Windows (or even Unix) systems is a bit trickier. Protocols can be blocked, misconfigured, messed up... We had cases, where WMI was simply hanging when requesting data from a remote device.
Test Devices:
Since we are also a smaller company, we also do not have 1000 different devices to test with. But, there are some things that might help:
a) For SNMP devices use a SNMP simulator. We use MIMIC 9.0 from Gambit Solutions and we are pretty happy with it. You can import SNMP walks from network devices and simulate the device as if it would be in your network.
b) Secondly, use virtualization whenever possible. With VMware, you can install Windows, Linux, or even Solaris. We also use a project called GNS3 to emulate Cisco Routers, Firewalls or Juniper routers.
c)You can test the rest of the devices only, if you have a customer that helps you with testing and implementing new devices.
This are just some ideas to start with. But I have to tell you, that it is not trivial and it takes a lot of time....
Hope that you got some ideas to start with...
I don't know that it's open source, but we use Spiceworks (http://www.spiceworks.com) here as an IT management platform. You may get some use out of exploring that.

Resources