Controle de fluxo de software SSH e XON / XOFF

1

Estou usando um terminal serial vintage conectado a uma caixa linux por meio de um cabo de modem nulo serial USB para RS232. O terminal usa controle de fluxo XON / XOFF para evitar o transbordamento do buffer. O terminal funciona muito bem para atividades executadas na caixa do Linux. No entanto, se eu SSH para o meu servidor, VMs ou até mesmo localhost, eu começo a ter estouro de buffer. Parece que o SSH está interferindo no controle de fluxo XON / XOFF. Alguma idéia de onde eu esteja errado aqui?

Detalhes adicionais:
1) Terminal conectado ao computador via StarTech FTDI USB para RS232 Adaptador de Modem Nulo Serial Cable
2) Interface serial através do getty em ttyUSB0, 19200 baud, vt100
3) O VT100 também está configurado para 19200 para transmissão e recepção

    
por SpaceNut 04.07.2016 / 22:26

1 resposta

1

ssh em seu modo de sessão interativa normal encaminha todos os caracteres (exceto sua fuga, geralmente ~ ) para o host remoto, incluindo ^S ^Q . (Qualquer coisa na extremidade de uma conexão SSH / TCP / IP é 'remota' para esse propósito, mesmo localhost / loopback ou LAN virtual.) Se você tiver um 'long' (atraso de propagação) e / ou 'fat' ( largura de banda) pipe - e loopback é definitivamente gordo - a quantidade de dados que pode ser em vôo para você antes que o host remoto receba e atue no ^S é provavelmente mais do que um VT100 pode armazenar em buffer, já que foi projetado de volta os dias em que a conexão era um fio real menor que 50 'para RS-232, ou um modem de modulação direta de um bit por vez como 103 ou 212A.

Se você usar ssh com argumentos para executar um comando no host remoto (não em uma sessão interativa), o manuseio do terminal (e ^S ^Q ) permanecerá no SO local, o que deve responda rápido o suficiente. Obviamente, isso restringe a interação que você pode fazer com o (s) host (s) remoto (s). Por padrão, ele também sobrecarga SSH (keyexchange e autenticação) para cada comando, que pode ser mais caro e mais lento, mas com versões não antigas, você pode configurar um processo mestre com -M que compartilha o transporte (e custo de configuração de transporte) em vários processos de trabalho.

A única outra solução que vejo é não executar coisas remotas que produzem resultados demais muito rápido; por exemplo, canalize as coisas para more ou less ou similar, talvez até com LINES configuradas para menos de 24. Ou grave uma saída grande para um arquivo temporário e procure-o com vi ou similar.

    
por 05.07.2016 / 02:43