Solaris 9 Guest only has output traffic to the host.

Discussions about using Solaris guests in VirtualBox.
SirBrain
Posts: 8
Joined: 1. Oct 2019, 10:11

Solaris 9 Guest only has output traffic to the host.

Post by SirBrain »

Hi everybody!

I have Mac OS X 10.14.6 like host and Solaris 9 like guest.

I use host-only configuration with VirtualBox 6.0.12, it can't receive packages from host but guest can transmit it.
I used tcpdump on vboxnet0 to check that.

Any suggestions?

On the other hand, It is possible to change LinkUpDelay or ltr parameters on E1000 driver?
00:00:01.560153 E1000#0: Chip=82540EM LinkUpDelay=3000ms EthernetCRC=on GSO=enabled Itr=disabled ItrRx=enabled TID=disabled R0=enabled GC=enabled
00:00:01.561310 E1000#1: Chip=82540EM LinkUpDelay=3000ms EthernetCRC=on GSO=enabled Itr=disabled ItrRx=enabled TID=disabled R0=enabled GC=enabled
I attach VBox.log file

Thank's
Attachments
VBox.log
(82.94 KiB) Downloaded 55 times
fth0
Volunteer
Posts: 5661
Joined: 14. Feb 2019, 03:06
Primary OS: Mac OS X other
VBox Version: PUEL
Guest OSses: Linux, Windows 10, ...
Location: Germany

Re: Solaris 9 Guest only has output traffic to the host.

Post by fth0 »

The VBox log file IMHO shows no indication of your problem. But it is from a VM still running and therefore missing the network statistics, which could give more insight. Please shutdown the guest OS before zipping (hint ;)) and providing the VBox log file.
SirBrain wrote:I used tcpdump on vboxnet0 to check that.
If you don't see any packets sent from the host OS to the vboxnet0 adapter, then the host OS is not willing to do so. Can you provide a PCAP from a full run showing your problem?
SirBrain wrote:It is possible to change LinkUpDelay or ltr parameters on E1000 driver?
I don't know about any documented commands to do that.
SirBrain
Posts: 8
Joined: 1. Oct 2019, 10:11

Re: Solaris 9 Guest only has output traffic to the host.

Post by SirBrain »

Let's get started it!

I set pcap file using this command on host:
$ VBoxManage modifyvm "Solaris 9 x86 - SirBrainDime" --nictrace1 on --nictracefile1 ~/VirtualBox\ VMs/Solaris\ 9\ x86\ -\ SirBrainDime/Logs/E1000_1.pcap
** If this is useful for someone, I you only specific the filename without any path, VBox will try to create the file on this path: /Users/vbox/tinderbox/6.0-mac-rel/src/VBox/Devices/Network/DevE1000.cpp **

When guest is booting, it will try to obtain IP address using DHCP.
I used this command to catch I/O network over vboxnet0 on host:
~ root# tcpdump -i vboxnet0 -n
I see traffic from DHCP client request and DHCP server reply it, but guest never receive the reply.
02:56:48.154377 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 08:00:27:da:18:63, length 300
02:56:48.154384 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 08:00:27:da:18:63, length 300
02:56:48.154826 IP 192.168.56.100.67 > 255.255.255.255.68: BOOTP/DHCP, Reply, length 548
02:56:48.154829 IP 192.168.56.100.67 > 255.255.255.255.68: BOOTP/DHCP, Reply, length 548
On guest, I used ifconfig command to set manually IP address on E1000:
# ifconfig e1000g0 inet 192.168.56.101 netmask 255.255.255.0 broadcast + up
When I setup IP address, I see ARP traffic.
03:20:41.243934 ARP, Announcement 192.168.56.101 (ff:ff:ff:ff:ff:ff), length 46
03:20:41.243941 ARP, Announcement 192.168.56.101 (ff:ff:ff:ff:ff:ff), length 46
03:20:43.236955 ARP, Announcement 192.168.56.101 (ff:ff:ff:ff:ff:ff), length 46
03:20:43.236960 ARP, Announcement 192.168.56.101 (ff:ff:ff:ff:ff:ff), length 46
03:20:45.236116 ARP, Announcement 192.168.56.101 (ff:ff:ff:ff:ff:ff), length 46
If I ping from host to guest, i see this traffic:
03:28:07.725679 ARP, Request who-has 192.168.56.101 (08:00:27:da:18:63) tell 192.168.56.1, length 28
03:28:07.725696 IP 192.168.56.1 > 192.168.56.101: ICMP echo request, id 63236, seq 0, length 64
03:28:08.730134 ARP, Request who-has 192.168.56.101 (08:00:27:da:18:63) tell 192.168.56.1, length 28
03:28:08.730139 IP 192.168.56.1 > 192.168.56.101: ICMP echo request, id 63236, seq 1, length 64
03:28:09.734337 ARP, Request who-has 192.168.56.101 (08:00:27:da:18:63) tell 192.168.56.1, length 28
03:28:09.734344 IP 192.168.56.1 > 192.168.56.101: ICMP echo request, id 63236, seq 2, length 64
03:28:10.738797 ARP, Request who-has 192.168.56.101 tell 192.168.56.1, length 28
03:28:11.740008 ARP, Request who-has 192.168.56.101 tell 192.168.56.1, length 28
03:28:12.743264 ARP, Request who-has 192.168.56.101 tell 192.168.56.1, length 28
03:28:13.748236 ARP, Request who-has 192.168.56.101 tell 192.168.56.1, length 28
03:28:14.749430 ARP, Request who-has 192.168.56.101 tell 192.168.56.1, length 28
* ARP Request recognize MAC address from guest, and then lost it.
* ICMP echo request to guest without reply.

