Skip to content

Commit c702a57

Browse files
Revert "[rfc1213] Interface MIB add l3 vlan interfaces & aggregate rif counters (#133)" (#151)
This reverts commit 253f58e. Signed-off-by: SuvarnaMeenakshi <[email protected]>
1 parent bdfcc13 commit c702a57

File tree

12 files changed

+28
-856
lines changed

12 files changed

+28
-856
lines changed

src/sonic_ax_impl/mibs/__init__.py

+6-107
Original file line numberDiff line numberDiff line change
@@ -43,20 +43,6 @@
4343
"tx4power": 43,
4444
}
4545

46-
RIF_COUNTERS_AGGR_MAP = {
47-
b"SAI_PORT_STAT_IF_IN_OCTETS": b"SAI_ROUTER_INTERFACE_STAT_IN_OCTETS",
48-
b"SAI_PORT_STAT_IF_IN_UCAST_PKTS": b"SAI_ROUTER_INTERFACE_STAT_IN_PACKETS",
49-
b"SAI_PORT_STAT_IF_IN_ERRORS": b"SAI_ROUTER_INTERFACE_STAT_IN_ERROR_PACKETS",
50-
b"SAI_PORT_STAT_IF_OUT_OCTETS": b"SAI_ROUTER_INTERFACE_STAT_OUT_OCTETS",
51-
b"SAI_PORT_STAT_IF_OUT_UCAST_PKTS": b"SAI_ROUTER_INTERFACE_STAT_OUT_PACKETS",
52-
b"SAI_PORT_STAT_IF_OUT_ERRORS": b"SAI_ROUTER_INTERFACE_STAT_OUT_ERROR_PACKETS"
53-
}
54-
55-
RIF_DROPS_AGGR_MAP = {
56-
b"SAI_PORT_STAT_IF_IN_ERRORS": b"SAI_ROUTER_INTERFACE_STAT_IN_ERROR_PACKETS",
57-
b"SAI_PORT_STAT_IF_OUT_ERRORS": b"SAI_ROUTER_INTERFACE_STAT_OUT_ERROR_PACKETS"
58-
}
59-
6046
# IfIndex to OID multiplier for transceiver
6147
IFINDEX_SUB_ID_MULTIPLIER = 1000
6248

@@ -127,14 +113,6 @@ def if_entry_table(if_name):
127113
return b'PORT_TABLE:' + if_name
128114

129115

130-
def vlan_entry_table(if_name):
131-
"""
132-
:param if_name: given interface to cast.
133-
:return: VLAN_TABLE key.
134-
"""
135-
return b'VLAN_TABLE:' + if_name
136-
137-
138116
def lag_entry_table(lag_name):
139117
"""
140118
:param lag_name: given lag to cast.
@@ -290,48 +268,6 @@ def init_sync_d_interface_tables(db_conn):
290268

291269
return if_name_map, if_alias_map, if_id_map, oid_sai_map, oid_name_map
292270

293-
294-
def init_sync_d_rif_tables(db_conn):
295-
"""
296-
Initializes map of RIF SAI oids to port SAI oid.
297-
:return: dict
298-
"""
299-
rif_port_map = port_util.get_rif_port_map(db_conn)
300-
301-
if not rif_port_map:
302-
return {}, {}
303-
port_rif_map = {port: rif for rif, port in rif_port_map.items()}
304-
logger.debug("Rif port map:\n" + pprint.pformat(rif_port_map, indent=2))
305-
306-
return rif_port_map, port_rif_map
307-
308-
309-
def init_sync_d_vlan_tables(db_conn):
310-
"""
311-
Initializes vlan interface maps for SyncD-connected MIB(s).
312-
:return: tuple(vlan_name_map, oid_sai_map, oid_name_map)
313-
"""
314-
315-
vlan_name_map = port_util.get_vlan_interface_oid_map(db_conn)
316-
317-
logger.debug("Vlan oid map:\n" + pprint.pformat(vlan_name_map, indent=2))
318-
319-
# { OID -> sai_id }
320-
oid_sai_map = {get_index(if_name): sai_id for sai_id, if_name in vlan_name_map.items()
321-
# only map the interface if it's a style understood to be a SONiC interface.
322-
if get_index(if_name) is not None}
323-
logger.debug("OID sai map:\n" + pprint.pformat(oid_sai_map, indent=2))
324-
325-
# { OID -> if_name (SONiC) }
326-
oid_name_map = {get_index(if_name): if_name for sai_id, if_name in vlan_name_map.items()
327-
# only map the interface if it's a style understood to be a SONiC interface.
328-
if get_index(if_name) is not None}
329-
330-
logger.debug("OID name map:\n" + pprint.pformat(oid_name_map, indent=2))
331-
332-
return vlan_name_map, oid_sai_map, oid_name_map
333-
334-
335271
def init_sync_d_lag_tables(db_conn):
336272
"""
337273
Helper method. Connects to and initializes LAG interface maps for SyncD-connected MIB(s).
@@ -346,16 +282,13 @@ def init_sync_d_lag_tables(db_conn):
346282
if_name_lag_name_map = {}
347283
# { OID -> lag_name (SONiC) }
348284
oid_lag_name_map = {}
349-
# { lag_name (SONiC) -> lag_oid (SAI) }
350-
lag_sai_map = {}
285+
286+
db_conn.connect(APPL_DB)
351287

