diff --git a/management/server/types/account.go b/management/server/types/account.go index 3d341fd62..de7fc20b5 100644 --- a/management/server/types/account.go +++ b/management/server/types/account.go @@ -370,6 +370,7 @@ func (a *Account) GetPeerNetworkMapCompacted( resourcePolicies map[string][]*Policy, routers map[string]map[string]*routerTypes.NetworkRouter, metrics *telemetry.AccountManagerMetrics, + groupIDToUserIDs map[string][]string, ) *NetworkMap { start := time.Now() peer := a.Peers[peerID] @@ -385,7 +386,7 @@ func (a *Account) GetPeerNetworkMapCompacted( } } - aclPeers, firewallRules := a.GetPeerConnectionResources(ctx, peer, validatedPeersMap) + aclPeers, firewallRules, authorizedUsers, enableSSH := a.GetPeerConnectionResources(ctx, peer, validatedPeersMap, groupIDToUserIDs) // exclude expired peers var peersToConnect []*nbpeer.Peer var expiredPeers []*nbpeer.Peer @@ -457,6 +458,8 @@ func (a *Account) GetPeerNetworkMapCompacted( OfflinePeers: expiredPeers, FirewallRules: firewallRules, RoutesFirewallRules: slices.Concat(networkResourcesFirewallRules, routesFirewallRules), + AuthorizedUsers: authorizedUsers, + EnableSSH: enableSSH, } if metrics != nil { diff --git a/management/server/types/networkmap_comparison_test.go b/management/server/types/networkmap_comparison_test.go index 383fd1c90..d52e0c58d 100644 --- a/management/server/types/networkmap_comparison_test.go +++ b/management/server/types/networkmap_comparison_test.go @@ -41,6 +41,7 @@ func TestNetworkMapComponents_CompareWithLegacy(t *testing.T) { peersCustomZone := nbdns.CustomZone{} resourcePolicies := account.GetResourcePoliciesMap() routers := account.GetResourceRoutersMap() + groupIDToUserIDs := account.GetActiveGroupUsers() legacyNetworkMap := account.GetPeerNetworkMap( ctx, @@ -50,6 +51,7 @@ func TestNetworkMapComponents_CompareWithLegacy(t *testing.T) { resourcePolicies, routers, nil, + groupIDToUserIDs, ) components := account.GetPeerNetworkMapComponents( @@ -91,6 +93,7 @@ func TestNetworkMapComponents_GoldenFileComparison(t *testing.T) { peersCustomZone := nbdns.CustomZone{} resourcePolicies := account.GetResourcePoliciesMap() routers := account.GetResourceRoutersMap() + groupIDToUserIDs := account.GetActiveGroupUsers() legacyNetworkMap := account.GetPeerNetworkMap( ctx, @@ -100,6 +103,7 @@ func TestNetworkMapComponents_GoldenFileComparison(t *testing.T) { resourcePolicies, routers, nil, + groupIDToUserIDs, ) components := account.GetPeerNetworkMapComponents( @@ -441,6 +445,7 @@ func BenchmarkLegacyNetworkMap(b *testing.B) { peersCustomZone := nbdns.CustomZone{} resourcePolicies := account.GetResourcePoliciesMap() routers := account.GetResourceRoutersMap() + groupIDToUserIDs := account.GetActiveGroupUsers() b.ResetTimer() for i := 0; i < b.N; i++ { @@ -452,6 +457,7 @@ func BenchmarkLegacyNetworkMap(b *testing.B) { resourcePolicies, routers, nil, + groupIDToUserIDs, ) } } @@ -565,8 +571,9 @@ func TestGetPeerNetworkMap_ProdAccount_CompareImplementations(t *testing.T) { resourcePolicies := testAccount.GetResourcePoliciesMap() routers := testAccount.GetResourceRoutersMap() + groupIDToUserIDs := testAccount.GetActiveGroupUsers() - legacyNetworkMap := testAccount.GetPeerNetworkMap(ctx, testingPeerID, dns.CustomZone{}, validatedPeersMap, resourcePolicies, routers, nil) + legacyNetworkMap := testAccount.GetPeerNetworkMap(ctx, testingPeerID, dns.CustomZone{}, validatedPeersMap, resourcePolicies, routers, nil, groupIDToUserIDs) require.NotNil(t, legacyNetworkMap, "GetPeerNetworkMap returned nil") components := testAccount.GetPeerNetworkMapComponents(ctx, testingPeerID, dns.CustomZone{}, validatedPeersMap, resourcePolicies, routers) @@ -721,13 +728,13 @@ func BenchmarkGetPeerNetworkMapCompactCached(b *testing.B) { b.Run("Legacy", func(b *testing.B) { b.ResetTimer() for i := 0; i < b.N; i++ { - _ = account.GetPeerNetworkMap(ctx, testingPeerID, customZone, validatedPeersMap, account.GetResourcePoliciesMap(), account.GetResourceRoutersMap(), nil) + _ = account.GetPeerNetworkMap(ctx, testingPeerID, customZone, validatedPeersMap, account.GetResourcePoliciesMap(), account.GetResourceRoutersMap(), nil, account.GetActiveGroupUsers()) } }) b.Run("LegacyCompacted", func(b *testing.B) { b.ResetTimer() for i := 0; i < b.N; i++ { - _ = account.GetPeerNetworkMapCompacted(ctx, testingPeerID, customZone, validatedPeersMap, account.GetResourcePoliciesMap(), account.GetResourceRoutersMap(), nil) + _ = account.GetPeerNetworkMapCompacted(ctx, testingPeerID, customZone, validatedPeersMap, account.GetResourcePoliciesMap(), account.GetResourceRoutersMap(), nil, account.GetActiveGroupUsers()) } }) diff --git a/management/server/types/networkmap_golden_test.go b/management/server/types/networkmap_golden_test.go index 290cdf273..a8788f773 100644 --- a/management/server/types/networkmap_golden_test.go +++ b/management/server/types/networkmap_golden_test.go @@ -1157,132 +1157,3 @@ func TestGetPeerNetworkMapCompactCached(t *testing.T) { require.JSONEq(t, string(regularJSON), string(uncompactedJSON), "regular and uncompacted network maps should be equal") } - -func BenchmarkGetPeerNetworkMapCompactCached(b *testing.B) { - account, err := createAccountFromFile() - require.NoError(b, err) - - ctx := context.Background() - validatedPeersMap := make(map[string]struct{}, len(account.Peers)) - for _, peer := range account.Peers { - validatedPeersMap[peer.ID] = struct{}{} - } - dnsDomain := account.Settings.DNSDomain - customZone := account.GetPeersCustomZone(ctx, dnsDomain) - - builder := types.NewNetworkMapBuilder(account, validatedPeersMap) - - testingPeerID := "d3knp53l0ubs738a3n6g" - - regularNm := builder.GetPeerNetworkMap(ctx, testingPeerID, customZone, validatedPeersMap, nil) - compactNm := builder.GetPeerNetworkMapCompact(ctx, testingPeerID, customZone, validatedPeersMap, nil) - compactCachedNm := builder.GetPeerNetworkMapCompactCached(ctx, testingPeerID, customZone, validatedPeersMap, nil) - - regularJSON, err := json.Marshal(regularNm) - require.NoError(b, err) - - compactJSON, err := json.Marshal(compactNm) - require.NoError(b, err) - - compactCachedJSON, err := json.Marshal(compactCachedNm) - require.NoError(b, err) - - resourcePolicies := account.GetResourcePoliciesMap() - routers := account.GetResourceRoutersMap() - components := account.GetPeerNetworkMapComponents(ctx, testingPeerID, customZone, validatedPeersMap, resourcePolicies, routers) - componentsJSON, err := json.Marshal(components) - require.NoError(b, err) - - regularSize := len(regularJSON) - compactSize := len(compactJSON) - compactCachedSize := len(compactCachedJSON) - componentsSize := len(componentsJSON) - - compactSavingsPercent := 100 - int(float64(compactCachedSize)/float64(regularSize)*100) - componentsSavingsPercent := 100 - int(float64(componentsSize)/float64(regularSize)*100) - - b.ReportMetric(float64(regularSize), "regular_bytes") - b.ReportMetric(float64(compactCachedSize), "compact_cached_bytes") - b.ReportMetric(float64(componentsSize), "components_bytes") - b.ReportMetric(float64(compactSavingsPercent), "compact_savings_%") - b.ReportMetric(float64(componentsSavingsPercent), "components_savings_%") - - b.Logf("========== Network Map Size Comparison ==========") - b.Logf("Regular network map: %d bytes", regularSize) - b.Logf("Compact network map: %d bytes (-%d%%)", compactSize, 100-int(float64(compactSize)/float64(regularSize)*100)) - b.Logf("Compact cached network map: %d bytes (-%d%%)", compactCachedSize, compactSavingsPercent) - b.Logf("Components: %d bytes (-%d%%)", componentsSize, componentsSavingsPercent) - b.Logf("") - b.Logf("Bandwidth savings (Compact cached): %d bytes saved (%d%%)", regularSize-compactCachedSize, compactSavingsPercent) - b.Logf("Bandwidth savings (Components): %d bytes saved (%d%%)", regularSize-componentsSize, componentsSavingsPercent) - b.Logf("=================================================") - - b.Run("Regular", func(b *testing.B) { - b.ResetTimer() - for i := 0; i < b.N; i++ { - _ = builder.GetPeerNetworkMap(ctx, testingPeerID, customZone, validatedPeersMap, nil) - } - }) - - b.Run("CompactOnDemand", func(b *testing.B) { - b.ResetTimer() - for i := 0; i < b.N; i++ { - _ = builder.GetPeerNetworkMapCompact(ctx, testingPeerID, customZone, validatedPeersMap, nil) - } - }) - - b.Run("CompactCached", func(b *testing.B) { - b.ResetTimer() - for i := 0; i < b.N; i++ { - _ = builder.GetPeerNetworkMapCompactCached(ctx, testingPeerID, customZone, validatedPeersMap, nil) - } - }) - b.Run("Legacy", func(b *testing.B) { - b.ResetTimer() - for i := 0; i < b.N; i++ { - _ = account.GetPeerNetworkMap(ctx, testingPeerID, customZone, validatedPeersMap, account.GetResourcePoliciesMap(), account.GetResourceRoutersMap(), nil, account.GetActiveGroupUsers()) - } - }) - b.Run("LegacyCompacted", func(b *testing.B) { - b.ResetTimer() - for i := 0; i < b.N; i++ { - _ = account.GetPeerNetworkMapCompacted(ctx, testingPeerID, customZone, validatedPeersMap, account.GetResourcePoliciesMap(), account.GetResourceRoutersMap(), nil) - } - }) - - b.Run("ComponentsNetworkMap", func(b *testing.B) { - b.ResetTimer() - for i := 0; i < b.N; i++ { - components := account.GetPeerNetworkMapComponents( - ctx, - testingPeerID, - customZone, - validatedPeersMap, - resourcePolicies, - routers, - ) - _ = types.CalculateNetworkMapFromComponents(ctx, components) - } - }) - - b.Run("ComponentsCreation", func(b *testing.B) { - b.ResetTimer() - for i := 0; i < b.N; i++ { - _ = account.GetPeerNetworkMapComponents( - ctx, - testingPeerID, - customZone, - validatedPeersMap, - resourcePolicies, - routers, - ) - } - }) - - b.Run("CalculationFromComponents", func(b *testing.B) { - b.ResetTimer() - for i := 0; i < b.N; i++ { - _ = types.CalculateNetworkMapFromComponents(ctx, components) - } - }) -}