If I ping from guest to host, i see this traffic:
03:36:01.023464 ARP, Request who-has 192.168.56.1 (ff:ff:ff:ff:ff:ff) tell 192.168.56.101, length 46
03:36:01.023468 ARP, Request who-has 192.168.56.1 (ff:ff:ff:ff:ff:ff) tell 192.168.56.101, length 46
03:36:01.023501 ARP, Reply 192.168.56.1 is-at 0a:00:27:00:00:00, length 28
03:36:02.010267 ARP, Request who-has 192.168.56.1 (ff:ff:ff:ff:ff:ff) tell 192.168.56.101, length 46
03:36:02.010273 ARP, Request who-has 192.168.56.1 (ff:ff:ff:ff:ff:ff) tell 192.168.56.101, length 46
03:36:02.010306 ARP, Reply 192.168.56.1 is-at 0a:00:27:00:00:00, length 28
03:36:03.009768 ARP, Request who-has 192.168.56.1 (ff:ff:ff:ff:ff:ff) tell 192.168.56.101, length 46
03:36:03.009773 ARP, Request who-has 192.168.56.1 (ff:ff:ff:ff:ff:ff) tell 192.168.56.101, length 46
03:36:03.009808 ARP, Reply 192.168.56.1 is-at 0a:00:27:00:00:00, length 28
I shutdown guest using init 0

I attach E1000_1.pcp that contain complete trace of this test and VBox.log with guest in power-off :D

Additional Information

Firewall Off on Host:
$ defaults read /Library/Preferences/com.apple.alf globalstate
0
0 = Firewall Off
1 = Firewall On

Guest doesnt have IPFilter or any kind of firewall.

On the other hand, I was used this configuration with VBox 5.1.38 & Mac OS 10.13.x, I remember worked fine.
In my research, I only found that on VBox 5.1.38 uses LinkDelayUp with 5000 and ltr on enabled, maybe could be the issue on vBox 6.0.12.

I tried use VBoxManage setextradata command to change this parameters, but I couldn't set correct device path and got errors on VM startup.
Attachments
E1000_1.pcap.zip
(2.35 KiB) Downloaded 49 times
VBox.log.zip
(28.37 KiB) Downloaded 55 times
Last edited by socratis on 4. Oct 2019, 14:09, edited 1 time in total.
Reason: Enclosed the information in [quote][pre] tags for better readability
fth0
Volunteer
Posts: 5661
Joined: 14. Feb 2019, 03:06
Primary OS: Mac OS X other
VBox Version: PUEL
Guest OSses: Linux, Windows 10, ...
Location: Germany

Re: Solaris 9 Guest only has output traffic to the host.

Post by fth0 »

VBox log file wrote:
00:48:05.482644 /Drivers/IntNet-0/Bytes/Received    17548 bytes
00:48:05.482650 /Drivers/IntNet-0/Bytes/Sent        10632 bytes
00:48:05.482673 /Drivers/IntNet-0/Packets/Received       68 count
00:48:05.482703 /Drivers/IntNet-0/Packets/Sent         55 count

00:48:05.481385 /Devices/E1k0/ReceiveBytes          17854 bytes
00:48:05.481394 /Devices/E1k0/TransmitBytes         10632 bytes
00:48:05.481506 /Devices/E1k0/uStatIntRx               66 ns
00:48:05.481539 /Devices/E1k0/uStatIntTx               55 ns
00:48:05.481576 /Devices/E1k0/uStatRxFrm               66 ns
00:48:05.481698 /Devices/E1k0/uStatTxFrm               55 ns
The statistics from the IntNet-0 driver match the content of the PCAP file (TX/RX packet and byte counts). The statistics from the E1k0 device deviate a little bit in the host to guest (RX) direction (substitute ns with count ;)): I don't know why we have here 306 bytes more and 2 packets less (maybe the two MDNS multicast packets? Then it would be 666 bytes more in total). Generally, the statistics indicate that (most of) the packets have been delivered to the guest, and I'd therefore suggest to further investigate on the guest (I've been using Solaris lastly about 30 years ago, so take my suggestions with a grain of salt ;)):

With the guest VM powered down, disable the 2nd network adapter in the VM configuration and disable both network adapters in the guest. Start the guest OS, start a packet capture in the guest and enable only the network adapter needed for this investigation. Look at the output of ifconfig (or the Solaris equivalent) to see how many packets have been sent/received. Your analysis so far has been pretty advanced, so you will probably know better what else to do on the guest ... ;)
SirBrain wrote:On the other hand, I was used this configuration with VBox 5.1.38 & Mac OS 10.13.x, I remember worked fine.
In my research, I only found that on VBox 5.1.38 uses LinkDelayUp with 5000 and ltr on enabled, maybe could be the issue on vBox 6.0.12.
I searched my own VBox log files of some rarely used VMs and found out that those parameters changed between VirtualBox 5.1.38 and 5.2.32. Since VirtualBox 5.2.32 is probably more sophisticated than VirtualBox 6.0.12: Can you try VirtualBox 5.2.32 on your host?
 Edit: I figured out where the differences in the statistics originate from: The two MDNS packets are not forwarded to the guest, and the difference from the byte counts therefore becomes 306 + 91 + 269 = 666 bytes. On the other hand, there are 37 ARP packets with 42 bytes, but the minimum Ethernet frame size on the wire is 64 bytes, so they are enlarged by 64 - 42 = 22 = 18 + 4 bytes (the 4 being the Ethernet FCS not available in the PCAP file), and 37 * 18 = 666. QED ;) 
Last edited by fth0 on 5. Oct 2019, 20:11, edited 1 time in total.
SirBrain
Posts: 8
Joined: 1. Oct 2019, 10:11

Re: Solaris 9 Guest only has output traffic to the host.

Post by SirBrain »

Let's do it!

First, I will disable network interfaces then I will start a packet capture in the guest using only e1000g0.

I used this procedure to remove DHCP client & e1000g1 configuration on guest.
# rm /etc/dhcp.e1000g0
# rm /etc/hostname.e1000g0
# rm /etc/hostname.e1000g1
# init 0
Then, I removed NIC2 on VM Guest configuration.
$ VBoxManage modifyvm "Solaris 9 x86 - SirBrainDime" --nic2 none
With guest up, I set manually IP address.
# ifconfig e1000g0 plumb
# ifconfig e1000g0 inet 192.168.56.101 netmask 255.255.255.0 broadcast + up
Now, we are started packet capture using snoop command in background.
** Importantly, this capture is equal than VBox pcap, it's only contain packets with ARP traffic & ping tests. **
# snoop -d e1000g0 -r -o /var/tmp/e1000_snoop.pcap &>/dev/null &
In theory, it's possible to analyze snoop type file using WireShark tool (or snoop of course!)
I repeated ping tests from host to guest and vice versa (only 11 ping packets by side), then I stopped snoop capture using pkill.
# pkill snoop
I used netstat command to obtain statistics on e1000g0.
# netstat -I e1000g0 -s > /var/tmp/netstat.stats
At this point, I shutdown guest using init 0

The results on guest were:

The packet capture only contain 12 ARP Broadcast traces like this:
1 0.00000 192.168.56.101 -> (broadcast) ARP C Who is 192.168.56.1, 192.168.56.1 ?
2 1.04113 192.168.56.101 -> (broadcast) ARP C Who is 192.168.56.1, 192.168.56.1 ?
3 1.11726 192.168.56.101 -> (broadcast) ARP C Who is 192.168.56.1, 192.168.56.1 ?
4 0.99558 192.168.56.101 -> (broadcast) ARP C Who is 192.168.56.1, 192.168.56.1 ?
5 1.00164 192.168.56.101 -> (broadcast) ARP C Who is 192.168.56.1, 192.168.56.1 ?
On the netstat statistics, the next information could be relevant :shock:

Ipkts (Input packets) & Opkts (Output packets) are different.
Name Mtu Net/Dest Address Ipkts Ierrs Opkts Oerrs Collis Queue
e1000g0 1500 192.168.56.0 192.168.56.101 23 0 17 0 0 0
ICMP Protocol (Same number of In/Out packets than number of unreached)
ICMPv4 icmpInMsgs = 23 icmpInErrors = 0
icmpInDestUnreachs = 23 icmpInTimeExcds = 0
icmpInFragNeeded = 0 icmpOutMsgs = 23
icmpOutDestUnreachs = 23 icmpOutTimeExcds = 0
Meanwhile, the host had same results that previous test. :(

Ping host to guest
02:42:39.138003 IP 192.168.56.1 > 192.168.56.101: ICMP echo request, id 58890, seq 0, length 64
02:42:40.143008 IP 192.168.56.1 > 192.168.56.101: ICMP echo request, id 58890, seq 1, length 64
02:42:41.145817 IP 192.168.56.1 > 192.168.56.101: ICMP echo request, id 58890, seq 2, length 64
02:42:42.149127 IP 192.168.56.1 > 192.168.56.101: ICMP echo request, id 58890, seq 3, length 64
02:42:43.150362 IP 192.168.56.1 > 192.168.56.101: ICMP echo request, id 58890, seq 4, length 64
Ping guest to host
02:43:09.970165 ARP, Request who-has 192.168.56.1 (ff:ff:ff:ff:ff:ff) tell 192.168.56.101, length 46
02:43:09.970169 ARP, Request who-has 192.168.56.1 (ff:ff:ff:ff:ff:ff) tell 192.168.56.101, length 46
02:43:09.970189 ARP, Reply 192.168.56.1 is-at 0a:00:27:00:00:00, length 28
02:43:11.010052 ARP, Request who-has 192.168.56.1 (ff:ff:ff:ff:ff:ff) tell 192.168.56.101, length 46
02:43:11.010059 ARP, Request who-has 192.168.56.1 (ff:ff:ff:ff:ff:ff) tell 192.168.56.101, length 46
02:43:11.010094 ARP, Reply 192.168.56.1 is-at 0a:00:27:00:00:00, length 28
02:43:12.126113 ARP, Request who-has 192.168.56.1 (ff:ff:ff:ff:ff:ff) tell 192.168.56.101, length 46
02:43:12.126122 ARP, Request who-has 192.168.56.1 (ff:ff:ff:ff:ff:ff) tell 192.168.56.101, length 46
Importantly, the snoop capture is equal than VBox pcap, it's only contains packets with ARP traffic & ping tests.
It was executed like this, to compare on equal circumstances.
On VBox log, found this:
00:04:54.517137 /Drivers/IntNet-0/Bytes/Received 1582 bytes
00:04:54.517142 /Drivers/IntNet-0/Bytes/Sent 1020 bytes
00:04:54.517165 /Drivers/IntNet-0/Packets/Received 23 count
00:04:54.517176 /Drivers/IntNet-0/Packets/Sent 17 count

00:04:54.516428 /Devices/E1k0/ReceiveBytes 1798 bytes
00:04:54.516442 /Devices/E1k0/TransmitBytes 1020 bytes
00:04:54.516636 /Devices/E1k0/uStatIntRx 23 ns
00:04:54.516694 /Devices/E1k0/uStatIntTx 17 ns
00:04:54.516725 /Devices/E1k0/uStatRxFrm 23 ns
00:04:54.516812 /Devices/E1k0/uStatTxFrm 17 ns
In my opinion, IntNet-0 and E1k0 should be have same received bytes, because the different between both is 216 bytes, than is equivalent to the 5 ARP Announcement traces (46 bytes * 5 traces =230 bytes) finding it on E1000_1.pcap. The E1k0 device process the complete amount of packets, but IntNet-0 it doesn't. What do you think? or maybe I'm on-fly with at the speed of cheeba! :roll:

I attach the files VBox.log.zip, E1000_1.pcap.zip, e1000_snoop_with_stats.zip with the complete traces of whole test.

By the way, do you know the meaning of itr? :?

Well ... the next step it's to downgrade VBox from 6.0.12 to 5.2.32! ... I will write the procedure in my next reply!
Attachments
e1000_snoop_with_stats.zip
(1.91 KiB) Downloaded 52 times
E1000_1.pcap.zip
(853 Bytes) Downloaded 49 times
VBox.log.zip
(26.83 KiB) Downloaded 52 times
fth0
Volunteer
Posts: 5661
Joined: 14. Feb 2019, 03:06
Primary OS: Mac OS X other
VBox Version: PUEL
Guest OSses: Linux, Windows 10, ...
Location: Germany

Re: Solaris 9 Guest only has output traffic to the host.

Post by fth0 »

SirBrain wrote:The E1k0 device process the complete amount of packets, but IntNet-0 it doesn't. What do you think?
I edited my previous post to explain the difference in the statistics there, and the same explanation holds true here: The 12 received ARP response frames account for the 12 * 18 = 216 bytes difference. So this IMHO doesn't indicate a problem.

The guest OS sent 17 packets (5 gratuitous ARP requests and 12 ARP requests) to the host and received 23 packets (11 ICMP requests and 12 ARP responses) from the host. The netstat output from the guest (23 Ipkts, 17 Opkts, 0 Ierrs, 0 OErrs) also confirms this, so far so good. Then it gets interesting:

The further netstat output regarding ICMP is peculiar, especially listing 23 ICMP destination unreachables in and out (is the 23 a coincidence?). This may be a track worth tracking, or lead us astray ...

The snoop capture only contains the sent packets (the gratuitous ARP requests probably were sent before you started the capture). So this seems to indicate that the guest OS doesn't pick up the received frames from the network interface. But why???
SirBrain wrote:By the way, do you know the meaning of itr?
In the original Intel Ethernet controllers (which VirtualBox emulates), the Interrupt Throttle Rate (ITR) setting is used to reduce the number of interrupts generated for received packets in high speed data transfer. You can read about ITR in the original Intel documentation: https://downloadcenter.intel.com/downlo ... oduct=1285. Regarding VirtualBox, I suspect that the source code itself will be the best documentation.

Can you also provide the full output from ifconfig and netstat on the guest (trying different options)?
SirBrain
Posts: 8
Joined: 1. Oct 2019, 10:11

Re: Solaris 9 Guest only has output traffic to the host.

Post by SirBrain »

fth0 wrote: The snoop capture only contains the sent packets (the gratuitous ARP requests probably were sent before you started the capture).
Yes it's correct, the gratuitous ARP are produced with ifconfig e1000g0 inet, after that I start the snoop capture!
fth0 wrote: So this seems to indicate that the guest OS doesn't pick up the received frames from the network interface. But why???
That, it's the big question!
fth0 wrote: Regarding VirtualBox, I suspect that the source code itself will be the best documentation.
I'm agree, the source code maybe could have something relevant about that. :o
fth0 wrote: Can you also provide the full output from ifconfig and netstat on the guest (trying different options)?
I suspect that you expect ifconfig output like this:
# ifconfig -a e1000g0
e1000g0 Link encap:Ethernet HWaddr 08:00:27:da:18:63
inet addr:192.168.56.101 Bcast:192.168.56.255 Mask:255.255.255.0
UP BROADCAST PROMISC MULTICAST MTU:1500 Metric:1
RX packets:23 errors:0 dropped:0 overruns:0 frame:0
TX packets:17 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1798(0.1b) TX bytes:1028(0.1b)
Interrupt:17 Memory:fb6e0000-fb700000
This ifconfig example is from Linux. On Solaris, ifconfig doesn't have RX/TX statistics, only show this:
# ifconfig -a
lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 3
inet 127.0.0.1 netmask ff000000
e1000g0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 4
inet 192.168.56.101 netmask ffffff00 broadcast 192.168.56.255
ether 8:0:27:da:18:63
However, if we need more statistics we can use netstat -k or kstat (both with counts & bytes).
IMHO, kstat is better than netstat, because the information is ordered and clearest.
Important note for users have kstat broken, If the command produce this errors:
* kstat: bad interpreter: No such file or directory
* Can't locale Sun/Solaris/Utils.pm
* Can't locate loadable object for module Sun::Solaris::Utils

You should install SUNWpl5u package (Perl 5.6.1 programming language (core)) from Solaris OS media.
This package has Utils.pm and Kstat.pm used by kstat and it's part of Core installation of Solaris.
On the other side, I'm improved the procedure to obtain better results. I will applied it on all tests.
[Host] # tcpdump -i vboxnet0 -n (For monitoring purpose)
[Host] $ VBoxManage startvm "Solaris 9 x86 - SirBrainDime"
[Guest] # ifconfig e1000g0 plumb
[Guest] # snoop -d e1000g0 -r -o /var/tmp/e1000_snoop.pcap &>/dev/null &
[Guest] # ifconfig e1000g0 inet 192.168.56.101 netmask 255.255.255.0 broadcast + up
[Host] $ ping 192.168.56.101 -c10
[Guest] # ping -s 192.168.56.1 56 10
[Guest] # pkill snoop
[Guest] # netstat -I e1000g0 -s > /var/tmp/netstat.stats
[Guest] # kstat -n e1000g0 > /var/tmp/kstat.stats
[Guest] # init 0
I attach the files VBox.log.zip, E1000_1.pcap.zip, Snoop_netstat_kstat_stats.zip with the complete traces of whole test. I hope this statistics are useful!
The next step it's to downgrade VBox from 6.0.12 to 5.2.32!
Attachments
Snoop_netstat_kstat _stats.zip
(3.62 KiB) Downloaded 43 times
E1000_1.pcap.zip
(819 Bytes) Downloaded 50 times
VBox.log.zip
(26.68 KiB) Downloaded 44 times
SirBrain
Posts: 8
Joined: 1. Oct 2019, 10:11

Re: Solaris 9 Guest only has output traffic to the host.

Post by SirBrain »

To uninstall VB 6.0.12, I used this procedure:
$ hdiutil attach ~/Downloads/VirtualBox-6.0.12-133076-OSX.dmg
$ cd /Volumes/VirtualBox/
$ ./VirtualBox_Uninstall.tool
$ hdiutil info|grep VirtualBox|grep dev ( ** this is to retrieve device on VirtualBox path ** )
$ cd; hdiutil detach /dev/disk3s1
** Restart your Mac **
Note: I manually deleted vboxing-mount on /usr/local/bin, because VB_Uninstall script don't deleted it!

To install VB 5.2.32, I used this procedure:
$ hdiutil attach ~/Downloads/VirtualBox-5.2.32-132073-OSX.dmg
$ cd /Volumes/VirtualBox/
$ sudo installer -pkg /Volumes/VirtualBox/VirtualBox.pkg -target /
$ VBoxManage extpack install ~/Downloads/Oracle_VM_VirtualBox_Extension_Pack-5.2.32.vbox-extpack
$ hdiutil info|grep VirtualBox|grep dev
$ cd; hdiutil detach /dev/disk2s1
I attach the files VBox5.2.32.log.zip, VBox5.2.32_E1000_1.pcap.zip & VBox5.2.32_stats.
At this point, the version I have installed is VB 5.2.32.
Regards!
Attachments
VBox5.2.32_stats.zip
(3.62 KiB) Downloaded 49 times
VBox5.2.32_E1000_1.pcap.zip
(1007 Bytes) Downloaded 48 times
VBox5.2.32.log.zip
(24.25 KiB) Downloaded 51 times
fth0
Volunteer
Posts: 5661
Joined: 14. Feb 2019, 03:06
Primary OS: Mac OS X other
VBox Version: PUEL
Guest OSses: Linux, Windows 10, ...
Location: Germany

Re: Solaris 9 Guest only has output traffic to the host.

Post by fth0 »

The kstat and netstat outputs both indicate that the 22 received packets arrived at the e1000g0 network interface and its driver, which is part of the Solaris OS. Since I'm not really acquainted with the Solaris OS and its network stack, I cannot really help you any further on this side (besides double checking your already thorough test procedures, analysis and documentation thereof ;)).

But I can give you a few more random ideas to pursuit:

1. In the VirtualBox VM network settings, you can enable promiscuous mode.

2. You seem to have VRDP enabled, but port 3389 on your host is already in use.

3. Solaris seems to have a network zones concept.

4. The VirtualBox User Manual (for VirtualBox 5.2.32) states that only Solaris 10 (u6) and newer is supported as a guest OS. Although it contains scattered references to previous Solaris versions.
stes
Posts: 154
Joined: 28. Apr 2018, 11:07

Re: Solaris 9 Guest only has output traffic to the host.

Post by stes »

A while ago I tested Solaris 8 which ran fine on VirtualBox 6.x.

See the thread for that subject in this forum ... viewtopic.php?f=20&t=90833 where I posted:

Code: Select all

# ifconfig -a
lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
pcn0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 192.168.0.9 netmask ffffff00 broadcast 192.168.0.255
        ether 8:0:27:3f:e2:1e 
Note that I didn't use the e1000 (gigabit) intel for that install but rather the PCnet .

Perhaps also in this case, have you tried going in VirtualBox -> Network -> Advanced -> Adapter Type ??

You could try to change it to PCnet PCI-II or PCnet FAST ?

This perhaps changes the card that is detected by the guest from Intel 1000 to :

pci bus 0x0000 cardnum 0x03 function 0x00: vendor 0x1022 device 0x2000
Advanced Micro Devices, Inc. [AMD] 79c970 [PCnet32 LANCE]


and in the guest I then get:
Oct 15 17:34:19 neptune pcn: [ID 451854 kern.warning] WARNING: pcn0: Unsupported chip: Am79C970A PCnet-PCI II


However with older releases like Solaris 8 it may exactly be a good idea to try to use the pcn0 interface where I seem to remember the OS did not recognise the e1000g0 card ...
stes
Posts: 154
Joined: 28. Apr 2018, 11:07

Re: Solaris 9 Guest only has output traffic to the host.

Post by stes »

for what it's worth, Solaris 9 installs fine and runs fine in 32bit mode on VirtualBox 6.0.12.

As network adapter I chose "PCnet PCI II" in VirtualBox network adapter type settings.

This card is then using the

pcn - AMD PCnet Ethernet controller device driver

under Solaris 9. I can telnet into the Solaris 9 machine just fine

snoop reports obviously packets in both directions inbound and outbound

Code: Select all

# snoop -r
Using device /dev/pcn0 (promiscuous mode)
 192.168.0.1 -> 192.168.0.8  TELNET C port=34645 
 192.168.0.8 -> 192.168.0.1  TELNET R port=34645 Using device /dev/pc
 192.168.0.1 -> 192.168.0.8  TELNET C port=34645 
 192.168.0.8 -> 192.168.0.1  TELNET R port=34645  192.168.0.1 -> 192.
 192.168.0.1 -> 192.168.0.8  TELNET C port=34645 
 192.168.0.8 -> 192.168.0.1  TELNET R port=34645  192.168.0.8 -> 192.
 192.168.0.1 -> 192.168.0.8  TELNET C port=34645
This doesn't explain the difference in VirtualBox 5 and VirtualBox 6 (if there is any) for e1000g0 interfaces.

However it depends I think on what the goal exactly is. Is it a requirement to use e1000 interfaces ??

On physical hardware Solaris 9 would often have been on SPARC hardware with ethernet interfaces that are neither pcn nor e1000.

In any case Solaris 9 is obviously already longtime end of life, the current version is Solaris 11.
SirBrain
Posts: 8
Joined: 1. Oct 2019, 10:11

Re: Solaris 9 Guest only has output traffic to the host.

Post by SirBrain »

fth0 wrote:The kstat and netstat outputs both indicate that the 22 received packets arrived at the e1000g0 network interface and its driver, which is part of the Solaris OS. Since I'm not really acquainted with the Solaris OS and its network stack, I cannot really help you any further on this side (besides double checking your already thorough test procedures, analysis and documentation thereof ;)).
Thanks for your assistance!

I suspect, the e1000 driver for VB has a issue (or change) from 5.2.x and 6.1.x, because I remember this same guest worked fine on VB 5.1.x.

I compared source code of dev1000.cpp from 5.1.x to 6.1.x.,IMHO, it has relevant changes.

I will evaluate to configure dual-boot on my MacBook to install MacOSX 10.13.x (High Sierra) to try to install VB 5.1.38 to test this same guest.

If my test works fine, do you think is a good idea to create a bugticket? or What would be your suggestion? :)
SirBrain
Posts: 8
Joined: 1. Oct 2019, 10:11

Re: Solaris 9 Guest only has output traffic to the host.

Post by SirBrain »

stes wrote: Note that I didn't use the e1000 (gigabit) intel for that install but rather the PCnet .
The e1000 device had support on Solaris 8 by certified third-party drivers from Intel.
Unfortunately, they are no longer available from Intel website.

You could check it here: https://docs.oracle.com/cd/E19455-01/81 ... index.html
:o
stes wrote: Perhaps also in this case, have you tried going in VirtualBox -> Network -> Advanced -> Adapter Type ??
You could try to change it to PCnet PCI-II or PCnet FAST ?
To be honest, never crossed my mind to use any flavour of PCNet. :?
However, I will use pcn driver for testing purpose on my next reply!
stes wrote: However with older releases like Solaris 8 it may exactly be a good idea to try to use the pcn0 interface where I seem to remember the OS did not recognise the e1000g0 card ...
Solaris 8 doesn't has e1000 driver embedded and isn't available from Intel.I'm agree with you the best option is to use PCNet NIC.
SirBrain
Posts: 8
Joined: 1. Oct 2019, 10:11

Re: Solaris 9 Guest only has output traffic to the host.

Post by SirBrain »

stes wrote: for what it's worth, Solaris 9 installs fine and runs fine in 32bit mode on VirtualBox 6.0.12.
As network adapter I chose "PCnet PCI II" in VirtualBox network adapter type settings.
Let's go!
With Guest off, to change e1000 to PCNet on VB, I used this procedure:
[Host] $ VBoxManage modifyvm "Solaris 9 x86 - SirBrainDime" --nictype1 Am79C973 (<--- or could be Am79C970A )
[Host] $ VBoxManage startvm "Solaris 9 x86 - SirBrainDime"
** If Solaris Device Configuration detect your PCNet NIC, you could see it on "Identified Devices" like PCI: AMD 79C970 PCnet Ethernet. **
SDCA Identified Devices.jpg
SDCA Identified Devices.jpg (27.03 KiB) Viewed 61679 times
When Guest is system up
[Guest] # devfsadm; devfsadm -C
[Guest] # ifconfig pcn0 plumb
[Guest] # snoop -d pcn0 -r -o /var/tmp/pcn_snoop.pcap &>/dev/null &
[Guest] # ifconfig pcn0 inet 192.168.56.101 netmask 255.255.255.0 broadcast + up
[Host] # ping 192.168.56.101 -c10
[Guest] # pkill snoop
[Guest] # snoop -i /var/tmp/pcn_snoop.pcap
1 0.00000 192.168.56.101 -> (broadcast) ARP C Who is 192.168.56.101, 192.168.56.101 ?
2 0.00006 192.168.56.101 -> (broadcast) ARP C Who is 192.168.56.101, 192.168.56.101 ?
3 1.99215 192.168.56.101 -> (broadcast) ARP C Who is 192.168.56.101, 192.168.56.101 ?
4 2.00006 192.168.56.101 -> (broadcast) ARP C Who is 192.168.56.101, 192.168.56.101 ?
5 1.92764 192.168.56.1 -> 192.168.56.101 ICMP Echo request (ID: 25091 Sequence number: 0)
6 0.00022 192.168.56.101 -> (broadcast) ARP C Who is 192.168.56.1, 192.168.56.1 ?
7 0.00042 192.168.56.1 -> 192.168.56.101 ARP R 192.168.56.1, 192.168.56.1 is a:0:27:0:0:0
8 0.00018 192.168.56.101 -> 192.168.56.1 ICMP Echo reply (ID: 25091 Sequence number: 0)
9 0.07141 192.168.56.101 -> (broadcast) ARP C Who is 192.168.56.101, 192.168.56.101 ?
10 0.93038 192.168.56.1 -> 192.168.56.101 ICMP Echo request (ID: 25091 Sequence number: 1)
11 0.00022 192.168.56.101 -> 192.168.56.1 ICMP Echo reply (ID: 25091 Sequence number: 1)
12 1.00442 192.168.56.1 -> 192.168.56.101 ICMP Echo request (ID: 25091 Sequence number: 2)
13 0.00023 192.168.56.101 -> 192.168.56.1 ICMP Echo reply (ID: 25091 Sequence number: 2)
14 0.06458 192.168.56.101 -> (broadcast) ARP C Who is 192.168.56.101, 192.168.56.101 ?
15 0.93856 192.168.56.1 -> 192.168.56.101 ICMP Echo request (ID: 25091 Sequence number: 3)
16 0.00024 192.168.56.101 -> 192.168.56.1 ICMP Echo reply (ID: 25091 Sequence number: 3)
17 1.00507 192.168.56.1 -> 192.168.56.101 ICMP Echo request (ID: 25091 Sequence number: 4)
18 0.00024 192.168.56.101 -> 192.168.56.1 ICMP Echo reply (ID: 25091 Sequence number: 4)
19 1.00509 192.168.56.1 -> 192.168.56.101 ICMP Echo request (ID: 25091 Sequence number: 5)
20 0.00022 192.168.56.101 -> 192.168.56.1 ICMP Echo reply (ID: 25091 Sequence number: 5)
21 1.00420 192.168.56.1 -> 192.168.56.101 ICMP Echo request (ID: 25091 Sequence number: 6)
22 0.00024 192.168.56.101 -> 192.168.56.1 ICMP Echo reply (ID: 25091 Sequence number: 6)
23 1.00540 192.168.56.1 -> 192.168.56.101 ICMP Echo request (ID: 25091 Sequence number: 7)
24 0.00022 192.168.56.101 -> 192.168.56.1 ICMP Echo reply (ID: 25091 Sequence number: 7)
25 1.00283 192.168.56.1 -> 192.168.56.101 ICMP Echo request (ID: 25091 Sequence number: 8)
26 0.00023 192.168.56.101 -> 192.168.56.1 ICMP Echo reply (ID: 25091 Sequence number: 8)
27 1.00451 192.168.56.1 -> 192.168.56.101 ICMP Echo request (ID: 25091 Sequence number: 9)
28 0.00027 192.168.56.101 -> 192.168.56.1 ICMP Echo reply (ID: 25091 Sequence number: 9)
It's works!!!! :D
stes wrote: This doesn't explain the difference in VirtualBox 5 and VirtualBox 6 (if there is any) for e1000g0 interfaces.
I compared source code of dev1000.cpp from 5.1.x to 6.1.x.,IMHO, it has relevant changes. :shock:
stes wrote: However it depends I think on what the goal exactly is. Is it a requirement to use e1000 interfaces ??
In retrospect, when I was worked with physical machines, I had use drivers like iprb, elxl, rlts (from Realtek), and e1000 (of course).
I never worked with a pcn driver. :?

On the other hand, I had tested e1000 and pcn with MacOS Leopard or Snow Leopard with some VB latest version for that versions.
I remember that, my results was that e1000 had better performance than pcn. I compared ping response time and rate transfer over 1MB, 10MB, 100MB and 1GB. The performance between interfaces had some differences.

The PCNet Am79C970A is 10Mb, PCNet Am79C973 is 10/100Mb, but any Intel PRO/1000 (82540EM, 82543GC, 82545EM) is 10/100/1000Mb. I think that, pcn was excluded on my mind by his link speed, my previous tests and never used it on physical machines! .... :shock:
Now, is useful pcn driver on my guest. :o

However, I remember this guest worked fine on VB 5.1.38. I'm planning to configure dual-boot to install MacOS 10.13.x and test this version of VB. In your opinion, If my guest will be work fine on VB 5.1.38, Do you think is good idea to create bugticket? :?
stes
Posts: 154
Joined: 28. Apr 2018, 11:07

Re: Solaris 9 Guest only has output traffic to the host.

Post by stes »

My guess is that it does not make a lot of sense to open a bug ticket for this.

By using the 100mbit or 10mbit NIC "solution" (AMD PCnet nic) you have a networked Solaris 9 guest, so that's a nice feature of VirtualBox that it helps you and allows you to do this. You have a solution, a working guest (with network working as well).

If you want to open a bug ticket you can of course, perhaps ideally with an exact description of what exactly you want to be changed (if you know perhaps what exactly changed in the source code).
Post Reply