github.phpd.cn/cilium/cilium@v1.6.12/pkg/aws/eni/limits.go (about)

     1  // Copyright 2019 Authors of Cilium
     2  // Copyright 2017 Lyft, Inc.
     3  //
     4  // Licensed under the Apache License, Version 2.0 (the "License");
     5  // you may not use this file except in compliance with the License.
     6  // You may obtain a copy of the License at
     7  //
     8  //     http://www.apache.org/licenses/LICENSE-2.0
     9  //
    10  // Unless required by applicable law or agreed to in writing, software
    11  // distributed under the License is distributed on an "AS IS" BASIS,
    12  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  // See the License for the specific language governing permissions and
    14  // limitations under the License.
    15  
    16  package eni
    17  
    18  // Limits specifies the ENI relevant instance limits
    19  type Limits struct {
    20  	// Adapters specifies the maximum number of ENIs that can be attached
    21  	// to the instance
    22  	Adapters int
    23  
    24  	// IPv4 is the maximum number of IPv4 addresses per ENI
    25  	IPv4 int
    26  
    27  	// IPv6 is the maximum number of IPv6 addresses per ENI
    28  	IPv6 int
    29  }
    30  
    31  // limit contains limits for adapter count and addresses
    32  //
    33  // Source: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html?shortFooter=true#AvailableIpPerENI
    34  var limits = map[string]Limits{
    35  	"a1.medium":     {2, 4, 4},
    36  	"a1.large":      {3, 10, 10},
    37  	"a1.xlarge":     {4, 15, 15},
    38  	"a1.2xlarge":    {4, 15, 15},
    39  	"a1.4xlarge":    {8, 30, 30},
    40  	"c1.medium":     {2, 6, 0},
    41  	"c1.xlarge":     {4, 15, 0},
    42  	"c3.large":      {3, 10, 10},
    43  	"c3.xlarge":     {4, 15, 15},
    44  	"c3.2xlarge":    {4, 15, 15},
    45  	"c3.4xlarge":    {8, 30, 30},
    46  	"c3.8xlarge":    {8, 30, 30},
    47  	"c4.large":      {3, 10, 10},
    48  	"c4.xlarge":     {4, 15, 15},
    49  	"c4.2xlarge":    {4, 15, 15},
    50  	"c4.4xlarge":    {8, 30, 30},
    51  	"c4.8xlarge":    {8, 30, 30},
    52  	"c5.large":      {3, 10, 10},
    53  	"c5.xlarge":     {4, 15, 15},
    54  	"c5.2xlarge":    {4, 15, 15},
    55  	"c5.4xlarge":    {8, 30, 30},
    56  	"c5.9xlarge":    {8, 30, 30},
    57  	"c5.12xlarge":   {8, 30, 30},
    58  	"c5.18xlarge":   {15, 50, 50},
    59  	"c5.24xlarge":   {15, 50, 50},
    60  	"c5.metal":      {15, 50, 50},
    61  	"c5d.large":     {3, 10, 10},
    62  	"c5d.xlarge":    {4, 15, 15},
    63  	"c5d.2xlarge":   {4, 15, 15},
    64  	"c5d.4xlarge":   {8, 30, 30},
    65  	"c5d.9xlarge":   {8, 30, 30},
    66  	"c5d.18xlarge":  {15, 50, 50},
    67  	"c5n.large":     {3, 10, 10},
    68  	"c5n.xlarge":    {4, 15, 15},
    69  	"c5n.2xlarge":   {4, 15, 15},
    70  	"c5n.4xlarge":   {8, 30, 30},
    71  	"c5n.9xlarge":   {8, 30, 30},
    72  	"c5n.18xlarge":  {15, 50, 50},
    73  	"c5n.metal":     {15, 50, 50},
    74  	"cc2.8xlarge":   {8, 30, 0},
    75  	"cr1.8xlarge":   {8, 30, 0},
    76  	"d2.xlarge":     {4, 15, 15},
    77  	"d2.2xlarge":    {4, 15, 15},
    78  	"d2.4xlarge":    {8, 30, 30},
    79  	"d2.8xlarge":    {8, 30, 30},
    80  	"f1.2xlarge":    {4, 15, 15},
    81  	"f1.4xlarge":    {8, 30, 30},
    82  	"f1.16xlarge":   {8, 50, 50},
    83  	"g2.2xlarge":    {4, 15, 0},
    84  	"g2.8xlarge":    {8, 30, 0},
    85  	"g3s.xlarge":    {4, 15, 15},
    86  	"g3.4xlarge":    {8, 30, 30},
    87  	"g3.8xlarge":    {8, 30, 30},
    88  	"g3.16xlarge":   {15, 50, 50},
    89  	"h1.2xlarge":    {4, 15, 15},
    90  	"h1.4xlarge":    {8, 30, 30},
    91  	"h1.8xlarge":    {8, 30, 30},
    92  	"h1.16xlarge":   {15, 50, 50},
    93  	"hs1.8xlarge":   {8, 30, 0},
    94  	"i2.xlarge":     {4, 15, 15},
    95  	"i2.2xlarge":    {4, 15, 15},
    96  	"i2.4xlarge":    {8, 30, 30},
    97  	"i2.8xlarge":    {8, 30, 30},
    98  	"i3.large":      {3, 10, 10},
    99  	"i3.xlarge":     {4, 15, 15},
   100  	"i3.2xlarge":    {4, 15, 15},
   101  	"i3.4xlarge":    {8, 30, 30},
   102  	"i3.8xlarge":    {8, 30, 30},
   103  	"i3.16xlarge":   {15, 50, 50},
   104  	"i3.metal":      {15, 50, 50},
   105  	"i3en.large":    {3, 10, 10},
   106  	"i3en.xlarge":   {4, 15, 15},
   107  	"i3en.2xlarge":  {4, 15, 15},
   108  	"i3en.3xlarge":  {4, 15, 15},
   109  	"i3en.6xlarge":  {8, 30, 30},
   110  	"i3en.12xlarge": {8, 30, 30},
   111  	"i3en.24xlarge": {15, 50, 50},
   112  	"i3en.metal":    {15, 50, 50},
   113  	"m1.small":      {2, 4, 0},
   114  	"m1.medium":     {2, 6, 0},
   115  	"m1.large":      {3, 10, 0},
   116  	"m1.xlarge":     {4, 15, 0},
   117  	"m2.xlarge":     {4, 15, 0},
   118  	"m2.2xlarge":    {4, 30, 0},
   119  	"m2.4xlarge":    {8, 30, 0},
   120  	"m3.medium":     {2, 6, 0},
   121  	"m3.large":      {3, 10, 0},
   122  	"m3.xlarge":     {4, 15, 0},
   123  	"m3.2xlarge":    {4, 30, 0},
   124  	"m4.large":      {2, 10, 10},
   125  	"m4.xlarge":     {4, 15, 15},
   126  	"m4.2xlarge":    {4, 15, 15},
   127  	"m4.4xlarge":    {8, 30, 30},
   128  	"m4.10xlarge":   {8, 30, 30},
   129  	"m4.16xlarge":   {8, 30, 30},
   130  	"m5.large":      {3, 10, 10},
   131  	"m5.xlarge":     {4, 15, 15},
   132  	"m5.2xlarge":    {4, 15, 15},
   133  	"m5.4xlarge":    {8, 30, 30},
   134  	"m5.8xlarge":    {8, 30, 30},
   135  	"m5.12xlarge":   {8, 30, 30},
   136  	"m5.16xlarge":   {15, 50, 50},
   137  	"m5.24xlarge":   {15, 50, 50},
   138  	"m5.metal":      {15, 50, 50},
   139  	"m5a.large":     {3, 10, 10},
   140  	"m5a.xlarge":    {4, 15, 15},
   141  	"m5a.2xlarge":   {4, 15, 15},
   142  	"m5a.4xlarge":   {8, 30, 30},
   143  	"m5a.8xlarge":   {8, 30, 30},
   144  	"m5a.12xlarge":  {8, 30, 30},
   145  	"m5a.16xlarge":  {15, 50, 50},
   146  	"m5a.24xlarge":  {15, 50, 50},
   147  	"m5ad.large":    {3, 10, 10},
   148  	"m5ad.xlarge":   {4, 15, 15},
   149  	"m5ad.2xlarge":  {4, 15, 15},
   150  	"m5ad.4xlarge":  {8, 30, 30},
   151  	"m5ad.12xlarge": {8, 30, 30},
   152  	"m5ad.24xlarge": {15, 50, 50},
   153  	"m5d.large":     {3, 10, 10},
   154  	"m5d.xlarge":    {4, 15, 15},
   155  	"m5d.2xlarge":   {4, 15, 15},
   156  	"m5d.4xlarge":   {8, 30, 30},
   157  	"m5d.8xlarge":   {8, 30, 30},
   158  	"m5d.12xlarge":  {8, 30, 30},
   159  	"m5d.16xlarge":  {15, 50, 50},
   160  	"m5d.24xlarge":  {15, 50, 50},
   161  	"m5d.metal":     {15, 50, 50},
   162  	"p2.xlarge":     {4, 15, 15},
   163  	"p2.8xlarge":    {8, 30, 30},
   164  	"p2.16xlarge":   {8, 30, 30},
   165  	"p3.2xlarge":    {4, 15, 15},
   166  	"p3.8xlarge":    {8, 30, 30},
   167  	"p3.16xlarge":   {8, 30, 30},
   168  	"p3dn.24xlarge": {15, 50, 50},
   169  	"r3.large":      {3, 10, 10},
   170  	"r3.xlarge":     {4, 15, 15},
   171  	"r3.2xlarge":    {4, 15, 15},
   172  	"r3.4xlarge":    {8, 30, 30},
   173  	"r3.8xlarge":    {8, 30, 30},
   174  	"r4.large":      {3, 10, 10},
   175  	"r4.xlarge":     {4, 15, 15},
   176  	"r4.2xlarge":    {4, 15, 15},
   177  	"r4.4xlarge":    {8, 30, 30},
   178  	"r4.8xlarge":    {8, 30, 30},
   179  	"r4.16xlarge":   {15, 50, 50},
   180  	"r5.large":      {3, 10, 10},
   181  	"r5.xlarge":     {4, 15, 15},
   182  	"r5.2xlarge":    {4, 15, 15},
   183  	"r5.4xlarge":    {8, 30, 30},
   184  	"r5.8xlarge":    {8, 30, 30},
   185  	"r5.12xlarge":   {8, 30, 30},
   186  	"r5.16xlarge":   {15, 50, 50},
   187  	"r5.24xlarge":   {15, 50, 50},
   188  	"r5.metal":      {15, 50, 50},
   189  	"r5a.large":     {3, 10, 10},
   190  	"r5a.xlarge":    {4, 15, 15},
   191  	"r5a.2xlarge":   {4, 15, 15},
   192  	"r5a.4xlarge":   {8, 30, 30},
   193  	"r5a.8xlarge":   {8, 30, 30},
   194  	"r5a.12xlarge":  {8, 30, 30},
   195  	"r5a.16xlarge":  {15, 50, 50},
   196  	"r5a.24xlarge":  {15, 50, 50},
   197  	"r5ad.large":    {3, 10, 10},
   198  	"r5ad.xlarge":   {4, 15, 15},
   199  	"r5ad.2xlarge":  {4, 15, 15},
   200  	"r5ad.4xlarge":  {8, 30, 30},
   201  	"r5ad.12xlarge": {8, 30, 30},
   202  	"r5ad.24xlarge": {15, 50, 50},
   203  	"r5d.large":     {3, 10, 10},
   204  	"r5d.xlarge":    {4, 15, 15},
   205  	"r5d.2xlarge":   {4, 15, 15},
   206  	"r5d.4xlarge":   {8, 30, 30},
   207  	"r5d.8xlarge":   {8, 30, 30},
   208  	"r5d.12xlarge":  {8, 30, 30},
   209  	"r5d.16xlarge":  {15, 50, 50},
   210  	"r5d.24xlarge":  {15, 50, 50},
   211  	"r5d.metal":     {15, 50, 50},
   212  	"t1.micro":      {2, 2, 0},
   213  	"t2.nano":       {2, 2, 2},
   214  	"t2.micro":      {2, 2, 2},
   215  	"t2.small":      {3, 4, 4},
   216  	"t2.medium":     {3, 6, 6},
   217  	"t2.large":      {3, 12, 12},
   218  	"t2.xlarge":     {3, 15, 15},
   219  	"t2.2xlarge":    {3, 15, 15},
   220  	"t3.nano":       {2, 2, 2},
   221  	"t3.micro":      {2, 2, 2},
   222  	"t3.small":      {3, 4, 4},
   223  	"t3.medium":     {3, 6, 6},
   224  	"t3.large":      {3, 12, 12},
   225  	"t3.xlarge":     {4, 15, 15},
   226  	"t3.2xlarge":    {4, 15, 15},
   227  	"t3a.nano":      {2, 2, 2},
   228  	"t3a.micro":     {2, 2, 2},
   229  	"t3a.small":     {2, 4, 4},
   230  	"t3a.medium":    {3, 6, 6},
   231  	"t3a.large":     {3, 12, 12},
   232  	"t3a.xlarge":    {4, 15, 15},
   233  	"t3a.2xlarge":   {4, 15, 15},
   234  	"u-6tb1.metal":  {5, 30, 30},
   235  	"u-9tb1.metal":  {5, 30, 30},
   236  	"u-12tb1.metal": {5, 30, 30},
   237  	"x1.16xlarge":   {8, 30, 30},
   238  	"x1.32xlarge":   {8, 30, 30},
   239  	"x1e.xlarge":    {3, 10, 10},
   240  	"x1e.2xlarge":   {4, 15, 15},
   241  	"x1e.4xlarge":   {4, 15, 15},
   242  	"x1e.8xlarge":   {4, 15, 15},
   243  	"x1e.16xlarge":  {8, 30, 30},
   244  	"x1e.32xlarge":  {8, 30, 30},
   245  	"z1d.large":     {3, 10, 10},
   246  	"z1d.xlarge":    {4, 15, 15},
   247  	"z1d.2xlarge":   {4, 15, 15},
   248  	"z1d.3xlarge":   {8, 30, 30},
   249  	"z1d.6xlarge":   {8, 30, 30},
   250  	"z1d.12xlarge":  {15, 50, 50},
   251  	"z1d.metal":     {15, 50, 50},
   252  }
   253  
   254  // GetLimits returns the instance limits of a particular instance type
   255  func GetLimits(instanceType string) (limit Limits, ok bool) {
   256  	limit, ok = limits[instanceType]
   257  	return
   258  }