[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 7/8] COLO-compare: Optimize tcp compare for option fi
From: |
Jason Wang |
Subject: |
[Qemu-devel] [PULL 7/8] COLO-compare: Optimize tcp compare for option field |
Date: |
Mon, 24 Apr 2017 13:16:05 +0800 |
From: Zhang Chen <address@hidden>
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 <address@hidden>
Signed-off-by: Jason Wang <address@hidden>
---
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 9b09cfc..4ab80b1 100644
--- a/net/colo-compare.c
+++ b/net/colo-compare.c
@@ -233,7 +233,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.
+ */
+ 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;
--
2.7.4
- [Qemu-devel] [PULL 0/8] Net patches, Jason Wang, 2017/04/24
- [Qemu-devel] [PULL 1/8] colo-compare: Fix old packet check bug., Jason Wang, 2017/04/24
- [Qemu-devel] [PULL 2/8] hw/net: add MII definitions, Jason Wang, 2017/04/24
- [Qemu-devel] [PULL 4/8] net/ftgmac100: add a 'aspeed' property, Jason Wang, 2017/04/24
- [Qemu-devel] [PULL 5/8] aspeed: add a FTGMAC100 nic, Jason Wang, 2017/04/24
- [Qemu-devel] [PULL 3/8] net: add FTGMAC100 support, Jason Wang, 2017/04/24
- [Qemu-devel] [PULL 6/8] slirp: add a fake NC-SI backend, Jason Wang, 2017/04/24
- [Qemu-devel] [PULL 7/8] COLO-compare: Optimize tcp compare for option field,
Jason Wang <=
- [Qemu-devel] [PULL 8/8] COLO-compare: Optimize tcp compare trace event, Jason Wang, 2017/04/24
- Re: [Qemu-devel] [PULL 0/8] Net patches, Peter Maydell, 2017/04/24