Skip to content

Commit

Permalink
enables fallback and port for hashing schedulers
Browse files Browse the repository at this point in the history
for sh and mh, by default, port is not included in hashing. This is
against intuition.

This commit enables sh-port and mh-port option.

Also enables sh-fallback and mh-fallback, which is helpful when l/u
threshold set for a service.

Refer to https://lore.kernel.org/patchwork/patch/387724/ on how the
flags are configured to ipvs module.

Change-Id: I40dafe67b5c0ce03915714979404542afed4e60a
  • Loading branch information
liuyuan10 committed Feb 5, 2021
1 parent 07e01df commit ffbbb2d
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 3 deletions.
8 changes: 8 additions & 0 deletions engine/vserver.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,14 @@ func (s *service) ipvsService() *ipvs.Service {
if s.ventry.OnePacket {
flags |= ipvs.SFOnePacket
}
// Enables fallback and port for hashing schedulers.
// Maps to ipvs sh-fallback, sh-port, mh-fallback and mh-port.
switch s.ventry.Scheduler {
case seesaw.LBSchedulerSH:
flags |= ipvs.SFSchedSHFallback | ipvs.SFSchedSHPort
case seesaw.LBSchedulerMH:
flags |= ipvs.SFSchedMHFallback | ipvs.SFSchedMHPort
}
var ip net.IP
switch {
case s.fwm > 0 && s.af == seesaw.IPv4:
Expand Down
18 changes: 15 additions & 3 deletions ipvs/ipvs.go
Original file line number Diff line number Diff line change
Expand Up @@ -218,9 +218,13 @@ func (f *ServiceFlags) SetBytes(x []byte) {
}

const (
SFPersistent ServiceFlags = ipvsSvcFlagPersist
SFHashed ServiceFlags = ipvsSvcFlagHashed
SFOnePacket ServiceFlags = ipvsSvcFlagOnePacket
SFPersistent ServiceFlags = ipvsSvcFlagPersist
SFHashed ServiceFlags = ipvsSvcFlagHashed
SFOnePacket ServiceFlags = ipvsSvcFlagOnePacket
SFSchedSHFallback ServiceFlags = ipvsSvcFlagSchedSHFallback
SFSchedSHPort ServiceFlags = ipvsSvcFlagSchedSHPort
SFSchedMHFallback ServiceFlags = ipvsSvcFlagSchedMHFallback
SFSchedMHPort ServiceFlags = ipvsSvcFlagSchedMHPort
)

// Service represents an IPVS service.
Expand Down Expand Up @@ -333,6 +337,14 @@ const (
ipvsSvcFlagPersist = 0x1
ipvsSvcFlagHashed = 0x2
ipvsSvcFlagOnePacket = 0x4
ipvsSvcFlagSchedOpt1 = 0x8
ipvsSvcFlagSchedOpt2 = 0x10

// Depending on schedulers, the bit stands for different options.
ipvsSvcFlagSchedSHFallback = ipvsSvcFlagSchedOpt1
ipvsSvcFlagSchedSHPort = ipvsSvcFlagSchedOpt2
ipvsSvcFlagSchedMHFallback = ipvsSvcFlagSchedOpt1
ipvsSvcFlagSchedMHPort = ipvsSvcFlagSchedOpt2

ipvsDstFlagFwdMask = 0x7
ipvsDstFlagFwdMasq = 0x0
Expand Down

0 comments on commit ffbbb2d

Please sign in to comment.