perfsonar / owamp

A tool for performing one-way or two-way active measurements
Apache License 2.0
73 stars 31 forks source link

Minimal owampd server configuration #76

Closed novakboskov closed 2 years ago

novakboskov commented 2 years ago

A newbie here. :)

I have two LXC containers and want to run owping between them. One must run owampd. I'm trying to find the minimal configuration that will allow me to try owping.

In the installation, I found installation/root/config/owampd.conf and copied it over to installation/root/etc/owampd-server.conf. Then I tried:

$ owampd -c installation/root/etc -U me -G me

I only get this warning:

owampd[5481]: FILE=policy.c, LINE=696, WARNING: No limits specified.

But it actually seems fatal. An owamp-server.pid is created but the process seems to exit immediately after it prints the warning.

Where can I find the minimal config file from which to start?

mfeit-internet2 commented 2 years ago

The daemon forks and detaches:

[root@owamp tmp]# owampd -U nobody -G nobody -R /tmp -c /tmp
owampd[478]: WARNING: No limits specified.

[root@owamp tmp]# ps -ef | fgrep $(cat /tmp/owamp-server.pid)
nobody       479       1  0 13:24 ?        00:00:00 owampd -U nobody -G nobody -R /tmp -c /tmp
root         481     160  0 13:24 pts/0    00:00:00 grep -F --color=auto 479
novakboskov commented 2 years ago

@mfeit-internet2 What version do you use? Because Version: 4.4.4-1 doesn't seem to work without configuration files.

$ owampd -U nobody -G nobody -R /tmp -c /tmp
Unable to open /tmp/owamp-server.conf: No such file or directory

If I use the owamp-server.conf from installation/root/config/owampd.conf, the forked process dies immediately after it is forked (as I described above):

$ owampd -U nobody -G nobody -R /tmp -c /tmp
owampd[698]: FILE=policy.c, LINE=696, WARNING: No limits specified.
$ ps -ef | fgrep $(cat /tmp/owamp-server.pid)
me  701   587  0 17:14 ?        00:00:00 grep -F --color=auto 699
mfeit-internet2 commented 2 years ago

The example was in a fresh CentOS 7 container with the latest from the perfSONAR repository, which would be 4.4.4. Owampd hasn't changed much in the last 5-7 years.

Are you starting owampd as root so it can bind to the (privileged) control port?

novakboskov commented 2 years ago

You're right. When I run it as root the forked process successfully runs (btw, does it write its stderr somewhere for me to interpret why it failed when it fails?)

However, it still does require a config file in /tmp (or whatever -c) that I copied from installation/root/config/owampd.conf.

Although the server is running, the client still cannot connect to it with the following error:

$ owping SERVER_IP
owping: _OWPReadAcceptSession:Unable to read from socket.
owping: Session Failed!

Importantly, ping SERVER_IP does work as expected. owping localhost (as suggested in the "OWAMP Cookbook") fails as well.

  1. How do I find on which port owampd listens? I see the default is 861 but owping SERVER_IP:861 also fails with the same error. My ss -lptn 'sport = :861' says that something is listening on 861, but doesn't say what (lsof does not help either).
  2. Is it perhaps important to use the user nobody?
  3. Does my client perhaps need some configuration too?
mfeit-internet2 commented 2 years ago

Sorry, this got buried.

You'd need to have a look at the network and firewall configuration on your system. Running strace on the failing owping might bear some useful fruit, too.

The owamp family of tools isn't very good about writing the specific error to the console. I've opened #77 to improve that.

This is bone-stock CentOS 7 with irrelevant text removed for clarity:

[root@owamp tmp]# yum -y install epel-release
[root@owamp tmp]# yum -y install http://software.internet2.edu/rpms/el7/x86_64/latest/packages/perfSONAR-repo-0.10-1.noarch.rpm
[root@owamp tmp]# yum -y install owamp-server owamp-client

[root@owamp tmp]# touch owamp-server.conf
[root@owamp tmp]# owampd -U nobody -G nobody -R /tmp -c /tmp
owampd[357]: WARNING: No limits specified.

[root@owamp tmp]# lsof -p $(cat owamp-server.pid)
COMMAND PID   USER   FD   TYPE  DEVICE SIZE/OFF     NODE NAME
...
owampd  358 nobody    6u  IPv6 2983856      0t0      TCP *:owamp-control (LISTEN)

[root@owamp tmp]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:4d:77:d3 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global noprefixroute dynamic eth0
       valid_lft 86127sec preferred_lft 86127sec
    inet6 fe80::5054:ff:fe4d:77d3/64 scope link
       valid_lft forever preferred_lft forever

[root@owamp tmp]# owping 127.0.0.1
Approximately 12.7 seconds until results available

[root@owamp tmp]# owping ::1
Approximately 12.9 seconds until results available

[root@owamp tmp]# owping 10.0.2.15
Approximately 12.9 seconds until results available