Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

R4.1 #101

Open
wants to merge 130 commits into
base: master
Choose a base branch
from
Open

R4.1 #101

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
130 commits
Select commit Hold shift + click to select a range
ed7d4d0
Adding R4.1 branch to CI Closes-Bug: 1719246
vmahuli Sep 25, 2017
e3f567b
Performance issue in 4.0.1 dpdk based vrouter
Sep 27, 2017
dfaa19e
Dont pass function name to Macro
divakardhar Oct 4, 2017
dfbafb2
flow setup rate perf improvement
Oct 17, 2017
91f7255
Subject the Vhost packets to flow processing if policy enabled on Vhost
divakardhar Sep 26, 2017
92a799f
Merge "flow setup rate perf improvement" into R4.1
Oct 20, 2017
b703397
RPF check for Vxlan Packets
divakardhar Nov 2, 2017
ecd1b01
Update the flow drop reason list in flow utility
haripk Nov 7, 2017
ef0f526
Huge pages support in Vrouter kernel module
divakardhar Oct 31, 2017
7884d50
Do not return error if setting MTU fails on the ethdev
srajag Nov 8, 2017
7fc26af
Merge "Huge pages support in Vrouter kernel module" into R4.1
Nov 13, 2017
29edfac
Disable flow processing for metadata subnet on Vhost0
divakardhar Nov 14, 2017
4e96a15
Merge "Disable flow processing for metadata subnet on Vhost0" into R4.1
Nov 14, 2017
d9000c1
Calculate Ecmp component NH for non-IP packets
divakardhar Nov 16, 2017
bd69b17
Dont mirror Vlan tag in Vmware environment
divakardhar Nov 16, 2017
2bcb418
Sandesh change for multicast VRF in interface req
divakardhar Nov 20, 2017
4c904a5
User different VRF for multicast packets of VN with Provider network
divakardhar Nov 16, 2017
d383e85
Clear sender_cpu of skb before transmit
divakardhar Nov 21, 2017
ff48329
Merge "Dont mirror Vlan tag in Vmware environment" into R4.1
Nov 22, 2017
ac9ebb8
Remove Ecmp checks in ARP processing
divakardhar Nov 22, 2017
6b62181
Start Eviction even if the FIN/FIN-ACK packets are dropped
divakardhar Nov 27, 2017
760c15a
Merge "Remove Ecmp checks in ARP processing" into R4.1
Nov 28, 2017
677dbab
rt: Add monitor option
Oct 25, 2017
0dad531
Do not calculate fragment values for mirrored packets
divakardhar Jan 22, 2018
be48b61
Update vm port status with dpdk
Jan 12, 2018
5d6ff72
Resolve conflict of flags
kirankn80 Feb 8, 2018
37b1392
Merge "Resolve conflict of flags" into R4.1
Feb 10, 2018
de6f415
Modified the flow utility commands to directly read the hold entries…
bmadhu77 Feb 15, 2018
928797f
Merge "Modified the flow utility commands to directly read the hold …
Feb 19, 2018
290f381
Dpdk vrouter crash fix
Feb 21, 2018
f04f6f7
DPDK: Fix for KNI crash in pkt_drop_stats()
kirankn80 Oct 9, 2017
10488c8
Fix dpdk crash
Feb 22, 2018
b8ea077
Fix memory leak in the vrouter module
abgzlnv Dec 6, 2017
1a8fd92
Merge "Fix dpdk crash" into R4.1
Feb 22, 2018
0ef5287
Merge "Dpdk vrouter crash fix" into R4.1
Feb 22, 2018
554e426
Merge "DPDK: Fix for KNI crash in pkt_drop_stats()" into R4.1
Feb 22, 2018
a55f075
Coverity reports bad comparison for the result of pkt_pull
abgzlnv Dec 19, 2017
36e8bf1
Several coverity issues in vrouter utilities
abgzlnv Dec 4, 2017
8733582
Some dp-core fixes for coverity issues
abgzlnv Dec 8, 2017
704278e
Disable promiscuous mode on bond interface in DPDK vrouter.
srajag Mar 2, 2018
6162179
Merge "Fix memory leak in the vrouter module" into R4.1
Mar 12, 2018
ec22fb3
Merge "Coverity reports bad comparison for the result of pkt_pull" in…
Mar 14, 2018
fd0e93f
Merge "Some dp-core fixes for coverity issues" into R4.1
Mar 14, 2018
208f745
Making 3.13.0-142 as the default kernel for ubuntu 14.04
haripk Mar 20, 2018
218f027
Merge "Several coverity issues in vrouter utilities" into R4.1
Mar 21, 2018
505bafc
Keeping the mirror metadata entry in Flow entry
divakardhar May 27, 2016
16facd0
Merge "Disable promiscuous mode on bond interface in DPDK vrouter." i…
Mar 22, 2018
5505ca3
Merge "Keeping the mirror metadata entry in Flow entry" into R4.1
Mar 26, 2018
7bf9a30
DPDK: Add new config parameters for tx/rx descriptors
kirankn80 Mar 26, 2018
d4df00b
DPDK: Add DPDK version to the log
kirankn80 Apr 2, 2018
de5054c
Merge "DPDK: Add new config parameters for tx/rx descriptors" into R4.1
Apr 3, 2018
59a2c58
Dpdk performance fix for redhat
Apr 3, 2018
8c86774
Merge "DPDK: Add DPDK version to the log" into R4.1
Apr 3, 2018
1dacc5c
Fix build for kernels >= 4.9
Dec 5, 2017
480fc3c
Merge "Dpdk performance fix for redhat" into R4.1
Apr 4, 2018
1da5c7d
Merge "Fix build for kernels >= 4.9" into R4.1
Apr 6, 2018
1f45fb3
Fix vrouter build for kernels from 4.11 to 4.13
Jan 19, 2018
06e029e
Vrouter module load issue
Apr 19, 2018
f514f4d
Merge "Vrouter module load issue" into R4.1
Apr 20, 2018
bf14434
Enable vrouter build on RHEL 7.5
srajag Apr 13, 2018
4b1b73a
Changes to make vrouter code compile against linux kernel v4.15. Time…
Apr 28, 2018
cbda85a
Fixes vrouter kernel module build on RHEL/CentOS 7
wurbanski Dec 4, 2017
f442753
Feature set negotiation
Mar 28, 2018
126401b
DPDK: Check invalid GPA in descr array in virtio
May 10, 2018
bc4bd8c
Merge "Changes to make vrouter code compile against linux kernel v4.1…
May 10, 2018
03f396b
Merge "DPDK: Check invalid GPA in descr array in virtio" into R4.1
May 14, 2018
5d08281
Changes to make netlink infra to work with CentOS 7.5.
May 16, 2018
4cc4453
Include hardware offload hooks
fjbotha Apr 23, 2018
7f1e1e2
Register information about multicast group
michalskalski May 21, 2018
704e9f6
Merge "Include hardware offload hooks" into R4.1
May 22, 2018
2a42b8d
Merge "Feature set negotiation" into R4.1
May 23, 2018
2924b70
Merge "Register information about multicast group" into R4.1
May 24, 2018
59c80ea
Do not run free_netdev twice
michalskalski May 23, 2018
e772220
DPDK: Fix for live migration
kirankn80 Oct 25, 2017
43d8849
DPDK GSO: Fix for performance issue seen in TIM
kirankn80 May 25, 2018
9daf65f
Merge "Do not run free_netdev twice" into R4.1
May 25, 2018
5a5cec4
Add defensive checks in vrouter
kirankn80 May 29, 2018
aabefed
Merge "DPDK: Fix for live migration" into R4.1
May 29, 2018
bb37a33
Merge "DPDK GSO: Fix for performance issue seen in TIM" into R4.1
May 30, 2018
7e758e4
vif interfaces are numbered , add check for
krharsh May 24, 2018
b603bc1
DPDK tapdev: Don't delete vhost0 on soft reset
kirankn80 Mar 19, 2018
b47b91a
DPDK: Performance issue in TSO
kirankn80 May 31, 2018
3d16ac6
Merge "Add defensive checks in vrouter" into R4.1
May 31, 2018
d990456
Merge "DPDK: Performance issue in TSO" into R4.1
May 31, 2018
6b3ea62
Link against the NFP PMD for vRouter-DPDK
fjbotha May 31, 2018
a489a49
Merge "DPDK tapdev: Don't delete vhost0 on soft reset" into R4.1
May 31, 2018
b7b4748
Merge "Link against the NFP PMD for vRouter-DPDK" into R4.1
mmithun May 31, 2018
8d0c7eb
Merge "vif interfaces are numbered , add check for vif get to be call…
Jun 6, 2018
09d5192
Filter expression should not start with a
krharsh Jul 27, 2018
e921c5f
Fix for the bug not allowing custom MTU to be set on vhost interface on
Sep 6, 2018
8a24cd6
Offload ECMP next hop index updates
pietermalan Sep 14, 2018
fe4108b
Packet corruption in case of tcp packet to vlan if
Sep 10, 2018
a11e9fc
VM traffic stop after agent restart.
Sep 29, 2018
fad5f97
VM traffic stop after agent restart.
Oct 11, 2018
79f19d1
Check packet length before calculating checksum
kirankn80 Nov 4, 2018
f948923
Initialize the root node label flags to 0 which will be inherited by …
Nov 9, 2018
cb137a3
Mergeable buffer issue with Ericsson vEPG
Dec 3, 2018
fee02e4
[Orange] Contrail 4.1.1- connectivity issue on several VMs of "L2 Onl…
anandrao79 Dec 21, 2018
660a8bf
Merge "[Orange] Contrail 4.1.1- connectivity issue on several VMs of …
Jan 2, 2019
3f7b9c3
CC13: DPDK vRouter reports double traffic rate on vm tap interface
hajimohamed Jan 17, 2019
63d0e59
Do not decrement TTL while doing L3 forward to agent pkt0
anandrao79 Jan 31, 2019
e67f543
DPDK: GRO flag reset during Agent/DPDK container reboot
hajimohamed Jan 28, 2019
928a608
DPDK: Fix for vhost0 MTU not getting set
kirankn80 Oct 12, 2018
d963d14
Contrail 5.0.2 DPDK Vrouter Pull Fails Drops
hajimohamed Feb 11, 2019
09a47d2
Merge "DPDK: Fix for vhost0 MTU not getting set" into R4.1
Feb 16, 2019
8990557
Merge "CC13: DPDK vRouter reports double traffic rate on vm tap inter…
Feb 18, 2019
d007993
Merge "DPDK: GRO flag reset during Agent/DPDK container reboot" into …
Feb 18, 2019
f9d3701
Vrouter stops forwarding with iperf TCP test
Feb 21, 2019
26f0926
Vrouter stops forwarding with iperf TCP test
Feb 26, 2019
65e3ecf
Fix dpdk vrouter crash while doing vifdump
Mar 2, 2019
a66eb8b
dpdk vrouter changes Ethernet Type field of an inner IPv6 pkt to Type…
hajimohamed May 7, 2019
72fe825
Add support to evict a stale TCP "Dead" flow
anandrao79 May 13, 2019
67cc2d5
DPDK: Possible mbuf leak running iperf with MSS 536
Apr 9, 2019
a20f081
Enhancement Request - vifdump script - stop command issues
hajimohamed Jun 13, 2019
bafabba
NTTC issue: CEM-4275 - One of the TCP dead flow doesn't get evicted
anandrao79 May 29, 2019
9dea585
Merge "dpdk vrouter changes Ethernet Type field of an inner IPv6 pkt …
Jul 15, 2019
adf9aa1
Merge "NTTC issue: CEM-4275 - One of the TCP dead flow doesn't get ev…
Jul 15, 2019
ca21f51
Update R4.1 branch Ubuntu Kernel to 3.13.0-171
hajimohamed Jul 26, 2019
cd5388a
Fix for flooding of packets in dpdk vrouter
Jun 6, 2019
56ffb40
Merge "Fix for flooding of packets in dpdk vrouter" into R4.1
Aug 13, 2019
620f49f
Fix for memory leak in kmod vrouter
kirankn80 Aug 29, 2019
7233932
Build of vrouter.ko is broken on some 4.4.0 kernels (ubuntu 16.04)
anandrao79 Mar 29, 2019
33778eb
DPDK: Fix for FD leak when start/stop VM in loop
hajimohamed Dec 5, 2019
bbf27ef
Revert "DPDK: Fix for FD leak when start/stop VM in loop"
hajimohamed Dec 16, 2019
528264f
CEM-11421 - Orange ZRB Missing prefixes series of occurrences
anandrao79 Dec 26, 2019
a7689f4
Socket leak when VM stop/start In loop
hajimohamed Mar 5, 2020
d436e54
Fix for Fragment errors due to integer overflow
kirankn80 Jul 16, 2020
817a3fb
Health check fails to work after VM reboot
Anish56 Jul 21, 2020
d71b4e3
Merge "Fix for Fragment errors due to integer overflow" into R4.1
Jul 27, 2020
6c14e3c
CEM-18916: Current implementation doesnt reset parent socket state to…
krishnasharm Nov 24, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitreview
Expand Up @@ -13,4 +13,4 @@
host=review.opencontrail.org
port=29418
project=Juniper/contrail-vrouter.git
defaultbranch=master
defaultbranch=R4.1
2 changes: 2 additions & 0 deletions Makefile
Expand Up @@ -53,6 +53,7 @@ ifneq ($(KERNELRELEASE), )
vrouter-y += linux/vrouter_mod.o linux/vhost_dev.o
vrouter-y += linux/vr_host_interface.o linux/vr_genetlink.o
vrouter-y += linux/vr_mem.o linux/vr_fragment_assembler.o
vrouter-y += linux/vr_offloads.o

vrouter-y += dp-core/vr_message.o dp-core/vr_sandesh.o
vrouter-y += dp-core/vr_queue.o dp-core/vr_index_table.o
Expand All @@ -74,6 +75,7 @@ ifneq ($(KERNELRELEASE), )
ccflags-y += -I$(SANDESH_EXTRA_HEADER_PATH)
ccflags-y += -I$(SANDESH_EXTRA_HEADER_PATH)/sandesh/library/c
ccflags-y += -g -Wall
ccflags-$(CONFIG_RETPOLINE) += -DRETPOLINE

ifeq ($(shell uname -r | grep 2.6.32|grep -c openstack),1)
ccflags-y += -DISRHOSKERNEL
Expand Down
7 changes: 4 additions & 3 deletions SConscript
Expand Up @@ -99,12 +99,12 @@ kernel_build_dir = None
if (PLATFORM.lower() == 'ubuntu' and VERSION.find('14.') == 0):
if re.search('^4\.', default_kernel_ver):
print "Warn: kernel version %s not supported for vrouter and dpdk" % default_kernel_ver
kernel_build_dir = '/lib/modules/3.13.0-110-generic/build'
kernel_build_dir = '/lib/modules/3.13.0-171-generic/build'
if os.path.isdir(kernel_build_dir):
default_kernel_ver = "3.13.0-110-generic"
default_kernel_ver = "3.13.0-171-generic"
print "info: libdpdk will be built against kernel version %s" % default_kernel_ver
else:
print "*** Error: Cannot find kernel v3.13.0-110, build of vrouter will likely fail"
print "*** Error: Cannot find kernel v3.13.0-171, build of vrouter will likely fail"
kernel_build_dir = '/lib/modules/%s/build' % default_kernel_ver

