mones2/22.ネットワークサーバ/22.FreeBSDonQemuで再現するか


Top / mones2 / 22.ネットワークサーバ / 22.FreeBSDonQemuで再現するか

FreeBSDをQEMUで動かす

パケット遅延の問題の切り分けのために、FreeBSDでは同じ現象が起きるのかどうか検証する。

セットアップ

  1. OSZooから freebsd_6_0_x86.tar をダウンロード
  2. 起動 ~/src/qemu-0.9.0/i386-softmmu/qemu freebsd_6_0.img -k ja -net nic -net user -redir tcp:5555:10.0.2.15:5555 -redir udp:5555:10.0.2.15:5555 -redir tcp:5556:10.0.2.15:22
  3. む。起動の途中で negative runtime of -226237 usec for pid 200 (netstat) とかでて止まる
  4. boot時に ACPI Disabled なやつを選んだら起動するようになった
  5. root でログイン(パスワードはREADMEに書いてある)
  6. sshdが動いているのであとは Hostから操作すると思ったら入れない
  7. /etc/ssh/sshd_config をいじる パスワードログインとrootログインをyesにする
  8. /etc/rc.d/sshd
  9. rubyを入れる pkg_add -r rubyすると。 FTP Unable to get ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.0-release/Latest/ruby.tbz とか言われる。
  10. ftp.jp.freebsd.org に ftp して ruby.tbz を get する
  11. pkg_add ruby.tbz でインストール
  12. ruby TCPServer を動かしたがコネクションが Reset するとか言われる。
  13. しょうがないので perl を入れる(rubyと同じ手順)
  14. 後から気づいたが setenv PACKAGESITE ftp://ftp.t.ring.gr.jp/pub/FreeBSD/ports/i386/packages-6.0-release/Latest/ とすれば良かったようだ

echoサーバを作る

FreeBSD側でおうむ返しをする echo サーバを作らないといけない。
ローカルでテストしてから FreeBSD に持っていく。(最初は Ruby で書いたのだけどうまく動かなかった)

 #!/bin/perl
  
 use strict;
 use IO::Socket;
  
 # create a socket
 my $host = 'localhost';
 my $port = 5555;
 my $sock = IO::Socket::INET->new(
     LocalAddr => "$host:$port",
     Proto     => 'tcp',
     Listen    => 1,
 );
 die "listen error" if (! $sock);
  
 my $loop = 1;
 while ($loop) {
  
     # listen
     my $socket = $sock->accept;
     print "connect\n";
     select($socket); $|=1; select(STDOUT);
  
     while (<$socket>){
         # print the message on the console and echo it back
         print;
         print $socket $_;
     }
  
     # close the socket
     $socket->close();
     print "disconnect\n";
 }

外から

 require "socket"
 print("start\n");
 s = TCPSocket.open("localhost", 5555)
  
 (1..10).each {|i|
   s.write("Hello I'm packet #{i}")
   print("sent packet #{i}")
   print(s.gets)
 }
 s.close
  

とやったが、`gets': Connection reset by peer (Errno::ECONNRESET) といわれてしまう。

コメント

コメントはありません。 コメント/mones2/22.ネットワークサーバ/22.FreeBSDonQemuで再現するか?

お名前:

MENU

now: 2

リンク


最新の20件
2017-09-29 2017-04-25 2017-01-10 2016-12-11 2016-12-09 2016-10-04 2016-08-14 2016-06-05 2016-05-29 2016-04-15 2015-12-28 2013-02-25 2013-02-21 2013-02-20 2013-02-12 2013-02-11 2013-02-10
最新の20件
2010-02-01 2010-01-31 2010-01-30 2010-01-29 2010-01-16

Counter: 2321, today: 1, yesterday: 0

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Last-modified: 2008-03-28 (金) 15:48:01 (3681d);  Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.040 sec.