Skip to content

Commit e8df347

Browse files
kcudniklguohan
authored andcommitted
Add best candidate search for router interface using tunnel term tabl… (#370)
* Add best candidate search for router interface using tunnel term table entry * Add unittests for rif loopback * Add test for lag with no members
1 parent 8ae173b commit e8df347

File tree

4 files changed

+312
-0
lines changed

4 files changed

+312
-0
lines changed

syncd/syncd_applyview.cpp

+89
Original file line numberDiff line numberDiff line change
@@ -2779,6 +2779,95 @@ std::shared_ptr<SaiObj> findCurrentBestMatchForRouterInterface(
27792779
}
27802780
}
27812781

2782+
// try find tunnel by TUNNEL_TERM_TABLE_ENTRY using SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP
2783+
2784+
for (auto tmpTunnel: tmpTunnels)
2785+
{
2786+
const auto curTunnels = currentView.getNotProcessedObjectsByObjectType(SAI_OBJECT_TYPE_TUNNEL);
2787+
2788+
for (auto curTunnel: curTunnels)
2789+
{
2790+
const auto tmpTunnelTermTableEtnries = temporaryView.getNotProcessedObjectsByObjectType(SAI_OBJECT_TYPE_TUNNEL_TERM_TABLE_ENTRY);
2791+
2792+
for (auto tmpTunnelTermTableEntry: tmpTunnelTermTableEtnries)
2793+
{
2794+
auto tmpTunnelId = tmpTunnelTermTableEntry->tryGetSaiAttr(SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_ACTION_TUNNEL_ID);
2795+
2796+
if (tmpTunnelId == nullptr)
2797+
continue;
2798+
2799+
auto tmpDstIp = tmpTunnelTermTableEntry->tryGetSaiAttr(SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP);
2800+
2801+
if (tmpDstIp == nullptr)
2802+
continue;
2803+
2804+
if (tmpTunnelId->getOid() != tmpTunnel->getVid()) // not this tunnel
2805+
continue;
2806+
2807+
const auto curTunnelTermTableEtnries = currentView.getNotProcessedObjectsByObjectType(SAI_OBJECT_TYPE_TUNNEL_TERM_TABLE_ENTRY);
2808+
2809+
for (auto curTunnelTermTableEntry: curTunnelTermTableEtnries)
2810+
{
2811+
auto curTunnelId = curTunnelTermTableEntry->tryGetSaiAttr(SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_ACTION_TUNNEL_ID);
2812+
2813+
if (curTunnelId == nullptr)
2814+
continue;
2815+
2816+
auto curDstIp = curTunnelTermTableEntry->tryGetSaiAttr(SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP);
2817+
2818+
if (curDstIp == nullptr)
2819+
continue;
2820+
2821+
if (curTunnelId->getOid() != curTunnel->getVid()) // not this tunnel
2822+
continue;
2823+
2824+
if (curDstIp->getStrAttrValue() != tmpDstIp->getStrAttrValue())
2825+
continue;
2826+
2827+
if (tmpTunnel->hasAttr(SAI_TUNNEL_ATTR_UNDERLAY_INTERFACE) &&
2828+
curTunnel->hasAttr(SAI_TUNNEL_ATTR_UNDERLAY_INTERFACE))
2829+
{
2830+
auto tmpRif = tmpTunnel->getSaiAttr(SAI_TUNNEL_ATTR_UNDERLAY_INTERFACE);
2831+
auto curRif = curTunnel->getSaiAttr(SAI_TUNNEL_ATTR_UNDERLAY_INTERFACE);
2832+
2833+
if (tmpRif->getSaiAttr()->value.oid == temporaryObj->getVid())
2834+
{
2835+
for (auto c: candidateObjects)
2836+
{
2837+
if (c.obj->getVid() != curRif->getSaiAttr()->value.oid)
2838+
continue;
2839+
2840+
SWSS_LOG_INFO("found best ROUTER_INTERFACE based on TUNNEL underlay interface %s", c.obj->str_object_id.c_str());
2841+
2842+
return c.obj;
2843+
}
2844+
}
2845+
}
2846+
2847+
if (tmpTunnel->hasAttr(SAI_TUNNEL_ATTR_OVERLAY_INTERFACE) &&
2848+
curTunnel->hasAttr(SAI_TUNNEL_ATTR_OVERLAY_INTERFACE))
2849+
{
2850+
auto tmpRif = tmpTunnel->getSaiAttr(SAI_TUNNEL_ATTR_OVERLAY_INTERFACE);
2851+
auto curRif = curTunnel->getSaiAttr(SAI_TUNNEL_ATTR_OVERLAY_INTERFACE);
2852+
2853+
if (tmpRif->getSaiAttr()->value.oid == temporaryObj->getVid())
2854+
{
2855+
for (auto c: candidateObjects)
2856+
{
2857+
if (c.obj->getVid() != curRif->getSaiAttr()->value.oid)
2858+
continue;
2859+
2860+
SWSS_LOG_INFO("found best ROUTER_INTERFACE based on TUNNEL overlay interface %s", c.obj->str_object_id.c_str());
2861+
2862+
return c.obj;
2863+
}
2864+
}
2865+
}
2866+
}
2867+
}
2868+
}
2869+
}
2870+
27822871
SWSS_LOG_NOTICE("failed to find best candidate for LOOPBACK ROUTER_INTERFACE using TUNNEL");
27832872

27842873
return nullptr;

tests/brcm.pl

+31
Original file line numberDiff line numberDiff line change
@@ -240,8 +240,39 @@ sub test_brcm_full_testbed_config
240240
play "full_testbed_config.rec", 0;
241241
}
242242

243+
sub test_brcm_rif_loopback
244+
{
245+
fresh_start;
246+
247+
# we expect no asic operation on router interface
248+
249+
play "rif_loopback.rec";
250+
play "rif_loopback.rec", 0;
251+
play "rif_loopback.rec", 0;
252+
play "rif_loopback.rec", 0;
253+
play "rif_loopback.rec", 0;
254+
play "rif_loopback.rec", 0;
255+
}
256+
257+
sub test_brcm_lag_no_members
258+
{
259+
fresh_start;
260+
261+
# we expect no asic operation on lag's that has no members
262+
263+
play "lag_no_members.rec";
264+
play "lag_no_members.rec", 0;
265+
play "lag_no_members.rec", 0;
266+
play "lag_no_members.rec", 0;
267+
play "lag_no_members.rec", 0;
268+
play "lag_no_members.rec", 0;
269+
}
270+
271+
243272
# RUN TESTS
244273

274+
test_brcm_lag_no_members;
275+
test_brcm_rif_loopback;
245276
test_brcm_hostif;
246277
test_brcm_full_testbed_config;
247278
test_brcm_remove_next_hop;

tests/brcm/lag_no_members.rec

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
2018-11-02.17:07:42.110069|#|logrotate on: /var/log/swss/sairedis.rec
2+
2018-11-02.17:07:42.110708|a|INIT_VIEW
3+
2018-11-02.17:07:43.906345|A|SAI_STATUS_SUCCESS
4+
2018-11-02.17:07:43.908679|c|SAI_OBJECT_TYPE_SWITCH:oid:0x21000000000000|SAI_SWITCH_ATTR_INIT_SWITCH=true|SAI_SWITCH_ATTR_FDB_EVENT_NOTIFY=0x429e60|SAI_SWITCH_ATTR_PORT_STATE_CHANGE_NOTIFY=0x429e70|SAI_SWITCH_ATTR_SWITCH_SHUTDOWN_REQUEST_NOTIFY=0x429e80|SAI_SWITCH_ATTR_SRC_MAC_ADDRESS=00:E0:EC:7B:C2:EB
5+
2018-11-02.17:07:43.909322|g|SAI_OBJECT_TYPE_SWITCH:oid:0x21000000000000|SAI_SWITCH_ATTR_DEFAULT_VIRTUAL_ROUTER_ID=oid:0x0
6+
2018-11-02.17:07:55.625825|G|SAI_STATUS_SUCCESS|SAI_SWITCH_ATTR_DEFAULT_VIRTUAL_ROUTER_ID=oid:0x3000000000022
7+
2018-11-02.17:07:55.634285|g|SAI_OBJECT_TYPE_SWITCH:oid:0x21000000000000|SAI_SWITCH_ATTR_CPU_PORT=oid:0x0
8+
2018-11-02.17:07:55.635311|G|SAI_STATUS_SUCCESS|SAI_SWITCH_ATTR_CPU_PORT=oid:0x1000000000001
9+
2018-11-02.17:07:55.635438|g|SAI_OBJECT_TYPE_SWITCH:oid:0x21000000000000|SAI_SWITCH_ATTR_NUMBER_OF_ACTIVE_PORTS=1
10+
2018-11-02.17:07:55.636297|G|SAI_STATUS_SUCCESS|SAI_SWITCH_ATTR_NUMBER_OF_ACTIVE_PORTS=32
11+
2018-11-02.17:07:55.636493|g|SAI_OBJECT_TYPE_SWITCH:oid:0x21000000000000|SAI_SWITCH_ATTR_PORT_LIST=32:oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0
12+
2018-11-02.17:07:55.642176|G|SAI_STATUS_SUCCESS|SAI_SWITCH_ATTR_PORT_LIST=32:oid:0x1000000000002,oid:0x1000000000003,oid:0x1000000000004,oid:0x1000000000005,oid:0x1000000000006,oid:0x1000000000007,oid:0x1000000000008,oid:0x1000000000009,oid:0x100000000000a,oid:0x100000000000b,oid:0x100000000000c,oid:0x100000000000d,oid:0x100000000000e,oid:0x100000000000f,oid:0x1000000000010,oid:0x1000000000011,oid:0x1000000000012,oid:0x1000000000013,oid:0x1000000000014,oid:0x1000000000015,oid:0x1000000000016,oid:0x1000000000017,oid:0x1000000000018,oid:0x1000000000019,oid:0x100000000001a,oid:0x100000000001b,oid:0x100000000001c,oid:0x100000000001d,oid:0x100000000001e,oid:0x100000000001f,oid:0x1000000000020,oid:0x1000000000021
13+
2018-11-02.17:07:55.767612|c|SAI_OBJECT_TYPE_HOSTIF_TABLE_ENTRY:oid:0x2300000000058b|SAI_HOSTIF_TABLE_ENTRY_ATTR_TYPE=SAI_HOSTIF_TABLE_ENTRY_TYPE_WILDCARD|SAI_HOSTIF_TABLE_ENTRY_ATTR_CHANNEL_TYPE=SAI_HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_PHYSICAL_PORT
14+
2018-11-02.17:07:56.623928|c|SAI_OBJECT_TYPE_LAG:oid:0x20000000005b8|NULL=NULL
15+
2018-11-02.17:07:56.626495|c|SAI_OBJECT_TYPE_LAG:oid:0x20000000005b9|NULL=NULL
16+
2018-11-02.17:07:56.627043|c|SAI_OBJECT_TYPE_LAG:oid:0x20000000005ba|NULL=NULL
17+
2018-11-02.17:07:56.627595|c|SAI_OBJECT_TYPE_LAG:oid:0x20000000005bb|NULL=NULL
18+
2018-11-02.17:07:56.628160|c|SAI_OBJECT_TYPE_LAG:oid:0x20000000005bc|NULL=NULL
19+
2018-11-02.17:07:56.628693|c|SAI_OBJECT_TYPE_LAG:oid:0x20000000005bd|NULL=NULL
20+
2018-11-02.17:07:56.629536|c|SAI_OBJECT_TYPE_LAG:oid:0x20000000005be|NULL=NULL
21+
2018-11-02.17:07:56.630662|c|SAI_OBJECT_TYPE_LAG:oid:0x20000000005bf|NULL=NULL
22+
2018-11-02.17:07:55.798092|a|APPLY_VIEW
23+
2018-11-02.17:07:55.799394|A|SAI_STATUS_SUCCESS

0 commit comments

Comments
 (0)