352288
lag_entries = db_conn.keys(APPL_DB, b"LAG_TABLE:*")
353289

354290
if not lag_entries:
355-
return lag_name_if_name_map, if_name_lag_name_map, oid_lag_name_map, lag_sai_map
356-
357-
lag_sai_map = db_conn.get_all(COUNTERS_DB, b"COUNTERS_LAG_NAME_MAP")
358-
lag_sai_map = {name: sai_id.lstrip(b"oid:0x") for name, sai_id in lag_sai_map.items()}
291+
return lag_name_if_name_map, if_name_lag_name_map, oid_lag_name_map
359292

360293
for lag_entry in lag_entries:
361294
lag_name = lag_entry[len(b"LAG_TABLE:"):]
@@ -377,7 +310,7 @@ def member_name_str(val, lag_name):
377310
if idx:
378311
oid_lag_name_map[idx] = if_name
379312

380-
return lag_name_if_name_map, if_name_lag_name_map, oid_lag_name_map, lag_sai_map
313+
return lag_name_if_name_map, if_name_lag_name_map, oid_lag_name_map
381314

382315
def init_sync_d_queue_tables(db_conn):
383316
"""
@@ -651,7 +584,6 @@ def init_namespace_sync_d_lag_tables(dbs):
651584
lag_name_if_name_map = {}
652585
if_name_lag_name_map = {}
653586
oid_lag_name_map = {}
654-
lag_sai_map = {}
655587

656588
"""
657589
all_ns_db - will have db_conn to all namespace DBs and
@@ -663,45 +595,12 @@ def init_namespace_sync_d_lag_tables(dbs):
663595
for db_conn in Namespace.get_non_host_dbs(dbs):
664596
lag_name_if_name_map_ns, \
665597
if_name_lag_name_map_ns, \
666-
oid_lag_name_map_ns, \
667-
lag_sai_map_ns = init_sync_d_lag_tables(db_conn)
598+
oid_lag_name_map_ns = init_sync_d_lag_tables(db_conn)
668599
lag_name_if_name_map.update(lag_name_if_name_map_ns)
669600
if_name_lag_name_map.update(if_name_lag_name_map_ns)
670601
oid_lag_name_map.update(oid_lag_name_map_ns)
671-
lag_sai_map.update(lag_sai_map_ns)
672-
673-
return lag_name_if_name_map, if_name_lag_name_map, oid_lag_name_map, lag_sai_map
674-
675-
@staticmethod
676-
def init_namespace_sync_d_rif_tables(dbs):
677-
rif_port_map = {}
678-
port_rif_map = {}
679-
680-
Namespace.connect_namespace_dbs(dbs)
681-
for db_conn in Namespace.get_non_host_dbs(dbs):
682-
rif_port_map_ns, \
683-
port_rif_map_ns = init_sync_d_rif_tables(db_conn)
684-
rif_port_map.update(rif_port_map_ns)
685-
port_rif_map.update(port_rif_map_ns)
686-
687-
return rif_port_map, port_rif_map
688-
689-
@staticmethod
690-
def init_namespace_sync_d_vlan_tables(dbs):
691-
vlan_name_map = {}
692-
oid_sai_map = {}
693-
oid_name_map = {}
694-
695-
Namespace.connect_namespace_dbs(dbs)
696-
for db_conn in Namespace.get_non_host_dbs(dbs):
697-
vlan_name_map_ns, \
698-
oid_sai_map_ns, \
699-
oid_name_map_ns = init_sync_d_vlan_tables(db_conn)
700-
vlan_name_map.update(vlan_name_map_ns)
701-
oid_sai_map.update(oid_sai_map_ns)
702-
oid_name_map.update(oid_name_map_ns)
703602

704-
return vlan_name_map, oid_sai_map, oid_name_map
603+
return lag_name_if_name_map, if_name_lag_name_map, oid_lag_name_map
705604

706605
@staticmethod
707606
def init_namespace_sync_d_queue_tables(dbs):

src/sonic_ax_impl/mibs/ietf/rfc1213.py

+5-73
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
from bisect import bisect_right
55

66
from sonic_ax_impl import mibs
7-
from sonic_ax_impl import logger
87
from sonic_ax_impl.mibs import Namespace
98
from ax_interface.mib import MIBMeta, ValueType, MIBUpdater, MIBEntry, SubtreeMIBEntry, OverlayAdpaterMIBEntry, OidMIBEntry
109
from ax_interface.encodings import ObjectIdentifier
@@ -50,8 +49,7 @@ class DbTables(int, Enum):
5049
class IfTypes(int, Enum):
5150
""" IANA ifTypes """
5251
ethernetCsmacd = 6
53-
l3ipvlan = 136
54-
ieee8023adLag = 161
52+
ieee8023adLag = 161
5553

5654
class ArpUpdater(MIBUpdater):
5755
def __init__(self):
@@ -159,13 +157,8 @@ def __init__(self):
159157
self.lag_name_if_name_map = {}
160158
self.if_name_lag_name_map = {}
161159
self.oid_lag_name_map = {}
162-
self.lag_sai_map = {}
163160
self.mgmt_oid_name_map = {}
164161
self.mgmt_alias_map = {}
165-
self.vlan_oid_name_map = {}
166-
self.vlan_name_map = {}
167-
self.rif_port_map = {}
168-
self.port_rif_map = {}
169162

170163
# cache of interface counters
171164
self.if_counters = {}
@@ -175,7 +168,6 @@ def __init__(self):
175168
self.if_id_map = {}
176169
self.oid_sai_map = {}
177170
self.oid_name_map = {}
178-
self.rif_counters = {}
179171

180172
def reinit_data(self):
181173
"""
@@ -194,13 +186,6 @@ def reinit_data(self):
194186
self.mgmt_oid_name_map, \
195187
self.mgmt_alias_map = mibs.init_mgmt_interface_tables(self.db_conn[0])
196188

197-
self.vlan_name_map, \
198-
self.vlan_oid_sai_map, \
199-
self.vlan_oid_name_map = Namespace.init_namespace_sync_d_vlan_tables(self.db_conn)
200-
201-
self.rif_port_map, \
202-
self.port_rif_map = Namespace.init_namespace_sync_d_rif_tables(self.db_conn)
203-
204189
def update_data(self):
205190
"""
206191
Update redis (caches config)
@@ -210,24 +195,13 @@ def update_data(self):
210195
{sai_id: Namespace.dbs_get_all(self.db_conn, mibs.COUNTERS_DB, mibs.counter_table(sai_id), blocking=True)
211196
for sai_id in self.if_id_map}
212197

213-
rif_sai_ids = list(self.rif_port_map) + list(self.vlan_name_map)
214-
215-
self.rif_counters = \
216-
{sai_id: Namespace.dbs_get_all(self.db_conn, mibs.COUNTERS_DB, mibs.counter_table(sai_id), blocking=True)
217-
for sai_id in rif_sai_ids}
218-
219-
if self.rif_counters:
220-
self.aggregate_counters()
221-
222198
self.lag_name_if_name_map, \
223199
self.if_name_lag_name_map, \
224-
self.oid_lag_name_map, \
225-
self.lag_sai_map = Namespace.init_namespace_sync_d_lag_tables(self.db_conn)
200+
self.oid_lag_name_map = Namespace.init_namespace_sync_d_lag_tables(self.db_conn)
226201

227202
self.if_range = sorted(list(self.oid_sai_map.keys()) +
228203
list(self.oid_lag_name_map.keys()) +
229-
list(self.mgmt_oid_name_map.keys()) +
230-
list(self.vlan_oid_name_map.keys()))
204+
list(self.mgmt_oid_name_map.keys()))
231205
self.if_range = [(i,) for i in self.if_range]
232206

233207
def get_next(self, sub_id):
@@ -271,8 +245,6 @@ def interface_description(self, sub_id):
271245
return self.oid_lag_name_map[oid]
272246
elif oid in self.mgmt_oid_name_map:
273247
return self.mgmt_alias_map[self.mgmt_oid_name_map[oid]]
274-
elif oid in self.vlan_oid_name_map:
275-
return self.vlan_oid_name_map[oid]
276248

277249
return self.if_alias_map[self.oid_name_map[oid]]
278250

@@ -282,13 +254,7 @@ def _get_counter(self, oid, table_name):
282254
:param table_name: the redis table (either IntEnum or string literal) to query.
283255
:return: the counter for the respective sub_id/table.
284256
"""
285-
sai_id = ''
286-
if oid in self.oid_sai_map:
287-
sai_id = self.oid_sai_map[oid]
288-
elif oid in self.vlan_oid_sai_map:
289-
sai_id = self.vlan_oid_sai_map[oid]
290-
else:
291-
logger.warning("Unexpected oid {}".format(oid))
257+
sai_id = self.oid_sai_map[oid]
292258
# Enum.name or table_name = 'name_of_the_table'
293259
_table_name = bytes(getattr(table_name, 'name', table_name), 'utf-8')
294260

@@ -302,29 +268,6 @@ def _get_counter(self, oid, table_name):
302268
mibs.logger.warning("SyncD 'COUNTERS_DB' missing attribute '{}'.".format(e))
303269
return None
304270

305-
def aggregate_counters(self):
306-
"""
307-
For ports with l3 router interfaces l3 drops may be counted separately (RIF counters)
308-
add l3 drops to l2 drop counters cache according to mapping
309-
310-
For l3vlan map l3 counters to l2 counters
311-
"""
312-
for rif_sai_id, port_sai_id in self.rif_port_map.items():
313-
if port_sai_id in self.if_id_map:
314-
for port_counter_name, rif_counter_name in mibs.RIF_DROPS_AGGR_MAP.items():
315-
self.if_counters[port_sai_id][port_counter_name] = \
316-
int(self.if_counters[port_sai_id][port_counter_name]) + \
317-
int(self.rif_counters[rif_sai_id][rif_counter_name])
318-
319-
for vlan_sai_id in self.vlan_name_map:
320-
for port_counter_name, rif_counter_name in mibs.RIF_COUNTERS_AGGR_MAP.items():
321-
try:
322-
self.if_counters.setdefault(vlan_sai_id, {})
323-
self.if_counters[vlan_sai_id][port_counter_name] = \
324-
int(self.rif_counters[vlan_sai_id][rif_counter_name])
325-
except KeyError as e:
326-
logger.warning("Not able to aggregate counters for {}: {}\n {}".format(vlan_sai_id, rif_counter_name, e))
327-
328271
def get_counter(self, sub_id, table_name):
329272
"""
330273
:param sub_id: The 1-based sub-identifier query.
@@ -344,13 +287,7 @@ def get_counter(self, sub_id, table_name):
344287
counter_value = 0
345288
for lag_member in self.lag_name_if_name_map[self.oid_lag_name_map[oid]]:
346289
counter_value += self._get_counter(mibs.get_index(lag_member), table_name)
347-
sai_lag_id = self.lag_sai_map[self.oid_lag_name_map[oid]]
348-
sai_lag_rif_id = self.port_rif_map[sai_lag_id]
349-
if sai_lag_rif_id in self.rif_port_map:
350-
table_name = bytes(getattr(table_name, 'name', table_name), 'utf-8')
351-
if table_name in mibs.RIF_DROPS_AGGR_MAP:
352-
rif_table_name = mibs.RIF_DROPS_AGGR_MAP[table_name]
353-
counter_value += int(self.rif_counters[sai_lag_rif_id][rif_table_name])
290+
354291
# truncate to 32-bit counter
355292
return counter_value & 0x00000000ffffffff
356293
else:
@@ -380,8 +317,6 @@ def _get_if_entry(self, sub_id):
380317
elif oid in self.mgmt_oid_name_map:
381318
if_table = mibs.mgmt_if_entry_table(self.mgmt_oid_name_map[oid])
382319
db = mibs.CONFIG_DB
383-
elif oid in self.vlan_oid_name_map:
384-
if_table = mibs.vlan_entry_table(self.vlan_oid_name_map[oid])
385320
elif oid in self.oid_name_map:
386321
if_table = mibs.if_entry_table(self.oid_name_map[oid])
387322
else:
@@ -486,7 +421,6 @@ def get_if_type(self, sub_id):
486421
487422
ethernetCsmacd(6), -- for all ethernet-like interfaces,
488423
-- regardless of speed, as per RFC3635
489-
l3ipvlan(136) -- Layer 3 Virtual LAN using IP
490424
ieee8023adLag(161) -- IEEE 802.3ad Link Aggregate
491425
"""
492426
oid = self.get_oid(sub_id)
@@ -495,8 +429,6 @@ def get_if_type(self, sub_id):
495429

496430
if oid in self.oid_lag_name_map:
497431
return IfTypes.ieee8023adLag
498-
elif oid in self.vlan_oid_name_map:
499-
return IfTypes.l3ipvlan
500432
else:
501433
return IfTypes.ethernetCsmacd
502434

src/sonic_ax_impl/mibs/ietf/rfc2863.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ def reinit_data(self):
8282

8383
self.lag_name_if_name_map, \
8484
self.if_name_lag_name_map, \
85-
self.oid_lag_name_map, _ = Namespace.init_namespace_sync_d_lag_tables(self.db_conn)
85+
self.oid_lag_name_map = Namespace.init_namespace_sync_d_lag_tables(self.db_conn)
8686
"""
8787
db_conn - will have db_conn to all namespace DBs and
8888
global db. First db in the list is global db.

