From 7bc08bcb30553374b96b1830b4bd012b36a25d5e Mon Sep 17 00:00:00 2001 From: sthen Date: Fri, 8 Jul 2011 09:31:06 +0000 Subject: [PATCH] import ports/net/owamp, ok benoit@ OWAMP is a command line client application and a policy daemon used to determine one way latencies between hosts. It is an implementation of the OWAMP protocol as defined by RFC4656. With roundtrip-based measurements, it is hard to isolate the direction in which congestion is experienced. One-way measurements solve this problem and make the direction of congestion immediately apparent. Since traffic can be asymmetric at many sites that are primarily producers or consumers of data, this allows for more informative measurements. One-way measurements allow the user to better isolate the effects of specific parts of a network on the treatment of traffic. --- net/owamp/Makefile | 29 ++++++ net/owamp/distinfo | 5 + net/owamp/patches/patch-conf_owampd_conf | 39 ++++++++ net/owamp/patches/patch-owamp_endpoint_c | 112 +++++++++++++++++++++++ net/owamp/patches/patch-owamp_owamp_h | 37 ++++++++ net/owamp/pkg/DESCR | 12 +++ net/owamp/pkg/PLIST | 57 ++++++++++++ net/owamp/pkg/owampd.rc | 16 ++++ 8 files changed, 307 insertions(+) create mode 100644 net/owamp/Makefile create mode 100644 net/owamp/distinfo create mode 100644 net/owamp/patches/patch-conf_owampd_conf create mode 100644 net/owamp/patches/patch-owamp_endpoint_c create mode 100644 net/owamp/patches/patch-owamp_owamp_h create mode 100644 net/owamp/pkg/DESCR create mode 100644 net/owamp/pkg/PLIST create mode 100644 net/owamp/pkg/owampd.rc diff --git a/net/owamp/Makefile b/net/owamp/Makefile new file mode 100644 index 00000000000..e6567cde492 --- /dev/null +++ b/net/owamp/Makefile @@ -0,0 +1,29 @@ +# $OpenBSD: Makefile,v 1.1.1.1 2011/07/08 09:31:06 sthen Exp $ + +COMMENT = rfc4656 one-way active measurement protocol + +DISTNAME = owamp-3.1 + +CATEGORIES = net + +HOMEPAGE = http://www.internet2.edu/performance/owamp/ + +# Custom, see LICENSE. +# Looks like BSD at first but note last paragraph. +PERMIT_PACKAGE_CDROM = Yes +PERMIT_PACKAGE_FTP = Yes +PERMIT_DISTFILES_CDROM =Yes +PERMIT_DISTFILES_FTP = Yes + +WANTLIB += c m + +MASTER_SITES = http://software.internet2.edu/sources/owamp/ + +CONFIGURE_STYLE = gnu + +post-install: + ${INSTALL_DATA_DIR} ${PREFIX}/share/examples/owampd + ${INSTALL_DATA} ${WRKSRC}/conf/owampd.conf \ + ${WRKSRC}/conf/owampd.limits ${PREFIX}/share/examples/owampd + +.include diff --git a/net/owamp/distinfo b/net/owamp/distinfo new file mode 100644 index 00000000000..c9c1904f5db --- /dev/null +++ b/net/owamp/distinfo @@ -0,0 +1,5 @@ +MD5 (owamp-3.1.tar.gz) = fpx1sxAspI3yzX4N533nWQ== +RMD160 (owamp-3.1.tar.gz) = layCp6RGvAV8jREQdva2Wli9xBk= +SHA1 (owamp-3.1.tar.gz) = N/XAr08NUdEXxFnJ13j9xIVcgN8= +SHA256 (owamp-3.1.tar.gz) = 2biV9FO5apQUdDZ+gGm/wgl+9C/CB6CrtUi88jpzCgE= +SIZE (owamp-3.1.tar.gz) = 820123 diff --git a/net/owamp/patches/patch-conf_owampd_conf b/net/owamp/patches/patch-conf_owampd_conf new file mode 100644 index 00000000000..37209f1976c --- /dev/null +++ b/net/owamp/patches/patch-conf_owampd_conf @@ -0,0 +1,39 @@ +$OpenBSD: patch-conf_owampd_conf,v 1.1.1.1 2011/07/08 09:31:06 sthen Exp $ +--- conf/owampd.conf.orig Fri Mar 7 23:13:35 2008 ++++ conf/owampd.conf Fri Mar 7 23:16:27 2008 +@@ -21,8 +21,8 @@ + + # run as group/user - only used if effective uid is root. + # (defaults to nil) +-user owamp +-group owamp ++user _owampd ++group _owampd + + # not really used, but what the heck. + # (defaults to !verbose) +@@ -30,7 +30,7 @@ verbose + + # where should syslog messages go? + # (defaults to daemon) +-facility local5 ++#facility local5 + + # include src file:line in log messages + # keep this on, and help us with more specific bug reports! +@@ -39,13 +39,13 @@ loglocation + + # location for owampd.pid and owampd.info files + # (defaults to $cwd) +-#vardir /var/run ++vardir /var/run/owampd + + # location for "recv" session files. + # The "catalog" subdirectory is completely cleaned and recreated each time + # owampd is restarted. DONT PUT ANYTHING IN THERE! + # (defaults to $cwd) +-#datadir /big/enough ++datadir /var/db/owampd + + # authmode - uncomment to make only Open. + # (defaults to OAE) diff --git a/net/owamp/patches/patch-owamp_endpoint_c b/net/owamp/patches/patch-owamp_endpoint_c new file mode 100644 index 00000000000..88954dcf462 --- /dev/null +++ b/net/owamp/patches/patch-owamp_endpoint_c @@ -0,0 +1,112 @@ +$OpenBSD: patch-owamp_endpoint_c,v 1.1.1.1 2011/07/08 09:31:06 sthen Exp $ + +remove conflict with sys/time.h macros + +--- owamp/endpoint.c.orig Fri Jan 23 17:52:04 2009 ++++ owamp/endpoint.c Tue Apr 21 18:03:37 2009 +@@ -1320,7 +1320,7 @@ run_sender( + OWPScheduleContextGenerateNextDelta( + ep->tsession->sctx)); + OWPNum64ToTimespec(&nexttime,nextoffset); +- timespecadd(&nexttime,&ep->start); ++ mytimespecadd(&nexttime,&ep->start); + *seq = htonl(i); + + /* +@@ -1371,7 +1371,7 @@ AGAIN: + * send time, then skip actually sending. + */ + latetime = timeout; +- timespecadd(&latetime,&nexttime); ++ mytimespecadd(&latetime,&nexttime); + if(timespeccmp(&currtime,&latetime,>)){ + skip(ep,i); + goto SKIP_SEND; +@@ -1469,7 +1469,7 @@ SKIP_SEND: + */ + + sleeptime = nexttime; +- timespecsub(&sleeptime,&currtime); ++ mytimespecsub(&sleeptime,&currtime); + if((nanosleep(&sleeptime,NULL) == 0) || (errno == EINTR)){ + goto AGAIN; + } +@@ -1492,8 +1492,8 @@ SKIP_SEND: + ep->tsession->test_spec.loss_timeout)+1; + #endif + latetime = timeout; +- timespecadd(&latetime,&nexttime); +- timespecadd(&latetime,&ep->enddelay); ++ mytimespecadd(&latetime,&nexttime); ++ mytimespecadd(&latetime,&ep->enddelay); + + while(!owp_usr2 && !owp_int){ + if(!_OWPGetTimespec(ep->cntrl->ctx,&currtime,&esterror,&sync)){ +@@ -1506,7 +1506,7 @@ SKIP_SEND: + break; + + sleeptime = latetime; +- timespecsub(&sleeptime,&currtime); ++ mytimespecsub(&sleeptime,&currtime); + #if NOT + OWPError(ep->cntrl->ctx,OWPErrFATAL,OWPErrUNKNOWN, + "run_sender: end nanosleep(%lu.%lu,nil)", +@@ -1885,8 +1885,8 @@ flush_lost( + * in the missing packet queue should be declared lost. + */ + timespecclear(&expectspec); +- timespecadd(&expectspec,&ep->begin->absolute); +- timespecadd(&expectspec,&lostspec); ++ mytimespecadd(&expectspec,&ep->begin->absolute); ++ mytimespecadd(&expectspec,&lostspec); + + /* + * If owp_usr2, then StopSessions has been received. We +@@ -1905,8 +1905,8 @@ flush_lost( + */ + if(owp_usr2){ + timespecclear(&currtime); +- timespecadd(&currtime,&expectspec); +- timespecadd(&currtime,&lostspec); ++ mytimespecadd(&currtime,&expectspec); ++ mytimespecadd(&currtime,&lostspec); + } + + /* +@@ -1977,16 +1977,16 @@ flush_lost( + free_node(ep,node); + + timespecclear(&expectspec); +- timespecadd(&expectspec,&ep->begin->absolute); +- timespecadd(&expectspec,&lostspec); ++ mytimespecadd(&expectspec,&ep->begin->absolute); ++ mytimespecadd(&expectspec,&lostspec); + + /* + * StopSessions received: fast-forward currtime + */ + if(owp_usr2){ + timespecclear(&currtime); +- timespecadd(&currtime,&expectspec); +- timespecadd(&currtime,&lostspec); ++ mytimespecadd(&currtime,&expectspec); ++ mytimespecadd(&currtime,&lostspec); + } + } + +@@ -2181,11 +2181,11 @@ again: + * and not the timer.) + */ + tvalclear(&wake.it_value); +- timespecadd((struct timespec*)&wake.it_value, ++ mytimespecadd((struct timespec*)&wake.it_value, + &ep->end->absolute); +- timespecadd((struct timespec*)&wake.it_value,&lostspec); +- timespecadd((struct timespec*)&wake.it_value,&fudgespec); +- timespecsub((struct timespec*)&wake.it_value,&currtime); ++ mytimespecadd((struct timespec*)&wake.it_value,&lostspec); ++ mytimespecadd((struct timespec*)&wake.it_value,&fudgespec); ++ mytimespecsub((struct timespec*)&wake.it_value,&currtime); + + wake.it_value.tv_usec /= 1000; /* convert nsec to usec */ + tvalclear(&wake.it_interval); diff --git a/net/owamp/patches/patch-owamp_owamp_h b/net/owamp/patches/patch-owamp_owamp_h new file mode 100644 index 00000000000..1bb6d57e6cb --- /dev/null +++ b/net/owamp/patches/patch-owamp_owamp_h @@ -0,0 +1,37 @@ +$OpenBSD: patch-owamp_owamp_h,v 1.1.1.1 2011/07/08 09:31:06 sthen Exp $ + +remove conflict with sys/time.h macros + +--- owamp/owamp.h.orig Fri Jan 23 17:52:04 2009 ++++ owamp/owamp.h Tue Apr 21 18:03:37 2009 +@@ -1627,8 +1627,8 @@ OWPTestDiskspace( + ((tvp)->tv_sec cmp (uvp)->tv_sec)) + #endif + +-#ifndef timespecadd +-#define timespecadd(vvp, uvp) \ ++#ifndef mytimespecadd ++#define mytimespecadd(vvp, uvp) \ + do { \ + (vvp)->tv_sec += (uvp)->tv_sec; \ + (vvp)->tv_nsec += (uvp)->tv_nsec; \ +@@ -1639,8 +1639,8 @@ OWPTestDiskspace( + } while (0) + #endif + +-#ifndef timespecsub +-#define timespecsub(vvp, uvp) \ ++#ifndef mytimespecsub ++#define mytimespecsub(vvp, uvp) \ + do { \ + (vvp)->tv_sec -= (uvp)->tv_sec; \ + (vvp)->tv_nsec -= (uvp)->tv_nsec; \ +@@ -1662,7 +1662,7 @@ OWPTestDiskspace( + ts1_ = *uvp; \ + ts2_ = *vvp; \ + } \ +- timespecsub(&ts1_,&ts2_); \ ++ mytimespecsub(&ts1_,&ts2_); \ + *vvp = ts1_; \ + } while(0) + #endif diff --git a/net/owamp/pkg/DESCR b/net/owamp/pkg/DESCR new file mode 100644 index 00000000000..c1d4fede390 --- /dev/null +++ b/net/owamp/pkg/DESCR @@ -0,0 +1,12 @@ +OWAMP is a command line client application and a policy daemon used +to determine one way latencies between hosts. It is an implementation +of the OWAMP protocol as defined by RFC4656. + +With roundtrip-based measurements, it is hard to isolate the direction +in which congestion is experienced. One-way measurements solve this +problem and make the direction of congestion immediately apparent. +Since traffic can be asymmetric at many sites that are primarily +producers or consumers of data, this allows for more informative +measurements. One-way measurements allow the user to better isolate +the effects of specific parts of a network on the treatment of +traffic. diff --git a/net/owamp/pkg/PLIST b/net/owamp/pkg/PLIST new file mode 100644 index 00000000000..12d0cf11208 --- /dev/null +++ b/net/owamp/pkg/PLIST @@ -0,0 +1,57 @@ +@comment $OpenBSD: PLIST,v 1.1.1.1 2011/07/08 09:31:06 sthen Exp $ +@newgroup _owampd:678 +@newuser _owampd:678:_owampd:daemon:owampd user:/nonexistent:/sbin/nologin +@bin bin/aespasswd +@bin bin/owampd +bin/owfetch +@bin bin/owping +bin/owstats +@bin bin/owtvec +bin/owup +@bin bin/pfstore +@bin bin/powstream +include/I2util/ +include/I2util/Pthread.h +include/I2util/addr.h +include/I2util/conf.h +include/I2util/errlog.h +include/I2util/errlogimmediate.h +include/I2util/errlogsyslog.h +include/I2util/hex.h +include/I2util/hmac-sha1.h +include/I2util/io.h +include/I2util/mach_dep.h +include/I2util/md5.h +include/I2util/pbkdf2.h +include/I2util/random.h +include/I2util/readpassphrase.h +include/I2util/saddr.h +include/I2util/sha1.h +include/I2util/sha1P.h +include/I2util/table.h +include/I2util/util.h +lib/libI2util.a +lib/libowamp.a +@man man/man1/aespasswd.1 +@man man/man1/owfetch.1 +@man man/man1/owping.1 +@man man/man1/owstats.1 +@man man/man1/owup.1 +@man man/man1/pfstore.1 +@man man/man1/powstream.1 +@man man/man5/owampd.conf.5 +@man man/man5/owampd.limits.5 +@man man/man5/owampd.pfs.5 +@man man/man8/owampd.8 +@owner _owampd +@group _owampd +@sample /var/db/owampd/ +@owner +@group +share/examples/owampd/ +@sample ${SYSCONFDIR}/owampd/ +share/examples/owampd/owampd.conf +@sample ${SYSCONFDIR}/owampd/owampd.conf +share/examples/owampd/owampd.limits +@sample ${SYSCONFDIR}/owampd/owampd.limits +@rcscript ${RCDIR}/owampd diff --git a/net/owamp/pkg/owampd.rc b/net/owamp/pkg/owampd.rc new file mode 100644 index 00000000000..ac30886ab34 --- /dev/null +++ b/net/owamp/pkg/owampd.rc @@ -0,0 +1,16 @@ +#!/bin/sh +# +# $OpenBSD: owampd.rc,v 1.1.1.1 2011/07/08 09:31:06 sthen Exp $ + +daemon="${TRUEPREFIX}/bin/owampd" +daemon_flags="-c ${SYSCONFDIR}/owampd -d /var/db/owampd -U _owampd -G _owampd -R /var/run" + +. /etc/rc.d/rc.subr + +rc_reload=NO + +rc_pre() { + install -d -o _owampd /var/run/owampd +} + +rc_cmd $1