Commit 41d03949e198d4ac32cd42419e2b978fb89db461

Authored by bellard
1 parent 7c9d8e07

update


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1623 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 2 changed files with 82 additions and 38 deletions
Changelog
@@ -9,6 +9,7 @@ version 0.7.3: @@ -9,6 +9,7 @@ version 0.7.3:
9 - Initial USB support 9 - Initial USB support
10 - Linux host serial port access 10 - Linux host serial port access
11 - Linux host low level parallel port access 11 - Linux host low level parallel port access
  12 + - New network emulation code supporting VLANs.
12 13
13 version 0.7.2: 14 version 0.7.2:
14 15
qemu-doc.texi
@@ -247,29 +247,56 @@ Network options: @@ -247,29 +247,56 @@ Network options:
247 247
248 @table @option 248 @table @option
249 249
250 -@item -n script  
251 -Set TUN/TAP network init script [default=/etc/qemu-ifup]. This script  
252 -is launched to configure the host network interface (usually tun0)  
253 -corresponding to the virtual NE2000 card. 250 +@item -net nic[,vlan=n][,macaddr=addr]
  251 +Create a new Network Interface Card and connect it to VLAN @var{n} (@var{n}
  252 += 0 is the default). The NIC is currently an NE2000 on the PC
  253 +target. Optionally, the MAC address can be changed. If no
  254 +@option{-net} option is specified, a single NIC is created.
  255 +
  256 +@item -net user[,vlan=n]
  257 +Use the user mode network stack which requires not administrator
  258 +priviledge to run. This is the default if no @option{-net} option is
  259 +specified.
  260 +
  261 +@item -net tap[,vlan=n][,fd=h][,ifname=name][,script=file]
  262 +Connect the host TAP network interface @var{name} to VLAN @var{n} and
  263 +use the network script @var{file} to configure it. The default
  264 +network script is @file{/etc/qemu-ifup}. If @var{name} is not
  265 +provided, the OS automatically provides one. @option{fd=h} can be
  266 +used to specify the handle of an already opened host TAP interface. Example:
254 267
255 -@item -nics n 268 +@example
  269 +qemu linux.img -net nic -net tap
  270 +@end example
  271 +
  272 +More complicated example (two NICs, each one connected to a TAP device)
  273 +@example
  274 +qemu linux.img -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 \
  275 + -net nic,vlan=1 -net tap,vlan=1,ifname=tap1
  276 +@end example
256 277
257 -Simulate @var{n} network cards (the default is 1).  
258 278
259 -@item -macaddr addr 279 +@item -net socket[,vlan=n][,fd=h][,listen=[host]:port][,connect=host:port]
260 280
261 -Set the mac address of the first interface (the format is  
262 -aa:bb:cc:dd:ee:ff in hexa). The mac address is incremented for each  
263 -new network interface. 281 +Connect the VLAN @var{n} to a remote VLAN in another QEMU virtual
  282 +machine using a TCP socket connection. If @option{listen} is
  283 +specified, QEMU waits for incoming connections on @var{port}
  284 +(@var{host} is optional). @option{connect} is used to connect to
  285 +another QEMU instance using the @option{listen} option. @option{fd=h}
  286 +specifies an already opened socket.
264 287
265 -@item -tun-fd fd  
266 -Assumes @var{fd} talks to a tap/tun host network interface and use  
267 -it. Read @url{http://bellard.org/qemu/tetrinet.html} to have an  
268 -example of its use. 288 +Example:
  289 +@example
  290 +# launch a first QEMU instance
  291 +qemu linux.img -net nic -net socket,listen=:1234
  292 +# connect the VLAN 0 of this instance to the VLAN 0 of the first instance
  293 +qemu linux.img -net nic -net socket,connect=127.0.0.1:1234
  294 +@end example
269 295
270 -@item -user-net  
271 -Use the user mode network stack. This is the default if no tun/tap  
272 -network init script is found. 296 +@item -net none
  297 +Indicate that no network devices should be configured. It is used to
  298 +override the default configuration which is activated if no
  299 +@option{-net} options are provided.
273 300
274 @item -tftp prefix 301 @item -tftp prefix
275 When using the user mode network stack, activate a built-in TFTP 302 When using the user mode network stack, activate a built-in TFTP
@@ -327,13 +354,9 @@ telnet localhost 5555 @@ -327,13 +354,9 @@ telnet localhost 5555
327 Then when you use on the host @code{telnet localhost 5555}, you 354 Then when you use on the host @code{telnet localhost 5555}, you
328 connect to the guest telnet server. 355 connect to the guest telnet server.
329 356
330 -@item -dummy-net  
331 -Use the dummy network stack: no packet will be received by the network  
332 -cards.  
333 -  
334 @end table 357 @end table
335 358
336 -Linux boot specific. When using this options, you can use a given 359 +Linux boot specific: When using these options, you can use a given
337 Linux kernel without installing it in the disk image. It can be useful 360 Linux kernel without installing it in the disk image. It can be useful
338 for easier testing of various kernels. 361 for easier testing of various kernels.
339 362
@@ -521,7 +544,7 @@ show various information about the system state @@ -521,7 +544,7 @@ show various information about the system state
521 544
522 @table @option 545 @table @option
523 @item info network 546 @item info network
524 -show the network state 547 +show the various VLANs and the associated devices
525 @item info block 548 @item info block
526 show the block devices 549 show the block devices
527 @item info registers 550 @item info registers
@@ -700,36 +723,49 @@ command (or @key{C-a s} in the serial console). @@ -700,36 +723,49 @@ command (or @key{C-a s} in the serial console).
700 723
701 @section Network emulation 724 @section Network emulation
702 725
703 -QEMU simulates up to 6 networks cards (NE2000 boards). Each card can  
704 -be connected to a specific host network interface. 726 +QEMU can simulate several networks cards (NE2000 boards on the PC
  727 +target) and can connect them to an arbitrary number of Virtual Local
  728 +Area Networks (VLANs). Host TAP devices can be connected to any QEMU
  729 +VLAN. VLAN can be connected between separate instances of QEMU to
  730 +simulate large networks. For simpler usage, a non priviledged user mode
  731 +network stack can replace the TAP device to have a basic network
  732 +connection.
  733 +
  734 +@subsection VLANs
705 735
706 -@subsection Using tun/tap network interface 736 +QEMU simulates several VLANs. A VLAN can be symbolised as a virtual
  737 +connection between several network devices. These devices can be for
  738 +example QEMU virtual Ethernet cards or virtual Host ethernet devices
  739 +(TAP devices).
707 740
708 -This is the standard way to emulate network. QEMU adds a virtual  
709 -network device on your host (called @code{tun0}), and you can then  
710 -configure it as if it was a real ethernet card. 741 +@subsection Using TAP network interfaces
  742 +
  743 +This is the standard way to connect QEMU to a real network. QEMU adds
  744 +a virtual network device on your host (called @code{tapN}), and you
  745 +can then configure it as if it was a real ethernet card.
711 746
712 As an example, you can download the @file{linux-test-xxx.tar.gz} 747 As an example, you can download the @file{linux-test-xxx.tar.gz}
713 archive and copy the script @file{qemu-ifup} in @file{/etc} and 748 archive and copy the script @file{qemu-ifup} in @file{/etc} and
714 configure properly @code{sudo} so that the command @code{ifconfig} 749 configure properly @code{sudo} so that the command @code{ifconfig}
715 contained in @file{qemu-ifup} can be executed as root. You must verify 750 contained in @file{qemu-ifup} can be executed as root. You must verify
716 -that your host kernel supports the TUN/TAP network interfaces: the 751 +that your host kernel supports the TAP network interfaces: the
717 device @file{/dev/net/tun} must be present. 752 device @file{/dev/net/tun} must be present.
718 753
719 See @ref{direct_linux_boot} to have an example of network use with a 754 See @ref{direct_linux_boot} to have an example of network use with a
720 -Linux distribution. 755 +Linux distribution and @ref{sec_invocation} to have examples of
  756 +command lines using the TAP network interfaces.
721 757
722 @subsection Using the user mode network stack 758 @subsection Using the user mode network stack
723 759
724 -By using the option @option{-user-net} or if you have no tun/tap init  
725 -script, QEMU uses a completely user mode network stack (you don't need  
726 -root priviledge to use the virtual network). The virtual network  
727 -configuration is the following: 760 +By using the option @option{-net user} (default configuration if no
  761 +@option{-net} option is specified), QEMU uses a completely user mode
  762 +network stack (you don't need root priviledge to use the virtual
  763 +network). The virtual network configuration is the following:
728 764
729 @example 765 @example
730 766
731 -QEMU Virtual Machine <------> Firewall/DHCP server <-----> Internet  
732 - (10.0.2.x) | (10.0.2.2) 767 + QEMU VLAN <------> Firewall/DHCP server <-----> Internet
  768 + | (10.0.2.2)
733 | 769 |
734 ----> DNS server (10.0.2.3) 770 ----> DNS server (10.0.2.3)
735 | 771 |
@@ -738,7 +774,8 @@ QEMU Virtual Machine &lt;------&gt; Firewall/DHCP server &lt;-----&gt; Internet @@ -738,7 +774,8 @@ QEMU Virtual Machine &lt;------&gt; Firewall/DHCP server &lt;-----&gt; Internet
738 774
739 The QEMU VM behaves as if it was behind a firewall which blocks all 775 The QEMU VM behaves as if it was behind a firewall which blocks all
740 incoming connections. You can use a DHCP client to automatically 776 incoming connections. You can use a DHCP client to automatically
741 -configure the network in the QEMU VM. 777 +configure the network in the QEMU VM. The DHCP server assign addresses
  778 +to the hosts starting from 10.0.2.15.
742 779
743 In order to check that the user mode network is working, you can ping 780 In order to check that the user mode network is working, you can ping
744 the address 10.0.2.2 and verify that you got an address in the range 781 the address 10.0.2.2 and verify that you got an address in the range
@@ -755,6 +792,12 @@ When using the @option{-redir} option, TCP or UDP connections can be @@ -755,6 +792,12 @@ When using the @option{-redir} option, TCP or UDP connections can be
755 redirected from the host to the guest. It allows for example to 792 redirected from the host to the guest. It allows for example to
756 redirect X11, telnet or SSH connections. 793 redirect X11, telnet or SSH connections.
757 794
  795 +@subsection Connecting VLANs between QEMU instances
  796 +
  797 +Using the @option{-net socket} option, it is possible to make VLANs
  798 +that span several QEMU instances. See @ref{sec_invocation} to have a
  799 +basic example.
  800 +
758 @node direct_linux_boot 801 @node direct_linux_boot
759 @section Direct Linux Boot 802 @section Direct Linux Boot
760 803