Git Product home page Git Product logo

omping's Introduction

OMPing Banner

The omping tool is a pure UDP client and server wrapped in a small binary. Perfectly suited for verifying multicast connectivity on your local network.

Compared to traditional ping omping does not use ICMP. It is based on RFC draft http://tools.ietf.org/html/draft-ietf-mboned-ssmping-08 and can thus test many different aspects of a setup:

β€œIn addition to checking reception of multicast (SSM or ASM), the protocol can provide related information such as multicast tree setup time, the number of hops the packets have traveled, as well as packet delay and loss.”

Features:

  • Similar user experience as classic ping tool
  • Ping multiple hosts at once
  • Any-source and Source-specific Multicast

Articles

Installation

In RedHat/Fedora

Omping is available as an .rpm package in Fedora. Use yum for installation:

$ yum install omping

In Debian/Ubuntu

Not yet available in Debian or Ubuntu, but a .deb package can be built using the sources (below):

$ make package

There are also unsigned packages available from ftp://troglobit.com for adventurous users.

From Source

Latest releases at https://github.com/troglobit/omping/releases, for older releases, see https://github.com/jfriesse/omping/releases.

For latest git, use

$ git clone https://github.com/troglobit/omping.git
$ cd omping/
$ make

Origin & References

This project was initially developed by Jan Friesse for Red Hat. It was hosted at the now defunct fedorahosted.org, and can now be found on Jan's GitHub: https://github.com/jfriesse/omping

The https://github.com/troglobit/omping/ project is mainly for packaging to Debian/Ubuntu but also has some minor fixes.

omping's People

Contributors

asalkeld avatar jfriesse avatar troglobit avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

omping's Issues

Why is OP_MODE_SERVER disabled?

In cli.c the server mode is marked as temporarily disabled:

		case 'O':
			if (strcmp(optarg, "normal") == 0) {
				instance->op_mode = OMPING_OP_MODE_NORMAL;
			/*
			 * Temporarily disabled
			 *
			} else if (strcmp(optarg, "server") == 0) {
				*op_mode = OMPING_OP_MODE_SERVER;
			*/
			} else if (strcmp(optarg, "client") == 0) {
				instance->op_mode = OMPING_OP_MODE_CLIENT;
			} else {
				warnx("illegal parameter, -O argument -- %s", optarg);
				goto error_usage_exit;
			}
			break;

What's the reason for this?

By manually enabling it in the code:

		case 'O':
			if (strcmp(optarg, "normal") == 0) {
				instance->op_mode = OMPING_OP_MODE_NORMAL;
			} else if (strcmp(optarg, "server") == 0) {
				instance->op_mode = OMPING_OP_MODE_SERVER;
			} else if (strcmp(optarg, "client") == 0) {
				instance->op_mode = OMPING_OP_MODE_CLIENT;
			} else {
				warnx("illegal parameter, -O argument -- %s", optarg);
				goto error_usage_exit;
			}
			break;

This actually seems to work.
I launched omping on one side (server side) in server mode:

# ./omping -p 9999 -O server myip clientip

And on the client side in client mode:

# ./omping -p 9999 -c 10 -O client myip serverip

All worked. Client correctly stopped after 10 counts, server continued to run.

So what's the reason for this being disabled in the code?

And maybe another question: Is this the correct repo to ask this question? I'm kind of confused whether https://github.com/troglobit/omping or https://github.com/jfriesse/omping is the upstream repository for omping.

Use ip:port as client identifier

Currently it's not possible to run an omping server and two clients from same IP. Main problem is, that the client is identified only by IP address and not the traditional IP:PORT tuple.

This means, that rh_list must be changed to a list of server info and a list of clients info. The list of clients info doesn't change much, but list of server info (about clients) must be dynamically expandable. This also means (because of memory reasons) to implement some kind of garbage collector which will free long time unused client info after some period of time (few minutes but should be tunable).

From Trac issue #35, initially targeted at v0.0.5.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.