Skip to content

Overlay mac cleanup issue on IP reuse #1934

Description

@fcrisciani

There seem to be a race condition where the IP reuse brings the overlay namespace with wrong configuration.

The following log shows the issue:

Sep 01 11:19:34 E2E-DEV-flaviocrisciani-117ECD2A-linux-1 dockerd[13802]: time="2017-09-01T11:19:34.691632056-07:00" level=error msg="PeerDbAdd Key:10.255.0.6 02:42:0a:ff:00:06 Value:{eid:c987bed674d82784df8000eed19f7890a633dede5461fac4595c4cf0e250d2ea vtep:[0 0 0 0 0 0 0 0 0 0 255 255 172 31 13 174] peerIPMask:[255 255 0 0] inSandbox:false isLocal:false}"
Sep 01 11:19:34 E2E-DEV-flaviocrisciani-117ECD2A-linux-1 dockerd[13802]: time="2017-09-01T11:19:34.692078224-07:00" level=error msg="peerAddOp nid:y1j0b7yextgpf235djzark5k4 eid:c987bed674d82784df8000eed19f7890a633dede5461fac4595c4cf0e250d2ea peerIP:10.255.0.6 peerMask:ffff0000 peerMac:02:42:0a:ff:00:06 vtep:172.31.13.174 l2Miss:false l3Miss:false"
Sep 01 11:19:36 E2E-DEV-flaviocrisciani-117ECD2A-linux-1 dockerd[13802]: time="2017-09-01T11:19:36.955102682-07:00" level=debug msg="handleEpTableEvent ADD c987bed674d82784df8000eed19f7890a633dede5461fac4595c4cf0e250d2ea R:{TestServiceConnectivitySimpleServiceICMPTesterc9b055e0-1094-4f5.1.3bqyh9q5sqrx9l09de00k2e9b TestServiceConnectivitySimpleServiceICMPTesterc9b055e0-1094-4f5 fc2bfgdih5oldzl7wsvpcbps3 10.255.0.5 10.255.0.6 [&PortConfig{Name:,Protocol:TCP,TargetPort:80,PublishedPort:30025,}] [] [ded5b19256e9]}"
Sep 01 11:19:36 E2E-DEV-flaviocrisciani-117ECD2A-linux-1 dockerd[13802]: time="2017-09-01T11:19:36.955324826-07:00" level=debug msg="addServiceBinding from handleEpTableEvent START for TestServiceConnectivitySimpleServiceICMPTesterc9b055e0-1094-4f5 c987bed674d82784df8000eed19f7890a633dede5461fac4595c4cf0e250d2ea p:0xc4229d7180 nid:y1j0b7yextgpf235djzark5k4 skey:{fc2bfgdih5oldzl7wsvpcbps3 30025:80/TCP}"
Sep 01 11:19:37 E2E-DEV-flaviocrisciani-117ECD2A-linux-1 dockerd[13802]: time="2017-09-01T11:19:37.101710164-07:00" level=debug msg="addEndpointNameResolution c987bed674d82784df8000eed19f7890a633dede5461fac4595c4cf0e250d2ea TestServiceConnectivitySimpleServiceICMPTesterc9b055e0-1094-4f5 add_service:true sAliases:[] tAliases:[ded5b19256e9]"
Sep 01 11:19:37 E2E-DEV-flaviocrisciani-117ECD2A-linux-1 dockerd[13802]: time="2017-09-01T11:19:37.102074320-07:00" level=debug msg="addContainerNameResolution c987bed674d82784df8000eed19f7890a633dede5461fac4595c4cf0e250d2ea TestServiceConnectivitySimpleServiceICMPTesterc9b055e0-1094-4f5.1.3bqyh9q5sqrx9l09de00k2e9b"
Sep 01 11:19:37 E2E-DEV-flaviocrisciani-117ECD2A-linux-1 dockerd[13802]: time="2017-09-01T11:19:37.110435532-07:00" level=debug msg="addServiceBinding from handleEpTableEvent END for TestServiceConnectivitySimpleServiceICMPTesterc9b055e0-1094-4f5 c987bed674d82784df8000eed19f7890a633dede5461fac4595c4cf0e250d2ea"
Sep 01 11:19:39 E2E-DEV-flaviocrisciani-117ECD2A-linux-1 dockerd[13802]: time="2017-09-01T11:19:39.748882483-07:00" level=debug msg="handleEpTableEvent DEL c987bed674d82784df8000eed19f7890a633dede5461fac4595c4cf0e250d2ea R:{TestServiceConnectivitySimpleServiceICMPTesterc9b055e0-1094-4f5.1.3bqyh9q5sqrx9l09de00k2e9b TestServiceConnectivitySimpleServiceICMPTesterc9b055e0-1094-4f5 fc2bfgdih5oldzl7wsvpcbps3 10.255.0.5 10.255.0.6 [&PortConfig{Name:,Protocol:TCP,TargetPort:80,PublishedPort:30025,}] [] [ded5b19256e9]}"
Sep 01 11:19:39 E2E-DEV-flaviocrisciani-117ECD2A-linux-1 dockerd[13802]: time="2017-09-01T11:19:39.749209708-07:00" level=debug msg="rmServiceBinding from handleEpTableEvent START for TestServiceConnectivitySimpleServiceICMPTesterc9b055e0-1094-4f5 c987bed674d82784df8000eed19f7890a633dede5461fac4595c4cf0e250d2ea p:0xc4229d7180 nid:y1j0b7yextgpf235djzark5k4 sKey:{fc2bfgdih5oldzl7wsvpcbps3 30025:80/TCP} deleteSvc:true"
Sep 01 11:19:39 E2E-DEV-flaviocrisciani-117ECD2A-linux-1 dockerd[13802]: time="2017-09-01T11:19:39.749414019-07:00" level=debug msg="rmServiceBinding c987bed674d82784df8000eed19f7890a633dede5461fac4595c4cf0e250d2ea delete y1j0b7yextgpf235djzark5k4, p:0xc420a12a20 in loadbalancers len:0"
Sep 01 11:19:39 E2E-DEV-flaviocrisciani-117ECD2A-linux-1 dockerd[13802]: time="2017-09-01T11:19:39.832773581-07:00" level=error msg="PeerDbAdd Key:10.255.0.6 02:42:0a:ff:00:06 Value:{eid:f7abd893cc943ce7fa205bf4d1392b7d6f941ba3fedc6edc5726c7ff0d2a13bb vtep:[0 0 0 0 0 0 0 0 0 0 255 255 172 31 13 68] peerIPMask:[255 255 0 0] inSandbox:false isLocal:false}"
Sep 01 11:19:39 E2E-DEV-flaviocrisciani-117ECD2A-linux-1 dockerd[13802]: time="2017-09-01T11:19:39.833233804-07:00" level=error msg="peerDeleteOp        pEntry:{eid:f7abd893cc943ce7fa205bf4d1392b7d6f941ba3fedc6edc5726c7ff0d2a13bb vtep:[0 0 0 0 0 0 0 0 0 0 255 255 172 31 13 68] peerIPMask:[255 255 0 0] inSandbox:false isLocal:false}"
Sep 01 11:19:39 E2E-DEV-flaviocrisciani-117ECD2A-linux-1 dockerd[13802]: time="2017-09-01T11:19:39.833253781-07:00" level=error msg="peerDeleteOp nid:y1j0b7yextgpf235djzark5k4 eid:c987bed674d82784df8000eed19f7890a633dede5461fac4595c4cf0e250d2ea peerIP:10.255.0.6 peerMask:ffff0000 peerMac:02:42:0a:ff:00:06 vtep:172.31.13.174"
Sep 01 11:19:40 E2E-DEV-flaviocrisciani-117ECD2A-linux-1 dockerd[13802]: time="2017-09-01T11:19:40.226175623-07:00" level=debug msg="deleteEndpointNameResolution c987bed674d82784df8000eed19f7890a633dede5461fac4595c4cf0e250d2ea TestServiceConnectivitySimpleServiceICMPTesterc9b055e0-1094-4f5 rm_service:true suppress:false sAliases:[] tAliases:[ded5b19256e9]"
Sep 01 11:19:40 E2E-DEV-flaviocrisciani-117ECD2A-linux-1 dockerd[13802]: time="2017-09-01T11:19:40.226573255-07:00" level=debug msg="delContainerNameResolution c987bed674d82784df8000eed19f7890a633dede5461fac4595c4cf0e250d2ea TestServiceConnectivitySimpleServiceICMPTesterc9b055e0-1094-4f5.1.3bqyh9q5sqrx9l09de00k2e9b"
Sep 01 11:19:40 E2E-DEV-flaviocrisciani-117ECD2A-linux-1 dockerd[13802]: time="2017-09-01T11:19:40.226593064-07:00" level=debug msg="rmServiceBinding from handleEpTableEvent END for TestServiceConnectivitySimpleServiceICMPTesterc9b055e0-1094-4f5 c987bed674d82784df8000eed19f7890a633dede5461fac4595c4cf0e250d2ea"
Sep 01 11:19:42 E2E-DEV-flaviocrisciani-117ECD2A-linux-1 dockerd[13802]: time="2017-09-01T11:19:42.265987122-07:00" level=debug msg="addServiceInfoToCluster START for TestServiceDNSRRClientc9b055e0-1094-4f52-931d-87ae717f7440 f7abd893cc943ce7fa205bf4d1392b7d6f941ba3fedc6edc5726c7ff0d2a13bb"
Sep 01 11:19:42 E2E-DEV-flaviocrisciani-117ECD2A-linux-1 dockerd[13802]: time="2017-09-01T11:19:42.266202534-07:00" level=debug msg="addServiceBinding from addServiceInfoToCluster START for TestServiceDNSRRClientc9b055e0-1094-4f52-931d-87ae717f7440 f7abd893cc943ce7fa205bf4d1392b7d6f941ba3fedc6edc5726c7ff0d2a13bb p:0xc423144d80 nid:y1j0b7yextgpf235djzark5k4 skey:{mbwa7d5enbor1tez3c0c28w3o 30026:80/TCP}"
Sep 01 11:19:42 E2E-DEV-flaviocrisciani-117ECD2A-linux-1 dockerd[13802]: time="2017-09-01T11:19:42.412264976-07:00" level=debug msg="addEndpointNameResolution f7abd893cc943ce7fa205bf4d1392b7d6f941ba3fedc6edc5726c7ff0d2a13bb TestServiceDNSRRClientc9b055e0-1094-4f52-931d-87ae717f7440 add_service:true sAliases:[] tAliases:[5bdbdf36a068]"
Sep 01 11:19:42 E2E-DEV-flaviocrisciani-117ECD2A-linux-1 dockerd[13802]: time="2017-09-01T11:19:42.412683010-07:00" level=debug msg="addContainerNameResolution f7abd893cc943ce7fa205bf4d1392b7d6f941ba3fedc6edc5726c7ff0d2a13bb TestServiceDNSRRClientc9b055e0-1094-4f52-931d-87ae717f7440.1.k2yiwldpltl1rexhshm6xw109"
Sep 01 11:19:42 E2E-DEV-flaviocrisciani-117ECD2A-linux-1 dockerd[13802]: time="2017-09-01T11:19:42.412891701-07:00" level=debug msg="addServiceBinding from addServiceInfoToCluster END for TestServiceDNSRRClientc9b055e0-1094-4f52-931d-87ae717f7440 f7abd893cc943ce7fa205bf4d1392b7d6f941ba3fedc6edc5726c7ff0d2a13bb"
Sep 01 11:19:42 E2E-DEV-flaviocrisciani-117ECD2A-linux-1 dockerd[13802]: time="2017-09-01T11:19:42.413161694-07:00" level=debug msg="addServiceInfoToCluster END for TestServiceDNSRRClientc9b055e0-1094-4f52-931d-87ae717f7440 f7abd893cc943ce7fa205bf4d1392b7d6f941ba3fedc6edc5726c7ff0d2a13bb"

