Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions p2p/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,15 @@ type P2PConfig struct {
Node NodeConfig
KadDhtPeerDiscovery KadDhtPeerDiscoveryConfig
Sharding ShardingConfig
Gossip GossipConfig
}

// GossipConfig holds the configuration for the gossip peering
type GossipConfig struct {
UseDefaultConfig bool
OptimalPeersNum int
MinimumPeersNum int
MaximumPeersNum int
}

// NodeConfig will hold basic p2p settings
Expand Down
6 changes: 6 additions & 0 deletions p2p/integrationTests/peerConnections/peerConnections_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ func createBaseArgs() libp2p.ArgsNetworkMessenger {
Sharding: config.ShardingConfig{
Type: p2p.NilListSharder,
},
Gossip: config.GossipConfig{
UseDefaultConfig: true,
},
},
SyncTimer: &mock.SyncTimerStub{},
PreferredPeersHolder: &mock.PeersHolderStub{},
Expand Down Expand Up @@ -81,6 +84,9 @@ func createBaseArgsForTCPWithKey(key crypto.PrivateKey) libp2p.ArgsNetworkMessen
Sharding: config.ShardingConfig{
Type: p2p.NilListSharder,
},
Gossip: config.GossipConfig{
UseDefaultConfig: true,
},
},
SyncTimer: &mock.SyncTimerStub{},
PreferredPeersHolder: &mock.PeersHolderStub{},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ func createDefaultConfig() config.P2PConfig {
InitialPeerList: nil,
BucketSize: 100,
},
Gossip: config.GossipConfig{
UseDefaultConfig: true,
},
}
}

Expand Down
6 changes: 6 additions & 0 deletions p2p/integrationTests/testCommon.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@ func createP2PConfig(initialPeerList []string) config.P2PConfig {
Sharding: config.ShardingConfig{
Type: p2p.NilListSharder,
},
Gossip: config.GossipConfig{
UseDefaultConfig: true,
},
}
}

Expand Down Expand Up @@ -181,6 +184,9 @@ func createP2PConfigWithNoDiscovery() config.P2PConfig {
Sharding: config.ShardingConfig{
Type: p2p.NilListSharder,
},
Gossip: config.GossipConfig{
UseDefaultConfig: true,
},
}
}

Expand Down
3 changes: 3 additions & 0 deletions p2p/libp2p/goroutines/goroutines_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,9 @@ func createDefaultConfig() config.P2PConfig {
InitialPeerList: nil,
BucketSize: 100,
},
Gossip: config.GossipConfig{
UseDefaultConfig: true,
},
}
}

Expand Down
3 changes: 3 additions & 0 deletions p2p/libp2p/issues_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ func createMessenger() p2p.Messenger {
Sharding: config.ShardingConfig{
Type: p2p.NilListSharder,
},
Gossip: config.GossipConfig{
UseDefaultConfig: true,
},
},
SyncTimer: &libp2p.LocalSyncTimer{},
PreferredPeersHolder: &mock.PeersHolderStub{},
Expand Down
20 changes: 18 additions & 2 deletions p2p/libp2p/netMessenger.go
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,7 @@ func addComponentsToNode(
peersRatingHandler := args.PeersRatingHandler
marshaller := args.Marshaller

pubSub, err := p2pNode.createPubSub(messageSigning)
pubSub, err := p2pNode.createPubSub(messageSigning, args.P2pConfig.Gossip)
if err != nil {
return err
}
Expand Down Expand Up @@ -431,14 +431,30 @@ func (netMes *networkMessenger) validateSeeders(seeders []string) error {
return nil
}

func (netMes *networkMessenger) createPubSub(messageSigning messageSigningConfig) (PubSub, error) {
func (netMes *networkMessenger) createPubSub(
messageSigning messageSigningConfig,
gossipConfig config.GossipConfig,
) (PubSub, error) {
optsPS := make([]pubsub.Option, 0)
if messageSigning == withoutMessageSigning {
netMes.log.Warn("signature verification is turned off in network messenger instance. NOT recommended in production environment")
optsPS = append(optsPS, pubsub.WithMessageSignaturePolicy(noSignPolicy))
}

optsPS = append(optsPS, pubsub.WithMaxMessageSize(pubSubMaxMessageSize))
gossipSubParams := pubsub.DefaultGossipSubParams()
if !gossipConfig.UseDefaultConfig {
netMes.log.Warn("node is not running with the default gossip parameters",
"D", gossipConfig.OptimalPeersNum,
"Dhi", gossipConfig.MaximumPeersNum,
"Dlo", gossipConfig.MinimumPeersNum)

gossipSubParams.D = gossipConfig.OptimalPeersNum
gossipSubParams.Dhi = gossipConfig.MaximumPeersNum
gossipSubParams.Dlo = gossipConfig.MinimumPeersNum
}

optsPS = append(optsPS, pubsub.WithGossipSubParams(gossipSubParams))

return pubsub.NewGossipSub(netMes.ctx, netMes.p2pHost, optsPS...)
}
Expand Down
24 changes: 24 additions & 0 deletions p2p/libp2p/netMessenger_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,9 @@ func createMockNetworkArgs() libp2p.ArgsNetworkMessenger {
Sharding: config.ShardingConfig{
Type: p2p.NilListSharder,
},
Gossip: config.GossipConfig{
UseDefaultConfig: true,
},
},
SyncTimer: &libp2p.LocalSyncTimer{},
PreferredPeersHolder: &mock.PeersHolderStub{},
Expand Down Expand Up @@ -1132,6 +1135,9 @@ func TestLibp2pMessenger_SendDirectWithRealMessengersShouldWork(t *testing.T) {
Sharding: config.ShardingConfig{
Type: p2p.NilListSharder,
},
Gossip: config.GossipConfig{
UseDefaultConfig: true,
},
},
SyncTimer: &libp2p.LocalSyncTimer{},
PreferredPeersHolder: &mock.PeersHolderStub{},
Expand Down Expand Up @@ -1208,6 +1214,9 @@ func TestLibp2pMessenger_SendDirectWithRealMessengersWithoutSignatureShouldWork(
Sharding: config.ShardingConfig{
Type: p2p.NilListSharder,
},
Gossip: config.GossipConfig{
UseDefaultConfig: true,
},
},
SyncTimer: &libp2p.LocalSyncTimer{},
PreferredPeersHolder: &mock.PeersHolderStub{},
Expand Down Expand Up @@ -1449,6 +1458,9 @@ func TestNetworkMessenger_PreventReprocessingShouldWork(t *testing.T) {
Sharding: config.ShardingConfig{
Type: p2p.NilListSharder,
},
Gossip: config.GossipConfig{
UseDefaultConfig: true,
},
},
SyncTimer: &libp2p.LocalSyncTimer{},
PreferredPeersHolder: &mock.PeersHolderStub{},
Expand Down Expand Up @@ -1519,6 +1531,9 @@ func TestNetworkMessenger_PubsubCallbackNotMessageNotValidShouldNotCallHandler(t
Sharding: config.ShardingConfig{
Type: p2p.NilListSharder,
},
Gossip: config.GossipConfig{
UseDefaultConfig: true,
},
},
SyncTimer: &libp2p.LocalSyncTimer{},
PreferredPeersHolder: &mock.PeersHolderStub{},
Expand Down Expand Up @@ -1597,6 +1612,9 @@ func TestNetworkMessenger_PubsubCallbackReturnsFalseIfHandlerErrors(t *testing.T
Sharding: config.ShardingConfig{
Type: p2p.NilListSharder,
},
Gossip: config.GossipConfig{
UseDefaultConfig: true,
},
},
SyncTimer: &libp2p.LocalSyncTimer{},
PreferredPeersHolder: &mock.PeersHolderStub{},
Expand Down Expand Up @@ -1664,6 +1682,9 @@ func TestNetworkMessenger_UnJoinAllTopicsShouldWork(t *testing.T) {
Sharding: config.ShardingConfig{
Type: p2p.NilListSharder,
},
Gossip: config.GossipConfig{
UseDefaultConfig: true,
},
},
SyncTimer: &libp2p.LocalSyncTimer{},
PreferredPeersHolder: &mock.PeersHolderStub{},
Expand Down Expand Up @@ -1889,6 +1910,9 @@ func TestNetworkMessenger_Bootstrap(t *testing.T) {
MaxSeeders: 0,
Type: "NilListSharder",
},
Gossip: config.GossipConfig{
UseDefaultConfig: true,
},
},
SyncTimer: &mock.SyncTimerStub{},
PeersRatingHandler: &mock.PeersRatingHandlerStub{},
Expand Down