VrfTimeout() in agent due to reference to VN in InterfaceUveTable::UveInterfaceState
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
Juniper Openstack | Status tracked in Trunk | |||||
R2.20 |
Fix Committed
|
Undecided
|
Ashok Singh | |||
Trunk |
Fix Committed
|
Undecided
|
Ashok Singh |
Bug Description
(gdb) dump_vrf_entries
-------
0x7fa428088450 default-
0x7fa3c8007ed0 default-
(gdb) dump_vn_entries
-------
0x7fa3c8007160 default-
(gdb) dump_intf_entries
-------
0x7fa4280a28f0 eth3 flags=0 ref=8
0x7fa3dc004f60 tap0625cd0d-71 flags=0 ref=0
0x7fa3dc005a60 tap0f874b79-f7 flags=0 ref=0
0x7fa3dc005fe0 tapa732df20-df flags=0 ref=0
0x7fa3dc0054e0 tapb0bc882d-05 flags=0 ref=0
0x7fa4280a31e0 vhost0 flags=0 ref=3
0x7fa4280a5e70 pkt0 flags=0 ref=1
VRFEntry is deleted but has ref-count of 3
$13 = (VrfEntry) {
<AgentRefCoun
_vptr.
refcount_ = (tbb::atomic) 3
},
<AgentDBEntry> = {
<DBEntry> = {
<DBEntryBase> = {
chg_list_ = {
next_ = 0x0,
prev_ = 0x0
}, <No data fields>}, <No data fields>},
tpart_ = 0x7fa42801b5b0,
state_ = std::map with 1 elements = {
[0] = 0x7fa3c8006f70
},
flags = 2 '\002',
onremoveq_ = (tbb::atomic) 0 '\000',
},
members of DBEntry:
node_ = {
parent_ = 0x7fa42801b638,
left_ = 0x7fa4280884c0,
right_ = 0x0,
color_ = boost::
}, <No data fields>}, <No data fields>}
},
members of AgentDBEntry:
flags_ = 0 '\000'
},
members of VrfEntry:
static kInvalidIndex = 4294967295,
static kDeleteTimeout = 900000,
name_ = "default-
id_ = 2,
VnEntry is deleted with ref-count of 2
(gdb) p *(VnEntry *) 0x7fa3c8007160
$14 = (VnEntry) {
<AgentRefCoun
_vptr.
refcount_ = (tbb::atomic) 2
},
<AgentOperDBE
<AgentDBEntry> = {
<DBEntry> = {
chg_list_ = {
}, <No data fields>}, <No data fields>},
tpart_ = 0x7fa428020120,
state_ = std::map with 1 elements = {
[0] = 0x7fa3c80066a0
},
flags = 2 '\002',
},
members of DBEntry:
node_ = {
left_ = 0x0,
}, <No data fields>}, <No data fields>}
},
members of AgentDBEntry:
flags_ = 0 '\000'
},
members of AgentOperDBEntry:
ifmap_
},
members of VnEntry:
agent_ = 0x371f500,
---Type <return> to continue, or q <return> to quit---
uuid_ = (boost:
name_ = "default-
acl_ = (boost:
mirror_acl_ = (boost:
mirror_cfg_acl_ = (boost:
vrf_ = (boost:
VmInterfaces are not deleted. They dont have any floating-ip also
(gdb) p *(VmInterface *) 0x7fa3dc004f60
$15 = (VmInterface) {
<Interface> = {
<AgentRefCo
_
refcount_ = (tbb::atomic) 0
},
<AgentOperD
<
<DBEntry> = {
}, <No data fields>}, <No data fields>},
tpart_ = 0x7fa428017fa0,
state_ = std::map with 7 elements = {
[1] = 0x7fa3dc003c50,
[3] = 0x7fa3c8048250,
[5] = 0x7fa3dc002790,
[6] = 0x7fa3dc004a80,
[7] = 0x7fa41802bad0,
[9] = 0x7fa3dc0066b0,
[16] = 0x7fa3dc006960
},
flags = 0 '\000',
},
members of DBEntry:
node_ = {
}, <No data fields>}, <No data fields>}
},
members of AgentDBEntry:
---Type <return> to continue, or q <return> to quit---
flags_ = 0 '\000'
},
members of AgentOperDBEntry:
ifmap_
},
members of Interface:
static kInvalidIndex = 4294967295,
type_ = Interface:
uuid_ = (boost:
name_ = "tap0625cd0d-71",
vrf_ = (boost:
label_ = 4294967295,
l2_label_ = 4294967295,
ipv4_active_ = false,
ipv6_active_ = false,
l2_active_ = false,
id_ = 3,
dhcp_enabled_ = false,
dns_enabled_ = false,
mac_ = 0a:e1:94:9c:e4:f8,
os_index_ = 14,
os_oper_state_ = true,
admin_state_ = true,
test_
flow_key_nh_ = (boost:
transport_ = Interface:
table_ = 0x0
},
members of VmInterface:
static kInvalidVlanId = 65535,
static kInvalidPmdId = 65535,
vm_ = (boost:
vn_ = (boost:
ip_addr_ = {
addr_ = {
s_addr = 67240450
}
},
mdata_addr_ = {
addr_ = {
s_addr = 50396841
}
},
subnet_
addr_ = {
s_addr = 0
---Type <return> to continue, or q <return> to quit---
}
},
ip6_addr_ = {
addr_ = {
__in6_u = {
__u6_addr8 = '\000' <repeats 15 times>,
__u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0},
__u6_addr32 = {0, 0, 0, 0}
}
},
scope_id_ = 0
},
vm_mac_ = "02:06:
policy_enabled_ = false,
mirror_entry_ = (boost:
mirror_direction_ = Interface::UNKNOWN,
cfg_name_ = "",
fabric_port_ = false,
need_
dhcp_enable_ = false,
do_dhcp_relay_ = false,
vm_name_ = "test2_
vm_project_uuid_ = (boost:
vxlan_id_ = 0,
bridging_ = true,
layer3_
flood_
mac_set_ = true,
ecmp_ = false,
tx_vlan_id_ = 65535,
rx_vlan_id_ = 65535,
parent_ = (boost:
local_preference_ = VmInterface:
oper_
_vptr.
dhcp_options_ = std::vector of length 0, capacity 0,
host_routes_ = std::vector of length 0, capacity 0
},
sg_list_ = {
list_ = std::set with 0 elements
},
floating_ip_list_ = {
v4_count_ = 0,
v6_count_ = 0,
list_ = std::set with 0 elements
},
---Type <return> to continue, or q <return> to quit---
service_
list_ = std::set with 0 elements
},
static_
list_ = std::set with 0 elements
},
allowed_
list_ = std::set with 0 elements
},
peer_ = {
_M_ptr = 0x7fa3dc004670
},
vrf_assign_
list_ = std::set with 0 elements
},
vrf_assign_acl_ = (boost:
vm_ip_gw_addr_ = {
addr_ = {
s_addr = 16908802
}
},
vm_ip6_gw_addr_ = {
addr_ = {
__in6_u = {
__u6_addr8 = '\000' <repeats 15 times>,
__u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0},
__u6_addr32 = {0, 0, 0, 0}
}
},
scope_id_ = 0
},
device_type_ = VmInterface:
vmi_type_ = VmInterface:
configurer_ = 1 '\001',
subnet_ = {
addr_ = {
s_addr = 0
}
},
subnet_plen_ = 0 '\000',
ethernet_tag_ = 2002,
logical_
}
InterfaceUveTab
(gdb) p *(InterfaceUveT
$16 = (InterfaceUveTa
<DBState> = {
_vptr.DBState = 0x1cd7c90
},
members of InterfaceUveTab
cfg_name_ = "default-
fip_list_ = std::set with 1 elements = {
[0] = {
<
installed_ = true,
},
members of VmInterface:
floating_ip_ = {
type_ = boost::
addr_ = {
s_addr = 2229128202
}
},
addr_ = {
__in6_u = {
}
},
scope_id_ = 0
}
},
vn_ = (boost:
vrf_ = (boost:
vrf_name_ = "default-
vn_uuid_ = (boost:
l2_installed_ = true,
ethernet_tag_ = 0
}
}
}
Summary:
--------------
Agent had VmInterface with floating-ip entries first. Later, config is deleted for all VN, VRF, VMI and Floating-IP.
However, nova-vif-driver has not deleted the interface. In this case,
1. (InterfaceUveTa
2. DBState is not cleared for VMInterface by IFMapNodeState
Core file and unstripped binary at bhushana@ mayamruga: ~/Documents/ technical/ bugs/1466176