Re: [ovs-dev] [PATCH v2] ofproto-dpif-upcall: Improve concurrency by adjust flow-limit

2021-06-07 Thread taoyunupt
Hi ,
  Please help to review this patch. It  has passed couple of days. Hope to 
know your idea. Thanks.





Thanks,

YUN







At 2021-05-26 10:44:16, "Tao YunXiang"  wrote:
>OVS uses a set of gentle mechanisms to control the number of flows in 
>datapath. However, it is difficult for the number of datapath flows to 
>reach a high level in a short time.
>
>Through some tests with Apache benchmark, I found the point is that
>the value of flow-limit increases too slowly, but decreases very quickly. 
>
>This change has two improvements. One is the flow-limit will adjust more 
>linearly. The other one is, when the duration is small, the flow-limit will
>increase faster.
>
>Through this change, the test result of Apache benchmark can reach 12k from 5k,
>the test command is as follows:
>
>ab -n 20 -c 500 -r http://1.1.1.2/
>
>v1->v2: Make flow-limit changes linearly. Add a limitation to make flow_limit
>won't overflow UINT_MAX.
>
>
>Signed-off-by: Tao YunXiang 
>Cc: Ben Pfaff 
>
>---
> ofproto/ofproto-dpif-upcall.c | 20 +---
> 1 file changed, 13 insertions(+), 7 deletions(-)
>
>diff --git a/ofproto/ofproto-dpif-upcall.c b/ofproto/ofproto-dpif-upcall.c
>index ccf97266c..805409165 100644
>--- a/ofproto/ofproto-dpif-upcall.c
>+++ b/ofproto/ofproto-dpif-upcall.c
>@@ -963,14 +963,20 @@ udpif_revalidator(void *arg)
> 
> duration = MAX(time_msec() - start_time, 1);
> udpif->dump_duration = duration;
>-if (duration > 2000) {
>-flow_limit /= duration / 1000;
>-} else if (duration > 1300) {
>-flow_limit = flow_limit * 3 / 4;
>-} else if (duration < 1000 &&
>-   flow_limit < n_flows * 1000 / duration) {
>-flow_limit += 1000;
>+
>+/* Use duration as a reference, adjust the value of flow_limit,
>+ * when the duration is short, increase the flow_limit, and vice
>+ * versa. The purpose of using multiple conversions between int
>+ * and float is to make the flow_limit change more linear. */ 
>+
>+if (duration >= 1000) {
>+flow_limit = (int) ((float) (flow_limit) / (duration / 
>1000.0));
>+} else if (flow_limit * (1000.0 / duration) >= UINT_MAX) {
>+flow_limit = ofproto_flow_limit;
>+} else {
>+flow_limit = (int) (flow_limit * (1000.0 / duration));
> }
>+
> flow_limit = MIN(ofproto_flow_limit, MAX(flow_limit, 1000));
> atomic_store_relaxed(>flow_limit, flow_limit);
> 
>-- 
>2.17.1
>
>
>
>___
>dev mailing list
>d...@openvswitch.org
>https://mail.openvswitch.org/mailman/listinfo/ovs-dev
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [PATCH] system-traffic.at:add missing comma

2021-06-07 Thread taoyunupt
Hi ,
  Please help to review this patch. It  has passed couple of days. Thanks.





Thanks,

YUN


At 2021-05-26 10:53:45, "Tao YunXiang"  wrote:
>Add missing comma.
>
>Signed-off-by: Tao YunXiang 
>Cc: Joe Stringer 
>
>---
> tests/system-traffic.at | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
>diff --git a/tests/system-traffic.at b/tests/system-traffic.at
>index fb5b9a36d..ed925cea5 100644
>--- a/tests/system-traffic.at
>+++ b/tests/system-traffic.at
>@@ -2561,7 +2561,7 @@ priority=10,arp,action=normal
> 
> dnl Only allow non-fragmented messages and 1st fragments of each message
> priority=100,in_port=1,icmp,ip_frag=no,action=ct(commit,zone=9),2
>-priority=100,in_port=1,icmp,ip_frag=firstaction=ct(commit,zone=9),2
>+priority=100,in_port=1,icmp,ip_frag=first,action=ct(commit,zone=9),2
> priority=100,in_port=2,ct_state=-trk,icmp,action=ct(table=0,zone=9)
> priority=100,in_port=2,ct_state=+trk+est-new,icmp,action=1
> ])
>-- 
>2.17.1
>
>
>
>___
>dev mailing list
>d...@openvswitch.org
>https://mail.openvswitch.org/mailman/listinfo/ovs-dev
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [PATCH v2] Improve concurrency by adjust flow-limit

2021-05-24 Thread taoyunupt
Hi Ben,
Please help to review this patch ,which to optimize the flow-limit 
adjustment.


The v1 patch links to 
http://patchwork.ozlabs.org/project/openvswitch/patch/20210511075200.19037-1-taoyunxi...@cmss.chinamobile.com/




Thanks,
Yun


At 2021-05-17 15:22:48, "Tao YunXiang"  wrote:
>OVS uses a set of gentle mechanisms to control the number of flows in 
>datapath. However, it is difficult for the number of datapath flows to 
>reach a high level in a short time.
>
>Through some tests with Apache benchmark, I found the point is that
>the value of flow-limit increases too slowly, but decreases very quickly. 
>
>This change has two improvements. One is the flow-limit will adjust more 
>linearly. The other one is, when the duration is small, the flow-limit will
>increase faster.
>
>Through this change, the test result of Apache benchmark can reach 12k from 5k,
>the test command is as follows:
>
>ab -n 20 -c 500 -r http://1.1.1.2/
>
>v1->v2: Make flow-limit changes linearly. Add a limitation to make flow_limit
>won't overflow UINT_MAX.
>
>
>Signed-off-by: Tao YunXiang 
>Cc: Ben Pfaff 
>
>---
> ofproto/ofproto-dpif-upcall.c | 20 +---
> 1 file changed, 13 insertions(+), 7 deletions(-)
>
>diff --git a/ofproto/ofproto-dpif-upcall.c b/ofproto/ofproto-dpif-upcall.c
>index ccf97266c..805409165 100644
>--- a/ofproto/ofproto-dpif-upcall.c
>+++ b/ofproto/ofproto-dpif-upcall.c
>@@ -963,14 +963,20 @@ udpif_revalidator(void *arg)
> 
> duration = MAX(time_msec() - start_time, 1);
> udpif->dump_duration = duration;
>-if (duration > 2000) {
>-flow_limit /= duration / 1000;
>-} else if (duration > 1300) {
>-flow_limit = flow_limit * 3 / 4;
>-} else if (duration < 1000 &&
>-   flow_limit < n_flows * 1000 / duration) {
>-flow_limit += 1000;
>+
>+/* Use duration as a reference, adjust the value of flow_limit,
>+ * when the duration is short, increase the flow_limit, and vice
>+ * versa. The purpose of using multiple conversions between int
>+ * and float is to make the flow_limit change more linear. */ 
>+
>+if (duration >= 1000) {
>+flow_limit = (int) ((float) (flow_limit) / (duration / 
>1000.0));
>+} else if (flow_limit * (1000.0 / duration) >= UINT_MAX) {
>+flow_limit = ofproto_flow_limit;
>+} else {
>+flow_limit = (int) (flow_limit * (1000.0 / duration));
> }
>+
> flow_limit = MIN(ofproto_flow_limit, MAX(flow_limit, 1000));
> atomic_store_relaxed(>flow_limit, flow_limit);
> 
>-- 
>2.17.1
>
>
>
>___
>dev mailing list
>d...@openvswitch.org
>https://mail.openvswitch.org/mailman/listinfo/ovs-dev
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [PATCH] ofproto-dpif-upcall: Improve concurrency by adjust flow-limit

2021-05-17 Thread taoyunupt



At 2021-05-13 01:20:29, "Ben Pfaff"  wrote:
>On Wed, May 12, 2021 at 10:44:12AM +0800, taoyunupt wrote:
>> At 2021-05-12 04:00:30, "Ben Pfaff"  wrote:
>> >On Tue, May 11, 2021 at 03:52:00PM +0800, Tao YunXiang wrote:
>> >> +/* Use duration as a reference, adjust the number of 
>> >> flow_limit,
>> >> + * when the duration is small, increase the flow-limit, and 
>> >> vice versa */
>> >> +if (duration >= 1000) {
>> >>  flow_limit /= duration / 1000;
>> >> -} else if (duration > 1300) {
>> >> -flow_limit = flow_limit * 3 / 4;
>> >> -} else if (duration < 1000 &&
>> >> -   flow_limit < n_flows * 1000 / duration) {
>> >> -flow_limit += 1000;
>> >> +} else {
>> >> +flow_limit *= 1000 / duration;
>> >>  }
>> >>  flow_limit = MIN(ofproto_flow_limit, MAX(flow_limit, 1000));
>> >>  atomic_store_relaxed(>flow_limit, flow_limit);
>> >
>> >The above is very abrupt.  It always tries to adjust the flow limit
>> >upward or downward.  I think that this is a bad idea, especially in the
>> >upward direction.  If there are only a few flows, which only take a few
>> >milliseconds to revalidate, then it will keep increasing the flow limit
>> >upward until it overflows the range of unsigned int.  It will happen
>> >very quickly, in fact: if duration is 1 ms three times in a row, then we
>> >will multiply flow_limit by 1,000,000,000 and overflow 32-bit UINT_MAX;
>> >if it happens six times in a row, we will overflow 64-bit.
>> 
>> >
>> Hi,Ben, 
>> Thanks for your review. 
>> It won't overflow, because of the following line of 
>> code(https://github.com/openvswitch/ovs/blob/master/ofproto/ofproto-dpif-upcall.c#L974),which
>>  makes it won't over   `ofproto_flow_limit` .
>> For example, if currently flow-limit is 200,000(the default 
>> ofproto_flow_limit), and duration is 1ms, it will become 200,000,000 ,which 
>> is much less than 32-bit UINT_MAX(4,294,967,295).  
>> And then,  it wil be back to 200,000,because of the limtitaion mentioned 
>> above, I think this is important.
>
>OK.  Is there anything that ensures that ofproto_flow_limit is no more
>than UINT_MAX/1000? Otherwise we still have the problem, if
>ofproto_flow_limit is set high.

I sent v2 to add a limitation to avoid this.






>> >Furthermore, it doesn't work well even if we have longer durations.  If
>> >revalidation takes 501 ms, then we can adjust the flow_limit upward, but
>> >this won't do it.
>> 
>> 
>> emm...though,it won't change when `501ms`, but it will change when `500ms` 
>> or times of 2 or 5 .
>> If you think it's needed to make  process more linear, we can change its 
>> type from int to float. 
>> what do you think?
>
>I think that more linear makes more sense.  Always adjusting by a factor

>of 2 will probably cause oscillation.


I sent v2 to make adjustment more linear.






>
>> >On the downward direction, this new code does nothing if the duration is
>> >less than 2 seconds.  We want to aim for 1-second revalidation times.
>> 
>> >
>> 
>> 
>> In this code ,I changed the benchmark value from 2s and 1.3s to 1s. It aims 
>> for 1-second revalidation times. 
>> Do I misunderstand your point?  please let me know , thanks. The following 
>> is the new code. 
>> 
>> 
>>  if (duration >= 1000) {
>>  flow_limit /= duration / 1000;
>>  } else {
>>  flow_limit *= 1000 / duration;
>>  }
>>  flow_limit = MIN(ofproto_flow_limit, MAX(flow_limit, 1000));
>
>This will do nothing if the duration is between 501 ms and 1999 ms, and
>if it's outside that range then it will always adjust by a factor of 2
>or more.  I think that is too wide a range and I think that the minimum

>adjustment factor is too high.


I sent v2 to make adjustment more linear , I think it will avoid this situtaion 
you mentioned.


Thanks,
YUN 



___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [PATCH] ofproto-dpif-upcall: Improve concurrency by adjust flow-limit

2021-05-11 Thread taoyunupt



At 2021-05-12 04:00:30, "Ben Pfaff"  wrote:
>On Tue, May 11, 2021 at 03:52:00PM +0800, Tao YunXiang wrote:
>> Author: Tao YunXiang 
>
>You don't need an Author: tag because Git stores the author in a
>separate field.
>
>> +/* Use duration as a reference, adjust the number of flow_limit,
>> + * when the duration is small, increase the flow-limit, and 
>> vice versa */
>> +if (duration >= 1000) {
>>  flow_limit /= duration / 1000;
>> -} else if (duration > 1300) {
>> -flow_limit = flow_limit * 3 / 4;
>> -} else if (duration < 1000 &&
>> -   flow_limit < n_flows * 1000 / duration) {
>> -flow_limit += 1000;
>> +} else {
>> +flow_limit *= 1000 / duration;
>>  }
>>  flow_limit = MIN(ofproto_flow_limit, MAX(flow_limit, 1000));
>>  atomic_store_relaxed(>flow_limit, flow_limit);
>
>The above is very abrupt.  It always tries to adjust the flow limit
>upward or downward.  I think that this is a bad idea, especially in the
>upward direction.  If there are only a few flows, which only take a few
>milliseconds to revalidate, then it will keep increasing the flow limit
>upward until it overflows the range of unsigned int.  It will happen
>very quickly, in fact: if duration is 1 ms three times in a row, then we
>will multiply flow_limit by 1,000,000,000 and overflow 32-bit UINT_MAX;
>if it happens six times in a row, we will overflow 64-bit.

>
Hi,Ben, 
Thanks for your review. 
It won't overflow, because of the following line of 
code(https://github.com/openvswitch/ovs/blob/master/ofproto/ofproto-dpif-upcall.c#L974),which
 makes it won't over   `ofproto_flow_limit` .
For example, if currently flow-limit is 200,000(the default 
ofproto_flow_limit), and duration is 1ms, it will become 200,000,000 ,which is 
much less than 32-bit UINT_MAX(4,294,967,295).  
And then,  it wil be back to 200,000,because of the limtitaion mentioned above, 
I think this is important.


>Furthermore, it doesn't work well even if we have longer durations.  If
>revalidation takes 501 ms, then we can adjust the flow_limit upward, but
>this won't do it.



emm...though,it won't change when `501ms`, but it will change when `500ms` or 
times of 2 or 5 .
If you think it's needed to make  process more linear, we can change its type 
from int to float. 
what do you think?


>On the downward direction, this new code does nothing if the duration is
>less than 2 seconds.  We want to aim for 1-second revalidation times.

>


In this code ,I changed the benchmark value from 2s and 1.3s to 1s. It aims for 
1-second revalidation times. 
Do I misunderstand your point?  please let me know , thanks. The following is 
the new code. 


 if (duration >= 1000) {
 flow_limit /= duration / 1000;
 } else {
 flow_limit *= 1000 / duration;
 }
 flow_limit = MIN(ofproto_flow_limit, MAX(flow_limit, 1000));


>I don't think that this approach has been thought through very well.


>___
>dev mailing list
>d...@openvswitch.org
>https://mail.openvswitch.org/mailman/listinfo/ovs-dev
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] Discussion on the logical rationality of flow-limit

2021-04-25 Thread taoyunupt
Hi,
 Recently I encountered a TCP connection performance problem, the test tool 
is Apache benchmark.
 The OVS  in my environment is set for  hardware offload solution.  The 
"Requests per second" is about 6000/s, it closed to non-offload solution.
  "flow-lmit"  has a dynamic balance in udpif_revalidator, it will modify 
by the OVS condition(which is pind to "duration").   In the revalidate 
function, when the number of flows is greater than twice the "flow-limit" , the 
delete flow operation will be triggered to delete all flows; when the number of 
flows is greater than the "flow-limit", the aging time will be adjusted to 
0.1s, Slowly delete flow.   


 
 I found that the reason for the poor performance is that when the number 
of flows in the datapath increases and the processing power of OVS decreases, a 
large number of flow deletions are generated. 
 As we know, In the hardware offloading scenario, although there are a lot 
of flows, in fact, apart from the first packet, there is no need to process 
subsequent packets. 
 In my opinion, the dynamic balance mechanism is very necessary, but we 
need to increase the value of “duration”, or provide some new switches for some 
high-performance scenarios, such as hardware offloading.
 Do we still need to restrict the number of flows so strictly? By the way, 
do you have another solution to resolve this?   




Thanks,
Yun
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] [OVN]Cookie of OpenFlow will not change, if UUID of logical-flow changes.

2020-02-06 Thread taoyunupt
Hi,Numa,
  When I change the MTU of netork in OpenStack,the dhcp_options 
will also changes, and it will delete the old  logical flow ,and create a new 
one for put_dhcp_opts. So the UUID of releated logical-flow will change. 
But,the cookie of OpenFlow in the allocated chassis not changed until we 
restart the ovn-controller. By the way ,the function is always  OK.
  The version of OVS/OVN is 2.10.
  This situaiton will give us some trouble to track OpenFlow. What 
do you think?




Thanks,
Yun
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [PATCH v2] ovsdb-server: Allow OVSDB clients to specify the UUID for inserted rows.

2020-01-10 Thread taoyunupt
Hi Ben,
   It will be appreciated,if you give more explanation for the resaon 
to summit this patch.  In my opinion, it makes the "UUID" column be almost the 
same with "name" column, if we need "name" column in the future?  





At 2020-01-10 11:39:22, "Han Zhou"  wrote:
>On Thu, Jan 9, 2020 at 12:48 PM Ben Pfaff  wrote:
>>
>> Requested-by: Leonid Ryzhyk 
>> Signed-off-by: Ben Pfaff 
>> ---
>> v1->v2: Improve test as suggested by Flavio Fernandes.
>>
>>  Documentation/ref/ovsdb-server.7.rst |  9 +
>>  NEWS |  1 +
>>  ovsdb/execution.c| 26 ++
>>  ovsdb/transaction.c  | 22 +-
>>  ovsdb/transaction.h  |  5 -
>>  tests/ovsdb-execution.at | 24 
>>  tests/uuidfilt.py| 18 --
>>  7 files changed, 97 insertions(+), 8 deletions(-)
>>
>> diff --git a/Documentation/ref/ovsdb-server.7.rst
>b/Documentation/ref/ovsdb-server.7.rst
>> index bc533611cb4a..967761bdfb84 100644
>> --- a/Documentation/ref/ovsdb-server.7.rst
>> +++ b/Documentation/ref/ovsdb-server.7.rst
>> @@ -546,6 +546,15 @@ condition can be either a 3-element JSON array as
>described in the RFC or a
>>  boolean value. In case of an empty array an implicit true boolean value
>will be
>>  considered.
>>
>> +5.2.1 Insert
>> +
>> +
>> +As an extension, Open vSwitch 2.13 and later allow an optional ``uuid``
>member
>> +to specify the UUID for the new row.  The specified UUID must be unique
>within
>> +the table when it is inserted and not the UUID of a row previously
>deleted
>> +within the transaction.  If the UUID violates these rules, then the
>operation
>> +fails with a ``duplicate uuid`` error.
>> +
>>  5.2.6 Wait, 5.2.7 Commit, 5.2.9 Comment
>>  ---
>>
>> diff --git a/NEWS b/NEWS
>> index 965facaf852d..d8f82cd18af0 100644
>> --- a/NEWS
>> +++ b/NEWS
>> @@ -34,6 +34,7 @@ Post-v2.12.0
>> interval is increased to 60 seconds for the connection to the
>> replication server. This value is configurable with the unixctl
>> command - ovsdb-server/set-active-ovsdb-server-probe-interval.
>> + * ovsdb-server: New OVSDB extension to allow clients to specify row
>UUIDs.
>>
>>  v2.12.0 - 03 Sep 2019
>>  -
>> diff --git a/ovsdb/execution.c b/ovsdb/execution.c
>> index f2cf3d72d45f..e45f3d6796a7 100644
>> --- a/ovsdb/execution.c
>> +++ b/ovsdb/execution.c
>> @@ -1,4 +1,4 @@
>> -/* Copyright (c) 2009, 2010, 2011, 2012, 2013, 2017 Nicira, Inc.
>> +/* Copyright (c) 2009, 2010, 2011, 2012, 2013, 2017, 2019 Nicira, Inc.
>>   *
>>   * Licensed under the Apache License, Version 2.0 (the "License");
>>   * you may not use this file except in compliance with the License.
>> @@ -329,11 +329,12 @@ ovsdb_execute_insert(struct ovsdb_execution *x,
>struct ovsdb_parser *parser,
>>  {
>>  struct ovsdb_table *table;
>>  struct ovsdb_row *row = NULL;
>> -const struct json *uuid_name, *row_json;
>> +const struct json *uuid_json, *uuid_name, *row_json;
>>  struct ovsdb_error *error;
>>  struct uuid row_uuid;
>>
>>  table = parse_table(x, parser, "table");
>> +uuid_json = ovsdb_parser_member(parser, "uuid", OP_STRING |
>OP_OPTIONAL);
>>  uuid_name = ovsdb_parser_member(parser, "uuid-name", OP_ID |
>OP_OPTIONAL);
>>  row_json = ovsdb_parser_member(parser, "row", OP_OBJECT);
>>  error = ovsdb_parser_get_error(parser);
>> @@ -341,6 +342,19 @@ ovsdb_execute_insert(struct ovsdb_execution *x,
>struct ovsdb_parser *parser,
>>  return error;
>>  }
>>
>> +if (uuid_json) {
>> +if (!uuid_from_string(_uuid, json_string(uuid_json))) {
>> +return ovsdb_syntax_error(uuid_json, NULL, "bad uuid");
>> +}
>> +
>> +if (!ovsdb_txn_may_create_row(table, _uuid)) {
>> +return ovsdb_syntax_error(uuid_json, "duplicate uuid",
>> +  "This UUID would duplicate a UUID "
>> +  "already present within the table
>or "
>> +  "deleted within the same
>transaction.");
>> +}
>> +}
>> +
>>  if (uuid_name) {
>>  struct ovsdb_symbol *symbol;
>>
>> @@ -350,9 +364,13 @@ ovsdb_execute_insert(struct ovsdb_execution *x,
>struct ovsdb_parser *parser,
>>"This \"uuid-name\" appeared on an
>"
>>"earlier \"insert\" operation.");
>>  }
>> -row_uuid = symbol->uuid;
>> +if (uuid_json) {
>> +symbol->uuid = row_uuid;
>> +} else {
>> +row_uuid = symbol->uuid;
>> +}
>>  symbol->created = true;
>> -} else {
>> +} else if (!uuid_json) {
>>  uuid_generate(_uuid);
>>  }
>>
>> diff --git a/ovsdb/transaction.c b/ovsdb/transaction.c
>> index 

Re: [ovs-dev] [OVN][RAFT] Follower refusing new entries from leader

2019-12-09 Thread taoyunupt
Hi, Han,
 I do not  encounter that problem these days  after using this 
patch.  I think there is no COMPACT in my environment.  Actaully , I don't see 
any snap file in /var/lib/openvswitch.  


Thanks,
Yun






At 2019-12-04 10:01:16, "Han Zhou"  wrote:

Hi,


Could you see if this patch fixes your problem?
https://patchwork.ozlabs.org/patch/1203951/


Thanks,
Han





On Mon, Dec 2, 2019 at 12:28 AM Han Zhou  wrote:

Sorry for the late reply. It was holiday here.
I didn't see such problem when there is no compaction. Did you see this problem 
when DB compaction didn't happen? The difference is that after compaction the 
RAFT log doesn't have any entries and all the data is in the snapshot.



On Fri, Nov 29, 2019 at 12:11 AM taoyunupt  wrote:

Hi,Han
  Hope to receive your reply.


Thanks,
Yun



在 2019-11-28 16:17:07,"taoyunupt"  写道:

Hi,Han
 Another question. NO COMPACT. If restart a follower , leader sender 
some entries during the  break time, when it has started, if it also happend to 
this problem?  What is the difference between simply restart and COMPACT with 
restart ?


Thanks,
Yun








在 2019-11-28 13:58:36,"taoyunupt"  写道:

Hi,Han
 Thanks for your reply.  I think maybe we can disconnect the failed 
follower from the Haproxy then synchronize the date, after all completed, 
reconnect it to Haproxy again. But I do not know how to synchronize actually. 
 It is just my naive idea. Do you have some suggestion about how to fix 
this problem.  If not very completed, I wii have a try.


Thanks
Yun






在 2019-11-28 11:47:55,"Han Zhou"  写道:



On Wed, Nov 27, 2019 at 7:22 PM taoyunupt  wrote:
>
> Hi,
> My OVN cluster has 3 OVN-northd nodes, They are proxied by Haproxy with a 
> VIP. Recently, I restart OVN cluster frequently.  One of the members report 
> the logs below.
> After read the code and paper of RAFT, it seems normal process ,If the 
> follower does not find an entry in its log with the same index and term, then 
> it refuses the new entries.
> I think it's reasonable to refuse. But, as we could not control Haproxy 
> or some proxy maybe, so it will happen error when an session assignate to the 
> failed follower.
>   
> Does have some means or ways to solve this problem. Maybe we can kick off 
> the failed follower or disconnect it from the haproxy then synchronize the 
> date ?  Hope to hear your suggestion.
>
>
> 2019-11-27T14:22:17.060Z|00240|raft|INFO|rejecting append_request because 
> previous entry 1103,50975 not in local log (mismatch past end of log)
> 2019-11-27T14:22:17.064Z|00241|raft|ERR|Dropped 34 log messages in last 12 
> seconds (most recently, 0 seconds ago) due to excessive rate
> 2019-11-27T14:22:17.064Z|00242|raft|ERR|internal error: deferred append_reply 
> message completed but not ready to send because message index 14890 is past 
> last synced index 0: a2b2 append_reply "mismatch past end of log": term=1103 
> log_end=14891 result="inconsistency"
> 2019-11-27T14:22:17.402Z|00243|raft|INFO|rejecting append_request because 
> previous entry 1103,50975 not in local log (mismatch past end of log)
>
>
> [root@ovn1 ~]#  ovs-appctl -t /var/run/openvswitch/ovnsb_db.ctl 
> cluster/status OVN_Southbound
> a2b2
> Name: OVN_Southbound
> Cluster ID: 4c54 (4c546513-77e3-4602-b211-2e200014ad79)
> Server ID: a2b2 (a2b2a9c5-cf58-4724-8421-88fd5ca5d94d)
> Address: tcp:10.254.8.209:6644
> Status: cluster member
> Role: leader
> Term: 1103
> Leader: self
> Vote: self
>
> Log: [42052, 51009]
> Entries not yet committed: 0
> Entries not yet applied: 0
> Connections: ->beaf ->9a33 <-9a33 <-beaf
> Servers:
> a2b2 (a2b2 at tcp:10.254.8.209:6644) (self) next_index=15199 
> match_index=51008
> beaf (beaf at tcp:10.254.8.208:6644) next_index=51009 match_index=0
> 9a33 (9a33 at tcp:10.254.8.210:6644) next_index=51009 match_index=51008

>


I think it is a bug. I noticed that this problem happens when the cluster is 
restarted after DB compaction. I mentioned it in one of the test cases: 
https://github.com/openvswitch/ovs/blob/master/tests/ovsdb-cluster.at#L252
I also mentioned another problem related to compaction: 
https://github.com/openvswitch/ovs/blob/master/tests/ovsdb-cluster.at#L239
I was planning to debug these but didn't get the time yet. I will try to find 
some time next week (it would be great if you could figure it out and submit 
patches).



Thanks,
Han
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [OVN][RAFT] Follower refusing new entries from leader

2019-11-29 Thread taoyunupt
Hi,Han
  Hope to receive your reply.


Thanks,
Yun



在 2019-11-28 16:17:07,"taoyunupt"  写道:

Hi,Han
 Another question. NO COMPACT. If restart a follower , leader sender 
some entries during the  break time, when it has started, if it also happend to 
this problem?  What is the difference between simply restart and COMPACT with 
restart ?


Thanks,
Yun








在 2019-11-28 13:58:36,"taoyunupt"  写道:

Hi,Han
 Thanks for your reply.  I think maybe we can disconnect the failed 
follower from the Haproxy then synchronize the date, after all completed, 
reconnect it to Haproxy again. But I do not know how to synchronize actually.  
 It is just my naive idea. Do you have some suggestion about how to fix 
this problem.  If not very completed, I wii have a try.


Thanks 
Yun






在 2019-11-28 11:47:55,"Han Zhou"  写道:



On Wed, Nov 27, 2019 at 7:22 PM taoyunupt  wrote:
>
> Hi,
> My OVN cluster has 3 OVN-northd nodes, They are proxied by Haproxy with a 
> VIP. Recently, I restart OVN cluster frequently.  One of the members report 
> the logs below.
> After read the code and paper of RAFT, it seems normal process ,If the 
> follower does not find an entry in its log with the same index and term, then 
> it refuses the new entries.
> I think it's reasonable to refuse. But, as we could not control Haproxy 
> or some proxy maybe, so it will happen error when an session assignate to the 
> failed follower.
>
> Does have some means or ways to solve this problem. Maybe we can kick off 
> the failed follower or disconnect it from the haproxy then synchronize the 
> date ?  Hope to hear your suggestion.
>
>
> 2019-11-27T14:22:17.060Z|00240|raft|INFO|rejecting append_request because 
> previous entry 1103,50975 not in local log (mismatch past end of log)
> 2019-11-27T14:22:17.064Z|00241|raft|ERR|Dropped 34 log messages in last 12 
> seconds (most recently, 0 seconds ago) due to excessive rate
> 2019-11-27T14:22:17.064Z|00242|raft|ERR|internal error: deferred append_reply 
> message completed but not ready to send because message index 14890 is past 
> last synced index 0: a2b2 append_reply "mismatch past end of log": term=1103 
> log_end=14891 result="inconsistency"
> 2019-11-27T14:22:17.402Z|00243|raft|INFO|rejecting append_request because 
> previous entry 1103,50975 not in local log (mismatch past end of log)
>
>
> [root@ovn1 ~]#  ovs-appctl -t /var/run/openvswitch/ovnsb_db.ctl 
> cluster/status OVN_Southbound
> a2b2
> Name: OVN_Southbound
> Cluster ID: 4c54 (4c546513-77e3-4602-b211-2e200014ad79)
> Server ID: a2b2 (a2b2a9c5-cf58-4724-8421-88fd5ca5d94d)
> Address: tcp:10.254.8.209:6644
> Status: cluster member
> Role: leader
> Term: 1103
> Leader: self
> Vote: self
>
> Log: [42052, 51009]
> Entries not yet committed: 0
> Entries not yet applied: 0
> Connections: ->beaf ->9a33 <-9a33 <-beaf
> Servers:
> a2b2 (a2b2 at tcp:10.254.8.209:6644) (self) next_index=15199 
> match_index=51008
> beaf (beaf at tcp:10.254.8.208:6644) next_index=51009 match_index=0
> 9a33 (9a33 at tcp:10.254.8.210:6644) next_index=51009 match_index=51008

>


I think it is a bug. I noticed that this problem happens when the cluster is 
restarted after DB compaction. I mentioned it in one of the test cases: 
https://github.com/openvswitch/ovs/blob/master/tests/ovsdb-cluster.at#L252
I also mentioned another problem related to compaction: 
https://github.com/openvswitch/ovs/blob/master/tests/ovsdb-cluster.at#L239
I was planning to debug these but didn't get the time yet. I will try to find 
some time next week (it would be great if you could figure it out and submit 
patches).



Thanks,
Han
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [OVN][RAFT] Follower refusing new entries from leader

2019-11-28 Thread taoyunupt
Hi,Han
 Another question. NO COMPACT. If restart a follower , leader sender 
some entries during the  break time, when it has started, if it also happend to 
this problem?  What is the difference between simply restart and COMPACT with 
restart ?


Thanks,
Yun








在 2019-11-28 13:58:36,"taoyunupt"  写道:

Hi,Han
 Thanks for your reply.  I think maybe we can disconnect the failed 
follower from the Haproxy then synchronize the date, after all completed, 
reconnect it to Haproxy again. But I do not know how to synchronize actually.  
 It is just my naive idea. Do you have some suggestion about how to fix 
this problem.  If not very completed, I wii have a try.


Thanks 
Yun






在 2019-11-28 11:47:55,"Han Zhou"  写道:



On Wed, Nov 27, 2019 at 7:22 PM taoyunupt  wrote:
>
> Hi,
> My OVN cluster has 3 OVN-northd nodes, They are proxied by Haproxy with a 
> VIP. Recently, I restart OVN cluster frequently.  One of the members report 
> the logs below.
> After read the code and paper of RAFT, it seems normal process ,If the 
> follower does not find an entry in its log with the same index and term, then 
> it refuses the new entries.
> I think it's reasonable to refuse. But, as we could not control Haproxy 
> or some proxy maybe, so it will happen error when an session assignate to the 
> failed follower.
>
> Does have some means or ways to solve this problem. Maybe we can kick off 
> the failed follower or disconnect it from the haproxy then synchronize the 
> date ?  Hope to hear your suggestion.
>
>
> 2019-11-27T14:22:17.060Z|00240|raft|INFO|rejecting append_request because 
> previous entry 1103,50975 not in local log (mismatch past end of log)
> 2019-11-27T14:22:17.064Z|00241|raft|ERR|Dropped 34 log messages in last 12 
> seconds (most recently, 0 seconds ago) due to excessive rate
> 2019-11-27T14:22:17.064Z|00242|raft|ERR|internal error: deferred append_reply 
> message completed but not ready to send because message index 14890 is past 
> last synced index 0: a2b2 append_reply "mismatch past end of log": term=1103 
> log_end=14891 result="inconsistency"
> 2019-11-27T14:22:17.402Z|00243|raft|INFO|rejecting append_request because 
> previous entry 1103,50975 not in local log (mismatch past end of log)
>
>
> [root@ovn1 ~]#  ovs-appctl -t /var/run/openvswitch/ovnsb_db.ctl 
> cluster/status OVN_Southbound
> a2b2
> Name: OVN_Southbound
> Cluster ID: 4c54 (4c546513-77e3-4602-b211-2e200014ad79)
> Server ID: a2b2 (a2b2a9c5-cf58-4724-8421-88fd5ca5d94d)
> Address: tcp:10.254.8.209:6644
> Status: cluster member
> Role: leader
> Term: 1103
> Leader: self
> Vote: self
>
> Log: [42052, 51009]
> Entries not yet committed: 0
> Entries not yet applied: 0
> Connections: ->beaf ->9a33 <-9a33 <-beaf
> Servers:
> a2b2 (a2b2 at tcp:10.254.8.209:6644) (self) next_index=15199 
> match_index=51008
> beaf (beaf at tcp:10.254.8.208:6644) next_index=51009 match_index=0
> 9a33 (9a33 at tcp:10.254.8.210:6644) next_index=51009 match_index=51008

>


I think it is a bug. I noticed that this problem happens when the cluster is 
restarted after DB compaction. I mentioned it in one of the test cases: 
https://github.com/openvswitch/ovs/blob/master/tests/ovsdb-cluster.at#L252
I also mentioned another problem related to compaction: 
https://github.com/openvswitch/ovs/blob/master/tests/ovsdb-cluster.at#L239
I was planning to debug these but didn't get the time yet. I will try to find 
some time next week (it would be great if you could figure it out and submit 
patches).



Thanks,
Han
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [OVN][RAFT] Follower refusing new entries from leader

2019-11-27 Thread taoyunupt
Hi,Han
 Thanks for your reply.  I think maybe we can disconnect the failed 
follower from the Haproxy then synchronize the date, after all completed, 
reconnect it to Haproxy again. But I do not know how to synchronize actually.  
 It is just my naive idea. Do you have some suggestion about how to fix 
this problem.  If not very completed, I wii have a try.


Thanks 
Yun






在 2019-11-28 11:47:55,"Han Zhou"  写道:



On Wed, Nov 27, 2019 at 7:22 PM taoyunupt  wrote:
>
> Hi,
> My OVN cluster has 3 OVN-northd nodes, They are proxied by Haproxy with a 
> VIP. Recently, I restart OVN cluster frequently.  One of the members report 
> the logs below.
> After read the code and paper of RAFT, it seems normal process ,If the 
> follower does not find an entry in its log with the same index and term, then 
> it refuses the new entries.
> I think it's reasonable to refuse. But, as we could not control Haproxy 
> or some proxy maybe, so it will happen error when an session assignate to the 
> failed follower.
>
> Does have some means or ways to solve this problem. Maybe we can kick off 
> the failed follower or disconnect it from the haproxy then synchronize the 
> date ?  Hope to hear your suggestion.
>
>
> 2019-11-27T14:22:17.060Z|00240|raft|INFO|rejecting append_request because 
> previous entry 1103,50975 not in local log (mismatch past end of log)
> 2019-11-27T14:22:17.064Z|00241|raft|ERR|Dropped 34 log messages in last 12 
> seconds (most recently, 0 seconds ago) due to excessive rate
> 2019-11-27T14:22:17.064Z|00242|raft|ERR|internal error: deferred append_reply 
> message completed but not ready to send because message index 14890 is past 
> last synced index 0: a2b2 append_reply "mismatch past end of log": term=1103 
> log_end=14891 result="inconsistency"
> 2019-11-27T14:22:17.402Z|00243|raft|INFO|rejecting append_request because 
> previous entry 1103,50975 not in local log (mismatch past end of log)
>
>
> [root@ovn1 ~]#  ovs-appctl -t /var/run/openvswitch/ovnsb_db.ctl 
> cluster/status OVN_Southbound
> a2b2
> Name: OVN_Southbound
> Cluster ID: 4c54 (4c546513-77e3-4602-b211-2e200014ad79)
> Server ID: a2b2 (a2b2a9c5-cf58-4724-8421-88fd5ca5d94d)
> Address: tcp:10.254.8.209:6644
> Status: cluster member
> Role: leader
> Term: 1103
> Leader: self
> Vote: self
>
> Log: [42052, 51009]
> Entries not yet committed: 0
> Entries not yet applied: 0
> Connections: ->beaf ->9a33 <-9a33 <-beaf
> Servers:
> a2b2 (a2b2 at tcp:10.254.8.209:6644) (self) next_index=15199 
> match_index=51008
> beaf (beaf at tcp:10.254.8.208:6644) next_index=51009 match_index=0
> 9a33 (9a33 at tcp:10.254.8.210:6644) next_index=51009 match_index=51008

>


I think it is a bug. I noticed that this problem happens when the cluster is 
restarted after DB compaction. I mentioned it in one of the test cases: 
https://github.com/openvswitch/ovs/blob/master/tests/ovsdb-cluster.at#L252
I also mentioned another problem related to compaction: 
https://github.com/openvswitch/ovs/blob/master/tests/ovsdb-cluster.at#L239
I was planning to debug these but didn't get the time yet. I will try to find 
some time next week (it would be great if you could figure it out and submit 
patches).



Thanks,
Han
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] [OVN][RAFT] Follower refusing new entries from leader

2019-11-27 Thread taoyunupt
Hi,
My OVN cluster has 3 OVN-northd nodes, They are proxied by Haproxy with a 
VIP. Recently, I restart OVN cluster frequently.  One of the members report the 
logs below.
After read the code and paper of RAFT, it seems normal process ,If the 
follower does not find an entry in its log with the same index and term, then 
it refuses the new entries.
I think it's reasonable to refuse. But, as we could not control Haproxy or 
some proxy maybe, so it will happen error when an session assignate to the 
failed follower.
   
Does have some means or ways to solve this problem. Maybe we can kick off 
the failed follower or disconnect it from the haproxy then synchronize the date 
?  Hope to hear your suggestion.




2019-11-27T14:22:17.060Z|00240|raft|INFO|rejecting append_request because 
previous entry 1103,50975 not in local log (mismatch past end of log)
2019-11-27T14:22:17.064Z|00241|raft|ERR|Dropped 34 log messages in last 12 
seconds (most recently, 0 seconds ago) due to excessive rate
2019-11-27T14:22:17.064Z|00242|raft|ERR|internal error: deferred append_reply 
message completed but not ready to send because message index 14890 is past 
last synced index 0: a2b2 append_reply "mismatch past end of log": term=1103 
log_end=14891 result="inconsistency"
2019-11-27T14:22:17.402Z|00243|raft|INFO|rejecting append_request because 
previous entry 1103,50975 not in local log (mismatch past end of log)




[root@ovn1 ~]#  ovs-appctl -t /var/run/openvswitch/ovnsb_db.ctl cluster/status 
OVN_Southbound
a2b2
Name: OVN_Southbound
Cluster ID: 4c54 (4c546513-77e3-4602-b211-2e200014ad79)
Server ID: a2b2 (a2b2a9c5-cf58-4724-8421-88fd5ca5d94d)
Address: tcp:10.254.8.209:6644
Status: cluster member
Role: leader
Term: 1103
Leader: self
Vote: self


Log: [42052, 51009]
Entries not yet committed: 0
Entries not yet applied: 0
Connections: ->beaf ->9a33 <-9a33 <-beaf
Servers:
a2b2 (a2b2 at tcp:10.254.8.209:6644) (self) next_index=15199 
match_index=51008
beaf (beaf at tcp:10.254.8.208:6644) next_index=51009 match_index=0
9a33 (9a33 at tcp:10.254.8.210:6644) next_index=51009 match_index=51008

___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [PATCH ovn v2 00/13] OVN Interconnection

2019-11-19 Thread taoyunupt
Get it. Thanks Han.






At 2019-11-20 11:51:17, "Han Zhou"  wrote:

Hi Yun,


This feature in OVN doesn't require or put limit on the CMS systems such as 
Neutron, or kubernetes. To utilize this feature from CMS system, the CMS 
integration may be needed, e.g. add support in networking-ovn Neutron plugin or 
networking-ovn k8s plugin.
However, the scenario you described that multiple AZs managed by a single 
global Neutron is not directly related to this feature. The first thing is to 
add support to networking-ovn so that a single neutron can manage multiple OVN 
deployments, if that is a realistic use case. That's needed even without this 
ovn-interconnection feature. However, it seems Neutron interface doesn't have 
the AZ concept (as far as I know, unless it is added in recent releases), so it 
seems not straightforward to support such feature in networking-ovn. To support 
it, I guess you will need something like OVN control plane federation, which is 
a completely different problem from the one that is going to solved by the 
ovn-interconnection feature.


Thanks,
Han



On Tue, Nov 19, 2019 at 7:30 PM taoyunupt  wrote:



Hi,Han,Numan,
If I am not mistake, each AZ(OVN deployment) must have a corresponding 
networking-ovn(neurton).  But if we want to have a global neutron above AZ, 
that is, multi AZ(OVN deployment) is controlled by one neutron, this would be 
not work? Am I right ? Did you consider this situation?


Thanks,
Yun






At 2019-11-18 14:55:26, "Numan Siddique"  wrote:
>On Mon, Nov 18, 2019 at 8:22 AM Han Zhou  wrote:
>>
>> On Sat, Nov 16, 2019 at 4:03 AM Numan Siddique  wrote:
>> >
>> >
>> >
>> > On Fri, Nov 15, 2019 at 1:18 PM Han Zhou  wrote:
>> >>
>> >>
>> >>
>> >> On Thu, Nov 14, 2019 at 10:25 PM Numan Siddique  wrote:
>> >> >
>> >> > On Thu, Nov 14, 2019 at 11:44 PM Han Zhou  wrote:
>> >> > >
>> >> > > On Wed, Nov 13, 2019 at 10:27 AM Numan Siddique 
>> wrote:
>> >> > > >
>> >> > > > On Thu, Oct 31, 2019 at 2:43 AM Han Zhou  wrote:
>> >> > > > >
>> >> > > > > The series supports interconnecting multiple OVN deployments
>> (e.g.
>> >> > >  located at
>> >> > > > > multiple data centers) through logical routers connected with
>> tansit
>> >> > > logical
>> >> > > > > switches with overlay tunnels, managed through OVN control
>> plane.  See
>> >> > > the
>> >> > > > > ovn-architecture.rst document updates for more details, and find
>> the
>> >> > > > > instructions in Documentation/tutorials/ovn-interconnection.rst.
>> >> > > > >
>> >> > > > > Han Zhou (13):
>> >> > > > >   ovn-architecture: Add documentation for OVN interconnection
>> feature.
>> >> > > > >   ovn-inb: Interconnection northbound DB schema and CLI.
>> >> > > > >   ovn-isb: Interconnection southbound DB schema and CLI.
>> >> > > > >   ovn-ic: Interconnection controller with AZ registeration.
>> >> > > > >   ovn-northd.c: Refactor allocate_tnlid.
>> >> > > > >   ovn-ic: Transit switch controller.
>> >> > > > >   ovn-sb: Add columns is_interconn and is_remote to Chassis.
>> >> > > > >   ovn-ic: Interconnection gateway controller.
>> >> > > > >   ovn-ic: Interconnection port controller.
>> >> > > > >   ovn.at: e2e test for OVN interconnection.
>> >> > > > >   ovn-ctl: Refactor to reduce redundant code.
>> >> > > > >   ovn-ctl: Support commands for interconnection.
>> >> > > > >   tutorial: Add tutorial for OVN Interconnection.
>> >> > > > >
>> >> > > >
>> >> > > > Hi Han,
>> >> > > >
>> >> > > > Thanks for working on this feature. It's an interesting use case.
>> >> > > >
>> >> > > > I had a quick look at all the patches.
>> >> > > >
>> >> > >
>> >> > > Numan, thanks a lot for the thorough review! Please see my response
>> inlined.
>> >> > >
>> >> > > > I have few comments
>> >> > > >
>> >> > > > 1. I would suggest to rename the DBs as  ovn-ic-nb.ovsschema (and
>> the
>> >> > > > same for 

Re: [ovs-dev] [PATCH ovn v2 00/13] OVN Interconnection

2019-11-19 Thread taoyunupt



Hi,Han,Numan,
If I am not mistake, each AZ(OVN deployment) must have a corresponding 
networking-ovn(neurton).  But if we want to have a global neutron above AZ, 
that is, multi AZ(OVN deployment) is controlled by one neutron, this would be 
not work? Am I right ? Did you consider this situation?


Thanks,
Yun






At 2019-11-18 14:55:26, "Numan Siddique"  wrote:
>On Mon, Nov 18, 2019 at 8:22 AM Han Zhou  wrote:
>>
>> On Sat, Nov 16, 2019 at 4:03 AM Numan Siddique  wrote:
>> >
>> >
>> >
>> > On Fri, Nov 15, 2019 at 1:18 PM Han Zhou  wrote:
>> >>
>> >>
>> >>
>> >> On Thu, Nov 14, 2019 at 10:25 PM Numan Siddique  wrote:
>> >> >
>> >> > On Thu, Nov 14, 2019 at 11:44 PM Han Zhou  wrote:
>> >> > >
>> >> > > On Wed, Nov 13, 2019 at 10:27 AM Numan Siddique 
>> wrote:
>> >> > > >
>> >> > > > On Thu, Oct 31, 2019 at 2:43 AM Han Zhou  wrote:
>> >> > > > >
>> >> > > > > The series supports interconnecting multiple OVN deployments
>> (e.g.
>> >> > >  located at
>> >> > > > > multiple data centers) through logical routers connected with
>> tansit
>> >> > > logical
>> >> > > > > switches with overlay tunnels, managed through OVN control
>> plane.  See
>> >> > > the
>> >> > > > > ovn-architecture.rst document updates for more details, and find
>> the
>> >> > > > > instructions in Documentation/tutorials/ovn-interconnection.rst.
>> >> > > > >
>> >> > > > > Han Zhou (13):
>> >> > > > >   ovn-architecture: Add documentation for OVN interconnection
>> feature.
>> >> > > > >   ovn-inb: Interconnection northbound DB schema and CLI.
>> >> > > > >   ovn-isb: Interconnection southbound DB schema and CLI.
>> >> > > > >   ovn-ic: Interconnection controller with AZ registeration.
>> >> > > > >   ovn-northd.c: Refactor allocate_tnlid.
>> >> > > > >   ovn-ic: Transit switch controller.
>> >> > > > >   ovn-sb: Add columns is_interconn and is_remote to Chassis.
>> >> > > > >   ovn-ic: Interconnection gateway controller.
>> >> > > > >   ovn-ic: Interconnection port controller.
>> >> > > > >   ovn.at: e2e test for OVN interconnection.
>> >> > > > >   ovn-ctl: Refactor to reduce redundant code.
>> >> > > > >   ovn-ctl: Support commands for interconnection.
>> >> > > > >   tutorial: Add tutorial for OVN Interconnection.
>> >> > > > >
>> >> > > >
>> >> > > > Hi Han,
>> >> > > >
>> >> > > > Thanks for working on this feature. It's an interesting use case.
>> >> > > >
>> >> > > > I had a quick look at all the patches.
>> >> > > >
>> >> > >
>> >> > > Numan, thanks a lot for the thorough review! Please see my response
>> inlined.
>> >> > >
>> >> > > > I have few comments
>> >> > > >
>> >> > > > 1. I would suggest to rename the DBs as  ovn-ic-nb.ovsschema (and
>> the
>> >> > > > same for ovn-isb).
>> >> > > > The DB name is - OVN_IC_Northbound. So it would make sense to
>> have
>> >> > > > - ovn-ic-nb.ovsschema
>> >> > > >  I would also suggest to rename the utilities to ovn-ic-nbctl
>> and
>> >> > > > ovn-ic-sbctl.
>> >> > > > With  ovn-inbctl/ovn-isbctl, it is really confusing.
>> >> > > >
>> >> > > Sure, I felt not quite convenient with two dashes in a command name.
>> I
>> >> > > agree that ovn-ic-nbctl and ovn-ic-sbctl are more clear. I can
>> change it.
>> >> > >
>> >> > > > 2. ovn-ic service writes to interconnect south db, ovn north db and
>> >> > > > ovn south db. Writing to ic south db and
>> >> > > > ovn north db is fine. But it seems a little odd for ovn-ic to
>> >> > > > write to south db. From what I understand it writes
>> >> > > > to south db for 3 purposes
>> >> > > >   a. Updating the tunnel_key column of datapath_binding
>> >> > > > representing the transit switch
>> >> > > >   b. Updating the key column of port_binding representing the
>> >> > > > logical router port connecting to the transit switch.
>> >> > > >   c. Creating chassis rows for remote gateway chassis.
>> >> > > >
>> >> > > >I think it's better if ovn-ic can delegate all these to
>> ovn-northd.
>> >> > > > For (a) and (b), ovn-ic can set the generated tunnel key
>> >> > > >in the other_config/options column of Logical switch/Logical
>> switch
>> >> > > > port. ovn-northd can internally set this value to
>> >> > > >the south db.
>> >> > > >
>> >> > > >For (c), I think its better we add another table -
>> Remote_Chassis
>> >> > > > (or some other appropriate name) . ovn-ic will create rows
>> >> > > >in this table for each remote chassis and ovn-northd will create
>> >> > > > chassis row in south db.
>> >> > > >We already have Gateway_Chassis table in North db. So I think
>> it's
>> >> > > > fine if we add Remote_Chassis table. The only odd thing
>> >> > > >would be is to store the encap details in North db.
>> >> > > >
>> >> > > >With this, ovn-ic, doesn't need to worry about syncing between
>> >> > > > interconnect south db and ovn south db. In my opinion ovn-ic
>> >> > > >should act more like CMS to each availability zone and hence
>> should
>> >> > > > not do any write transactions to 

Re: [ovs-dev] [OVN][RAFT]Why left server cannot be added back to

2019-11-05 Thread taoyunupt
Hi,Ben,
 I am agreed that ,under normal circumstances, there is no need to 
allow left server back to origin server . But I met some strange situation. For 
example ,sometimes, one server may be with two diffrent UUIDs recorded by 
Leader server. 
 I think if the left server could be back to origin server, it will 
be a easy solution to solve many strange problems.



Thanks,
Yun





At 2019-11-06 05:31:25, "Ben Pfaff"  wrote:
>On Tue, Nov 05, 2019 at 08:10:41PM +0800, taoyunupt wrote:
>> Hi,Numan,
>> When I  run OVN/RAFT cluster, I found a server(which 
>> initiative to leave or be kicked off ) ,cannot be added back to origin 
>> cluster. I found the code as following, can you tell me the reason , many 
>> thanks!
>> 
>> 
>> case RAFT_REC_NOTE:
>> if (!strcmp(r->note, "left")) {
>> return ovsdb_error(NULL, "record %llu indicates server has left "
>>"the cluster; it cannot be added back (use "
>>"\"ovsdb-tool join-cluster\" to add a new "
>>"server)", rec_idx);
>
>The Raft dissertation doesn't contemplate the possibility of a server
>re-joining a cluster.  Allowing it would add new corner cases that
>aren't worth dealing with.
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] [OVN][RAFT]Why left server cannot be added back to

2019-11-05 Thread taoyunupt
Hi,Numan,
When I  run OVN/RAFT cluster, I found a server(which initiative 
to leave or be kicked off ) ,cannot be added back to origin cluster. I found 
the code as following, can you tell me the reason , many thanks!


case RAFT_REC_NOTE:
if (!strcmp(r->note, "left")) {
return ovsdb_error(NULL, "record %llu indicates server has left "
   "the cluster; it cannot be added back (use "
   "\"ovsdb-tool join-cluster\" to add a new "
   "server)", rec_idx);
Thanks,
Yun
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] Does have any plan or blueprint to support fwaas and vpnaas in ovn/networking-ovn(openstack)

2019-03-17 Thread taoyunupt
Dear all,
   As far as I know , ovn/networking-ovn(support) dose not support 
fwaas  and vpnaas.So, does have  any plan or blueprint to support fwaas and 
vpnaas in ovn/networking-ovn(openstack)?   




Yours ,
yunxiang 
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] how to enable the log of ovn

2019-02-14 Thread taoyunupt
Dear friends,
  Sorry to disturb. I have use ovn with openstasck for a while 
time,but i still do not know how to enable the log of ovn.
  There are only  logging options in the manpage or the help of 
 ovn-nbctl/ovn-sbctl,but no any logging command.
   
   When i excute cmd of  'ovn-nbctl --syslog-method=libc  
--verbose=dbg' or others similar,the print is 'ovn-nbctl: missing command name 
(use --help for help)'
   


Regards,
Yunxiang


___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [ovs-discuss] which kernel module patch could repair the support of meter

2019-01-28 Thread taoyunupt
The distribution version of OS of mime is CentOS Linux release 7.5.1804 
(Core),and the kernel version is 3.10.0-862.14.4.el7.x86_64.   I plan to merge 
the meters patch to the 3.10.0-862 kernel of CentOS7.5. 
Where is the function patch address?  Do you have some suggestions? 


Regards,
yunxiang








At 2019-01-29 02:49:59, "Justin Pettit"  wrote:
>I'd have to look at the history, but the feature wouldn't have been added to 
>OVN unless it was supported by OVS.  Currently, we expect OVN to work with the 
>same version number of OVS.  (Although, I expect you could use a newer version 
>of OVS and an older OVN.)  We plan to break that requirement so that each OVS 
>and OVN can use different version going forward, but we're not there yet.
>
>--Justin
>
>
>> On Jan 28, 2019, at 3:15 AM, taoyunupt  wrote:
>> 
>> Hello,justin
>>Forgive me!  I have another question. As OVN use meters to 
>> implement  QoS and meters was added from ovs2.10, how the ovn(<2.10) support 
>> QoS?
>> 
>> 
>> 
>> Regards,
>> Yunxiang
>> 
>> 
>> At 2019-01-28 15:43:24, "Justin Pettit"  wrote:
>> >Sorry, I was thinking of another system that used OVS's tc instead of 
>> >meters to implement basic QoS.  OVN does use meters to implement most modes 
>> >of QoS.  If you don't want to use meters, you could try looking at the 
>> >"qos_max_rate" and "qos_burst" options in the ovn-nb man page, but I don't 
>> >have any experience using them.
>> >
>> >--Justin
>> >
>> >
>> >> On Jan 27, 2019, at 11:26 PM, taoyunupt  wrote:
>> >> 
>> >> The method build_qos in  /ovn/northd/ovn-northd.c is as fellows,in the 
>> >> end of the method,it  adds logical flow by the code of
>> >> ovn_lflow_add(lflows, od, stage,qos->priority,qos->match, 
>> >> ds_cstr(_action));
>> >> 
>> >> Does this mean the meter table is the only way for ovn to add Qos?
>> >> 
>> >>   
>> >> 
>> >> build_qos(struct ovn_datapath *od, struct hmap *lflows) {
>> >> ovn_lflow_add(lflows, od, S_SWITCH_IN_QOS_MARK, 0, "1", "next;");
>> >> ovn_lflow_add(lflows, od, S_SWITCH_OUT_QOS_MARK, 0, "1", "next;");
>> >> ovn_lflow_add(lflows, od, S_SWITCH_IN_QOS_METER, 0, "1", "next;");
>> >> ovn_lflow_add(lflows, od, S_SWITCH_OUT_QOS_METER, 0, "1", "next;");
>> >> 
>> >> for (size_t i = 0; i < od->nbs->n_qos_rules; i++) {
>> >> struct nbrec_qos *qos = od->nbs->qos_rules[i];
>> >> bool ingress = !strcmp(qos->direction, "from-lport") ? true 
>> >> :false;
>> >> enum ovn_stage stage = ingress ? S_SWITCH_IN_QOS_MARK : 
>> >> S_SWITCH_OUT_QOS_MARK;
>> >> int64_t rate = 0;
>> >> int64_t burst = 0;
>> >> 
>> >> for (size_t j = 0; j < qos->n_action; j++) {
>> >> if (!strcmp(qos->key_action[j], "dscp")) {
>> >> struct ds dscp_action = DS_EMPTY_INITIALIZER;
>> >> 
>> >> ds_put_format(_action, "ip.dscp = %"PRId64"; next;",
>> >>   qos->value_action[j]);
>> >> ovn_lflow_add(lflows, od, stage,
>> >>   qos->priority,
>> >>   qos->match, ds_cstr(_action));
>> >> ds_destroy(_action);
>> >> }
>> >> }
>> >> 
>> >> for (size_t n = 0; n < qos->n_bandwidth; n++) {
>> >> if (!strcmp(qos->key_bandwidth[n], "rate")) {
>> >> rate = qos->value_bandwidth[n];
>> >> } else if (!strcmp(qos->key_bandwidth[n], "burst")) {
>> >> burst = qos->value_bandwidth[n];
>> >> }
>> >> }
>> >> if (rate) {
>> >> struct ds meter_action = DS_EMPTY_INITIALIZER;
>> >> stage = ingress ? S_SWITCH_IN_QOS_METER : 
>> >> S_SWITCH_OUT_QOS_METER;
>> >> if (burst) {
>> >> ds_put_format(_action,
>> >>   "set_meter(%"PRId64&quo

Re: [ovs-dev] [ovs-discuss] which kernel module patch could repair the support of meter

2019-01-28 Thread taoyunupt
yep, I want to  backport meter support for an older kernel. But I need to know 
which patch of the support for meters. So ,I hope you could  give me  the 
address of this patch.Regards,
yunxiang







At 2019-01-29 09:32:31, "Justin Pettit"  wrote:
>I'm afraid that I don't understand the question.  Are you asking how you'd 
>backport meter support for an older kernel?  If so, you'd need to talk to the 
>Centos/Red Hat maintainers.
>
>--Justin
>
>
>> On Jan 28, 2019, at 5:29 PM, taoyunupt  wrote:
>> 
>> The distribution version of OS of mime is CentOS Linux release 7.5.1804 
>> (Core),and the kernel version is 3.10.0-862.14.4.el7.x86_64.   I plan to 
>> merge the meters patch to the 3.10.0-862 kernel of CentOS7.5. 
>> Where is the function patch address?  Do you have some suggestions? 
>> 
>> Regards,
>> yunxiang
>> 
>> 
>> 
>> 
>> 
>> 
>> At 2019-01-29 02:49:59, "Justin Pettit"  wrote:
>> >I'd have to look at the history, but the feature wouldn't have been added 
>> >to OVN unless it was supported by OVS.  Currently, we expect OVN to work 
>> >with the same version number of OVS.  (Although, I expect you could use a 
>> >newer version of OVS and an older OVN.)  We plan to break that requirement 
>> >so that each OVS and OVN can use different version going forward, but we're 
>> >not there yet.
>> >
>> >--Justin
>> >
>> >
>> >> On Jan 28, 2019, at 3:15 AM, taoyunupt  wrote:
>> >> 
>> >> Hello,justin
>> >>Forgive me!  I have another question. As OVN use meters to 
>> >> implement  QoS and meters was added from ovs2.10, how the ovn(<2.10) 
>> >> support QoS?
>> >> 
>> >> 
>> >> 
>> >> Regards,
>> >> Yunxiang
>> >> 
>> >> 
>> >> At 2019-01-28 15:43:24, "Justin Pettit"  wrote:
>> >> >Sorry, I was thinking of another system that used OVS's tc instead of 
>> >> >meters to implement basic QoS.  OVN does use meters to implement most 
>> >> >modes of QoS.  If you don't want to use meters, you could try looking at 
>> >> >the "qos_max_rate" and "qos_burst" options in the ovn-nb man page, but I 
>> >> >don't have any experience using them.
>> >> >
>> >> >--Justin
>> >> >
>> >> >
>> >> >> On Jan 27, 2019, at 11:26 PM, taoyunupt  wrote:
>> >> >> 
>> >> >> The method build_qos in  /ovn/northd/ovn-northd.c is as fellows,in the 
>> >> >> end of the method,it  adds logical flow by the code of
>> >> >> ovn_lflow_add(lflows, od, stage,qos->priority,qos->match, 
>> >> >> ds_cstr(_action));
>> >> >> 
>> >> >> Does this mean the meter table is the only way for ovn to add Qos?
>> >> >> 
>> >> >>   
>> >> >> 
>> >> >> build_qos(struct ovn_datapath *od, struct hmap *lflows) {
>> >> >> ovn_lflow_add(lflows, od, S_SWITCH_IN_QOS_MARK, 0, "1", "next;");
>> >> >> ovn_lflow_add(lflows, od, S_SWITCH_OUT_QOS_MARK, 0, "1", "next;");
>> >> >> ovn_lflow_add(lflows, od, S_SWITCH_IN_QOS_METER, 0, "1", "next;");
>> >> >> ovn_lflow_add(lflows, od, S_SWITCH_OUT_QOS_METER, 0, "1", "next;");
>> >> >> 
>> >> >> for (size_t i = 0; i < od->nbs->n_qos_rules; i++) {
>> >> >> struct nbrec_qos *qos = od->nbs->qos_rules[i];
>> >> >> bool ingress = !strcmp(qos->direction, "from-lport") ? true 
>> >> >> :false;
>> >> >> enum ovn_stage stage = ingress ? S_SWITCH_IN_QOS_MARK : 
>> >> >> S_SWITCH_OUT_QOS_MARK;
>> >> >> int64_t rate = 0;
>> >> >> int64_t burst = 0;
>> >> >> 
>> >> >> for (size_t j = 0; j < qos->n_action; j++) {
>> >> >> if (!strcmp(qos->key_action[j], "dscp")) {
>> >> >> struct ds dscp_action = DS_EMPTY_INITIALIZER;
>> >> >> 
>> >> >> ds_put_format(_action, "ip.dscp = %"PRId64"; 
>> >> >> next;",
>> >&g

Re: [ovs-dev] [ovs-discuss] which kernel module patch could repair the support of meter

2019-01-28 Thread taoyunupt
Hello,justin
   Forgive me!  I have another question. As OVN use meters to 
implement  QoS and meters was added from ovs2.10, how the ovn(<2.10) support 
QoS?




Regards,
Yunxiang



At 2019-01-28 15:43:24, "Justin Pettit"  wrote:
>Sorry, I was thinking of another system that used OVS's tc instead of meters 
>to implement basic QoS.  OVN does use meters to implement most modes of QoS.  
>If you don't want to use meters, you could try looking at the "qos_max_rate" 
>and "qos_burst" options in the ovn-nb man page, but I don't have any 
>experience using them.
>
>--Justin
>
>
>> On Jan 27, 2019, at 11:26 PM, taoyunupt  wrote:
>> 
>> The method build_qos in  /ovn/northd/ovn-northd.c is as fellows,in the end 
>> of the method,it  adds logical flow by the code of
>> ovn_lflow_add(lflows, od, stage,qos->priority,qos->match, 
>> ds_cstr(_action));
>> 
>> Does this mean the meter table is the only way for ovn to add Qos?
>> 
>>   
>> 
>> build_qos(struct ovn_datapath *od, struct hmap *lflows) {
>> ovn_lflow_add(lflows, od, S_SWITCH_IN_QOS_MARK, 0, "1", "next;");
>> ovn_lflow_add(lflows, od, S_SWITCH_OUT_QOS_MARK, 0, "1", "next;");
>> ovn_lflow_add(lflows, od, S_SWITCH_IN_QOS_METER, 0, "1", "next;");
>> ovn_lflow_add(lflows, od, S_SWITCH_OUT_QOS_METER, 0, "1", "next;");
>> 
>> for (size_t i = 0; i < od->nbs->n_qos_rules; i++) {
>> struct nbrec_qos *qos = od->nbs->qos_rules[i];
>> bool ingress = !strcmp(qos->direction, "from-lport") ? true :false;
>> enum ovn_stage stage = ingress ? S_SWITCH_IN_QOS_MARK : 
>> S_SWITCH_OUT_QOS_MARK;
>> int64_t rate = 0;
>> int64_t burst = 0;
>> 
>> for (size_t j = 0; j < qos->n_action; j++) {
>> if (!strcmp(qos->key_action[j], "dscp")) {
>> struct ds dscp_action = DS_EMPTY_INITIALIZER;
>> 
>> ds_put_format(_action, "ip.dscp = %"PRId64"; next;",
>>   qos->value_action[j]);
>> ovn_lflow_add(lflows, od, stage,
>>   qos->priority,
>>   qos->match, ds_cstr(_action));
>> ds_destroy(_action);
>> }
>> }
>> 
>> for (size_t n = 0; n < qos->n_bandwidth; n++) {
>> if (!strcmp(qos->key_bandwidth[n], "rate")) {
>> rate = qos->value_bandwidth[n];
>> } else if (!strcmp(qos->key_bandwidth[n], "burst")) {
>> burst = qos->value_bandwidth[n];
>> }
>> }
>> if (rate) {
>> struct ds meter_action = DS_EMPTY_INITIALIZER;
>> stage = ingress ? S_SWITCH_IN_QOS_METER : S_SWITCH_OUT_QOS_METER;
>> if (burst) {
>> ds_put_format(_action,
>>   "set_meter(%"PRId64", %"PRId64"); next;",
>>   rate, burst);
>> } else {
>> ds_put_format(_action,
>>   "set_meter(%"PRId64"); next;",
>>   rate);
>> }
>> 
>>     /* Ingress and Egress QoS Meter Table.
>>  *
>>  * We limit the bandwidth of this flow by adding a meter table.
>>  */
>> ovn_lflow_add(lflows, od, stage,
>>   qos->priority,
>>   qos->match, ds_cstr(_action));
>> ds_destroy(_action);
>> }
>> }
>> }
>> 
>> 
>> 
>> 
>> 
>> At 2019-01-28 15:15:51, "Justin Pettit"  wrote:
>> >QoS is most likely using the kernel's built-in traffic-shaping algorithms 
>> >in tc.  Those should work the same on all supported kernels.
>> >
>> >--Justin
>> >
>> >
>> >> On Jan 27, 2019, at 11:10 PM, taoyunupt  wrote:
>> >> 
>> >> 
>> >> Thanks justin,
>> >> 
>> >> My environment is OVS for the OVN/openstack.I also want to know ,if i 
>> >> must use meter for the  openstack/ovn feature 'Qos'.Does any other 
>> >> methods to achive this?
>> >> 
>> >> Regards,
>&g

Re: [ovs-dev] [ovs-discuss] which kernel module patch could repair the support of meter

2019-01-27 Thread taoyunupt
Thanks justin!
You have gives me a great help!
Regards,
Yunxiang








At 2019-01-28 15:43:24, "Justin Pettit"  wrote:
>Sorry, I was thinking of another system that used OVS's tc instead of meters 
>to implement basic QoS.  OVN does use meters to implement most modes of QoS.  
>If you don't want to use meters, you could try looking at the "qos_max_rate" 
>and "qos_burst" options in the ovn-nb man page, but I don't have any 
>experience using them.
>
>--Justin
>
>
>> On Jan 27, 2019, at 11:26 PM, taoyunupt  wrote:
>> 
>> The method build_qos in  /ovn/northd/ovn-northd.c is as fellows,in the end 
>> of the method,it  adds logical flow by the code of
>> ovn_lflow_add(lflows, od, stage,qos->priority,qos->match, 
>> ds_cstr(_action));
>> 
>> Does this mean the meter table is the only way for ovn to add Qos?
>> 
>>   
>> 
>> build_qos(struct ovn_datapath *od, struct hmap *lflows) {
>> ovn_lflow_add(lflows, od, S_SWITCH_IN_QOS_MARK, 0, "1", "next;");
>> ovn_lflow_add(lflows, od, S_SWITCH_OUT_QOS_MARK, 0, "1", "next;");
>> ovn_lflow_add(lflows, od, S_SWITCH_IN_QOS_METER, 0, "1", "next;");
>> ovn_lflow_add(lflows, od, S_SWITCH_OUT_QOS_METER, 0, "1", "next;");
>> 
>> for (size_t i = 0; i < od->nbs->n_qos_rules; i++) {
>> struct nbrec_qos *qos = od->nbs->qos_rules[i];
>> bool ingress = !strcmp(qos->direction, "from-lport") ? true :false;
>> enum ovn_stage stage = ingress ? S_SWITCH_IN_QOS_MARK : 
>> S_SWITCH_OUT_QOS_MARK;
>> int64_t rate = 0;
>> int64_t burst = 0;
>> 
>> for (size_t j = 0; j < qos->n_action; j++) {
>> if (!strcmp(qos->key_action[j], "dscp")) {
>> struct ds dscp_action = DS_EMPTY_INITIALIZER;
>> 
>> ds_put_format(_action, "ip.dscp = %"PRId64"; next;",
>>   qos->value_action[j]);
>> ovn_lflow_add(lflows, od, stage,
>>   qos->priority,
>>   qos->match, ds_cstr(_action));
>> ds_destroy(_action);
>> }
>> }
>> 
>> for (size_t n = 0; n < qos->n_bandwidth; n++) {
>> if (!strcmp(qos->key_bandwidth[n], "rate")) {
>> rate = qos->value_bandwidth[n];
>> } else if (!strcmp(qos->key_bandwidth[n], "burst")) {
>> burst = qos->value_bandwidth[n];
>> }
>> }
>> if (rate) {
>> struct ds meter_action = DS_EMPTY_INITIALIZER;
>> stage = ingress ? S_SWITCH_IN_QOS_METER : S_SWITCH_OUT_QOS_METER;
>> if (burst) {
>> ds_put_format(_action,
>>   "set_meter(%"PRId64", %"PRId64"); next;",
>>   rate, burst);
>> } else {
>> ds_put_format(_action,
>>   "set_meter(%"PRId64"); next;",
>>   rate);
>> }
>> 
>>     /* Ingress and Egress QoS Meter Table.
>>  *
>>  * We limit the bandwidth of this flow by adding a meter table.
>>  */
>> ovn_lflow_add(lflows, od, stage,
>>   qos->priority,
>>   qos->match, ds_cstr(_action));
>> ds_destroy(_action);
>> }
>> }
>> }
>> 
>> 
>> 
>> 
>> 
>> At 2019-01-28 15:15:51, "Justin Pettit"  wrote:
>> >QoS is most likely using the kernel's built-in traffic-shaping algorithms 
>> >in tc.  Those should work the same on all supported kernels.
>> >
>> >--Justin
>> >
>> >
>> >> On Jan 27, 2019, at 11:10 PM, taoyunupt  wrote:
>> >> 
>> >> 
>> >> Thanks justin,
>> >> 
>> >> My environment is OVS for the OVN/openstack.I also want to know ,if i 
>> >> must use meter for the  openstack/ovn feature 'Qos'.Does any other 
>> >> methods to achive this?
>> >> 
>> >> Regards,
>> >> Yunxiang
>> >> 
>> >> 
>> >> 
>> >> 
>> >> 
>

Re: [ovs-dev] [ovs-discuss] which kernel module patch could repair the support of meter

2019-01-27 Thread taoyunupt
The method build_qos in  /ovn/northd/ovn-northd.c is as fellows,in the end of 
the method,it  adds logical flow by the code of
| ovn_lflow_add(lflows, od, stage,qos->priority,qos->match, 
ds_cstr(_action)); |


Does this mean the meter table is the only way for ovn to add Qos?
|
| |
| | |


| build_qos(struct ovn_datapath *od, struct hmap *lflows) { |
| | ovn_lflow_add(lflows, od, S_SWITCH_IN_QOS_MARK, 0, "1", "next;"); |
| | ovn_lflow_add(lflows, od, S_SWITCH_OUT_QOS_MARK, 0, "1", "next;"); |
| | ovn_lflow_add(lflows, od, S_SWITCH_IN_QOS_METER, 0, "1", "next;"); |
| | ovn_lflow_add(lflows, od, S_SWITCH_OUT_QOS_METER, 0, "1", "next;"); |
| | |
| | for (size_t i = 0; i < od->nbs->n_qos_rules; i++) { |
| | struct nbrec_qos *qos = od->nbs->qos_rules[i]; |
| | bool ingress = !strcmp(qos->direction, "from-lport") ? true :false; |
| | enum ovn_stage stage = ingress ? S_SWITCH_IN_QOS_MARK : 
S_SWITCH_OUT_QOS_MARK; |
| | int64_t rate = 0; |
| | int64_t burst = 0; |
| | |
| | for (size_t j = 0; j < qos->n_action; j++) { |
| | if (!strcmp(qos->key_action[j], "dscp")) { |
| | struct ds dscp_action = DS_EMPTY_INITIALIZER; |
| | |
| | ds_put_format(_action, "ip.dscp = %"PRId64"; next;", |
| | qos->value_action[j]); |
| | ovn_lflow_add(lflows, od, stage, |
| | qos->priority, |
| | qos->match, ds_cstr(_action)); |
| | ds_destroy(_action); |
| | } |
| | } |
| | |
| | for (size_t n = 0; n < qos->n_bandwidth; n++) { |
| | if (!strcmp(qos->key_bandwidth[n], "rate")) { |
| | rate = qos->value_bandwidth[n]; |
| | } elseif (!strcmp(qos->key_bandwidth[n], "burst")) { |
| | burst = qos->value_bandwidth[n]; |
| | } |
| | } |
| | if (rate) { |
| | struct ds meter_action = DS_EMPTY_INITIALIZER; |
| | stage = ingress ? S_SWITCH_IN_QOS_METER : S_SWITCH_OUT_QOS_METER; |
| | if (burst) { |
| | ds_put_format(_action, |
| | "set_meter(%"PRId64", %"PRId64"); next;", |
| | rate, burst); |
| | } else { |
| | ds_put_format(_action, |
| | "set_meter(%"PRId64"); next;", |
| | rate); |
| | } |
| | |
| | /* Ingress and Egress QoS Meter Table. |
| | * |
| | * We limit the bandwidth of this flow by adding a meter table. |
| | */ |
| | ovn_lflow_add(lflows, od, stage, |
| | qos->priority, |
| | qos->match, ds_cstr(_action)); |
| | ds_destroy(_action); |
| | } |
| | } |
| | } |







At 2019-01-28 15:15:51, "Justin Pettit"  wrote:
>QoS is most likely using the kernel's built-in traffic-shaping algorithms in 
>tc.  Those should work the same on all supported kernels.
>
>--Justin
>
>
>> On Jan 27, 2019, at 11:10 PM, taoyunupt  wrote:
>> 
>> 
>> Thanks justin,
>> 
>> My environment is OVS for the OVN/openstack.I also want to know ,if i must 
>> use meter for the  openstack/ovn feature 'Qos'.Does any other methods to 
>> achive this?
>> 
>> Regards,
>> Yunxiang
>> 
>> 
>> 
>> 
>> 
>> At 2019-01-28 14:58:19, "Justin Pettit"  wrote:
>> >This is the patch:
>> >
>> >http://patchwork.ozlabs.org/patch/950513/
>> >
>> >I think it was only broken in kernels 4.15, 4.16, and 4.17.  I expect that 
>> >4.20 will be fine.
>> >
>> >--Justin
>> >
>> >
>> >> On Jan 27, 2019, at 10:16 PM, taoyunupt  wrote:
>> >> 
>> >> Hello,justin,
>> >>  I  met a supporting problem of meter of OVS 2.10. I found a mail 
>> >> from you,after searching the internet.The address of this mail is 
>> >> "https://www.mail-archive.com/ovs-discuss@openvswitch.org/msg04180.html;
>> >>  The kernel version of  "4.20.5-1.el7.elrepo.x86_64" goes well 
>> >> with meter table of ovs,but I want to know how to fit the  maintained 
>> >> older kernels.
>> >>  If i want to use ovs with maintained older kernels,which patch 
>> >> you metioned in the mail, should i import ?
>> >> 
>> >> 
>> >> 
>> >> 
>> >> Regards,
>> >> yunxiang
>> >> 
>> >> ___
>> >> discuss mailing list
>> >> disc...@openvswitch.org
>> >> https://mail.openvswitch.org/mailman/listinfo/ovs-discuss
>> 
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [ovs-discuss] which kernel module patch could repair the support of meter