The first container (leaving on a remote node) is c987bed674d82784df8000eed19f7890a633dede5461fac4595c4cf0e250d2ea that gets created and added to the peerDB:

Sep 01 11:19:34 E2E-DEV-flaviocrisciani-117ECD2A-linux-1 dockerd[13802]: time="2017-09-01T11:19:34.691632056-07:00" level=error msg="PeerDbAdd Key:10.255.0.6 02:42:0a:ff:00:06 Value:{eid:c987bed674d82784df8000eed19f7890a633dede5461fac4595c4cf0e250d2ea vtep:[0 0 0 0 0 0 0 0 0 0 255 255 172 31 13 174] peerIPMask:[255 255 0 0] inSandbox:false isLocal:false}"
[...]
Sep 01 11:19:37 E2E-DEV-flaviocrisciani-117ECD2A-linux-1 dockerd[13802]: time="2017-09-01T11:19:37.110435532-07:00" level=debug msg="addServiceBinding from handleEpTableEvent END for TestServiceConnectivitySimpleServiceICMPTesterc9b055e0-1094-4f5 c987bed674d82784df8000eed19f7890a633dede5461fac4595c4cf0e250d2ea"

After some time it goes down

Sep 01 11:19:39 E2E-DEV-flaviocrisciani-117ECD2A-linux-1 dockerd[13802]: time="2017-09-01T11:19:39.748882483-07:00" level=debug msg="handleEpTableEvent DEL c987bed674d82784df8000eed19f7890a633dede5461fac4595c4cf0e250d2ea R:{TestServiceConnectivitySimpleServiceICMPTesterc9b055e0-1094-4f5.1.3bqyh9q5sqrx9l09de00k2e9b TestServiceConnectivitySimpleServiceICMPTesterc9b055e0-1094-4f5 fc2bfgdih5oldzl7wsvpcbps3 10.255.0.5 10.255.0.6 [&PortConfig{Name:,Protocol:TCP,TargetPort:80,PublishedPort:30025,}] [] [ded5b19256e9]}"

