Hi Filip,

Thanks for your suggestion, I will take into account all these.

Best regards,
Huawei LI

> 2022年11月1日 01:26,filvarga <filipvarg...@gmail.com> 写道:
> 
> Hi Li,
> 
> I would suggest looking into session logic implementation of NAT44-ED and 
> also into ACLs in VPP. The way to go would be to create a plugin that has 
> late limiting nodes. 
> Now you have two options on how to rate limit:
> 
> 1) based on interface(s) - the more straightforward and easy to implement 
> solution.
>  - enable nodes with vnet_feature_enable_disable on specific interfaces
>  - hold a hash / pool that defines interface / interface combination that 
> should be rate limited
>    - hold counters
>    - consider how to effectively share values between threads (atomic 
> operations etc.)
> 
> 2) based on network(s)
>  - the same enable nodes as mentioned in 1)
>  - now decide if the precedence is interface or ACL, or just use two 
> different types of rate limiting that shouldn't be used together
>  - use VPP ACL implementation to create rules that need to be checked
>  - again some pool that holds the data and ACL / hash returns an index to the 
> pool with the data.
> 
> As rate limiting rules are configuration options and not sessions like in nat 
> you wouldn't need to have per thread data. Creating hash records or whatever 
> you decide to use
> would be done only through API/CLI which are thread safe operations. Then 
> just stick with atomics on the values.
> 
> The last part is for you to decide / implement some type of algo that decides 
> if the packet should be passed or dropped. This can be a little bit tricky 
> because of the VPPs batch processing or in other words how the vector of 
> packets is processed instead of per packet.
> 
> I would really advise you not to try to extend NAT with this functionality. 
> Separate plugin is a better solution.
> 
> I could look into this in my free time - if I have enough of it. Feel free to 
> pass any notes / ideas.
> 
> Best regards,
> Filip Varga
> 
> 
> po 31. 10. 2022 o 16:56 lihuawei <lihuawei_...@163.com 
> <mailto:lihuawei_...@163.com>> napísal(a):
> Hi Filip & community,
> 
> About the rate limiting with NAT session, does anyone have recommended 
> reference?
> 
> Best regards,
> Huawei LI
> 
>> 2022年10月29日 04:14,filvarga <filipvarg...@gmail.com 
>> <mailto:filipvarg...@gmail.com>> 写道:
>> 
>> Hi, Li
>> 
>> There is no such goal. It would’t be good idea to put rate limiting directly 
>> into NAT. For many good reasons.
>> 
>> Much better solution would be to implement a new rate limiting plugin.
>> 
>> If you need such a functionality feel free to contribute.
>> 
>> Best regards
>> 
>> On Fri, 28 Oct 2022 at 18:35, lihuawei <lihuawei_...@163.com 
>> <mailto:lihuawei_...@163.com>> wrote:
>> Hi Filip,
>> 
>> Yes, it’s "session rate limiting" what I mean.
>> 
>> Does community have any plan about "session rate limiting" in the classical 
>> flavours of nat?
>> 
>> 
>> Thanks & Regards,
>> Huawei LI
>> 
>>> 2022年10月28日 21:20,filvarga <filipvarg...@gmail.com 
>>> <mailto:filipvarg...@gmail.com>> 写道:
>>> 
>>> Hi Li,
>>> 
>>> What exactly do you mean by "new nat session rate limit" ? There is no 
>>> session rate limiting in the classical flavours of nat 
>>> (nat44-ed,nat44-ei,det44,nat64,nat66)
>>> 
>>> Best regards,
>>> Filip Varga
>>> 
>>> 
>>> pi 28. 10. 2022 o 3:09 lihuawei <lihuawei_...@163.com 
>>> <mailto:lihuawei_...@163.com>> napísal(a):
>>> Hi Filip,
>>> 
>>> Thanks very much for your detailed instructions and configuration examples. 
>>> I will try this method later on.
>>> 
>>> Another question about nat, is there any support for new nat session rate 
>>> limit in vpp? 
>>> 
>>> 
>>> Thanks & Regards,
>>> Huawei LI
>>> 
>>>> 2022年10月28日 01:22,filvarga <filipvarg...@gmail.com 
>>>> <mailto:filipvarg...@gmail.com>> 写道:
>>>> 
>>>> Hi Li,
>>>> 
>>>> NAT44-ED doesn't support ACL. There are other NAT plugins in VPP. For 
>>>> example PNAT uses ACL rules. You should go through all of the options 
>>>> there are and pick the correct NAT flavor that will suffice.
>>>> 
>>>> Well your option is to do following:
>>>> 
>>>> 1)
>>>> 
>>>> # lan1 interface belongs to vrf1
>>>> # lan2 interface belongs to vrf2
>>>> # wan0 interface belongs to default fib 0
>>>> 
>>>> set interface nat44 in lan1
>>>> set interface nat44 in lan2
>>>> set interface nat44 out wan0
>>>> 
>>>> nat44 add address <...address..> tenant-vrf 1
>>>> nat44 add address <...address..> tenant-vrf 2
>>>> 
>>>> 2)
>>>> 
>>>> # lan1 and wan0 interfaces belong to default fib 0
>>>> # lan2 interface belongs to vrf1
>>>> 
>>>> --||--
>>>> 
>>>> nat44 add address <...address...>
>>>> nat44 add address <...address..> tenant-vrf 1
>>>> 
>>>> This is how you simply force the inside interface to use a specific NAT 
>>>> pool address.
>>>> 
>>>> Best regards,
>>>> Filip Varga
>>>> 
>>>> 
>>>> št 27. 10. 2022 o 18:58 lihuawei <lihuawei_...@163.com 
>>>> <mailto:lihuawei_...@163.com>> napísal(a):
>>>> Hi Filip,
>>>> 
>>>> I have searched your mail accounts, and didn’t find any acl configuration 
>>>> used with nat44. Do you mean use acl with nat44 address to achive to my 
>>>> target creating nat sessions based packet’s source ip's network? 
>>>> 
>>>> How about multi nat addresses respectively used for multi-subnets in a vrf?
>>>> 
>>>> Thanks & Regards,
>>>> Huawei LI
>>>> 
>>>>> 2022年10月27日 22:06,filvarga <filipvarg...@gmail.com 
>>>>> <mailto:filipvarg...@gmail.com>> 写道:
>>>>> 
>>>>> Hi Li,
>>>>> 
>>>>> Yes, try to search one of my mail accounts (current/previous) for example 
>>>>> fiva...@cisco.com <mailto:fiva...@cisco.com>, filipvarg...@gmail.com 
>>>>> <mailto:filipvarg...@gmail.com> or my name.
>>>>> If you are looking for a feature that does ACL matching based on source 
>>>>> address you should try to look in different implementations of nat44, 
>>>>> there are more then one in vpp (one even supports acl matching).
>>>>> 
>>>>> Yes, the support for matching based on source subnet is not part of 
>>>>> nat44-ed and It would greatly change the current state for it. I wouldn't 
>>>>> suggest doing such a radical change. You can ofc. use as I mentioned 
>>>>> previously VRF logic. The only thing you need is 1 extra vrf to put one 
>>>>> of the inside interfaces into in conjunction with nat44 add address ... 
>>>>> tenant-vrf <inside-vrf>. 
>>>>> 
>>>>> Regarding your problem with the bridge in VPP. You can go about using a 
>>>>> bridge in linux and connecting both interfaces in VPP to it. You would 
>>>>> even be able to have both VPP interfaces in the same subnet.
>>>>> 
>>>>> Best regards,
>>>>> Filip Varga
>>>>> 
>>>>> 
>>>>> št 27. 10. 2022 o 15:04 lihuawei <lihuawei_...@163.com 
>>>>> <mailto:lihuawei_...@163.com>> napísal(a):
>>>>> Hi Filip,
>>>>> 
>>>>> Sorry, I didn’t state the demands clearly. My demand is to let a nat ip 
>>>>> address just only work for specific src network prefix in a vpc, the nat 
>>>>> sessions using the nat ip address will be created only when the i2o 
>>>>> packets’s src ip matches the specific network prefix in the vpc.
>>>>> 1) I saw the snat_address_t’s member net is used only for matching the 
>>>>> packets’s dst ip in nat_ed_alloc_addr_and_port.
>>>>> 2) using multiple vrfs to isolate the network is a method, but will use 
>>>>> more other configures, and makes the traffic model more complex.
>>>>> 
>>>>> By view the codes about nat44-ed, I don’t think there is any 
>>>>> configuration examples about the demand I mentioned above. Do you have 
>>>>> any keywords about the configuration examples? I want to try a search in 
>>>>> mailing list with them.
>>>>> 
>>>>> Do I understand this right? Looking forward to hearing any further ideas 
>>>>> or suggestions from you.
>>>>> 
>>>>> Thanks & Regards,
>>>>> Huawei LI
>>>>> 
>>>>>> 2022年10月27日 16:52,filvarga <filipvarg...@gmail.com 
>>>>>> <mailto:filipvarg...@gmail.com>> 写道:
>>>>>> 
>>>>>> Hi Li,
>>>>>> 
>>>>>> There are few errors in your statement.
>>>>>> 
>>>>>> 1) SNAT - is an obsolete name for the old nat plugin.
>>>>>> 2) NAT is split among multiple plugins
>>>>>> 3) one of the plugins - nat44-ed (the most used and preferred) does 
>>>>>> support all of the things you have mentioned
>>>>>> 
>>>>>> Please feel free to search in the community mailing list for 
>>>>>> configuration examples. There is also .rst file in the nat44-ed plugin 
>>>>>> directory (may not contain all of the supported configuration). Also 
>>>>>> check the api.c and cli.c for all available configuration options.
>>>>>> 
>>>>>> After you have done above mentioned feel free to ask regarding specific 
>>>>>> configuration issue.
>>>>>> 
>>>>>> Best regards,
>>>>>> Filip Varga
>>>>>> 
>>>>>> 
>>>>>> pi 21. 10. 2022 o 4:01 lihuawei <lihuawei_...@163.com 
>>>>>> <mailto:lihuawei_...@163.com>> napísal(a):
>>>>>> Hi John & Everyone & Community,
>>>>>> 
>>>>>> In my scene, it is the demand to put multiple subnets in one BD. A few 
>>>>>> days ago, I have found the other proper idea to implement the demand 
>>>>>> mentioned in the mail subject and original mail.
>>>>>> 
>>>>>> This problem and mail can be close now.
>>>>>> 
>>>>>> Have a nice day, everybody!
>>>>>> 
>>>>>> 
>>>>>> Thanks & Regards,
>>>>>> Huawei LI
>>>>>> 
>>>>>>> 2022年10月21日 00:45,John Lo <lojultra2...@outlook.com 
>>>>>>> <mailto:lojultra2...@outlook.com>> 写道:
>>>>>>> 
>>>>>>> Hi Huawei,
>>>>>>> 
>>>>>>> Some comments on supporting multiple BVIs in a BD:
>>>>>>> 
>>>>>>> 1. There are assumptions in the bridging code including only 1 BVI per 
>>>>>>> BD and it will be the last interface of a BD's flood list.  To support 
>>>>>>> multiple BVIs per BD will make the code more complicated and less 
>>>>>>> efficient from performance point of view.
>>>>>>> 
>>>>>>> 2. All interfaces, including BVI, in a BD can talk to each other via 
>>>>>>> MAC address learning.  There is no concept of L3 IP address nor 
>>>>>>> awareness of IPs in separate VRFs. Thus, the concept of multiple BVIs 
>>>>>>> in a BD each in different VRFs does not match the L2 bridging concept. 
>>>>>>> While it may be possible to enhance BD support to understand IP and VRF 
>>>>>>> at L3, it will again make the code more complicated and affect 
>>>>>>> performance.
>>>>>>> 
>>>>>>> My question would be, isn't it more natural to put each subnet in a 
>>>>>>> separate BD with its BVI in the desired VRF?
>>>>>>> 
>>>>>>> Regards,
>>>>>>> John
>>>>>>> 
>>>>>>> -----Original Message-----
>>>>>>> From: lihuawei <lihuawei_...@163.com <mailto:lihuawei_...@163.com>> 
>>>>>>> Sent: Sunday, October 16, 2022 11:30 PM
>>>>>>> To: o...@cisco.com <mailto:o...@cisco.com>; fiva...@cisco.com 
>>>>>>> <mailto:fiva...@cisco.com>; klement.sek...@gmail.com 
>>>>>>> <mailto:klement.sek...@gmail.com>; Neale Ranns <ne...@graphiant.com 
>>>>>>> <mailto:ne...@graphiant.com>>; lojultra2...@outlook.com 
>>>>>>> <mailto:lojultra2...@outlook.com>; slu...@cisco.com 
>>>>>>> <mailto:slu...@cisco.com>; vpp-dev@lists.fd.io 
>>>>>>> <mailto:vpp-dev@lists.fd.io>
>>>>>>> Subject: snat support bind to specific subnets
>>>>>>> 
>>>>>>> Hi Ole, Filip, Klement, Neale, John, Steven, &Community,
>>>>>>> 
>>>>>>> I have a demand about snat. With in a vpc, different subnets  need use 
>>>>>>> different snat ip to the internet, but the vpp snat feature now do not 
>>>>>>> support snat ip bind to specific subnets. I have two ideas to resolve 
>>>>>>> this:
>>>>>>> 1. modify and develop snat feature to support snat ip bind to specific 
>>>>>>> subnets.
>>>>>>> 2. use multiple vrfs to isolate subnets, one vrf’s subnets use one snat 
>>>>>>> ip, but the bd bvi now only support one in one bd, the non-bvi loop 
>>>>>>> does not forward L3. So modify and develop bd bvi to support multiple 
>>>>>>> bvi interfaces in one bd may be one better idea.
>>>>>>> 
>>>>>>> Do I understand right and the idea 2 is the better? Anybody who has 
>>>>>>> better idea, please help.
>>>>>>> 
>>>>>>> Thanks and Regards,
>>>>>>> Huawei LI
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>> 
>> 
>> 
>> 
>> -- 
>> Best regards,
>> Filip Varga
>> 
> 
> 
> 
> 
> 
> 

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#22109): https://lists.fd.io/g/vpp-dev/message/22109
Mute This Topic: https://lists.fd.io/mt/94377538/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/leave/1480452/21656/631435203/xyzzy 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to