Re: [bess] Some comments on draft-ietf-bess-nsh-bgp-control-plane-03

Jiangyuanlong <jiangyuanlong@huawei.com> Mon, 02 July 2018 06:27 UTC

Return-Path: <jiangyuanlong@huawei.com>
X-Original-To: bess@ietfa.amsl.com
Delivered-To: bess@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C53BA130E46 for <bess@ietfa.amsl.com>; Sun, 1 Jul 2018 23:27:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.199
X-Spam-Level:
X-Spam-Status: No, score=-4.199 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] 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 DqZBPo7NdMUa for <bess@ietfa.amsl.com>; Sun, 1 Jul 2018 23:27:24 -0700 (PDT)
Received: from huawei.com (lhrrgout.huawei.com [194.213.3.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 4BB5F130E4B for <bess@ietf.org>; Sun, 1 Jul 2018 23:27:24 -0700 (PDT)
Received: from LHREML711-CAH.china.huawei.com (unknown [172.18.7.106]) by Forcepoint Email with ESMTP id 476ABBD11CFB for <bess@ietf.org>; Mon, 2 Jul 2018 07:27:21 +0100 (IST)
Received: from DGGEML424-HUB.china.huawei.com (10.1.199.41) by LHREML711-CAH.china.huawei.com (10.201.108.34) with Microsoft SMTP Server (TLS) id 14.3.382.0; Mon, 2 Jul 2018 07:27:22 +0100
Received: from DGGEML512-MBX.china.huawei.com ([169.254.2.130]) by dggeml424-hub.china.huawei.com ([10.1.199.41]) with mapi id 14.03.0382.000; Mon, 2 Jul 2018 14:27:17 +0800
From: Jiangyuanlong <jiangyuanlong@huawei.com>
To: "adrian@olddog.co.uk" <adrian@olddog.co.uk>, "bess@ietf.org" <bess@ietf.org>
Thread-Topic: Some comments on draft-ietf-bess-nsh-bgp-control-plane-03
Thread-Index: AdQNTdT1WqtxcEKsStiiG5V01MxCIwDgz08AAD5Q1NA=
Date: Mon, 02 Jul 2018 06:27:16 +0000
Message-ID: <3B0A1BED22CAD649A1B3E97BE5DDD68BBC0ED267@dggeml512-mbx.china.huawei.com>
References: <3B0A1BED22CAD649A1B3E97BE5DDD68BBC0EB533@dggeml512-mbx.china.huawei.com> <03c601d41114$24518f50$6cf4adf0$@olddog.co.uk>
In-Reply-To: <03c601d41114$24518f50$6cf4adf0$@olddog.co.uk>
Accept-Language: zh-CN, en-US
Content-Language: zh-CN
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [10.74.202.215]
Content-Type: multipart/alternative; boundary="_000_3B0A1BED22CAD649A1B3E97BE5DDD68BBC0ED267dggeml512mbxchi_"
MIME-Version: 1.0
X-CFilter-Loop: Reflected
Archived-At: <https://mailarchive.ietf.org/arch/msg/bess/V9MmUs4cKXm8dn34JJ8B8TOfYxQ>
Subject: Re: [bess] Some comments on draft-ietf-bess-nsh-bgp-control-plane-03
X-BeenThere: bess@ietf.org
X-Mailman-Version: 2.1.26
Precedence: list
List-Id: BGP-Enabled ServiceS working group discussion list <bess.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/bess>, <mailto:bess-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/bess/>
List-Post: <mailto:bess@ietf.org>
List-Help: <mailto:bess-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/bess>, <mailto:bess-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 02 Jul 2018 06:27:36 -0000

Dear Adrian,



Thank you for your prompt reply.

I totally agree with you that "load balancing in SFC is something that has to be done carefully to avoid packet ordering issues and protect stateful SF processing.

That basically means that load balancing decisions need to be made with SFP and flow awareness."

How to do load balancing with SFPs is more clearly described in your document, but how to enable flow awareness for load balancing is less obvious.



I think the examples in 8.9.3 and 8.9.4 only show load balancing on parallel SFFs, not on serial SFFs as in the following example:



                                             ------

                                            | SFIb |

                                            |SFT=42|

                                             ------

                  ------      ------           |

                 | SFI  |    | SFIa |      ---------

                 |SFT=41|    |SFT=42|     |   SFF5  |

                  ------      ------    ..|192.0.2.5|..

                       \    /         ..:  ---------  :..

                      ---------     .:                 :.---------

       ------        |   SFF1  |--/      ---------     |   SFF3  |

   -->|Class-|.......|192.0.2.1|........|   SFF6  |....|192.0.2.3|-->

   -->| ifier|        ---------         |192.0.2.6|    :---------

       ------                              ---------          |

                                               |            ------

                                             ------        | SFI  |

                                            | SFIc |       |SFT=43|

                                            |SFT=42|        ------

                                             ------



As shown above, SFIa, SFIb and SFIc are attached to SFF1, SFF5, and SFF6 respectively.

Similarly, it is valid to use load balancing on SFPs or flows in this case.



Cheers,

Yuanlong

From: Adrian Farrel [mailto:adrian@olddog.co.uk]
Sent: Sunday, July 01, 2018 4:19 PM
To: Jiangyuanlong <jiangyuanlong@huawei.com>; bess@ietf.org
Subject: RE: Some comments on draft-ietf-bess-nsh-bgp-control-plane-03


Hey Yuanlong,



Thanks for your thoughtful comments.



> I had a review of draft-ietf-bess-nsh-bgp-control-plane-03, thank you for this useful

> document and hope it can progress quickly.

>

> In my opinion, this version still has some ambiguities which need to be cleaned up:

>

> 1. In Section 3.1.1, it firstly says:" The SFI Pool Identifier is encoded as an 8 octet

>      value as shown in Figure 4."  However, it then says in the end of this subsection:

>     "The SFI Pool Identifier is a six octet, globally unique value encoded in network

>      byte order." These two sentences are confusing.



Yes. Confusion.



The 8 is supposed to refer to the whole extended community, while the 6 refers to the SPI Pool Identifier field.



I will clean this up.



> The 1st occurrence of SFI Pool Identifier shall be fully spelled out as "SFI Pool

> Identifier extended community". Furthermore, "SPI Pool Identifier" in Figure 4

> seems to be "SFI Pool Identifier" as there is no definition for the former term in

> the document. There are "SPI Pool Identifier" in other sections need to be

> consistent as well, such as "SPI Pool Identifier" in the last paragraph of Section

> 3.2.1.3.



Oh, thanks!



>  2. The definitions of "Service Function Type" in Figure 3 and Figure 9 are

>       different and ambiguous. Maybe it can be simply defined as "The identifier

>       for a type of service function".



Hmmm, yes the text in 3.1 and 3.2.1.3 is all mixed up! We can't tell the difference between an RD and a pool identifier!



> 3. "SFIR-RD List" in Figure 9 may be replaced with "SFIR-RD/SFI pool ID list", as

>     SFI pool ID is different from SFIR-RD and the list may consist of pure SFI pool

>     IDs.



Yes, again. As noted, 3.2.1.3 is all mixed up.



> One further note is, upon processing this variable, we need to distinguish

> RD Type and SFI Pool Identifier Type, the IANA will need to take care not to allocate 0x80XX for SFIR-RD Type.



Yes, it's all a mess! Looks like we introduced the pool identifier without enough thought :-(

What I have done for the next version is make a second sub-TLV of the Hop TLV so that SFIs and SFI Pool Identifiers are kept separate.



> Some minor editorial comments:

> 4.      "SFRIR-RD list" in Section 4.3 is misspelling.



Yes



> 5.      s/a packets/a packet/



Yes



> 6.      s/ach subtended/as subtended/



Should be "each"



> BTW, I think it is useful to support load balancing SFs across multiple SFFs as

> described in Section 5.5 of RFC 7665, this will enable a more flexible deployment

> of similar service functions in multiple sites across a network, such as in 5G

> transport.

> In fact, Figure 11 in your draft already demonstrates that SF Type 41 has two

> instances attached to SFF1 and SFF2 respectively, I think another example can

> be added for load balancing across multiple SFFs, such as the following:

>                                             ------

>                                            | SFIa |

>                                            |SFT=42|

>                                             ------

>                  ------      ------           |

>                 | SFI  |    | SFI  |      ---------

>                 |SFT=41|    |SFT=42|     |   SFF5  |

>                  ------      ------    ..|192.0.2.5|..

>                       \    /         ..:  ---------  :..

>                      ---------     .:                 :.---------

>       ------        |   SFF1  |--/      ---------     |   SFF3  |

>   -->|Class-|.......|192.0.2.1|........|   SFF6  |....|192.0.2.3|-->

>   -->| ifier|        ---------         |192.0.2.6|    :---------

>       ------                              ---------          |

>                                               |            ------

>                                             ------        | SFI  |

>                                            | SFIb |       |SFT=43|

>                                            |SFT=42|        ------

>                                             ------



Yes, an example of load balancing is a god thing to include in the examples.

Of course, load balancing in SFC is something that has to be done carefully to avoid packet ordering issues and protect stateful SF processing.

That basically means that load balancing decisions need to be made with SFP and flow awareness.

This is the point made by the examples in Section 8.9, and specifically the examples in 8.9.3 and 8.9.4.

Can you have another look at those two examples and say whether they address the load balancing you were thinking about?



Thanks,

Adrian