AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1158144
Accepted
olh
olh
Asked: 2024-04-18 17:39:54 +0800 CST2024-04-18 17:39:54 +0800 CST 2024-04-18 17:39:54 +0800 CST

Limite a largura de banda de uma interface física, transforme um link 10G em um link 1G

  • 772

Quero que uma determinada placa de rede se comporte como se fosse uma placa de rede mais lenta. Como se a interface 1G do meu laptop fosse na verdade uma interface de 100M ou 10M. Uma maneira de fazer isso é desenterrar meu antigo hub de 10 bits e usá-lo para essa finalidade.

Tenho certeza de que existe uma "solução de software" para isso. E, de fato, parece que o tccomando e o tbfrecurso são capazes de fazer isso.

Infelizmente, não compreendo totalmente o conceito para alcançar o que escrevi acima. Parece que há alguma matemática envolvida para levar em consideração a velocidade do link assumida /sys/class/net/*/speed, provavelmente o MTU de /sys/class/net/*/mtue a taxa de tick do sistema. Não tenho certeza se o último ainda é necessário atualmente com os kernels de distribuição "atuais" (eu tenho CONFIG_NO_HZ=ye CONFIG_HZ_300=ypor exemplo).

Como seria um script de shell para tornar esse recurso mais genérico? Comobash link-bandhwidth.sh <interface> 10m|100m|1G|2.5G|10G

Editar:

Conforme sugerido por @vidarlo, alterar a velocidade do link realmente funciona. Consegui alterar a lista de velocidades anunciadas para portas individuais no switch. Tive resultados mistos com o uso do ethtool, mesmo em placas mlx5 que ofereciam várias velocidades diferentes.

Eu também tenho uma placa mlx4 que suporta apenas uma velocidade. Aqui tentei o nccomando sugerido, mas incompleto. Daí a questão de como gerar programaticamente os valores ideais. Esta parte permanece sem resposta, até agora. Para mim, um comando como este funcionou em um link 10G de velocidade fixa:

tc qdisc add dev $interface root tbf rate 2000mbit latency 1ms burst 2000mbit

Isso se comporta como uma placa 2G hipotética, mas provavelmente os valores de latência e burst têm espaço para melhorias. Também tentei 1000mbite 100mbitcom os resultados esperados.

linux-networking
  • 2 2 respostas
  • 75 Views

2 respostas

  • Voted
  1. Best Answer
    vidarlo
    2024-04-18T17:47:20+08:002024-04-18T17:47:20+08:00

    Usar ethtool:

    ethtool -s $IFACE speed 1000

    Observe que geralmente muitos SFPs suportam apenas uma única velocidade. A execução ethtool $IFACEmostrará taxas e modos suportados.

    Além disso, você pode usar tcpara reduzir a largura de banda disponível ; isso não afeta a velocidade do link do cartão, mas pode moldar o fluxo de dados:

    tc qdisc add dev $IFACE root tbf rate 100mbit

    • 5
  2. Tomek
    2024-04-18T20:33:17+08:002024-04-18T20:33:17+08:00

    Como já foi dito, dê uma olhada em ethtool.

    Primeiro execute ethtool <ifname>e dê uma olhada em Supported link modese Link partner advertised link modes. A interseção dos dois conjuntos fornece as velocidades de link disponíveis em ambas as extremidades do cabo e às quais você pode limitar a velocidade do link físico.

    Depois disso, dê uma olhada na ethtoolpágina de manual, logo abaixo advertiseda opção. Traduza a(s) velocidade(s) em máscaras de bits apropriadas e emita (como root) ethtool -s <ifname> advertise <number>para limitar a(s) velocidade(s) indicada(s) pelos bits em <valor>.

    • 2

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve