qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Jason Wang <jasowang@redhat.com>
To: Zhang Chen <zhangchen.fnst@cn.fujitsu.com>,
	qemu devel <qemu-devel@nongnu.org>
Cc: Li Zhijian <lizhijian@cn.fujitsu.com>,
	bian naimeng <biannm@cn.fujitsu.com>,
	"eddie . dong" <eddie.dong@intel.com>,
	zhanghailiang <zhang.zhanghailiang@huawei.com>
Subject: Re: [Qemu-devel] [PATCH V2 1/2] COLO-compare: Optimize tcp compare for option field
Date: Mon, 24 Apr 2017 11:27:36 +0800	[thread overview]
Message-ID: <bc3fbe8d-c8da-65a1-ae7e-d406e1e78328@redhat.com> (raw)
In-Reply-To: <9487b624-0047-239e-392d-5b98b3fa9f4d@cn.fujitsu.com>



On 2017年04月21日 16:22, Zhang Chen wrote:
>
>
> On 04/21/2017 12:10 PM, Jason Wang wrote:
>>
>>
>> On 2017年04月21日 11:48, Zhang Chen wrote:
>>>
>>>
>>> On 04/20/2017 02:43 PM, Jason Wang wrote:
>>>>
>>>>
>>>> On 2017年04月18日 10:20, Zhang Chen wrote:
>>>>> In this patch we support packet that have tcp options field.
>>>>> Add tcp options field check, If the packet have options
>>>>> field we just skip it and compare tcp payload,
>>>>> Avoid unnecessary checkpoint, optimize performance.
>>>>>
>>>>> Signed-off-by: Zhang Chen <zhangchen.fnst@cn.fujitsu.com>
>>>>> ---
>>>>>   net/colo-compare.c | 27 ++++++++++++++++++++++++++-
>>>>>   1 file changed, 26 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/net/colo-compare.c b/net/colo-compare.c
>>>>> index aada04e..049f6f8 100644
>>>>> --- a/net/colo-compare.c
>>>>> +++ b/net/colo-compare.c
>>>>> @@ -248,7 +248,32 @@ static int colo_packet_compare_tcp(Packet 
>>>>> *spkt, Packet *ppkt)
>>>>>           spkt->ip->ip_sum = ppkt->ip->ip_sum;
>>>>>       }
>>>>>   -    if (ptcp->th_sum == stcp->th_sum) {
>>>>> +    /*
>>>>> +     * Check tcp header length for tcp option field.
>>>>> +     * th_off > 5 means this tcp packet have options field.
>>>>> +     * The tcp options maybe always different.
>>>>> +     * for example:
>>>>> +     * From RFC 7323.
>>>>> +     * TCP Timestamps option (TSopt):
>>>>> +     * Kind: 8
>>>>> +     *
>>>>> +     * Length: 10 bytes
>>>>> +     *
>>>>> +     * +-------+-------+---------------------+---------------------+
>>>>> +     *    |Kind=8 |  10   |   TS Value (TSval)  |TS Echo Reply 
>>>>> (TSecr)|
>>>>> +     * +-------+-------+---------------------+---------------------+
>>>>> +     *       1       1              4 4
>>>>> +     *
>>>>> +     * In this case the primary guest's timestamp always 
>>>>> different with
>>>>> +     * the secondary guest's timestamp. COLO just focus on payload,
>>>>> +     * so we just need skip this field.h
>>>>
>>>> Probably a good explanation why we can skip this kind of header. 
>>>> But it does not explain why we can skip all the rest?
>>>
>>> I found tcp options have many kind number to express different meaning,
>>> Here I just give an example for the different options situation,
>>> and this field not the COLO-proxy focus on, COLO just concern the 
>>> payload.
>>> Maybe we will optimize in the feature. Currently we want to make 
>>> COLO full-function
>>> running in qemu upstream.
>>
>> I see, but the questions are:
>>
>> - If we see packets with different options (except for the case you 
>> explain above), does it mean primary and secondary run out of sync?
>> - What will happen if we compare and ask for synchronization if we 
>> find options are not exactly the same?
>>
>
>
> The tcp options begin from the first SYN packet, if client connect to 
> guest, the primary guest and secondary guest
> just give a responses to the client's options, so I think the 
> different options part mostly from guest's running
> statues(like the timestamp), and if kind number are not same, the 
> payload more likely not same too. finally, after
> next checkpoint, all things will be same. If guest connect to client, 
> primary guest send a packet and secondary not,
> It will trigger old packet scan to do checkpoint.
>
> Thanks
> Zhang Chen

Ok this sounds more or less a question of whether or not we want to be 
more relaxed.

Thanks

>
>
>> Thanks
>>
>>>
>>> Thanks
>>> Zhang Chen
>>>
>>>>
>>>> Thanks
>>>>
>>>>> +     */
>>>>> +    if (ptcp->th_off > 5) {
>>>>> +        ptrdiff_t tcp_offset;
>>>>> +        tcp_offset = ppkt->transport_header - (uint8_t *)ppkt->data
>>>>> +                     + (ptcp->th_off * 4);
>>>>> +        res = colo_packet_compare_common(ppkt, spkt, tcp_offset);
>>>>> +    } else if (ptcp->th_sum == stcp->th_sum) {
>>>>>           res = colo_packet_compare_common(ppkt, spkt, ETH_HLEN);
>>>>>       } else {
>>>>>           res = -1;
>>>>
>>>>
>>>>
>>>> .
>>>>
>>>
>>
>>
>>
>> .
>>
>

  reply	other threads:[~2017-04-24  3:27 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-18  2:20 [Qemu-devel] [PATCH V2 0/2] COLO-compare: Optimize tcp compare performance and trace format Zhang Chen
2017-04-18  2:20 ` [Qemu-devel] [PATCH V2 1/2] COLO-compare: Optimize tcp compare for option field Zhang Chen
2017-04-20  6:43   ` Jason Wang
2017-04-21  3:48     ` Zhang Chen
2017-04-21  4:10       ` Jason Wang
2017-04-21  8:22         ` Zhang Chen
2017-04-24  3:27           ` Jason Wang [this message]
2017-04-18  2:20 ` [Qemu-devel] [PATCH V2 2/2] COLO-compare: Optimize tcp compare trace event Zhang Chen
2017-04-24  3:30 ` [Qemu-devel] [PATCH V2 0/2] COLO-compare: Optimize tcp compare performance and trace format Jason Wang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bc3fbe8d-c8da-65a1-ae7e-d406e1e78328@redhat.com \
    --to=jasowang@redhat.com \
    --cc=biannm@cn.fujitsu.com \
    --cc=eddie.dong@intel.com \
    --cc=lizhijian@cn.fujitsu.com \
    --cc=qemu-devel@nongnu.org \
    --cc=zhang.zhanghailiang@huawei.com \
    --cc=zhangchen.fnst@cn.fujitsu.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).