Track ratio of reduced bundle and every blacklist event

Ratio of reduced bundle will show how much of the traffic is not sent immediatly
by a peer.
Blacklist meter will show if network is spammed and peers are getting blacklisted.
This commit is contained in:
Dmitry 2018-10-10 14:03:01 +03:00
parent 631a8ac4aa
commit c33f34726e
3 changed files with 5 additions and 0 deletions

View File

@ -13,4 +13,6 @@ var (
envelopeErrLowPowCounter = metrics.NewRegisteredCounter("whisper/envelopeErrLowPow", nil)
envelopeErrNoBloomMatchCounter = metrics.NewRegisteredCounter("whisper/envelopeErrNoBloomMatch", nil)
envelopeSizeMeter = metrics.NewRegisteredMeter("whisper/envelopeSize", nil)
peerBundleRatio = metrics.NewRegisteredGaugeFloat64("whisper/bundleRatio", nil)
peerBlacklistMeter = metrics.NewRegisteredMeter("whisper/blacklistMeter", nil)
)

View File

@ -233,7 +233,9 @@ func (peer *Peer) broadcast() error {
}
// bundle will be reduce according to a rate limiter
// if rate limiter is nil - this operation is noop
original := len(bundle)
bundle = peer.reduceBundle(bundle)
peerBundleRatio.Update(float64(len(bundle)) / float64(original))
if len(bundle) > 0 {
// transmit the batch of envelopes
if err := p2p.Send(peer.ws, messagesCode, bundle); err != nil {

View File

@ -937,6 +937,7 @@ func (whisper *Whisper) runMessageLoop(p *Peer, rw p2p.MsgReadWriter) error {
packet.Discard()
if blacklist {
peerBlacklistMeter.Mark(1)
whisper.ratelimiter.Ingress.Remove(p.peer, 10*time.Minute)
return fmt.Errorf("peer %v reached traffic limit capacity", p.peer.ID())
}