-
Notifications
You must be signed in to change notification settings - Fork 387
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
[flexible-ipam] ARP request leaks cause network issue #5451
Comments
I think this is a serious issue affecting the basic availability of AntreaIPAM mode. Although it's triggered by a specific Service test case, it could happen easily as long as a Node or a hostNetwork Pod tries to reach a local Pod (IP allocated from podCIDR of the Node) via its primary IP. I have validated the issue can be reproduced via the following steps:
Packets captured on antrea-gw0 of the Node, note that the source MAC of the ARP request belongs to antrea-gw0 while the source IP belongs to ens192
Ping this Node from another Node, the Node can't be reached after step 2.
|
@luolanzone Could you schedule a meeting to discuss with @tnqn @wenyingd about the solution? |
This behavior can be controlled via arp_announce. Can we set arp_announce of antrea-gw0 to 1 to avoid using IP out of the subnet for arping? https://sysctl-explorer.net/net/ipv4/arp_announce/ |
Thanks. It works. Added solution candidate 4 into description. |
We'll use method 4 to fix this issue according to today's discussion. |
Fix antrea-io#5451 Signed-off-by: gran <gran@vmware.com>
Fix antrea-io#5451 Set arp_announce to 1 on Linux platform to make the ARP requests from host to gateway interface always use gateway IP as source IP. These ARP requests without gateway IP will be dropped by ARP SpoofGuard flow. Signed-off-by: gran <gran@vmware.com>
Fix antrea-io#5451 Set arp_announce to 1 on Linux platform to make the ARP requests from host to gateway interface always use gateway IP as source IP. These ARP requests without gateway IP will be dropped by ARP SpoofGuard flow. Signed-off-by: gran <gran@vmware.com>
Fix antrea-io#5451 Set arp_announce to 1 on Linux platform to make the ARP requests sent on the gateway interface always use the gateway IP as the source IP, otherwise the ARP requests would be dropped by ARP SpoofGuard flow. Signed-off-by: gran <gran@vmware.com>
Fix #5451 Set arp_announce to 1 on Linux platform to make the ARP requests sent on the gateway interface always use the gateway IP as the source IP, otherwise the ARP requests would be dropped by ARP SpoofGuard flow. Signed-off-by: gran <gran@vmware.com>
Fix antrea-io#5451 Set arp_announce to 1 on Linux platform to make the ARP requests sent on the gateway interface always use the gateway IP as the source IP, otherwise the ARP requests would be dropped by ARP SpoofGuard flow. Signed-off-by: gran <gran@vmware.com>
Fix antrea-io#5451 Set arp_announce to 1 on Linux platform to make the ARP requests sent on the gateway interface always use the gateway IP as the source IP, otherwise the ARP requests would be dropped by ARP SpoofGuard flow. Signed-off-by: gran <gran@vmware.com>
Fix antrea-io#5451 Set arp_announce to 1 on Linux platform to make the ARP requests sent on the gateway interface always use the gateway IP as the source IP, otherwise the ARP requests would be dropped by ARP SpoofGuard flow. Signed-off-by: gran <gran@vmware.com>
Fix antrea-io#5451 Set arp_announce to 1 on Linux platform to make the ARP requests sent on the gateway interface always use the gateway IP as the source IP, otherwise the ARP requests would be dropped by ARP SpoofGuard flow. Signed-off-by: gran <gran@vmware.com>
Fix #5451 Set arp_announce to 1 on Linux platform to make the ARP requests sent on the gateway interface always use the gateway IP as the source IP, otherwise the ARP requests would be dropped by ARP SpoofGuard flow. Signed-off-by: gran <gran@vmware.com>
Fix #5451 Set arp_announce to 1 on Linux platform to make the ARP requests sent on the gateway interface always use the gateway IP as the source IP, otherwise the ARP requests would be dropped by ARP SpoofGuard flow. Signed-off-by: gran <gran@vmware.com>
Fix #5451 Set arp_announce to 1 on Linux platform to make the ARP requests sent on the gateway interface always use the gateway IP as the source IP, otherwise the ARP requests would be dropped by ARP SpoofGuard flow. Signed-off-by: gran <gran@vmware.com>
Describe the bug
Below e2e test case took too long or failed.
PASS: TestClusterIPv4/HostNetwork_Endpoints/Connect_to_Service_ClusterIP_from_Pod (15.53s)
To Reproduce
Run above e2e test case in flexible-ipam mode.
Expected
Test case passed quickly.
Actual behavior
Test case took too long or failed.
Versions:
Latest main.
Additional context
In this test case, Pod will access a Service ClusterIP with HostNetwork Endpoints.
When the replied packet leave host network, the host will send an ARP request to ask source Pod MAC by source Pod IP.
This ARP request
SHA
isantrea-gw0
MAC, andSPA
is host uplink IP, fromantrea-gw0
to OVS bridge, then it will be broadcasted to all ports.When the other hosts received above ARP request, they will update this
SHA-SPA
pair to local ARP table, but actually it should not work and causes L2 packet loss between this two host for several seconds.Key points
SHA
isantrea-gw0
MAC butSPA
is host uplink IPuplink
Solution candidates
Cons: testOVSRestartSameNode will report arping loss during OVS restart.
Cons: Complex DP change.
Cons: Some DP change.
net.ipv4.conf.antrea-gw0.arp_announce=1
Cons: Cannot block user to generate an arp request
arping -c 1 -s <node_ip> -I antrea-gw0 <pod_ip>
Risk: 4<1<3<2
The text was updated successfully, but these errors were encountered: