diff --git a/loxilb-ebpf b/loxilb-ebpf index 1f52629eb..b7a668bdc 160000 --- a/loxilb-ebpf +++ b/loxilb-ebpf @@ -1 +1 @@ -Subproject commit 1f52629ebef062876e25326382969774e45bd81e +Subproject commit b7a668bdc6b9f431f2bb7944df7d434451908fb3 diff --git a/loxinet/dpebpf_linux.go b/loxinet/dpebpf_linux.go index 155200214..1684c7dfb 100644 --- a/loxinet/dpebpf_linux.go +++ b/loxinet/dpebpf_linux.go @@ -93,8 +93,8 @@ const ( DpEbpfLinuxTiVal = 10 ctiDeleteSyncRetries = 4 blkCtiMaxLen = 4096 - mapNotifierChLen = 131072 - mapNotifierWorkers = 5 + mapNotifierChLen = 8096 + mapNotifierWorkers = 2 ) // ebpf table related defines in go @@ -1595,7 +1595,7 @@ func goMapNotiHandler(m *mapNoti) { ctKey := (*C.struct_dp_ct_key)(unsafe.Pointer(m.key)) // Only connection oriented protocols - if mh.dpEbpf == nil || (ctKey.l4proto != 6 && ctKey.l4proto != 132) { + if m.addop == 0 || mh.dpEbpf == nil || (ctKey.l4proto != 6 && ctKey.l4proto != 132) { return } @@ -1606,7 +1606,8 @@ func goMapNotiHandler(m *mapNoti) { goCtEnt.PVal = C.GoBytes(unsafe.Pointer(m.val), m.val_len) } - mh.dpEbpf.ToMapCh <- goCtEnt + dpCTMapNotifierWorker(goCtEnt) + //mh.dpEbpf.ToMapCh <- goCtEnt } func dpCTMapNotifierWorker(cti *DpCtInfo) { @@ -1658,10 +1659,8 @@ func dpCTMapNotifierWorker(cti *DpCtInfo) { mh.dpEbpf.mtx.Lock() defer mh.dpEbpf.mtx.Unlock() - mapKey := cti.Key() - if addOp == false { - cti = mh.dpEbpf.ctMap[mapKey] + cti = mh.dpEbpf.ctMap[cti.Key()] if cti == nil || cti.Deleted > 0 { return } @@ -1786,7 +1785,7 @@ func dpCTMapChkUpdates() { continue } if C.bpf_map_lookup_elem(C.int(fd), unsafe.Pointer(&cti.PKey[0]), unsafe.Pointer(&tact)) != 0 { - tk.LogIt(tk.LogInfo, "[CT] ent not found %s\n", cti.Key()) + tk.LogIt(tk.LogDebug, "[CT] ent not found %s\n", cti.Key()) //delete(mh.dpEbpf.ctMap, cti.Key()) cti.Deleted++ cti.XSync = true @@ -1825,7 +1824,7 @@ func dpCTMapChkUpdates() { if cti.Deleted > 0 { delete(mh.dpEbpf.ctMap, cti.Key()) // This is a strange fix - See comment above - C.llb_del_map_elem(C.LL_DP_CT_MAP, unsafe.Pointer(&cti.PKey[0])) + //C.llb_del_map_elem(C.LL_DP_CT_MAP, unsafe.Pointer(&cti.PKey[0])) } } }