aboutsummaryrefslogtreecommitdiffstats
path: root/utils/README.md
blob: 73525c6c25267b378a227c508b5978538db246ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
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 <content_size>           = object content size (default 1350B)
-n <hicn_name>              = hicn name (default b001::/64)
-f                          = set tcp flags according to the flag received (default false)
-l <lifetime>               = data lifetime
-r                          = always reply with a reset flag (default false)
-t <ttl>                    = 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>          = ping interval in microseconds (default 1000000ms)
-m <max_pings>              = maximum number of pings to send (default 10)
-s <source_port>            = source port (default 9695)
-d <destination_port>       = destination port (default 8080)
-t <ttl>                    = 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>              = hicn name (default b001::1)
-l <lifetime>               = 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 <ouptup_log_file>        = output log file path

Server specific:
-A <download_size>          = size of the content to publish. This is not the size of the packet (see -s for it)
-s <payload_size>           = 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 <keystore_path>          = path of p12 file containing the crypto material used for signing the packets
-y <hash_algorithm>         = use the selected hash algorithm for calculating manifest digests
-p <password>               = password for p12 keystore
-x                          = produce a content of <download_size>, then after downloading it produce a new content of
					          <download_size> without resetting the suffix to 0
-B	<bitrate>			    = bitrate for RTC producer, to be used with the -R option

Client specific:
-b <beta_parameter>         = RAAQM beta parameter
-d <drop_factor_parameter>  = RAAQM drop factor parameter
-M                          = store the content downloaded (default false)
-W <window_size>            = use a fixed congestion window for retrieving the data
-c <certificate_path>       = path of the producer certificate to be used for verifying the origin of the packets received
-i <stats_interval>         = show the statistics every <stats_interval> 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.
```