OpenWrt Forum Archive

Topic: MWAN3 member metric and interface default gateway metric clashes

The content of this topic has been archived on 19 Apr 2018. There are no obvious gaps in this topic, but there may still be some posts missing at the end.

Hi,
I am using mwan3 packege on my openwrt router. While using it, I have got one issue with multiple wan connection up in following scenario:

1.  my router has two wan connection:   wan, wan2 (both are up, tested using ping -I wan and ping -I wan2...)
2.  default gateway metrices are:  wan = 10,  wan2 =20
3.  MWAN3 configure rule is:
            wan2_wan:        wan2_m1_w3
                                      wan_m2_w2

When I am pinging google.com form my router, only one ping response comes back.
# ping google.com
PING google.com (172.217.7.142): 56 data bytes
64 bytes from 172.217.7.142: seq=0 ttl=55 time=5.001 ms

Question is: As in above configuration, Metrics are contradictory.  WAN Interface gateway metric higher priority(10) over WAN2(20).  while mwan3 wan2_wan rule has WAN2(m1)  higher priority over WAN(m2).

so how these metrics are implemented in linux kernel RPDB? and what is the significance of setting metric at two places?
and In above  case how the traffic will be routed by linux kernel?

For details, here are related commands output-
# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         166.143.236.1   0.0.0.0         UG    20     0        0 eth2
0.0.0.0         192.168.101.17  0.0.0.0         UG    30     0        0 eth1
166.143.0.0     0.0.0.0         255.255.0.0     U     20     0        0 eth2
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 br-lan
192.168.101.0   0.0.0.0         255.255.255.0   U     30     0        0 eth1

# ip rule
0:      from all lookup local
1016:   from all fwmark 0x1000/0xff00 lookup 1016
1017:   from all fwmark 0x1100/0xff00 lookup 1017
32766:  from all lookup main
32767:  from all lookup default

# ip route show table 1017
default via 166.143.236.1 dev eth2  metric 1
default via 192.168.101.17 dev eth1  metric 2

# ip route show table 1016
default via 192.168.101.17 dev eth1  metric 1
default via 166.143.236.1 dev eth2  metric 2

# ip route show table main
default via 166.143.236.1 dev eth2  proto static  metric 20
default via 192.168.101.17 dev eth1  proto static  metric 30
166.143.0.0/16 dev eth2  proto static  scope link  metric 20
192.168.10.0/24 dev br-lan  proto kernel  scope link  src 192.168.10.1
192.168.101.0/24 dev eth1  proto static  scope link  metric 30


# iptables -S -t mangle
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-N mwan3_default
-N mwan3_interfaces
-N mwan3_post
-N mwan3_pre
-N mwan3_rules
-N qos_Default
-N qos_Default_ct
-N zone_cell_MSSFIX
-N zone_wan_MSSFIX
-A PREROUTING -j mwan3_pre
-A INPUT -j mwan3_post
-A FORWARD -j zone_cell_MSSFIX
-A FORWARD -j zone_wan_MSSFIX
-A OUTPUT -j mwan3_pre
-A POSTROUTING -j mwan3_post
-A mwan3_default -d 224.0.0.0/3 -m mark --mark 0x0/0xff00 -j MARK --set-xmark 0x7f00/0xff00
-A mwan3_default -d 127.0.0.0/8 -m mark --mark 0x0/0xff00 -j MARK --set-xmark 0x7f00/0xff00
-A mwan3_default -d 166.143.0.0/16 -m mark --mark 0x0/0xff00 -j MARK --set-xmark 0x7f00/0xff00
-A mwan3_default -d 192.168.10.0/24 -m mark --mark 0x0/0xff00 -j MARK --set-xmark 0x7f00/0xff00
-A mwan3_default -d 192.168.101.0/24 -m mark --mark 0x0/0xff00 -j MARK --set-xmark 0x7f00/0xff00
-A mwan3_post -o eth2 -m mark ! --mark 0x7f00/0xff00 -j MARK --set-xmark 0x200/0xff00
-A mwan3_post -o eth1 -m mark ! --mark 0x7f00/0xff00 -j MARK --set-xmark 0x100/0xff00
-A mwan3_post -m mark --mark 0x8000/0x8000 -j MARK --set-xmark 0x0/0x8000
-A mwan3_post -j CONNMARK --save-mark --nfmask 0xff00 --ctmask 0xff00
-A mwan3_pre -j CONNMARK --restore-mark --nfmask 0xff00 --ctmask 0xff00
-A mwan3_pre -i eth2 -j MARK --set-xmark 0x8200/0xff00
-A mwan3_pre -i eth1 -j MARK --set-xmark 0x8100/0xff00
-A mwan3_pre -m mark --mark 0x0/0xff00 -j mwan3_default
-A mwan3_pre -m mark --mark 0x0/0xff00 -j mwan3_interfaces
-A mwan3_pre -m mark --mark 0x0/0xff00 -j mwan3_rules
-A mwan3_rules -m mark --mark 0x0/0xff00 -j MARK --set-xmark 0x1000/0xff00
-A qos_Default -j CONNMARK --restore-mark --nfmask 0xff --ctmask 0xff
-A qos_Default -m mark --mark 0x0/0xff -j qos_Default_ct
-A qos_Default -m mark --mark 0x1/0xff -m length --length 400:65535 -j MARK --set-xmark 0x0/0xff
-A qos_Default -m mark --mark 0x2/0xff -m length --length 800:65535 -j MARK --set-xmark 0x0/0xff
-A qos_Default -p udp -m mark --mark 0x0/0xff -m length --length 0:500 -j MARK --set-xmark 0x2/0xff
-A qos_Default -p icmp -j MARK --set-xmark 0x1/0xff
-A qos_Default -p tcp -m mark --mark 0x0/0xff -m tcp --sport 1024:65535 --dport 1024:65535 -j MARK --set-xmark 0x4/0xff
-A qos_Default -p udp -m mark --mark 0x0/0xff -m udp --sport 1024:65535 --dport 1024:65535 -j MARK --set-xmark 0x4/0xff
-A qos_Default -p tcp -m length --length 0:128 -m mark ! --mark 0x4/0xff -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG SYN -j MARK --set-xmark 0x1/0xff
-A qos_Default -p tcp -m length --length 0:128 -m mark ! --mark 0x4/0xff -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG ACK -j MARK --set-xmark 0x1/0xff
-A qos_Default_ct -p tcp -m mark --mark 0x0/0xff -m tcp -m multiport --ports 22,53 -j MARK --set-xmark 0x1/0xff
-A qos_Default_ct -p udp -m mark --mark 0x0/0xff -m udp -m multiport --ports 22,53 -j MARK --set-xmark 0x1/0xff
-A qos_Default_ct -p tcp -m mark --mark 0x0/0xff -m tcp -m multiport --ports 20,21,25,80,110,443,993,995 -j MARK --set-xmark 0x3/0xff
-A qos_Default_ct -p tcp -m mark --mark 0x0/0xff -m tcp -m multiport --ports 5190 -j MARK --set-xmark 0x2/0xff
-A qos_Default_ct -p udp -m mark --mark 0x0/0xff -m udp -m multiport --ports 5190 -j MARK --set-xmark 0x2/0xff
-A qos_Default_ct -j CONNMARK --save-mark --nfmask 0xff --ctmask 0xff
-A zone_cell_MSSFIX -o eth2 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
-A zone_wan_MSSFIX -o eth1 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

The discussion might have continued from here.