Locally while the deletion is happening another container is spawned and reuses the IP because now is free

Sep 01 11:19:39 E2E-DEV-flaviocrisciani-117ECD2A-linux-1 dockerd[13802]: time="2017-09-01T11:19:39.832773581-07:00" level=error msg="PeerDbAdd Key:10.255.0.6 02:42:0a:ff:00:06 Value:{eid:f7abd893cc943ce7fa205bf4d1392b7d6f941ba3fedc6edc5726c7ff0d2a13bb vtep:[0 0 0 0 0 0 0 0 0 0 255 255 172 31 13 68] peerIPMask:[255 255 0 0] inSandbox:false isLocal:false}"

At this point when the peerDelete fetches the entry in the DB this one changed:

Sep 01 11:19:39 E2E-DEV-flaviocrisciani-117ECD2A-linux-1 dockerd[13802]: time="2017-09-01T11:19:39.833233804-07:00" level=error msg="peerDeleteOp        pEntry:{eid:f7abd893cc943ce7fa205bf4d1392b7d6f941ba3fedc6edc5726c7ff0d2a13bb vtep:[0 0 0 0 0 0 0 0 0 0 255 255 172 31 13 68] peerIPMask:[255 255 0 0] inSandbox:false isLocal:false}"

For this reason there would not be any namespace configuration change or deletion: https://github.com/docker/libnetwork/blob/master/drivers/overlay/peerdb.go#L407

So the internal namespace is still holding the wrong config:

root@E2E-DEV-flaviocrisciani-117ECD2A-linux-1:/home/docker# bridge fdb show | grep 02:42:0a:ff:00:06                                                                                                                                                                            
02:42:0a:ff:00:06 dev vxlan0 master br0                                                                                                                                                                                                                                         
02:42:0a:ff:00:06 dev vxlan0 dst 172.31.13.174 link-netnsid 0 self permanent  

After that the entry is garbage collected the proper config has to be:

02:42:0a:ff:00:06 dev veth68 master br0

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions