Skip to Content.
Sympa Menu

perfsonar-user - Re: [perfsonar-user] Limit TCP Throughput Bandwidth to 500Mb

Subject: perfSONAR User Q&A and Other Discussion

List archive

Re: [perfsonar-user] Limit TCP Throughput Bandwidth to 500Mb


Chronological Thread 
  • From: Mark Feit <>
  • To: "Yamamoto, Miguel" <>, "" <>
  • Subject: Re: [perfsonar-user] Limit TCP Throughput Bandwidth to 500Mb
  • Date: Thu, 28 Mar 2024 21:46:24 +0000
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=internet2.edu; dmarc=pass action=none header.from=internet2.edu; dkim=pass header.d=internet2.edu; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=RlqvV73R+p5EnHEZ6L2DCYwAo5q/loDMD30lEb7HSzA=; b=UbA6s3aC9EAOyc94IZ+a30fNCO/2Ki5hYpjgXekQ2kclvc2k8nCGPShCCtdFw/QhC6bAfPg4EEvRqh4NAr+mw2N7PB6Z1fOG/jaEldZmeEtAZ97/5zwWe1Y2wGf0UETvxxhK8nfNn4/6Jz9YQJwjj8MOBHzSxD3/46Anz+jNu0a95ZYDnPAUuavbjCE9Kt+uaB51pW+j36ppAP0N9VSUAL6bb92P97svZx5o7TIExsOS2bSoq10Np1Ni0vxueL5MD0jjt0lzqeErMNEEdq8KyGJxeLVZX57B5Jtz/NlOOHbP5Z1cIy6VKVfZLBbaiwTJJmAh3HdVEX6pszcTybx/uw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NpWO2OsvqJvHThyoJuFMz+mgj5AhYUgrpkh8txGLHDnZER+5CCPFgFGpgtO2Z682tn0Sr2C7/ykV66uJU762VXBQ+gKXDYxSEb+AtmCoX7/EWPmtambEqmoKTNHE9NVt+zkxASv49edn1I5aAtqxglNVd4kImuOlPHRt/+PpFVT7KxushdH1kZPZ7eu/VdfLo/UuBEa5mZ4e6zXbu2XKeGaoml7co99b8oMmlauFUFc3n5xypdZLSERiY8Hz027lg5RpNOAaELbDMMNMy9an41PzXYv3EgbsPwlX95K3VOEW2EYW7Ebeouf06xV/0J3/GW8PiA0y6qQ9xvKXd990Kw==

Yamamoto, Miguel writes:

Just want to reach out again about this and if it’s possible to do?

 

Hey, I have to apologize.  I had a draft reply started and it got buried.  Let me rectify that.

 

Now I am trying to limit both the source and destination TCP bandwidth on whichever the test gets performed.

 

None of the tools we’ve integrated have provisions for destination-end caps, so bandwidth is limited on the source end.  You can configure destination-end limits to reject requests for tasks that ask for too much or no limit.

 

I currently got the TCP outgoing bandwidth to be limited to whichever IP on a set group. All outgoing bandwidth from Group1 is 1g, all outgoing bandwidth from Group2 is 500mb regardless of destination.

What I am trying to do is have Group1 source bandwidth change if the destination is in Group2 and vice versa. Ex:
- IP1 to IP2 will be 1G but IP1 to IP3 will change to 500mb

- IP2 to IP1 will be 1G but IP3 to IP1 will change to 500mb

Below are the example of group and the current rewrite. Please advice if it’s possible to achieve or if I am missing anything in the config file. Thank you!

Identifiers Section:   …

 

One thing to note about identifiers is that they exist to vet who’s making a request, not anything specified in the test parameters.  I could, for example, log onto Internet2’s perfSONAR node in Denver and have it ask the host at IP1 to do a throughput test to IP2.  The identifiers on IP1 would be given the Denver host’s address and those on IP2 would be given IP1’s address.  You can still use the rewriter or the jq limit to examine the test parameters, but those are taken at face value.  You’d have to cover the IPs and all possible FQDNs.

 

If I understand the rules correctly:

 

  • IP1’s limit config should use the rewriter to examine the destination of throughput tests and rewrite the bandwidth to 1 Gb/s if it’s IP2 or 500 Mb/s if it’s IP3.

 

  • IP2’s limit config should use the rewriter to examine the destination of throughput tests and rewrite the bandwidth to 1 Gb/s if it’s IP1

 

  • IP3’s limit config should use the rewriter to examine the destination of throughput tests and rewrite the bandwidth to 500 Mb/s if it’s IP1

 

Any other set of test parameters is left alone.  Identifiers and classifiers don’t have to be involved because those are for requesters.

 


Rewrite Section:

 

There can only be one rewrite section; if you have multiple things to do, they all need to be strung together as a single script.  I’ve included an abbreviated version of how yours would be structured below.  The highlighted calls to change() are recommended practice so users looking at the diagnostics will know their tasks were rewritten.


    "rewrite": {

        "script": [

            "1000000000 as $tcp1g",

            "| if …conditions…",

            "  then",

            "    .test.spec.bandwidth = $tcp1g | change(\"Capped throughput at 1 Gb/s\")",

            "  else .",

            "  end"

            "| 500000000 as $tcp500mb",

            "| if …conditions…",

            "  then",

            "    .test.spec.bandwidth = $tcp500mb | change(\"Capped throughput at 500 Mb/s\")",

            "  else .",

            "  end"

        ]

    }

 

Hope that helps.

 

--Mark

 

 




Archive powered by MHonArc 2.6.24.

Top of Page