When VMs exchange tunneled like GRE over IPv4 traffic between each other traffic is not geting destributed accross contrail cores which cause overload of one conrail core and leads to packet drops.
Following patch fix that:
branch R3.2 version cd1162a112a48745f1ba9c215faede962bfed7d8
return dpdk_mbuf_rss_hash(mbuf, ipv4_hdr, NULL); / Looks like GRE, but no MPLS. /
}
} else if (ipv4_hdr->ip_proto == VR_IP_PROTO_UDP) {
/* At this point the packet may be:
diff --git a/include/vr_packet.h b/include/vr_packet.h
index c9e542f..0257297 100644
--- a/include/vr_packet.h
+++ b/include/vr_packet.h
@@ -857,6 +857,12 @@ struct vr_gre {
unsigned short gre_proto;
} attribute((packed));
+struct vr_gre_key {
struct vr_gre gre_comm_hdr;
unsigned int gre_key;
+} attribute((packed));
struct vr_pcap {
/ timestamp seconds /
unsigned int pcap_ts_sec;
When VMs exchange tunneled like GRE over IPv4 traffic between each other traffic is not geting destributed accross contrail cores which cause overload of one conrail core and leads to packet drops.
Following patch fix that: branch R3.2 version cd1162a112a48745f1ba9c215faede962bfed7d8
diff --git a/dpdk/vr_dpdk_ethdev.c b/dpdk/vr_dpdk_ethdev.c index c11fc4d..437e0f5 100644 --- a/dpdk/vr_dpdk_ethdev.c +++ b/dpdk/vr_dpdk_ethdev.c @@ -769,6 +769,20 @@ dpdk_mbuf_rss_hash(struct rte_mbuf mbuf, struct vr_ip ipv4_hdr, case VR_IP_PROTO_UDP: hash = rte_hash_crc_4byte(*l4_ptr, hash); break;
break; }
mbuf->ol_flags |= PKT_RX_RSS_HASH; @@ -873,7 +887,7 @@ dpdk_mbuf_parse_and_hash_packets(struct rte_mbuf mbuf) mbuf->ol_flags &= ~PKT_RX_RSS_HASH; / Go to parsing. */ } else {
+struct vr_gre_key {
struct vr_pcap { / timestamp seconds / unsigned int pcap_ts_sec;