moby / moby/libnetwork

docker swarm mode uses apparently wrong interface for UDP packets

Open
#2,211 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
2.2k
Forks
875
PR merge metrics
No merged PRs in 30d

Description

I might be naïve, but I'm seeing this and it really looks like a bug, not a feature.

I'm running several services in a swarm, and all the exposed ports show essentially the same behavior. The service address is 10.0.0.81, and the node address is 10.0.0.18.

When I send TCP service requests to, say, port 443, they are received as packets like

(...)
13:46:29.762665 IP 10.0.0.81.37650 > 10.0.0.18.443: Flags [S] (...)
(...)

But when I send UDP packets to, say, port 10000, they are received like:

(...)
13:50:12.910212 IP 10.255.0.2.60602 > 10.255.5.25.10000: UDP, length 4 # those are npings
(...)

I would expect the same interface eth0 to be used for TCP and UDP services.

I'm using

$ docker version
Client:
 Version:      18.05.0-ce
 API version:  1.37
 Go version:   go1.9.5
 Git commit:   f150324
 Built:        Wed May  9 22:16:13 2018
 OS/Arch:      linux/amd64
 Experimental: false
 Orchestrator: swarm

Server:
 Engine:
  Version:      18.05.0-ce
  API version:  1.37 (minimum version 1.12)
  Go version:   go1.9.5
  Git commit:   f150324
  Built:        Wed May  9 22:14:23 2018
  OS/Arch:      linux/amd64
  Experimental: false

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the reported TCP and UDP packet paths in a Docker 18.05.0-ce swarm using the addresses and ports shown. Compare how swarm mode routes each protocol and verify whether UDP should use the node interface like TCP; done means identifying the cause and correcting or clearly documenting the behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker
Domain
distributed-systems, networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.