TSN crash when ToR forwards unknown unicast packet
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
Juniper Openstack | Status tracked in Trunk | |||||
R2.20 |
Fix Committed
|
High
|
Praveen | |||
Trunk |
Fix Committed
|
High
|
Praveen |
Bug Description
(gdb) bt
#0 0x00007f475cb540d5 in raise () from /lib/x86_
#1 0x00007f475cb5783b in abort () from /lib/x86_
#2 0x00007f475cb4cd9e in ?? () from /lib/x86_
#3 0x00007f475cb4ce42 in __assert_fail () from /lib/x86_
#4 0x00000000015ba15a in FlowEntry::SetRpfNH (this=0x7f46d40
at controller/
#5 0x00000000015ba9d7 in FlowEntry:
rev_
#6 0x00000000015f2259 in PktFlowInfo::Add (this=0x7f4700f
at controller/
#7 0x00000000015fce77 in FlowHandler::Run (this=0x7f46d40
#8 0x00000000015f8bd5 in Proto::ProcessProto (this=0x7f47540
#9 0x00000000015faf0e in boost::
p=0x7f47540
#10 0x00000000015fa920 in boost::
at build/include/
#11 0x00000000015fa308 in boost::
at build/include/
#12 0x00000000015f9ebf in boost::
function_
#13 0x00000000015ed361 in boost::
at build/include/
#14 0x00000000015fb2f6 in QueueTaskRunner
this=0x3094800) at controller/
#15 0x00000000015fb12e in QueueTaskRunner
at controller/
#16 0x0000000001bfdf21 in TaskImpl::execute (this=0x3081a40) at controller/
#17 0x00007f475d71eece in ?? () from /usr/lib/
#18 0x00007f475d715e0b in ?? () from /usr/lib/
#19 0x00007f475d7146f2 in ?? () from /usr/lib/
#20 0x00007f475d70f3ce in ?? () from /usr/lib/
#21 0x00007f475d70f270 in ?? () from /usr/lib/
#22 0x00007f475d948e9a in start_thread () from /lib/x86_
#23 0x00007f475cc1138d in clone () from /lib/x86_
#24 0x0000000000000000 in ?? ()
The setup used here is,
1. VN is created with subnet 1.1.1.0/24. VXLAN is 2000
2. There are 2 MX in network. Gateway ip 1.1.1.1 is assigned as VRRP-IP on MX
3. The MAC for VRRP IP is 00:00:5E:00:01:01
4. Due to 2 MX, route for 1.1.1.0/24 is ECMP with the 2 MX
5. Baremetal with IP 1.1.1.5 pings Gateway IP 1.1.1.1
6. The ToR does not have FDB for 00:00:5E:00:01:01. As a result, it sends packet to TSN for flooding
VRouter on TSN does following:
1. VRouter receives packets on VXLAN 2000
2. VRouter does route lookup for src-ip (1.1.1.5)
3. Route lookup for src-ip 1.1.1.5 hits ECMP route 1.1.1.0/24. ECMP NH contains the two MX
4. VRouter traps packet for flow-processing
Agent on TSN does following:
1. Agent tries to create L2 Flow
2. Agent tries to set RPF NH for the flow
3. The RPF lookup for 1.1.1.5 hits ECMP Route
Problem:
Agent is doing IP lookup for RPF checks for packet from Baremetal. In L2 Flow setup, agent is not expecting ECMP-NH in RPF processing.
Fix:
When flow is being setup for BMS, agent is not aware of IP for BMS. So, RPF check should be based on Src-MAC instead of Src-IP