I have a server on which a transmission benchmarks shall be performed. This server has 3 network interfaces (172.16.10.205 for SSH, 10.0.4.105 for sending, 10.0.8.105 for receiving)
to satellite from satellite
/\ \/
/\ \/
|-----------| |-------------|
| Modulator | | Demodulator |
|-----------| |-------------|
10.0.4.244 10.0.8.27
\ /
\ /
(eno7) 10.0.4.105 10.0.8.105 (eno8)
|------------|
| Server |
|------------|
172.16.10.205 (eno1)
On the server I ve setup the following rules, routes:
# ip rule
100: from 10.0.8.105 to 10.0.8.105 lookup 250
30000: from all lookup local
32766: from all lookup main
32767: from all lookup default
# ip route show table 250
default via 10.0.4.244 dev eno7
10.0.8.105 via 10.0.4.244 dev eno7
I ve started a ITGSend
stream to the Modulator:
ITGSend -a 10.0.8.105 -Sda 172.16.10.205 -c 600 -C 20 -t 2000 -poll
and receiving the ITGRecv
stream from the Demodulator:
ITGRecv -l itgrecv_kkr.log -q 1 -a 10.0.8.105 -i eno8
On tcpdump
this looks quite good...
# tcpdump -i eno8 -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eno8, link-type EN10MB (Ethernet), capture size 262144 bytes
10:34:32.538165 ARP, Request who-has 10.0.8.105 tell 10.0.8.27, length 46
10:34:32.538190 ARP, Reply 10.0.8.105 is-at 00:25:90:5d:df:ad, length 28
10:34:32.538276 IP 10.0.8.105.60367 > 10.0.8.105.8999: UDP, length 600
10:34:32.588162 IP 10.0.8.105.60367 > 10.0.8.105.8999: UDP, length 600
10:34:32.637465 IP 10.0.8.105.60367 > 10.0.8.105.8999: UDP, length 600
..but for some reason, ITGRecv
receives no data...
UPDATE: I ve tried a second use-case, to ensure that the incoming data are not handled by the given rule:
1) I have to create a rule which is befor the local
rule which handles the local interfaces (done by local
=30000 and new-rule=100):
ip rule del from all lookup local
ip rule add from all lookup local pref 30000
ip rule add from all fwmark 0x1 lookup 250 pref 100
2) This new rule sends packages to routing-table 250 only, when a MARK is set to 1. This is done by iptables
- by marking all outgoing packets to the given IP address:
iptables -A OUTPUT -t mangle -p all -d 10.0.8.105 -j MARK --set-mark 1
3) In a last step I create a route which redirects all (marked) packets to the modulator device:
ip route add default via 10.0.4.244 dev eno7 table 250
But still no success - the packages arrive at eno8
correctly, but iperf -s
doesn't receive them.