Short Description
When using "-t tn" and "-i myip" the IP used to send messages is not myip but the IP from the OS (Linux) routing table.
Also filed the same bug on SourceForge: Issue 147. Posted on mailing list as well.
Steps to Reproduce
On the "server" side start netcat
On the "client" side run built-in UAC scenario using -t tn and -i myip
sipp -sn uac -i 10.10.0.5 -t tn -p 5060 -m 1 -r 1 -trace_msg -message_file run.msg -trace_stat -stf run.stat -trace_err -trace_screen -error_file run.err -send_timeout 5000 -recv_timeout 5000 10.10.0.55
On the "server" side you'll see something like this on the output on netcat
Connection from 10.10.0.4 port 5060 [tcp/*] accepted
INVITE sip:service@10.10.0.55:5060 SIP/2.0
Via: SIP/2.0/TCP 10.10.0.5:5060;branch=z9hG4bK-2202-1-0
From: sipp <sip:sipp@10.10.0.5:5060>;tag=2202SIPpTag001
To: service <sip:service@10.10.0.55:5060>
Call-ID: 1-2202@10.10.0.5
CSeq: 1 INVITE
Contact: sip:sipp@10.10.0.5:5060
Max-Forwards: 70
Subject: Performance Test
Content-Type: application/sdp
Content-Length: 129
v=0
o=user1 53655765 2353687637 IN IP4 10.10.0.5
s=-
c=IN IP4 10.10.0.5
t=0 0
m=audio 6000 RTP/AVP 0
a=rtpmap:0 PCMU/8000
Observed Result
If you look at the first line of the nc output it says the connection is from 10.10.0.4 instead of 10.10.0.5 (the IP we provided with the -i flag).
I have also tried -ci flag with the same result.
If I use -t un flag then the first line of output of nc is "Connection from 10.10.0.5 port 5060 [udp/*] accepted".
Expected Result
The IP 10.10.0.5 should be used whether -t is tn or un when making connections.
Client Environment
aikchar@opensuse:~/sipp/run> ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:56:01:c5:95 brd ff:ff:ff:ff:ff:ff
inet 10.145.194.238/18 brd 10.145.255.255 scope global ens32
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fe01:c595/64 scope link
valid_lft forever preferred_lft forever
3: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:56:01:c5:96 brd ff:ff:ff:ff:ff:ff
inet 10.10.0.4/22 brd 10.10.3.255 scope global ens33
valid_lft forever preferred_lft forever
inet 10.10.0.5/22 brd 10.10.3.255 scope global secondary ens33:add1
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fe01:c596/64 scope link
valid_lft forever preferred_lft forever
4: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:56:01:c5:97 brd ff:ff:ff:ff:ff:ff
inet 10.20.0.4/22 brd 10.20.3.255 scope global ens34
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fe01:c597/64 scope link
valid_lft forever preferred_lft forever
aikchar@opensuse:~/sipp/run> ip r s
default via 10.145.255.254 dev ens32
10.10.0.0/22 dev ens33 proto kernel scope link src 10.10.0.4
10.20.0.0/22 dev ens34 proto kernel scope link src 10.20.0.4
10.145.192.0/18 dev ens32 proto kernel scope link src 10.145.194.238
127.0.0.0/8 dev lo scope link
Server Environment
[aikchar@centos ~]$ ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:50:56:01:c3:96 brd ff:ff:ff:ff:ff:ff
inet 10.145.194.226/18 brd 10.145.255.255 scope global eth0
inet6 fe80::250:56ff:fe01:c396/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:50:56:01:c3:97 brd ff:ff:ff:ff:ff:ff
inet 10.10.0.2/22 brd 10.10.3.255 scope global eth1
inet 10.10.0.51/22 scope global secondary eth1:1
inet 10.10.0.52/22 scope global secondary eth1:2
inet 10.10.0.53/22 scope global secondary eth1:3
inet 10.10.0.54/22 scope global secondary eth1:4
inet 10.10.0.55/22 scope global secondary eth1:5
inet 10.10.0.56/22 scope global secondary eth1:6
inet 10.10.0.57/22 scope global secondary eth1:7
inet 10.10.0.58/22 scope global secondary eth1:8
inet 10.10.0.59/22 scope global secondary eth1:9
inet 10.10.0.60/22 scope global secondary eth1:10
inet 10.10.0.61/22 scope global secondary eth1:11
inet 10.10.0.62/22 scope global secondary eth1:12
inet 10.10.0.63/22 scope global secondary eth1:13
inet 10.10.0.64/22 scope global secondary eth1:14
inet 10.10.0.65/22 scope global secondary eth1:15
inet 10.10.0.66/22 scope global secondary eth1:16
inet 10.10.0.67/22 scope global secondary eth1:17
inet 10.10.0.68/22 scope global secondary eth1:18
inet 10.10.0.69/22 scope global secondary eth1:19
inet 10.10.0.70/22 scope global secondary eth1:20
inet6 2002::10:10:0:64/96 scope global
valid_lft forever preferred_lft forever
inet6 2002::10:10:0:63/96 scope global
valid_lft forever preferred_lft forever
inet6 2002::10:10:0:62/96 scope global
valid_lft forever preferred_lft forever
inet6 2002::10:10:0:61/96 scope global
valid_lft forever preferred_lft forever
inet6 2002::10:10:0:60/96 scope global
valid_lft forever preferred_lft forever
inet6 2002::10:10:0:5f/96 scope global
valid_lft forever preferred_lft forever
inet6 2002::10:10:0:5e/96 scope global
valid_lft forever preferred_lft forever
inet6 2002::10:10:0:5d/96 scope global
valid_lft forever preferred_lft forever
inet6 2002::10:10:0:5c/96 scope global
valid_lft forever preferred_lft forever
inet6 2002::10:10:0:5b/96 scope global
valid_lft forever preferred_lft forever
inet6 2002::10:10:0:5a/96 scope global
valid_lft forever preferred_lft forever
inet6 2002::10:10:0:59/96 scope global
valid_lft forever preferred_lft forever
inet6 2002::10:10:0:58/96 scope global
valid_lft forever preferred_lft forever
inet6 2002::10:10:0:57/96 scope global
valid_lft forever preferred_lft forever
inet6 2002::10:10:0:56/96 scope global
valid_lft forever preferred_lft forever
inet6 2002::10:10:0:55/96 scope global
valid_lft forever preferred_lft forever
inet6 2002::10:10:0:54/96 scope global
valid_lft forever preferred_lft forever
inet6 2002::10:10:0:53/96 scope global
valid_lft forever preferred_lft forever
inet6 2002::10:10:0:52/96 scope global
valid_lft forever preferred_lft forever
inet6 2002::10:10:0:51/96 scope global
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fe01:c397/64 scope link
valid_lft forever preferred_lft forever
4: eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:50:56:01:c3:98 brd ff:ff:ff:ff:ff:ff
5: ip6tnl0: <NOARP> mtu 1460 qdisc noop
link/tunnel6 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
[aikchar@centos ~]$ ip r s
10.10.0.0/22 dev eth1 proto kernel scope link src 10.10.0.2
10.20.0.0/22 via 10.10.0.1 dev eth1
10.145.192.0/18 dev eth0 proto kernel scope link src 10.145.194.226
169.254.0.0/16 dev eth0 scope link metric 1002
169.254.0.0/16 dev eth1 scope link metric 1003
169.254.0.0/16 dev eth2 scope link metric 1004
default via 10.145.255.254 dev eth0
SIPp Version
The version of SIPp tried:
aikchar@opensuse:~/sipp/run> sipp -v
SIPp v3.3-TLS-SCTP-PCAP, built Jun 23 2013, 00:25:41.
...
Workaround
A workaround I found was to add a SNAT rule to iptables to re-write the IP address. You may need to change the values according to your environment.
iptables -t nat -A POSTROUTING -o eth0 -p tcp ! --sport 5060 -d 192.168.1.21 --dport 5060 -j SNAT --to-source 192.168.1.15
You can delete this rule when not needed.
iptables -t nat -D POSTROUTING -o eth0 -p tcp ! --sport 5060 -d 192.168.1.21 --dport 5060 -j SNAT --to-source 192.168.1.15
Short Description
When using "-t tn" and "-i myip" the IP used to send messages is not myip but the IP from the OS (Linux) routing table.
Also filed the same bug on SourceForge: Issue 147. Posted on mailing list as well.
Steps to Reproduce
On the "server" side start netcat
On the "client" side run built-in UAC scenario using -t tn and -i myip
On the "server" side you'll see something like this on the output on netcat
Observed Result
If you look at the first line of the nc output it says the connection is from 10.10.0.4 instead of 10.10.0.5 (the IP we provided with the -i flag).
I have also tried -ci flag with the same result.
If I use -t un flag then the first line of output of nc is "Connection from 10.10.0.5 port 5060 [udp/*] accepted".
Expected Result
The IP 10.10.0.5 should be used whether -t is tn or un when making connections.
Client Environment
Server Environment
SIPp Version
The version of SIPp tried:
Workaround
A workaround I found was to add a SNAT rule to iptables to re-write the IP address. You may need to change the values according to your environment.
You can delete this rule when not needed.