kernel_dir = GetOption('kernel-dir')
Expand Down Expand Up @@ -202,6 +202,7 @@ if sys.platform != 'darwin':
'-lrte_pmd_i40e',
# '-lrte_pmd_fm10k',
'-lrte_pmd_ixgbe',
'-lrte_pmd_nfp',
'-lrte_pmd_e1000',
# '-lrte_pmd_mlx4',
# '-lrte_pmd_ring',
Expand Down
26 changes: 22 additions & 4 deletions dp-core/vr_bridge.c
Expand Up @@ -23,7 +23,6 @@ unsigned int vr_bridge_oentries = 0;
static vr_htable_t vn_rtable;
char vr_bcast_mac[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};

struct vr_nexthop *(*vr_bridge_lookup)(unsigned int, struct vr_route_req *);
int bridge_table_init(struct vr_rtable *, struct rtable_fspec *);
void bridge_table_deinit(struct vr_rtable *, struct rtable_fspec *, bool);
struct vr_bridge_entry *vr_find_bridge_entry(struct vr_bridge_entry_key *);
Expand Down Expand Up @@ -295,6 +294,15 @@ bridge_table_lookup(unsigned int vrf_id, struct vr_route_req *rt)
return rt->rtr_nh;
}

struct vr_nexthop *
vr_bridge_lookup(unsigned int vrf_id, struct vr_route_req *rt)
{
if (!vn_rtable)
return NULL;

return bridge_table_lookup(vrf_id, rt);
}

static struct vr_bridge_entry *
bridge_lookup(uint8_t *mac, struct vr_forwarding_md *fmd)
{
Expand Down Expand Up @@ -484,14 +492,15 @@ bridge_table_dump(struct vr_rtable * __unsued, struct vr_route_req *rt)
struct vr_message_dumper *dumper;
char *mac;

if (rt->rtr_req.rtr_mac_size != VR_ETHER_ALEN)
return -EINVAL;

dumper = vr_message_dump_init(&rt->rtr_req);
if (!dumper) {
ret = -ENOMEM;
goto generate_response;
}

if (rt->rtr_req.rtr_mac_size != VR_ETHER_ALEN)
return -EINVAL;

mac = (char *)(((vr_route_req *)(dumper->dump_req))->rtr_mac);
if (!mac) {
Expand Down Expand Up @@ -622,6 +631,13 @@ bridge_table_init(struct vr_rtable *rtable, struct rtable_fspec *fs)
if (!vr_bridge_oentries)
vr_bridge_oentries = ((vr_bridge_entries / 5) + 1023) & ~1023;

if (!vr_bridge_table && vr_huge_page_mem_get) {
vr_bridge_table = vr_huge_page_mem_get(VR_BRIDGE_TABLE_SIZE +
VR_BRIDGE_OFLOW_TABLE_SIZE);
if (vr_bridge_table)
vr_bridge_otable = vr_bridge_table + VR_BRIDGE_TABLE_SIZE;
}

rtable->algo_data = vr_htable_attach(vrouter_get(0), vr_bridge_entries,
vr_bridge_table, vr_bridge_oentries, vr_bridge_otable,
sizeof(struct vr_bridge_entry),
Expand All @@ -641,7 +657,6 @@ bridge_table_init(struct vr_rtable *rtable, struct rtable_fspec *fs)
rtable->algo_get = bridge_table_get;
rtable->algo_dump = bridge_table_dump;

vr_bridge_lookup = bridge_table_lookup;
vn_rtable = rtable->algo_data;

return 0;
Expand Down Expand Up @@ -887,6 +902,9 @@ vr_bridge_input(struct vrouter *router, struct vr_packet *pkt,
}
}

if (IS_MAC_BMCAST(dmac) && (pkt->vp_if->vif_mcast_vrf != 65535))
fmd->fmd_dvrf = pkt->vp_if->vif_mcast_vrf;

be = bridge_lookup(dmac, fmd);
if (be)
nh = be->be_nh;
Expand Down
43 changes: 2 additions & 41 deletions dp-core/vr_datapath.c
Expand Up @@ -20,7 +20,7 @@ vr_get_proxy_mac(struct vr_packet *pkt, struct vr_forwarding_md *fmd,
struct vr_route_req *rt, unsigned char *dmac)
{
bool from_fabric, stitched, flood, over_lay, hosted_vm;
bool to_gateway, no_proxy, to_vcp, ecmp_src;
bool to_gateway, no_proxy, to_vcp;

unsigned char *resp_mac;
struct vr_nexthop *nh = NULL, *l3_nh = NULL;
Expand All @@ -29,7 +29,7 @@ vr_get_proxy_mac(struct vr_packet *pkt, struct vr_forwarding_md *fmd,

over_lay = true;
from_fabric = stitched = flood = hosted_vm = false;
to_gateway = to_vcp = no_proxy = ecmp_src = false;
to_gateway = to_vcp = no_proxy = false;

stats = vr_inet_vrf_stats(fmd->fmd_dvrf, pkt->vp_cpu);
/* here we will not check for stats, but will check before use */
Expand Down Expand Up @@ -84,13 +84,6 @@ vr_get_proxy_mac(struct vr_packet *pkt, struct vr_forwarding_md *fmd,
if (vr_hosted_nexthop(nh))
hosted_vm = true;

/* If ECMP source, we force routing */
if (fmd->fmd_ecmp_src_nh_index != -1) {
resp_mac = vif->vif_mac;
fmd->fmd_ecmp_src_nh_index = -1;
ecmp_src = true;
}


/*
* situations that are handled here (from_fabric)
Expand All @@ -107,38 +100,6 @@ vr_get_proxy_mac(struct vr_packet *pkt, struct vr_forwarding_md *fmd,
* . arp request from the uplink port of a vcp
*/
if (from_fabric) {
if (ecmp_src) {

/*
* If a Multicast ARP request, it is not answered on Fabric
* side
*/
if (IS_MAC_BMCAST(dmac))
return MR_DROP;

/*
* If unicast and not stiched, we do not have enough
* information what to respond. We can not even flood,
* probably because this need to be answered with Vrouter
* Mac in source Vrouter itself. So we drop this
*/
if (!stitched)
return MR_DROP;

/*
* If our stiched mac does not match, we will let the VM
* decide what to do with request
*/
if (!VR_MAC_CMP(dmac, rt->rtr_req.rtr_mac))
return MR_FLOOD;

/*
* Very likely response need to go with stiched mac. But
* below conditions might override
*/
resp_mac = rt->rtr_req.rtr_mac;
}

if (flood && !stitched) {
if (stats)
stats->vrf_arp_physical_flood++;
Expand Down