One-arm echo BFD tests nothing but whether your own packet survives a round trip — and if that packet's source IP defaults to the same value as its destination IP, a confirmed list of Huawei switches simply drops it, no error, no log. The forwarding rule behind it, the switch models it bites on, the Loopback-address fix, and a case where a completely unrelated feature produced the exact same symptom.
By the AtlasCommTech engineering team — 13 years of carrier & enterprise network deployments · Updated July 2026
One-arm echo doesn't test the peer at all — it tests whether your own echo packet can survive a round trip through it. That's the detail almost nobody reads until a session refuses to come Up.
One-arm echo BFD exists for exactly one situation: the peer doesn't support BFD, or hasn't enabled it. Instead of a real two-way BFD exchange, the local device builds a UDP packet addressed to its own outbound interface's IP and simply asks the peer to forward it straight back — a loopback test, not a negotiation. If the packet's source IP isn't explicitly configured, it defaults to that same destination IP, which makes it a same-source-same-destination packet. A long list of network devices, switches included, treat that shape of packet as anomalous and drop it outright — no error, no log, nothing but a session that quietly stays Down.
What follows is how the packet is actually built, three real field cases — a straightforward interconnect that stayed Down from day one, the confirmed model list this forwarding behavior shows up on, and a case where a completely different feature (DHCPv6 relay traffic tripping a rate limiter) produced BFD flapping that looked exactly like a real link failure — plus the FAQ answers that come up whenever these tickets get discussed.
A one-arm echo session that never comes Up and one that comes Up then flaps are two different faults with two different root causes — don't chase the same fix for both.
Placing the symptom on this tree first tells you whether you're looking at a packet-forwarding rule or an unrelated feature borrowing BFD's symptom.
Diagram labels are kept in English for engineering clarity.
Both branches produce the same end symptom — BFD Down — but only one of them is actually a BFD problem. The right-hand branch is a control-plane protection feature reacting to unrelated traffic, and no amount of re-reading the BFD configuration will fix it.
Three real field cases — the exact fields in the one-arm echo packet, why it gets dropped, and a case where BFD flapped for a reason that had nothing to do with BFD.
Before chasing the fault, it's worth knowing exactly what the local device puts in the packet — the rule that causes all of this sits in four fields.
#
interface Vlanif1
ip address 192.168.1.14 255.255.255.0
#
bfd atob bind peer-ip 192.168.1.2 interface Vlanif1 source-ip 192.168.1.14 one-arm-echo
discriminator local 1
min-echo-rx-interval 100
commit
#
// source-ip 192.168.1.14 is identical to the local VLANIF address -> same-source-same-destination
// the peer receives this shape of packet and drops it -> session never comes Up
NE8000 and an S5720-SI interconnected directly; the NE8000 side reported the BFD session Down and never recovered.
[HUAWEI-bfd-session-ato] display this
#
bfd ato bind peer-ip 10.1.1.1 interface Vlanif100 source-ip 10.1.1.2 one-arm-echo
discriminator local 1
min-echo-rx-interval 100
commit
#
[HUAWEI-bfd-session-ato] display bfd session all
--------------------------------------------------------------------------------
Local Remote PeerIpAddr State Type InterfaceName
--------------------------------------------------------------------------------
1 - 10.1.1.1 Down S_IP_IF Vlanif100
--------------------------------------------------------------------------------
Total UP/DOWN Session Number : 0/1
// change source-ip to a Loopback address instead of an interface-facing address:
[HUAWEI-bfd-session-ato_1] display this
#
bfd ato_1 bind peer-ip 10.1.1.1 interface Vlanif100 source-ip 1.1.1.1 one-arm-echo
discriminator local 2
min-echo-rx-interval 100
commit
#
[HUAWEI] display bfd session all
--------------------------------------------------------------------------------
Local Remote PeerIpAddr State Type InterfaceName
--------------------------------------------------------------------------------
2 - 10.1.1.1 Up S_IP_IF Vlanif100
--------------------------------------------------------------------------------
Total UP/DOWN Session Number : 1/0
Two switches directly connected, one running one-arm echo and the other simply forwarding Layer 3 traffic normally — the session never established at all.
bfd session-name bind peer-ip peer-ip [ vpn-instance vpn-instance-name ]
interface interface-type interface-number [ source-ip ip-address ] one-arm-echo
// source-ip is technically optional, but leaving it unset means it defaults to the
// outbound interface's own IP -> a same-source-same-destination packet -> dropped
// on the confirmed model list above, and on any device with the anti-attack rule enabled
An S12700E running DHCP Relay had a completely normal BFD session with its peer — until it started flapping Down and Up with no link event behind it at all.
Dec 25 2023 15:03:18 S12700-1 %%01BFD/4/STACHG_TODWN(l)[615983]:BFD session changed to
Down. (Discriminator=8235, Diagnostic=DetectDown, Applications=OSPF, BindInterfaceName=Eth-Trunk99)
Dec 25 2023 15:03:19 S12700-1 %%01BFD/4/STACHG_TOUP(l)[615986]:BFD session changed to Up.
<HUAWEI> display arp
IP ADDRESS MAC ADDRESS EXPIRE(M) TYPE INTERFACE
------------------------------------------------------------------------------
10.82.192.2 00e0-fc6a-1111 10 D-0/0 Eth-Trunk99
// ARP entry aged -> brief loss of L2 reachability to the BFD peer
Dec 25 2023 15:11:40 S12700-1 %%01DEFD/6/HOSTCAR_DROPPKT(l)[616002]:Rate of packets to
cpu exceeded the HOSTCAR limit. (CarID=5266, PacketInfo=The growth rate of top 3 packets
is: MAC1=00e0-fc6a-1111, Protocol1=dhcpv6-request, MAC2=00e0-fc6a-1111, Protocol2=nd,
MAC3=00e0-fc6a-1111, Protocol3=arp)
// DHCPv6 Request flood from the same MAC tripped the 10pps user-level CAR limit,
// which then dropped ARP packets from that MAC too -> BFD detect timeout -> flap
Once the tree above has told you whether it's a packet-forwarding rule or an unrelated feature, these five account for most of what's actually wrong.
SYMPTOMThe one-arm echo session simply never reaches Up. No error is logged on either side — the packet just doesn't come back.
CAUSEIf source-ip isn't explicitly configured on the bfd bind command, it defaults to the same address as the destination IP (the local outbound interface's own IP). Many devices, on receiving a packet whose source and destination IP are identical, treat it as anomalous and drop it — the same forwarding logic that protects against certain spoofing patterns catches this completely legitimate echo packet too.
FIXAlways configure source-ip explicitly to an address different from the outbound interface's own IP — never leave it to default.
SYMPTOMThe exact same one-arm echo configuration works on one switch model and stays Down on another.
CAUSEAs of V200R022C00, a specific list of models drops packets with identical source and destination IP outright: S600-E, S1720, S2720-EI, S5720-LI, S5720S-LI, S5720I-SI, S5735S-H, S5736-S, S6720S-S — and the S5720-SI confirmed separately in Case 1. Separately, on any model, enabling ip anti-attack source-ip equals destination-ip drop produces the exact same drop regardless of which switch it is.
FIXTreat this as a forwarding-plane fact to check for on whichever model sits at the far end of a one-arm echo session, not an edge case — and check whether the anti-attack command is enabled even on models not on the list above.
undo ip anti-attack source-ip equals destination-ip drop
// stops the device from dropping same-source-same-destination packets outright
SYMPTOMThe session is Down; source-ip is technically configured, but it happens to match the outbound interface's own IP anyway.
CAUSEConfiguring source-ip to the same value as the interface it's bound to has the identical effect as leaving it unset — it still produces a same-source-same-destination packet. The fix isn't "configure source-ip", it's "configure source-ip to something genuinely different."
FIXUse a Loopback interface's address as source-ip whenever one is available — it's stable, unambiguous, and guaranteed not to collide with the outbound interface's own address.
SYMPTOMsource-ip is correctly set to a different address, the same-source-same-destination problem is gone, but the session is still Down.
CAUSEIf the peer device has URPF enabled, it checks whether it has a valid route back to the packet's source IP before accepting it. A Loopback address used as source-ip that the peer has no route to gets discarded by URPF — a completely different failure mode that looks identical from the outside.
FIXMake sure the peer has a valid, reachable route to whatever address is configured as source-ip before assuming the Loopback fix alone will work.
SYMPTOMBFD flaps Down and Up with Diagnostic=DetectDown, but there's no actual physical link event, interface flap, or configuration change anywhere near the timestamp.
CAUSEA burst of a particular protocol from one source MAC — DHCPv6 Request in this case — can trip the interface's user-level CAR rate limit (HOSTCAR), which then also drops other protocol packets from that same MAC, including ARP. The resulting ARP aging breaks Layer 2 reachability to the BFD peer just long enough for BFD's own detect timer to expire.
FIXWhen BFD flaps without a real link event, check for HOSTCAR_DROPPKT log entries around the same timestamp before assuming it's a BFD or physical-layer problem — disabling unnecessary user-level rate limiting on network-facing interfaces is the standard fix once this pattern is confirmed.
Pulled straight from the field — the ones worth having an answer ready for.
Normal BFD is a real two-way protocol — both sides run BFD, exchange control packets, and independently track session state. One-arm echo isn't a negotiation at all: only the local device runs BFD; it sends a UDP packet addressed to its own interface's IP and simply expects the peer to forward it straight back, unmodified. It exists specifically for peers that don't support BFD, or haven't enabled it.
Yes, always. It's optional only in the sense that the command will accept omitting it — in practice, omitting it means the source IP defaults to the destination IP, which is exactly the same-source-same-destination shape that gets dropped on a confirmed list of switch models. Always configure source-ip explicitly to a different address, ideally a Loopback.
No. One-arm echo is a workaround for peers that can't run real BFD. If both sides support it, configure a standard two-way BFD session (asynchronous mode, with or without echo function) instead — it gives you genuine bidirectional detection rather than a one-sided loopback test.
Check display arp for the peer's entry first — if it aged out right before the Down event, something briefly broke Layer 2 reachability. Then check the logs around that exact timestamp for HOSTCAR_DROPPKT or similar CPU-protection drop events; a burst of some other protocol from the same source MAC tripping a rate limiter is a common cause that has nothing to do with BFD or the physical link itself.
This is expected, not a fault. When a BFD session goes Down, if the far end sends a BFD packet reporting Up before it has received the local side's Down notification, the local side deliberately ignores that stale Up report and stays Down rather than re-establishing on it immediately — this avoids state oscillation. The extra delay is that safety margin, not a malfunction.
This note is built around Huawei S-series switch and NE-series router one-arm echo BFD deployments, using the display bfd session / display arp commands shown above. The confirmed model list and drop behavior reflect V200R022C00-era testing — always verify same-source-same-destination handling directly on your own firmware version and model, since Huawei's compatibility list can change across releases. It doesn't cover BFD for VXLAN/EVPN underlay scenarios, or multi-hop BFD in depth.
Tell us the switch model and your bfd bind command, plus display bfd session / display arp output, and we'll help you read it.