src/sonic_ax_impl/mibs/vendor/cisco/ciscoPfcExtMIB.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def update_data(self):
5151

5252
self.lag_name_if_name_map, \
5353
self.if_name_lag_name_map, \
54-
self.oid_lag_name_map, _ = Namespace.init_namespace_sync_d_lag_tables(self.db_conn)
54+
self.oid_lag_name_map = Namespace.init_namespace_sync_d_lag_tables(self.db_conn)
5555

5656
self.if_range = sorted(list(self.oid_sai_map.keys()) + list(self.oid_lag_name_map.keys()))
5757
self.if_range = [(i,) for i in self.if_range]

tests/mock_tables/asic0/counters_db.json

-6
Original file line numberDiff line numberDiff line change
@@ -314,12 +314,6 @@
314314
"COUNTERS_LAG_NAME_MAP": {
315315
"PortChannel01": "oid:0x1000000000007"
316316
},
317-
"COUNTERS_RIF_NAME_MAP": {
318-
"PortChannel01": "oid:0x6000000000006"
319-
},
320-
"COUNTERS_RIF_TYPE_MAP": {
321-
"oid:0x6000000000006": "SAI_ROUTER_INTERFACE_TYPE_PORT"
322-
},
323317
"COUNTERS:oid:0x1000000000004": {
324318
"SAI_PORT_STAT_ETHER_STATS_TX_NO_ERRORS": "0",
325319
"SAI_PORT_STAT_ETHER_STATS_OVERSIZE_PKTS": "0",

tests/mock_tables/asic1/counters_db.json

-6
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,6 @@
110110
"COUNTERS_LAG_NAME_MAP": {
111111
"PortChannel02": "oid:0x1000000000012"
112112
},
113-
"COUNTERS_RIF_TYPE_MAP": {
114-
"oid:0x6000000000012": "SAI_ROUTER_INTERFACE_TYPE_PORT"
115-
},
116-
"COUNTERS_RIF_NAME_MAP": {
117-
"PortChannel02": "oid:0x6000000000012"
118-
},
119113
"COUNTERS:oid:0x1000000000009": {
120114
"SAI_PORT_STAT_ETHER_STATS_TX_NO_ERRORS": "0",
121115
"SAI_PORT_STAT_ETHER_STATS_OVERSIZE_PKTS": "0",

0 commit comments

Comments
 (0)