Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Routing issue with multiple subnets #119

Closed
swiergot opened this issue Mar 27, 2018 · 3 comments
Closed

Routing issue with multiple subnets #119

swiergot opened this issue Mar 27, 2018 · 3 comments

Comments

@swiergot
Copy link

Hi,

I have a Linux router (running pimd-2.3.1) which has addresses in multiple subnets (it's the only router in the network) and two IPIP tunnels. Here is my configuration:

/etc/pimd.conf

rp-address 10.1.253.9 228.4.0.0/19
rp-address 10.1.253.9 228.4.64.0/19
rp-address 10.2.253.9 228.8.0.0/19
rp-address 10.2.253.9 228.8.64.0/19
spt-threshold packets 0 interval 100

(10.1,253,9 and 10.2.253.9 are the router's addresses)

How pimd sees network interfaces:

10:29:04.143 Getting vifs from kernel
10:29:04.143 Installing eth0.100 (10.0.1.254 on subnet 10.0.1/24) as vif #0-7 - rate 0
10:29:04.143 Ignoring eth0.100 (10.1.1.254 on subnet 10.1.1/24) (alias for vif#0?)
10:29:04.143 Ignoring eth0.100 (10.1.2.254 on subnet 10.1.2/24) (alias for vif#0?)
10:29:04.143 Ignoring eth0.100 (10.1.25.254 on subnet 10.1.25/24) (alias for vif#0?)
10:29:04.143 Ignoring eth0.100 (10.1.26.254 on subnet 10.1.26/24) (alias for vif#0?)
10:29:04.143 Ignoring eth0.100 (10.2.1.254 on subnet 10.2.1/24) (alias for vif#0?)
10:29:04.143 Ignoring eth0.100 (10.2.2.254 on subnet 10.2.2/24) (alias for vif#0?)
10:29:04.143 Ignoring eth0.100 (10.2.25.254 on subnet 10.2.25/24) (alias for vif#0?)
10:29:04.143 Ignoring eth0.100 (10.2.26.254 on subnet 10.2.26/24) (alias for vif#0?)
10:29:04.143 Installing eth2.1001 (192.130.2.254 on subnet 192.130.2) as vif #1-8 - rate 0
10:29:04.143 Installing eth3.1202 (192.130.4.254 on subnet 192.130.4) as vif #2-9 - rate 0
10:29:04.143 Installing eth1.251 (10.2.251.51 on subnet 10.2.251/24) as vif #3-10 - rate 0
10:29:04.143 Installing eth0.16 (10.128.116.254 on subnet 10.128.116/24) as vif #4-11 - rate 0
10:29:04.143 Ignoring eth0.16 (10.129.116.254 on subnet 10.129.116/24) (alias for vif#4?)
10:29:04.143 Installing eth1.252 (10.2.252.51 on subnet 10.2.252/24) as vif #5-12 - rate 0
10:29:04.143 Installing eth0.21 (10.128.103.62 on subnet 10.128.103/24) as vif #6-13 - rate 0
10:29:04.143 Ignoring eth0.21 (10.129.103.62 on subnet 10.129.103/24) (alias for vif#6?)
10:29:04.143 Installing eth0.24 (10.128.117.254 on subnet 10.128.117/24) as vif #7-14 - rate 0
10:29:04.143 Ignoring eth0.24 (10.129.117.254 on subnet 10.129.117/24) (alias for vif#7?)
10:29:04.143 Installing eth1.253 (10.2.253.9 on subnet 10.2.253/24) as vif #8-15 - rate 0
10:29:04.143 Installing eth0.251 (10.1.251.51 on subnet 10.1.251/24) as vif #9-16 - rate 0
10:29:04.143 Installing eth1.31 (10.2.231.254 on subnet 10.2.231/24) as vif #10-17 - rate 0
10:29:04.143 Installing eth0.252 (10.1.252.51 on subnet 10.1.252/24) as vif #11-18 - rate 0
10:29:04.143 Installing eth1.402 (10.2.233.254 on subnet 10.2.233/24) as vif #12-19 - rate 0
10:29:04.143 Installing eth0.253 (10.1.253.9 on subnet 10.1.253/24) as vif #13-20 - rate 0
10:29:04.143 Installing eth1.41 (10.2.241.254 on subnet 10.2.241/24) as vif #14-21 - rate 0
10:29:04.143 Installing eth0.26 (10.128.114.254 on subnet 10.128.114/24) as vif #15-22 - rate 0
10:29:04.143 Ignoring eth0.26 (10.129.114.254 on subnet 10.129.114/24) (alias for vif#15?)
10:29:04.143 Installing eth0.31 (10.1.231.254 on subnet 10.1.231/24) as vif #16-23 - rate 0
10:29:04.143 Installing eth1.42 (10.2.242.254 on subnet 10.2.242/24) as vif #17-24 - rate 0
10:29:04.143 Installing eth1.602 (10.129.105.254 on subnet 10.129.105/24) as vif #18-25 - rate 0
10:29:04.143 Installing eth0.336 (10.1.236.254 on subnet 10.1.236/24) as vif #19-26 - rate 0
10:29:04.143 Ignoring eth0.336 (10.2.236.254 on subnet 10.2.236/24) (alias for vif#19?)
10:29:04.143 Installing eth0.37 (10.1.237.254 on subnet 10.1.237/24) as vif #20-27 - rate 0
10:29:04.143 Ignoring eth0.37 (10.2.237.254 on subnet 10.2.237/24) (alias for vif#20?)
10:29:04.143 Installing eth0.401 (10.1.233.254 on subnet 10.1.233/24) as vif #21-28 - rate 0
10:29:04.143 Installing eth0.41 (10.1.241.254 on subnet 10.1.241/24) as vif #22-29 - rate 0
10:29:04.143 Installing eth0.42 (10.1.242.254 on subnet 10.1.242/24) as vif #23-30 - rate 0
10:29:04.143 Installing eth0.601 (10.128.105.254 on subnet 10.128.105/24) as vif #24-31 - rate 0
10:29:04.143 Installing ipiptun1 (172.24.16.5 -> 172.24.16.6) as vif #25-32 - rate 0
10:29:04.143 Installing ipiptun2 (172.24.32.9 -> 172.24.32.10) as vif #26-33 - rate 0

(...)

10:29:04.143 Interface eth0.100 comes up; vif #0 now in service
10:29:04.143 query_groups(): Sending IGMP v3 query on eth0.100
10:29:04.143 Send IGMP Membership Query from 10.0.1.254 to 224.0.0.1
10:29:04.143 SENT 36 bytes IGMP Membership Query from 10.0.1.254 to 224.0.0.1
10:29:04.143 SENT 46 bytes PIM v2 Hello from 10.0.1.254 to 224.0.0.13
10:29:04.143 Interface eth2.1001 comes up; vif #1 now in service
10:29:04.144 query_groups(): Sending IGMP v3 query on eth2.1001
10:29:04.144 Send IGMP Membership Query from 192.130.2.254 to 224.0.0.1
10:29:04.144 SENT 36 bytes IGMP Membership Query from 192.130.2.254 to 224.0.0.1
10:29:04.144 SENT 46 bytes PIM v2 Hello from 192.130.2.254 to 224.0.0.13
10:29:04.144 Interface eth3.1202 comes up; vif #2 now in service
10:29:04.144 query_groups(): Sending IGMP v3 query on eth3.1202
10:29:04.144 Send IGMP Membership Query from 192.130.4.254 to 224.0.0.1
10:29:04.144 SENT 36 bytes IGMP Membership Query from 192.130.4.254 to 224.0.0.1
10:29:04.144 SENT 46 bytes PIM v2 Hello from 192.130.4.254 to 224.0.0.13
10:29:04.144 Interface eth1.251 comes up; vif #3 now in service
10:29:04.144 query_groups(): Sending IGMP v3 query on eth1.251
10:29:04.144 Send IGMP Membership Query from 10.2.251.51 to 224.0.0.1
10:29:04.144 SENT 36 bytes IGMP Membership Query from 10.2.251.51 to 224.0.0.1
10:29:04.144 SENT 46 bytes PIM v2 Hello from 10.2.251.51 to 224.0.0.13
10:29:04.144 Interface eth0.16 comes up; vif #4 now in service
10:29:04.144 query_groups(): Sending IGMP v3 query on eth0.16
10:29:04.144 Send IGMP Membership Query from 10.128.116.254 to 224.0.0.1
10:29:04.144 SENT 36 bytes IGMP Membership Query from 10.128.116.254 to 224.0.0.1
10:29:04.144 SENT 46 bytes PIM v2 Hello from 10.128.116.254 to 224.0.0.13
10:29:04.144 Interface eth1.252 comes up; vif #5 now in service
10:29:04.150 query_groups(): Sending IGMP v3 query on eth1.252
10:29:04.150 Send IGMP Membership Query from 10.2.252.51 to 224.0.0.1
10:29:04.150 SENT 36 bytes IGMP Membership Query from 10.2.252.51 to 224.0.0.1
10:29:04.150 SENT 46 bytes PIM v2 Hello from 10.2.252.51 to 224.0.0.13
10:29:04.151 Interface eth0.21 comes up; vif #6 now in service
10:29:04.151 query_groups(): Sending IGMP v3 query on eth0.21
10:29:04.151 Send IGMP Membership Query from 10.128.103.62 to 224.0.0.1
10:29:04.151 SENT 36 bytes IGMP Membership Query from 10.128.103.62 to 224.0.0.1
10:29:04.151 SENT 46 bytes PIM v2 Hello from 10.128.103.62 to 224.0.0.13
10:29:04.151 Interface eth0.24 comes up; vif #7 now in service
10:29:04.152 query_groups(): Sending IGMP v3 query on eth0.24
10:29:04.152 Send IGMP Membership Query from 10.128.117.254 to 224.0.0.1
10:29:04.152 SENT 36 bytes IGMP Membership Query from 10.128.117.254 to 224.0.0.1
10:29:04.152 SENT 46 bytes PIM v2 Hello from 10.128.117.254 to 224.0.0.13
10:29:04.152 Interface eth1.253 comes up; vif #8 now in service
10:29:04.153 query_groups(): Sending IGMP v3 query on eth1.253
10:29:04.153 Send IGMP Membership Query from 10.2.253.9 to 224.0.0.1
10:29:04.153 SENT 36 bytes IGMP Membership Query from 10.2.253.9 to 224.0.0.1
10:29:04.153 SENT 46 bytes PIM v2 Hello from 10.2.253.9 to 224.0.0.13
10:29:04.153 Interface eth0.251 comes up; vif #9 now in service
10:29:04.153 query_groups(): Sending IGMP v3 query on eth0.251
10:29:04.153 Send IGMP Membership Query from 10.1.251.51 to 224.0.0.1
10:29:04.153 SENT 36 bytes IGMP Membership Query from 10.1.251.51 to 224.0.0.1
10:29:04.153 SENT 46 bytes PIM v2 Hello from 10.1.251.51 to 224.0.0.13
10:29:04.154 Interface eth1.31 comes up; vif #10 now in service
10:29:04.154 query_groups(): Sending IGMP v3 query on eth1.31
10:29:04.154 Send IGMP Membership Query from 10.2.231.254 to 224.0.0.1
10:29:04.154 SENT 36 bytes IGMP Membership Query from 10.2.231.254 to 224.0.0.1
10:29:04.154 SENT 46 bytes PIM v2 Hello from 10.2.231.254 to 224.0.0.13
10:29:04.154 Interface eth0.252 comes up; vif #11 now in service
10:29:04.154 query_groups(): Sending IGMP v3 query on eth0.252
10:29:04.154 Send IGMP Membership Query from 10.1.252.51 to 224.0.0.1
10:29:04.154 SENT 36 bytes IGMP Membership Query from 10.1.252.51 to 224.0.0.1
10:29:04.155 SENT 46 bytes PIM v2 Hello from 10.1.252.51 to 224.0.0.13
10:29:04.155 Interface eth1.402 comes up; vif #12 now in service
10:29:04.155 query_groups(): Sending IGMP v3 query on eth1.402
10:29:04.155 Send IGMP Membership Query from 10.2.233.254 to 224.0.0.1
10:29:04.155 SENT 36 bytes IGMP Membership Query from 10.2.233.254 to 224.0.0.1
10:29:04.155 SENT 46 bytes PIM v2 Hello from 10.2.233.254 to 224.0.0.13
10:29:04.155 Interface eth0.253 comes up; vif #13 now in service
10:29:04.155 query_groups(): Sending IGMP v3 query on eth0.253
10:29:04.156 Send IGMP Membership Query from 10.1.253.9 to 224.0.0.1
10:29:04.156 SENT 36 bytes IGMP Membership Query from 10.1.253.9 to 224.0.0.1
10:29:04.156 SENT 46 bytes PIM v2 Hello from 10.1.253.9 to 224.0.0.13
10:29:04.156 Interface eth1.41 comes up; vif #14 now in service
10:29:04.156 query_groups(): Sending IGMP v3 query on eth1.41
10:29:04.156 Send IGMP Membership Query from 10.2.241.254 to 224.0.0.1
10:29:04.156 SENT 36 bytes IGMP Membership Query from 10.2.241.254 to 224.0.0.1
10:29:04.156 SENT 46 bytes PIM v2 Hello from 10.2.241.254 to 224.0.0.13
10:29:04.156 Interface eth0.26 comes up; vif #15 now in service
10:29:04.157 query_groups(): Sending IGMP v3 query on eth0.26
10:29:04.157 Send IGMP Membership Query from 10.128.114.254 to 224.0.0.1
10:29:04.157 SENT 36 bytes IGMP Membership Query from 10.128.114.254 to 224.0.0.1
10:29:04.157 SENT 46 bytes PIM v2 Hello from 10.128.114.254 to 224.0.0.13
10:29:04.157 Interface eth0.31 comes up; vif #16 now in service
10:29:04.158 query_groups(): Sending IGMP v3 query on eth0.31
10:29:04.158 Send IGMP Membership Query from 10.1.231.254 to 224.0.0.1
10:29:04.158 SENT 36 bytes IGMP Membership Query from 10.1.231.254 to 224.0.0.1
10:29:04.158 SENT 46 bytes PIM v2 Hello from 10.1.231.254 to 224.0.0.13
10:29:04.158 Interface eth1.42 comes up; vif #17 now in service
10:29:04.158 query_groups(): Sending IGMP v3 query on eth1.42
10:29:04.158 Send IGMP Membership Query from 10.2.242.254 to 224.0.0.1
10:29:04.158 SENT 36 bytes IGMP Membership Query from 10.2.242.254 to 224.0.0.1
10:29:04.159 SENT 46 bytes PIM v2 Hello from 10.2.242.254 to 224.0.0.13
10:29:04.159 Interface eth1.602 comes up; vif #18 now in service
10:29:04.159 query_groups(): Sending IGMP v3 query on eth1.602
10:29:04.159 Send IGMP Membership Query from 10.129.105.254 to 224.0.0.1
10:29:04.159 SENT 36 bytes IGMP Membership Query from 10.129.105.254 to 224.0.0.1
10:29:04.159 SENT 46 bytes PIM v2 Hello from 10.129.105.254 to 224.0.0.13
10:29:04.160 Interface eth0.336 comes up; vif #19 now in service
10:29:04.163 query_groups(): Sending IGMP v3 query on eth0.336
10:29:04.163 Send IGMP Membership Query from 10.1.236.254 to 224.0.0.1
10:29:04.163 SENT 36 bytes IGMP Membership Query from 10.1.236.254 to 224.0.0.1
10:29:04.163 SENT 46 bytes PIM v2 Hello from 10.1.236.254 to 224.0.0.13
10:29:04.163 Interface eth0.37 comes up; vif #20 now in service
10:29:04.163 query_groups(): Sending IGMP v3 query on eth0.37
10:29:04.163 Send IGMP Membership Query from 10.1.237.254 to 224.0.0.1
10:29:04.163 SENT 36 bytes IGMP Membership Query from 10.1.237.254 to 224.0.0.1
10:29:04.163 SENT 46 bytes PIM v2 Hello from 10.1.237.254 to 224.0.0.13
10:29:04.163 Interface eth0.401 comes up; vif #21 now in service
10:29:04.164 query_groups(): Sending IGMP v3 query on eth0.401
10:29:04.164 Send IGMP Membership Query from 10.1.233.254 to 224.0.0.1
10:29:04.164 SENT 36 bytes IGMP Membership Query from 10.1.233.254 to 224.0.0.1
10:29:04.164 SENT 46 bytes PIM v2 Hello from 10.1.233.254 to 224.0.0.13
10:29:04.164 Interface eth0.41 comes up; vif #22 now in service
10:29:04.164 query_groups(): Sending IGMP v3 query on eth0.41
10:29:04.164 Send IGMP Membership Query from 10.1.241.254 to 224.0.0.1
10:29:04.164 SENT 36 bytes IGMP Membership Query from 10.1.241.254 to 224.0.0.1
10:29:04.164 SENT 46 bytes PIM v2 Hello from 10.1.241.254 to 224.0.0.13
10:29:04.165 Interface eth0.42 comes up; vif #23 now in service
10:29:04.165 query_groups(): Sending IGMP v3 query on eth0.42
10:29:04.165 Send IGMP Membership Query from 10.1.242.254 to 224.0.0.1
10:29:04.165 SENT 36 bytes IGMP Membership Query from 10.1.242.254 to 224.0.0.1
10:29:04.165 SENT 46 bytes PIM v2 Hello from 10.1.242.254 to 224.0.0.13
10:29:04.165 Interface eth0.601 comes up; vif #24 now in service
10:29:04.165 query_groups(): Sending IGMP v3 query on eth0.601
10:29:04.165 Send IGMP Membership Query from 10.128.105.254 to 224.0.0.1
10:29:04.165 SENT 36 bytes IGMP Membership Query from 10.128.105.254 to 224.0.0.1
10:29:04.166 SENT 46 bytes PIM v2 Hello from 10.128.105.254 to 224.0.0.13
10:29:04.166 Interface ipiptun1 comes up; vif #25 now in service
10:29:04.166 query_groups(): Sending IGMP v3 query on ipiptun1
10:29:04.166 Send IGMP Membership Query from 172.24.16.5 to 224.0.0.1
10:29:04.166 SENT 36 bytes IGMP Membership Query from 172.24.16.5 to 224.0.0.1
10:29:04.166 SENT 46 bytes PIM v2 Hello from 172.24.16.5 to 224.0.0.13
10:29:04.166 Interface ipiptun2 comes up; vif #26 now in service
10:29:04.166 query_groups(): Sending IGMP v3 query on ipiptun2
10:29:04.166 Send IGMP Membership Query from 172.24.32.9 to 224.0.0.1
10:29:04.166 SENT 36 bytes IGMP Membership Query from 172.24.32.9 to 224.0.0.1
10:29:04.167 SENT 46 bytes PIM v2 Hello from 172.24.32.9 to 224.0.0.13
10:29:04.168 Interface register_vif0 comes up; vif #27 now in service

The effect is that multicasts are routed to ipiptun2 just fine, but not to ipiptun1. Digging further into the debug output I can see this for ipiptun1:

10:29:04.635 Received IGMP v2 Membership Report from 172.24.16.6 to 228.4.0.0
10:29:04.636 accept_group_report(): igmp_src 172.24.16.6 ssm_src 228.4.0.0 group 228.4.0.0 report_type 22
10:29:04.636 accept_group_report(): al_pv=2
10:29:04.636 Set delete timer for group: 228.4.0.0
10:29:04.636 create group entry, group 228.4.0.0

10:29:04.774 Cache miss, src 10.1.231.1, dst 228.4.0.0, iif 10
10:29:04.775 find_route: Not PMBR, return NULL
10:29:04.775 Switch shortest path (SPT): src 10.1.231.1, group 228.4.0.0
10:29:04.775 create group entry, group 228.4.0.0

For ipiptun2 it's a bit different:

10:29:04.237 Received IGMP v2 Membership Report from 172.24.32.10 to 228.8.0.1
10:29:04.237 accept_group_report(): igmp_src 172.24.32.10 ssm_src 228.8.0.1 group 228.8.0.1 report_type 22
10:29:04.237 accept_group_report(): al_pv=2
10:29:04.237 Set delete timer for group: 228.8.0.1
10:29:04.238 create group entry, group 228.8.0.1

10:29:04.288 Cache miss, src 10.2.231.1, dst 228.8.0.1, iif 10
10:29:04.288 create group entry, group 228.8.0.1

The configuration for the two IPIP tunnels as well as 10.1.231/24 and 10.2.231/24 networks is symmetrical. I don't understand why pimd treats them differently. I have noticed that in both cases the "cache miss" log entry mentions "iif 10", that doesn't seem right, does it?

Could you please help me solve this problem?

Thank you.

@troglobit
Copy link
Owner

Hi @swiergot, it's quite hard to picture your setup and understand the problem. Do you think you could add like a topological drawing (ASCII art is fine) and describe the setup a bit more?

@troglobit
Copy link
Owner

Unless some more information is provided in this issue, I'll close it by the end of the month.

@troglobit
Copy link
Owner

Closing due to lack of information from reporter + timeout.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants