RE: [rtgwg] draft-ietf-rtgwg-mrt-frr-algorithm-03
"Anil Kumar S N (VRP Network BL)" <anil.sn@huawei.com> Thu, 18 June 2015 07:03 UTC
Return-Path: <anil.sn@huawei.com>
X-Original-To: rtgwg@ietfa.amsl.com
Delivered-To: rtgwg@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 32F6D1B305C; Thu, 18 Jun 2015 00:03:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.91
X-Spam-Level:
X-Spam-Status: No, score=-0.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, J_CHICKENPOX_110=0.6, J_CHICKENPOX_18=0.6, J_CHICKENPOX_19=0.6, J_CHICKENPOX_45=0.6, J_CHICKENPOX_48=0.6, MIME_8BIT_HEADER=0.3, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Kf67LD10DGVB; Thu, 18 Jun 2015 00:03:01 -0700 (PDT)
Received: from lhrrgout.huawei.com (lhrrgout.huawei.com [194.213.3.17]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 2CD1F1B2FE6; Thu, 18 Jun 2015 00:02:59 -0700 (PDT)
Received: from 172.18.7.190 (EHLO lhreml401-hub.china.huawei.com) ([172.18.7.190]) by lhrrg01-dlp.huawei.com (MOS 4.3.7-GA FastPath queued) with ESMTP id BXN01587; Thu, 18 Jun 2015 07:02:57 +0000 (GMT)
Received: from nkgeml407-hub.china.huawei.com (10.98.56.38) by lhreml401-hub.china.huawei.com (10.201.5.240) with Microsoft SMTP Server (TLS) id 14.3.158.1; Thu, 18 Jun 2015 08:02:55 +0100
Received: from NKGEML512-MBX.china.huawei.com ([169.254.7.152]) by nkgeml407-hub.china.huawei.com ([10.98.56.38]) with mapi id 14.03.0158.001; Thu, 18 Jun 2015 15:02:47 +0800
From: "Anil Kumar S N (VRP Network BL)" <anil.sn@huawei.com>
To: Chris Bowers <cbowers@juniper.net>, Gábor Sándor Enyedi <gabor.sandor.enyedi@ericsson.com>, "Andras.Csaszar@ericsson.com" <Andras.Csaszar@ericsson.com>, Alia Atlas <akatlas@juniper.net>, "abishek@ece.arizona.edu" <abishek@ece.arizona.edu>
Subject: RE: [rtgwg] draft-ietf-rtgwg-mrt-frr-algorithm-03
Thread-Topic: [rtgwg] draft-ietf-rtgwg-mrt-frr-algorithm-03
Thread-Index: AdCifUFAAQ1JZlPETESLX6aiRMOLaAATVnnwACjeOWAAbkesEACHWMLQAH3w4bAAFdwD8A==
Date: Thu, 18 Jun 2015 07:02:47 +0000
Message-ID: <327562D94EA7BF428CD805F338C31EF04FB43EBA@nkgeml512-mbx.china.huawei.com>
References: <327562D94EA7BF428CD805F338C31EF04FB436B4@nkgeml512-mbx.china.huawei.com> <BLUPR05MB2925A1254FC0C5726AA7372A9BE0@BLUPR05MB292.namprd05.prod.outlook.com> <327562D94EA7BF428CD805F338C31EF04FB437FD@nkgeml512-mbx.china.huawei.com> <BLUPR05MB292BAD31261D2FB5D81E2F6A9BB0@BLUPR05MB292.namprd05.prod.outlook.com> <327562D94EA7BF428CD805F338C31EF04FB43CAF@nkgeml512-mbx.china.huawei.com> <BLUPR05MB2923CCD7881725EFCE3B138A9A60@BLUPR05MB292.namprd05.prod.outlook.com>
In-Reply-To: <BLUPR05MB2923CCD7881725EFCE3B138A9A60@BLUPR05MB292.namprd05.prod.outlook.com>
Accept-Language: en-US, zh-CN
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [10.18.212.150]
Content-Type: multipart/alternative; boundary="_000_327562D94EA7BF428CD805F338C31EF04FB43EBAnkgeml512mbxchi_"
MIME-Version: 1.0
X-CFilter-Loop: Reflected
Archived-At: <http://mailarchive.ietf.org/arch/msg/rtgwg/_lG7liGzPuoGGD5FHDbgP6s7kDM>
X-Mailman-Approved-At: Thu, 18 Jun 2015 08:14:11 -0700
Cc: "rtgwg-owner@ietf.org" <rtgwg-owner@ietf.org>, "rtgwg@ietf.org" <rtgwg@ietf.org>
X-BeenThere: rtgwg@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Routing Area Working Group <rtgwg.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rtgwg>, <mailto:rtgwg-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/rtgwg/>
List-Post: <mailto:rtgwg@ietf.org>
List-Help: <mailto:rtgwg-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rtgwg>, <mailto:rtgwg-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 18 Jun 2015 07:03:07 -0000
Chris, I will go through the changes, it will take some time to verify :) I found one more things : [E]----| (5,0) | | | | | [R] [D]---[C] (0,0) (4,0) (3,0) | | | | [A]---------[B] (1,0) (2,0) In above 6 router topology, there are no ears. As per psudocode only GADAG root will be assigned with IN_GADAG flag. Psudocode in Draft : Construct_Ear(x, Stack, intf, ear_type) ear_list = empty cur_node = intf.remote_node cur_intf = intf not_done = true while not_done cur_intf.UNDIRECTED = false cur_intf.OUTGOING = true cur_intf.remote_intf.UNDIRECTED = false cur_intf.remote_intf.INCOMING = true if cur_node.IN_GADAG is false cur_node.IN_GADAG = true add_to_list_end(ear_list, cur_node) if ear_type is CHILD cur_intf = cur_node.lowpoint_parent_intf cur_node = cur_node.lowpoint_parent else // ear_type must be NEIGHBOR cur_intf = cur_node.dfs_parent_intf cur_node = cur_node.dfs_parent else not_done = false if (ear_type is CHILD) and (cur_node is x) // x is a cut-vertex and the local root for // the block in which the ear is computed localroot = x else // Inherit local-root from the end of the ear localroot = cur_node.localroot while ear_list is not empty y = remove_end_item_from_list(ear_list) y.localroot = localroot push(Stack, y) Construct_GADAG_via_Lowpoint(topology, root) root.IN_GADAG = true root.localroot = None Initialize Stack to empty push root onto Stack Thanks & Regards Anil S N "Be liberal in what you accept, and conservative in what you send" - Jon Postel From: Chris Bowers [mailto:cbowers@juniper.net] Sent: 18 June 2015 03:58 To: Anil Kumar S N (VRP Network BL); Gábor Sándor Enyedi; Andras.Csaszar@ericsson.com; Alia Atlas; abishek@ece.arizona.edu Cc: rtgwg@ietf.org; rtgwg-owner@ietf.org Subject: RE: [rtgwg] draft-ietf-rtgwg-mrt-frr-algorithm-03 Anil, Thanks for pointing this out. Construct_Ear() mentions identifying a cut-vertex in a comment, but doesn't actually set it explicitly. I added it as below, as reflected in the github diff link. Construct_Ear(x, Stack, intf, ear_type) ... if (ear_type is CHILD) and (cur_node is x) // x is a cut-vertex and the local root for // the block in which the ear is computed x.IS_CUT_VERTEX = true <<< New line here localroot = x else https://github.com/cbowers/draft-ietf-rtgwg-mrt-frr-algorithm/commit/6a92a3fe9f578af2566d0dbb042181cb22469c57 With respect to identifying cut-links, I'd like to propose the following changes to the Add_Undirected_Links() to have it deal better with parallel-links from the block root (cut-vertices or the GADAG root) to another node. When adding undirected links to the GADAG, links connecting the block root to other nodes in that block need special handling because the topological order will not always give the right answer for links involving the block root. There are three cases below. case 1a) If the undirected link in question has another parallel link between the same two nodes that is already directed, then the direction of the undirected link can be inherited from the previously directed link. case 1b) In the case of parallel cut links, we set all of the parallel links to both INCOMING and OUTGOING. case 2) Otherwise, the undirected link in question is set to OUTGOING from the block root node. With this version of Add_Undirected_Links(), a cut-link can be identified by the fact that it will be directed both INCOMING and OUTGOING in the GADAG. I put proposed pseudo-code to replace figure 18 in the github diff below. https://github.com/cbowers/draft-ietf-rtgwg-mrt-frr-algorithm/commit/5d5e5c9c74ef963195e29cb2e7b449c8884facd4 The proposed next text and pseudo-code is copied below as well. To convert a GADAG to a DAG, it is necessary to remove all links that point to a root of block from within that block. That provides the necessary conversion to a DAG and then a topological sort can be done. When adding undirected links to the GADAG, links connecting the block root to other nodes in that block need special handling because the topological order will not always give the right answer for those links. There are three cases to consider. If the undirected link in question has another parallel link between the same two nodes that is already directed, then the direction of the undirected link can be inherited from the previously directed link. In the case of parallel cut links, we set all of the parallel links to both INCOMING and OUTGOING. Otherwise, the undirected link in question is set to OUTGOING from the block root node. A cut-link can then be identified by the fact that it will be directed both INCOMING and OUTGOING in the GADAG. The exact details of this whole process are captured in Figure 18 Add_Undirected_Block_Root_Links(topo, gadag_root): foreach node x in topo if x.IS_CUT_VERTEX or x is gadag_root foreach interface i of x if (i.remote_node.localroot is not x or i.PROCESSED ) continue Initialize bundle_list to empty bundle.UNDIRECTED = true bundle.OUTGOING = false bundle.INCOMING = false foreach interface i2 in x if i2.remote_node is i.remote_node add_to_list_end(bundle_list, i2) if not i2.UNDIRECTED: bundle.UNDIRECTED = false if i2.INCOMING: bundle.INCOMING = true if i2.OUTGOING: bundle.OUTGOING = true if bundle.UNDIRECTED foreach interface i3 in bundle_list i3.UNDIRECTED = false i3.remote_intf.UNDIRECTED = false i3.PROCESSED = true i3.remote_intf.PROCESSED = true i3.OUTGOING = true i3.remote_intf.INCOMING = true else if (bundle.OUTGOING and bundle.INCOMING) foreach interface i3 in bundle_list i3.UNDIRECTED = false i3.remote_intf.UNDIRECTED = false i3.PROCESSED = true i3.remote_intf.PROCESSED = true i3.OUTGOING = true i3.INCOMING = true i3.remote_intf.INCOMING = true i3.remote_intf.OUTGOING = true else if bundle.OUTGOING foreach interface i3 in bundle_list i3.UNDIRECTED = false i3.remote_intf.UNDIRECTED = false i3.PROCESSED = true i3.remote_intf.PROCESSED = true i3.OUTGOING = true i3.remote_intf.INCOMING = true else if bundle.INCOMING foreach interface i3 in bundle_list i3.UNDIRECTED = false i3.remote_intf.UNDIRECTED = false i3.PROCESSED = true i3.remote_intf.PROCESSED = true i3.INCOMING = true i3.remote_intf.OUTGOING = true Modify_Block_Root_Incoming_Links(topo, gadag_root): foreach node x in topo if x.IS_CUT_VERTEX or x is gadag_root foreach interface i of x if i.remote_node.localroot is x if i.INCOMING: i.INCOMING = false i.INCOMING_STORED = true i.remote_intf.OUTGOING = false i.remote_intf.OUTGOING_STORED = true Revert_Block_Root_Incoming_Links(topo, gadag_root): foreach node x in topo if x.IS_CUT_VERTEX or x is gadag_root foreach interface i of x if i.remote_node.localroot is x if i.INCOMING_STORED: i.INCOMING = true i.remote_intf.OUTGOING = true i.INCOMING_STORED = false i.remote_intf.OUTGOING_STORED = false Run_Topological_Sort_GADAG(topo, gadag_root): Modify_Block_Root_Incoming_Links(topo, gadag_root) foreach node x in topo: node.unvisited = 0 foreach interface i of x: if (i.INCOMING): node.unvisited += 1 Initialize working_list to empty Initialize topo_order_list to empty add_to_list_end(working_list, gadag_root) while working_list is not empty y = remove_start_item_from_list(working_list) add_to_list_end(topo_order_list, y) foreach ordered_interface i of y if intf.OUTGOING i.remote_node.unvisited -= 1 if i.remote_node.unvisited is 0 add_to_list_end(working_list, i.remote_node) next_topo_order = 1 while topo_order_list is not empty y = remove_start_item_from_list(topo_order_list) y.topo_order = next_topo_order next_topo_order += 1 Revert_Block_Root_Incoming_Links(topo, gadag_root) def Set_Other_Undirected_Links_Based_On_Topo_Order(topo): foreach node x in topo foreach interface i of x if i.UNDIRECTED: if x.topo_order < i.remote_node.topo_order i.OUTGOING = true i.UNDIRECTED = false i.remote_intf.INCOMING = true i.remote_intf.UNDIRECTED = false else i.INCOMING = true i.UNDIRECTED = false i.remote_intf.OUTGOING = true i.remote_intf.UNDIRECTED = false Add_Undirected_Links(topo, gadag_root) Add_Undirected_Block_Root_Links(topo, gadag_root) Run_Topological_Sort_GADAG(topo, gadag_root) Set_Other_Undirected_Links_Based_On_Topo_Order(topo) Add_Undirected_Links(topo, gadag_root) Figure 18: Assigning direction to UNDIRECTED links From: Anil Kumar S N (VRP Network BL) [mailto:anil.sn@huawei.com] Sent: Monday, June 15, 2015 3:25 AM To: Chris Bowers; Gábor Sándor Enyedi; Andras.Csaszar@ericsson.com<mailto:Andras.Csaszar@ericsson.com>; Alia Atlas; abishek@ece.arizona.edu<mailto:abishek@ece.arizona.edu> Cc: rtgwg@ietf.org<mailto:rtgwg@ietf.org>; rtgwg-owner@ietf.org<mailto:rtgwg-owner@ietf.org> Subject: RE: [rtgwg] draft-ietf-rtgwg-mrt-frr-algorithm-03 Hi Chris, I couldn't find psudocode for indentifying and marking a link as cut-link and vertex as cut-vertex. Please correct me if I am wrong. Thanks & Regards Anil S N "Be liberal in what you accept, and conservative in what you send" - Jon Postel
- draft-ietf-rtgwg-mrt-frr-algorithm-03 Anil Kumar S N (VRP Network BL)
- [rtgwg] draft-ietf-rtgwg-mrt-frr-algorithm-03 Anil Kumar S N (VRP Network BL)
- RE: [rtgwg] draft-ietf-rtgwg-mrt-frr-algorithm-03 Chris Bowers
- RE: [rtgwg] draft-ietf-rtgwg-mrt-frr-algorithm-03 Anil Kumar S N (VRP Network BL)
- RE: [rtgwg] draft-ietf-rtgwg-mrt-frr-algorithm-03 Anil Kumar S N (VRP Network BL)
- RE: [rtgwg] draft-ietf-rtgwg-mrt-frr-algorithm-03 Chris Bowers
- RE: [rtgwg] draft-ietf-rtgwg-mrt-frr-algorithm-03 Anil Kumar S N (VRP Network BL)
- RE: [rtgwg] draft-ietf-rtgwg-mrt-frr-algorithm-03 Anil Kumar S N (VRP Network BL)
- RE: [rtgwg] draft-ietf-rtgwg-mrt-frr-algorithm-03 Chris Bowers
- RE: [rtgwg] draft-ietf-rtgwg-mrt-frr-algorithm-03 Anil Kumar S N (VRP Network BL)
- RE: [rtgwg] draft-ietf-rtgwg-mrt-frr-algorithm-03 Anil Kumar S N (VRP Network BL)
- [rtgwg] draft-ietf-rtgwg-mrt-frr-algorithm-03 Anil Kumar S N (VRP Network BL)
- RE: [rtgwg] draft-ietf-rtgwg-mrt-frr-algorithm-03 Chris Bowers
- RE: [rtgwg] draft-ietf-rtgwg-mrt-frr-algorithm-03 Anil Kumar S N (VRP Network BL)
- [rtgwg] draft-ietf-rtgwg-mrt-frr-algorithm-03 Anil Kumar S N (VRP Network BL)
- RE: [rtgwg] draft-ietf-rtgwg-mrt-frr-algorithm-03 Anil Kumar S N (VRP Network BL)
- RE: [rtgwg] draft-ietf-rtgwg-mrt-frr-algorithm-03 Chris Bowers
- RE: [rtgwg] draft-ietf-rtgwg-mrt-frr-algorithm-03 Anil Kumar S N (VRP Network BL)
- RE: [rtgwg] draft-ietf-rtgwg-mrt-frr-algorithm-03 Anil Kumar S N (VRP Network BL)
- RE: [rtgwg] draft-ietf-rtgwg-mrt-frr-algorithm-03 Chris Bowers