Bug 1276698

Summary: [RFE] IPaddr2: Use IPv6 DAD for collision detection
Product: Red Hat Enterprise Linux 6 Reporter: Oyvind Albrigtsen <oalbrigt>
Component: resource-agentsAssignee: Oyvind Albrigtsen <oalbrigt>
Status: CLOSED ERRATA QA Contact: cluster-qe <cluster-qe>
Severity: high Docs Contact:
Priority: high    
Version: 6.8CC: abeekhof, agk, cbuissar, cluster-maint, cluster-qe, fdinitto, jkortus, jruemker, mnovacek, royoung, sauchter, tbowling, tlavigne
Target Milestone: rcKeywords: FutureFeature
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: resource-agents-3.9.5-28.el6 Doc Type: Enhancement
Doc Text:
Story Points: ---
Clone Of: 1191247
: 1276699 (view as bug list) Environment:
Last Closed: 2016-05-10 19:15:12 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1191247    
Bug Blocks: 1172231, 1271835, 1276699    
Attachments:
Description Flags
Working patch none

Comment 1 Oyvind Albrigtsen 2015-10-30 14:33:43 UTC
Created attachment 1087941 [details]
Working patch

Tested and working patch.

Comment 4 Oyvind Albrigtsen 2015-12-21 13:29:50 UTC
Setup an IPv6 address that collides with one on the network and check /var/log/cluster/corosync.log.

Before:
IPaddr2(IP)[18807]:	2015/12/21_14:25:40 WARNING: XXXX::10 still has 'tentative' status. (ignored)

After:
IPaddr2(IP)[14066]:     2015/12/21_14:19:44 ERROR: IPv6 address collision XXXX::10 [DAD]

Comment 5 Oyvind Albrigtsen 2015-12-24 08:47:43 UTC
Setup an IPv6 address resource that collides with one on the network:
# pcs resource create IPv6 IPaddr2 ip=XXXX::10

Before:
# pcs resource enable IPv6
# tail -f /var/log/cluster/corosync.log
...
IPaddr2(IP)[18807]:	2015/12/21_14:25:40 WARNING: XXXX::10 still has 'tentative' status. (ignored)

After:
# pcs resource enable IPv6
# tail -f /var/log/cluster/corosync.log
...
IPaddr2(IP)[14066]:     2015/12/21_14:19:44 ERROR: IPv6 address collision XXXX::10 [DAD]

Comment 7 michal novacek 2016-03-30 10:06:58 UTC
I have verified that DAD is used for ipv6 address collision detection in
resource-agents-3.9.5-34.el6.x86_64

----
# ping6 -c 2 2620:52:0:2246:1800:ff:fe00:90
PING 2620:52:0:2246:1800:ff:fe00:90(2620:52:0:2246:1800:ff:fe00:90) 56 data bytes
64 bytes from 2620:52:0:2246:1800:ff:fe00:90: icmp_seq=1 ttl=64 time=1.81 ms
64 bytes from 2620:52:0:2246:1800:ff:fe00:90: icmp_seq=2 ttl=64 time=0.697 ms

--- 2620:52:0:2246:1800:ff:fe00:90 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 0.697/1.254/1.811/0.557 ms

# pcs status
Cluster name: STSRHTS4495
Last updated: Wed Mar 30 11:33:40 2016
Last change: Wed Mar 30 11:29:16 2016 by root via cibadmin on virt-146.cluster-qe.lab.eng.brq.redhat.com
Stack: cman
Current DC: virt-146.cluster-qe.lab.eng.brq.redhat.com (version 1.1.14-3.el6-70404b0) - partition with quorum
2 nodes and 3 resources configured

Online: [ virt-146.cluster-qe.lab.eng.brq.redhat.com virt-147.cluster-qe.lab.eng.brq.redhat.com ]

Full list of resources:

 fence-virt-146 (stonith:fence_xvm):    Started virt-146.cluster-qe.lab.eng.brq.redhat.com
 fence-virt-147 (stonith:fence_xvm):    Started virt-147.cluster-qe.lab.eng.brq.redhat.com

PCSD Status:
  virt-146.cluster-qe.lab.eng.brq.redhat.com: Unable to authenticate
  virt-147.cluster-qe.lab.eng.brq.redhat.com: Unable to authenticate

virt-146# pcs resource create ClusterIP ocf:heartbeat:IPaddr2 ip=2620:52:0:2246:1800:ff:fe00:90 cidr_netmask=64
virt-146# pcs resource disable ClusterIP
virt-146# pcs resource --full
 Resource: ClusterIP (class=ocf provider=heartbeat type=IPaddr2)
  Attributes: ip=2620:52:0:2246:1800:ff:fe00:90 cidr_netmask=64
  Meta Attrs: target-role=Stopped 
  Operations: start interval=0s timeout=20s (ClusterIP-start-interval-0s)
              stop interval=0s timeout=20s (ClusterIP-stop-interval-0s)
              monitor interval=30s (ClusterIP-monitor-interval-30s)


unpatched: resource-agents-3.9.5-27.el6.x86_64
==============================================
virt-146# pcs resource enable ClusterIP
virt-146# grep IPaddr2 /var/log/messages | tail
Mar 30 11:22:26 virt-147 IPaddr2(ClusterIP)[4256]: INFO: IP status = ok, IP_CIP=
Mar 30 11:39:07 virt-147 IPaddr2(ClusterIP)[4523]: INFO: Adding inet6 address 2620:52:0:2246:1800:ff:fe00:90/64 to device eth0
Mar 30 11:39:07 virt-147 IPaddr2(ClusterIP)[4523]: INFO: Bringing device eth0 up
>>>>> Mar 30 11:39:11 virt-147 IPaddr2(ClusterIP)[4523]: WARNING: 2620:52:0:2246:1800:ff:fe00:90 still has 'tentative' status. (ignored)
Mar 30 11:39:11 virt-147 IPaddr2(ClusterIP)[4523]: INFO: /usr/libexec/heartbeat/send_ua -i 200 -c 5 2620:52:0:2246:1800:ff:fe00:90 64 eth0
Mar 30 11:51:26 virt-147 IPaddr2(ClusterIP)[7046]: INFO: IP status = ok, IP_CIP=
Mar 30 11:59:48 virt-147 IPaddr2(ClusterIP)[7247]: INFO: Adding inet6 address 2620:52:0:2246:1800:ff:fe00:90/64 to device eth0
Mar 30 11:59:48 virt-147 IPaddr2(ClusterIP)[7247]: INFO: Bringing device eth0 up
Mar 30 11:59:52 virt-147 IPaddr2(ClusterIP)[7247]: WARNING: 2620:52:0:2246:1800:ff:fe00:90 still has 'tentative' status. (ignored)
Mar 30 11:59:52 virt-147 IPaddr2(ClusterIP)[7247]: INFO: /usr/libexec/heartbeat/send_ua -i 200 -c 5 2620:52:0:2246:1800:ff:fe00:90 64 eth0

patched: resource-agents-3.9.5-34.el6.x86_64
========---------===========================
virt-146# pcs resource enable ClusterIP
virt-146# grep IPaddr2 /var/log/messages | tail
Mar 30 11:22:45 virt-146 IPaddr2(ClusterIP)[11049]: INFO: Adding inet6 address 2620:52:0:2246:1800:ff:fe00:93/64 to device eth0
Mar 30 11:22:45 virt-146 IPaddr2(ClusterIP)[11049]: INFO: Bringing device eth0 up
Mar 30 11:22:47 virt-146 IPaddr2(ClusterIP)[11049]: INFO: /usr/libexec/heartbeat/send_ua -i 200 -c 5 2620:52:0:2246:1800:ff:fe00:93 64 eth0
Mar 30 11:28:36 virt-146 IPaddr2(ClusterIP)[11733]: INFO: IP status = ok, IP_CIP=
Mar 30 11:35:59 virt-146 IPaddr2(ClusterIP)[12146]: INFO: IP status = ok, IP_CIP=
Mar 30 11:39:06 virt-146 IPaddr2(ClusterIP)[12274]: INFO: Adding inet6 address 2620:52:0:2246:1800:ff:fe00:90/64 to device eth0
Mar 30 11:39:06 virt-146 IPaddr2(ClusterIP)[12274]: INFO: Bringing device eth0 up
>>>>> Mar 30 11:39:07 virt-146 IPaddr2(ClusterIP)[12274]: ERROR: IPv6 address collision 2620:52:0:2246:1800:ff:fe00:90 [DAD]
Mar 30 11:39:07 virt-146 IPaddr2(ClusterIP)[12274]: ERROR: run_send_ua failed.
Mar 30 11:39:07 virt-146 IPaddr2(ClusterIP)[12359]: INFO: IP status = ok, IP_CIP=

Comment 9 errata-xmlrpc 2016-05-10 19:15:12 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHBA-2016-0735.html