Utility applications ================== ## Introduction ## hicn-ping-server, hicn-ping-client and hiperf are three utility applications that use hicn stack. ## Using hICN Utils applications ## ### Platforms ### The hICN application Examples have been tested in: - Ubuntu 16.04 (x86_64) - Debian Testing - MacOSX 10.12 Other platforms and architectures may work. ### Dependencies ### Build dependencies: - c++14 ( clang++ / g++ ) - CMake 3.4 Basic dependencies: - OpenSSL - pthreads - Libevent - Libparc ## Executables ## The utility applications are a set of binary executables that are used to run a clinet/server ping applications (hicn-ping-server and hicn-ping-client) and a hicn implementation of hicn (hiperf). ### hicn-ping-server ### The command `hicn-ping-server` runs the server side ping application. hicn-ping-server can be executed with the following options: ``` usage: hicn-ping-server [options] Options: -s = object content size (default 1350B) -n = hicn name (default b001::/64) -f = set tcp flags according to the flag received (default false) -l = data lifetime -r = always reply with a reset flag (default false) -t = set ttl (default 64) -V = verbose, prints statistics about the messagges sent and received (default false) -D = dump, dumps sent and received packets (default false) -q = quite, not prints (default false) -d = daemon mode -H = help ``` ### hicn-ping-client ### The command `hicn-ping-client` runs the client side ping application. hicn-ping-client can be executed with the following options: ``` usage: hicn-ping-client [options] Options: -i = ping interval in microseconds (default 1000000ms) -m = maximum number of pings to send (default 10) -s = source port (default 9695) -d = destination port (default 8080) -t = set packet ttl (default 64) -O = open tcp connection (three way handshake) (default false) -S = send always syn messages (default false) -A = send always ack messages (default false) -n = hicn name (default b001::1) -l = interest lifetime in milliseconds (default 500ms) -V = verbose, prints statistics about the messagges sent and received (default false) -D = dump, dumps sent and received packets (default false) -q = quiet, not prints (default false) -H = help ``` ### hiperf ### The command `hiperf` is a tool for performing network throughput measurements with hicn. It can be executed as server or client using the following options: ``` usage: hiperf [-S|-C] [options] [prefix|name] Options: -D = run as a daemon -R = run RTC protocol (client or server) -f = output log file path Server specific: -A = size of the content to publish. This is not the size of the packet (see -s for it) -s = size of the payload of each data packet -r = produce real content of content_size bytes -m = produce transport manifest -l = start producing content upon the reception of the first interest -k = path of p12 file containing the crypto material used for signing the packets -y = use the selected hash algorithm for calculating manifest digests -p = password for p12 keystore -x = produce a content of , then after downloading it produce a new content of without resetting the suffix to 0 -B = bitrate for RTC producer, to be used with the -R option Client specific: -b = RAAQM beta parameter -d = RAAQM drop factor parameter -M = store the content downloaded (default false) -W = use a fixed congestion window for retrieving the data -c = path of the producer certificate to be used for verifying the origin of the packets received -i = show the statistics every milliseconds -v = Enable verification of received data ``` ## License ## This software is distributed under the following license: ``` Copyright (c) 2017-2019 Cisco and/or its affiliates. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ```