---
name: "sc_ally"
section: "1"
platform: "linux"
package: "scamper"
version: "20211212-1.2+b1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/sc_ally"
---

# sc\_ally(1)

scamper driver to run Ally on a list of candidate aliases.

## NAME

**sc\_ally** – scamper driver to run Ally on a list of candidate aliases.

## SYNOPSIS

**sc\_ally** \[**-?D**\] \[**-a** *infile*\] \[**-o** *outfile*\] \[**-p** *port*\] \[**-U** *unix-socket*\] \[**-f** *fudge*\] \[**-i** *probe-wait*\] \[**-O** *options*\] \[**-q** *attempts*\] \[**-t** *logfile*\] \[**-w** *waittime*\]

**sc\_ally** \[**-d** *dump-id*\] \[**-O** *options*\] \[*file ...*\]

## DESCRIPTION

The **sc\_ally** utility provides the ability to connect to a running [scamper(1)](/scamper/1.md) instance and have a set of IPv4 address sets tested for aliases using the Ally technique. For each address pair on a single line in the file, **sc\_ally** establishes which probe methods (UDP, TCP-ack, ICMP-echo) solicit an incrementing IP-ID value, and then uses the Ally technique on pairs where a probe method is able to obtain an incrementing IP-ID for both addresses. **sc\_ally** can also infer which IP addresses are aliases using the Mercator common source address technique as a byproduct of the UDP probing that **sc\_ally** does. The output of **sc\_ally** is written to a warts(5) file, which can then be processed to extract aliases. The options are as follows:

- **-**?

  prints a list of command line options and a synopsis of each.

- **-D**

  causes **sc\_ally** to detach and become a daemon.

- **-a** *infile*

  specifies the name of the input file which consists of a sequence of IPv4 addresses, one candidate set per line.

- **-o** *outfile*

  specifies the name of the output file to be written. The output file will use the warts format.

- **-p** *port*

  specifies the port on the local host where [scamper(1)](/scamper/1.md) is accepting control socket connections.

- **-U** *unix-socket*

  specifies the name of a unix domain socket where [scamper(1)](/scamper/1.md) is accepting control socket connections.

- **-d** *dump-id*

  specifies the number identifying an analysis to conduct. The current choices for are 1-3, and are:

  - **1:** dump aliases inferred using the Ally (IPID-based) technique.

  - **2:** dump aliases inferred using the Mercator (common source address based) technique.

  - **3:** dump aliases inferred using both Ally and Mercator techniques.

- **-f** *fudge*

  specifies the fudge factor to use when (1) inferring if IPIDs are assigned from a counter, and (2) inferring if two addresses share the same counter. A value of zero will cause ally to infer aliases if the IPIDs are in a monotonic sequence.

- **-i** *probe-wait*

  specifies the inter-probe gap for both ping and Ally measurements, in milliseconds.  The default is 1000ms (1 second); the minimum is 200ms, and the maximum is 2000ms.

- **-O** *options*

  allows the behavior of **sc\_ally** to be further tailored. The current choices for this option are:

  - **nobs:** do not consider byte swapped IPID values when inferring if IPID values are assigned from a counter.

  - **tc:** dump transitive closure when reporting aliases.

- **-q** *attempts*

  specifies the number of probes to use with Ally.

- **-t** *logfile*

  specifies the name of a file to log output from **sc\_ally** generated at run time.

- **-w** *waittime*

  specifies the minimum length of time, in seconds, to wait between completing a measurement to a particular IP address and issuing the next.

## EXAMPLES

Given a set of IPv4-address sets in a file named infile.txt:

```
192.0.2.1 192.0.32.10 192.0.31.60
192.0.2.2 192.0.31.8
192.0.2.3 192.0.30.64
```

and a [scamper(1)](/scamper/1.md) daemon listening on port 31337, then these addresses can be tested for aliases using

sc\_ally -a infile.txt -o outfile.warts -p 31337

To obtain a list of inferred alias pairs using the Ally technique from a warts(5) file:

sc\_ally -d 1 outfile.warts

To obtain a list of inferred routers using a transitive closure of alias pairs inferred using the Ally and Mercator techniques:

sc\_ally -d 3 -O tc outfile.warts

## SEE ALSO

[scamper(1)](/scamper/1.md), [sc\_radargun(1)](/sc_radargun/1.md), [sc\_wartsdump(1)](/sc_wartsdump/1.md), [sc\_warts2text(1)](/sc_warts2text/1.md), N. Spring, R. Mahajan, and D. Wetherall, *Measuring ISP topologies with Rocketfuel*, Proc. ACM SIGCOMM 2002. R. Govindan and H. Tangmunarunkit, *Heuristics for Internet Map Discovery*, Proc. IEEE INFOCOM 2000. A. Bender, R. Sherwood, and N. Spring, *Fixing Ally's growing pains with velocity modeling*, Proc. ACM/SIGCOMM Internet Measurement Conference 2008.

## AUTHORS

**sc\_ally** was written by Matthew Luckie \<mjl@luckie.org.nz\>.