2019-01-27 Thread taoyunupt



Thanks justin,


My environment is OVS for the OVN/openstack.I also want to know ,if i must use 
meter for the  openstack/ovn feature 'Qos'.Does any other methods to achive 
this?


Regards,
Yunxiang







At 2019-01-28 14:58:19, "Justin Pettit"  wrote:
>This is the patch:
>
>   http://patchwork.ozlabs.org/patch/950513/
>
>I think it was only broken in kernels 4.15, 4.16, and 4.17.  I expect that 
>4.20 will be fine.
>
>--Justin
>
>
>> On Jan 27, 2019, at 10:16 PM, taoyunupt  wrote:
>> 
>> Hello,justin,
>>  I  met a supporting problem of meter of OVS 2.10. I found a mail 
>> from you,after searching the internet.The address of this mail is 
>> "https://www.mail-archive.com/ovs-discuss@openvswitch.org/msg04180.html;
>>  The kernel version of  "4.20.5-1.el7.elrepo.x86_64" goes well with 
>> meter table of ovs,but I want to know how to fit the  maintained older 
>> kernels.
>>  If i want to use ovs with maintained older kernels,which patch you 
>> metioned in the mail, should i import ?
>> 
>> 
>> 
>> 
>> Regards,
>> yunxiang
>> 
>> ___
>> discuss mailing list
>> disc...@openvswitch.org
>> https://mail.openvswitch.org/mailman/listinfo/ovs-discuss
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] which kernel module patch could repair the support of meter

2019-01-27 Thread taoyunupt
Hello,justin,
 I  met a supporting problem of meter of OVS 2.10. I found a mail from 
you,after searching the internet.The address of this mail is 
"https://www.mail-archive.com/ovs-discuss@openvswitch.org/msg04180.html;
 The kernel version of  "4.20.5-1.el7.elrepo.x86_64" goes well with 
meter table of ovs,but I want to know how to fit the  maintained older kernels.
 If i want to use ovs with maintained older kernels,which patch you 
metioned in the mail, should i import ?








Regards,
yunxiang
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev