答复: RE: RE: some issues in draft-ietf-rtgwg-mrt-frr-algorithm-09

peng.shaofu@zte.com.cn Fri, 22 April 2016 03:40 UTC

Return-Path: <peng.shaofu@zte.com.cn>
X-Original-To: rtgwg@ietfa.amsl.com
Delivered-To: rtgwg@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6126212E3D9 for <rtgwg@ietfa.amsl.com>; Thu, 21 Apr 2016 20:40:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -105.216
X-Spam-Level:
X-Spam-Status: No, score=-105.216 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-0.996, SPF_PASS=-0.001, USER_IN_WHITELIST=-100] autolearn=ham autolearn_force=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 yfVpFjAkMYBj for <rtgwg@ietfa.amsl.com>; Thu, 21 Apr 2016 20:40:38 -0700 (PDT)
Received: from mx5.zte.com.cn (mx5.zte.com.cn [63.217.80.70]) by ietfa.amsl.com (Postfix) with ESMTP id B601012E38B for <rtgwg@ietf.org>; Thu, 21 Apr 2016 20:40:37 -0700 (PDT)
Received: from mse01.zte.com.cn (unknown [10.30.3.20]) by Websense Email Security Gateway with ESMTPS id 440C5A3559460; Fri, 22 Apr 2016 11:40:30 +0800 (CST)
Received: from notes_smtp.zte.com.cn ([10.30.1.239]) by mse01.zte.com.cn with ESMTP id u3M3eMu8098197; Fri, 22 Apr 2016 11:40:22 +0800 (GMT-8) (envelope-from peng.shaofu@zte.com.cn)
In-Reply-To: <BY2PR05MB614C45537ECA29FF49C70FDA96E0@BY2PR05MB614.namprd05.prod.outlook.com>
References: <OF9599D305.75C430DA-ON48257F8E.000CEF6C-48257F8E.000D3B0B@zte.com.cn> <BY2PR05MB614AF29BBBB0037480F86FEA96D0@BY2PR05MB614.namprd05.prod.outlook.com> <OF972D710F.9AAF5AA6-ON48257F9C.00088EA8-48257F9C.001166AA@zte.com.cn> <BY2PR05MB614C45537ECA29FF49C70FDA96E0@BY2PR05MB614.namprd05.prod.outlook.com>
To: Chris Bowers <cbowers@juniper.net>
Subject: 答复: RE: RE: some issues in draft-ietf-rtgwg-mrt-frr-algorithm-09
MIME-Version: 1.0
X-KeepSent: 52021F52:F494B996-48257F9D:0013F98D; type=4; name=$KeepSent
X-Mailer: Lotus Notes Release 8.5.3 September 15, 2011
Message-ID: <OF52021F52.F494B996-ON48257F9D.0013F98D-48257F9D.00142D11@zte.com.cn>
From: peng.shaofu@zte.com.cn
Date: Fri, 22 Apr 2016 11:40:57 +0800
X-MIMETrack: Serialize by Router on notes_smtp/zte_ltd(Release 8.5.3FP6|November 21, 2013) at 2016-04-22 11:40:21, Serialize complete at 2016-04-22 11:40:21
Content-Type: multipart/alternative; boundary="=_alternative 00142D0C48257F9D_="
X-MAIL: mse01.zte.com.cn u3M3eMu8098197
Archived-At: <http://mailarchive.ietf.org/arch/msg/rtgwg/OyzeJSc1gEqcyp4HE81zHBrr4Tk>
Cc: "rtgwg@ietf.org" <rtgwg@ietf.org>
X-BeenThere: rtgwg@ietf.org
X-Mailman-Version: 2.1.17
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: <https://mailarchive.ietf.org/arch/browse/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: Fri, 22 Apr 2016 03:40:41 -0000

Chris

You are right.

thanks,
Deccan





Chris Bowers <cbowers@juniper.net> 
2016-04-22 07:11

收件人
"peng.shaofu@zte.com.cn" <peng.shaofu@zte.com.cn>, 
抄送
"rtgwg@ietf.org" <rtgwg@ietf.org>
主题
RE: RE: some issues in draft-ietf-rtgwg-mrt-frr-algorithm-09






Deccan,
 
Responding to this question:
====================
[Deccan]  There maybe another issue in section "5.6.  Augmenting the GADAG 
by directing all links". In function "Run_Topological_Sort_GADAG(topo, 
gadag_root)", because we only first add gadag_root to working_list, but 
not all other cut-vertexes, it is possible that some blocks have no chance 
to get Topological_Sort. For example, see Figure 10 (a), the block 3 which 
contains K, L, M, N, O, P will totally have no chance to  get 
Topological_Sort.  To be specific, since the cut-vertex K's all incoming 
interface have be removed temporarily, note that cut-link H-K is set to 
bidirectional before Run_Topological_Sort_GADAG, K has no chance to be 
visited based on the VISIT_ACTION originated from GADAG root. Although in 
this example all links in block3 have already be directed, we can get 
another example with a complicated block that will need Topological_Sort 
to set undirected links. Please see if it is so.
===========================
 
I think the key to understanding why the current pseudo-code and Python 
code works is the following sentence:
“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.”
In figure 10a, for block 4 containing H and K, H is the block root (since 
R is the GADAG root).  So we need Modify_Block_Root_Incoming_Links() to 
temporarily remove the link INCOMING to H from K.  That still leaves the 
link OUTGOING from H to K unmodified.   The OUTGOING direction is not 
modified because K is not the root of block 4 (even though it is the root 
of block 3).  The OUTGOING link from H to K is how 
Run_Topological_Sort_GADAG() will reach K and the rest of block 3. 
 
Modify_Block_Root_Incoming_Links() only makes the direction from K to H 
temporarily unusable, because of the condition:
if i.remote_node.localroot is x
H is the localroot of K, but K is NOT the localroot of H. 
 
You might also try stepping through the basic_topo example in 
mrt_lowpoint_draft_text.py:
https://github.com/cbowers/draft-ietf-rtgwg-mrt-frr-algorithm/tree/master/src
 
You can insert print statements to see what is happening, which is what I 
did to look at the behavior of the code to answer this question. 
 
It is possible that there is another topology that breaks this, so it 
would help to give me a specific topology that doesn’t work if you find 
one.
 
Thanks,
Chris
 
From: peng.shaofu@zte.com.cn [mailto:peng.shaofu@zte.com.cn] 
Sent: Wednesday, April 20, 2016 10:11 PM
To: Chris Bowers <cbowers@juniper.net>
Cc: rtgwg@ietf.org
Subject: 答复: RE: some issues in draft-ietf-rtgwg-mrt-frr-algorithm-09
 
Hi Chris 

Thanks for the detailed reply. 

See inline below with [Deccan] 


Deccan



Chris Bowers <cbowers@juniper.net> 
2016-04-21 05:04 


收件人
"peng.shaofu@zte.com.cn" <peng.shaofu@zte.com.cn>, 
抄送
"rtgwg@ietf.org" <rtgwg@ietf.org> 
主题
RE: some issues in draft-ietf-rtgwg-mrt-frr-algorithm-09
 








Deccan, 
  
Thanks for the feedback. 
  
See inline below with [CB]. 
  
Chris 
  
From: peng.shaofu@zte.com.cn [mailto:peng.shaofu@zte.com.cn] 
Sent: Wednesday, April 06, 2016 9:25 PM
To: Chris Bowers <cbowers@juniper.net>
Cc: rtgwg@ietf.org
Subject: some issues in draft-ietf-rtgwg-mrt-frr-algorithm-09 
  
Hi Chris 

There maybe some trivial mistakes in the document, please confirm it. 

1) in section "5.2.  MRT Island Identification" 
see pseudo-code in Figure 16, the second if-statement "if (not 
intf.remote_node.IN_MRT_ISLAND))" will never meet, the BFS will stop 
abnormally. 
[CB] I think the issue might be convention we are using in the pseudocode 
of using the indentation to indicate the scope of if, for, and while 
statements.  We could have chosen to use more explicit scoping like endif, 
endfor, and endwhile. For this discussion, I rewrote the while loop in 
figure 16 below using this more explicit scoping. 
     while (explore_list is not empty) 
        next_rtr = remove_head(explore_list) 
        for each intf in next_rtr 
           if (not intf.MRT-ineligible         [Deccan] it is necessary to 
add "not intf.IN_MRT_ISLAND", as the same reason you described. 
              and not intf.remote_intf.MRT-ineligible 
              and not intf.IGP-excluded and (intf in area) 
              and (intf.remote_node supports profile_id) ) 
              intf.IN_MRT_ISLAND = TRUE 
              intf.remote_node.IN_MRT_ISLAND = TRUE        [Deccan] so, 
here the "intf.remote_node" need to be changed to "intf.remote_intf" 
              if (not intf.remote_node.IN_MRT_ISLAND)) 
                 intf.remote_node.IN_MRT_ISLAND = TRUE 
                 add_to_tail(explore_list, intf.remote_node) 
              endif 
           endif 
        endfor 
      endwhile 
Written in this form, it is easier to see that we are using the last 
if-statement to avoid adding to the explore_list any nodes that have 
already been marked as being in the MRT Island, and are already in the 
explore_list.  If we don’t do this, I think the algorithm will not 
terminate in some topologies.  Did I understand your point correctly?  If 
not, can you clarify more?

[Deccan]  According to your meaning that if I understand correctly, I put 
the suggestion directly on the above pseudo-code, please see it. 


2) in section "5.7.5.  Complete Algorithm to Compute MRT Next-Hops" 
see pseudo-code in Figure 23, in function 
"SPF_No_Traverse_Block_Root(spf_root, block_root, direction)", 
the code "path_metric = min_node.spf_metric + intf.metric" and the 
following remainder code of this function need to be included in the 
if-statement "if ( ( ((direction is FORWARD) and intf.OUTGOING) or". 
[CB]  Thanks for catching this error.  This is a case where using the 
indentation to indicate scope made this error less obvious.  I will change 
the indentation of “if ( ( ((direction is FORWARD) and intf.OUTGOING) etc
” to correct this.  Do the text below now convey the correct meaning? 
   while (spf_heap is not empty) 
       min_node = remove_lowest(spf_heap) 
       Store_Results(min_node, direction) 
       if ((min_node is spf_root) or (min_node is not block_root)) 
          foreach interface intf of min_node 
             if ( ( ((direction is FORWARD) and intf.OUTGOING) or 
                  ((direction is REVERSE) and intf.INCOMING) ) 
                  and In_Common_Block(spf_root, intf.remote_node) ) 
                path_metric = min_node.spf_metric + intf.metric 
                if path_metric < intf.remote_node.spf_metric 
                   intf.remote_node.spf_metric = path_metric 
                   if min_node is spf_root 
                     intf.remote_node.next_hops = make_list(intf) 
                   else 
                     intf.remote_node.next_hops = min_node.next_hops 
                   insert_or_update(spf_heap, intf.remote_node) 
                else if path_metric == intf.remote_node.spf_metric 
                   if min_node is spf_root 
                      add_to_list(intf.remote_node.next_hops, intf) 
                   else 
                      add_list_to_list(intf.remote_node.next_hops, 
                                       min_node.next_hops)
[Deccan] yes. 

3) in section "5.9.4.  Computing MRT Alternates for Proxy-Nodes"
"Similarly, if run Select_Alternates(X, F, primary_intf) and we find that 
it is safe to USE_BLUE to reach Y" 
here the first parameter X would be replaced to Y. 
[CB]  Thanks. We will correct this as well. 

[Deccan]  There maybe another issue in section "5.6.  Augmenting the GADAG 
by directing all links". In function "Run_Topological_Sort_GADAG(topo, 
gadag_root)", because we only first add gadag_root to working_list, but 
not all other cut-vertexes, it is possible that some blocks have no chance 
to get Topological_Sort. For example, see Figure 10 (a), the block 3 which 
contains K, L, M, N, O, P will totally have no chance to  get 
Topological_Sort.  To be specific, since the cut-vertex K's all incoming 
interface have be removed temporarily, note that cut-link H-K is set to 
bidirectional before Run_Topological_Sort_GADAG, K has no chance to be 
visited based on the VISIT_ACTION originated from GADAG root. Although in 
this example all links in block3 have already be directed, we can get 
another example with a complicated block that will need Topological_Sort 
to set undirected links. Please see if it is so. 

 

--------------------------------------------------------
ZTE Information Security Notice: The information contained in this mail (and any attachment transmitted herewith) is privileged and confidential and is intended for the exclusive use of the addressee(s).  If you are not an intended recipient, any disclosure, reproduction, distribution or other dissemination or use of the information contained is strictly prohibited.  If you have received this mail in error, please delete it and notify us immediately.