Open afberendsen opened 1 year ago
I'm sorry you are having such a hard time with simh networking on Windows.
The process involves a really horrendous number of steps: 1) Make sure your are using a wired network connection on the Windows host. 2) Install Npcap which you've already done. 3) at a Windows Command Prompt enter the IPCONFIG command and look for the interface which is connected to your Wired network based on the appropriate IP address you've got. 4) at a simh command prompt, enter a SHOW ETHERNET command looking for the name of the interface you observed above for your host's IP address. That interface which is most simply indentified by ethN in the displayed list is what you need to use in your device attach commands. 5) sim> ATTACH XQ ethN
After doing this, your simulators can use the LAN that the host wired network adapter and potentially get IP addresses via DHCP (if the simulated OS supports DHCP), or use static addresses on that LAN. These simulators will be able to communicate directly with the host system's IP address just fine. Notice, that OpenVPN and bridging and TAP have absolutely nothing to do with this setup. You should start with the suggested setup WITHOUT OpenVPN and bridging. OpenVPN and bridging was possibly needed with simh versions more than 15 years ago, but not for many years.
Note: There are current problems with Npcap v1.73 properly operating with some LAN adapters on some Windows versions. If you have these specific problems then reverting to Npcap v1.60 (https://npcap.com/dist/npcap-1.60.exe) is known to not have these problems.
Additionally, simulators built with Cygwin may or may not have properly working network functionality. Use a pre-built windows binary or build using Microsoft Visual Studio VC++.
Hi Mark. Thank you for the detailed explanation.
show device eth
return the list of devices. I checked the code in sim_ether.c to be sure that the output matched the expectations :)The 'Network Bridge' device is the one assigned the IP class for the wired network. I have two different IP subnets to ensure that I can easily identify wired from Wife.
Ethernet adapter Network Bridge:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : Microsoft Network Adapter Multiplexor Driver
Physical Address. . . . . . . . . : 00-FF-53-D8-FF-E2
DHCP Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
Link-local IPv6 Address . . . . . : fe80::bb28:381f:4647:9294%3(Preferred)
IPv4 Address. . . . . . . . . . . : 192.168.0.37(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Lease Obtained. . . . . . . . . . : Friday, 31 March, 2023 23:33:13
Lease Expires . . . . . . . . . . : Friday, 7 April, 2023 23:33:05
Default Gateway . . . . . . . . . : fe80::4e12:65ff:fe0b:ad86%3
192.168.0.1
DHCP Server . . . . . . . . . . . : 192.168.0.1
DHCPv6 IAID . . . . . . . . . . . : 498347673
DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-26-87-51-B9-58-96-1D-56-7D-72
DNS Servers . . . . . . . . . . . : 192.168.0.1
2a02:8109:aa3f:aa58:4e12:65ff:fe0b:ad86
NetBIOS over Tcpip. . . . . . . . : Enabled
wmic
to identify the correct GUID for the device
{0395DC1D-93A4-4029-A44D-C8C6C8A582AA} Network Bridge
With the GUID, I can then use 'attach xq \Device\NPF_{0395DC1D-93A4-4029-A44D-C8C6C8A582AA}`, which seems to work.
sim> attach xq \Device\NPF_{0395DC1D-93A4-4029-A44D-C8C6C8A582AA}
%SIM-INFO: Eth: opened OS device \Device\NPF_{0395DC1D-93A4-4029-A44D-C8C6C8A582AA} - Microsoft Network Adapter Multiplexor Driver
sim>
Unfortunately, I have to use TAP for my quem guests. I hope that SimH and quem can co-exist on the same host...
Meanwhile, is it possible to trace the communication from the guest OS in the SImH network device? Or even execute some sort of SimH IP set-up for the device and check what happens?
I will do more tests and keep you posted about my progress...
Update...I managed to re-order the network devices and now I can access the Network Bridge from SImH
sim> attach xq eth12
%SIM-INFO: Eth: closed \Device\NPF_{0395DC1D-93A4-4029-A44D-C8C6C8A582AA}
%SIM-INFO: Eth: opened OS device \Device\NPF_{0395DC1D-93A4-4029-A44D-C8C6C8A582AA} - Microsoft Network Adapter Multiplexor Driver
sim> show xq eth
ETH devices:
eth0 \Device\NPF_{30E1334A-F0CA-4CE3-9C66-81A39F835558} (TAP-Windows Adapter V9)
eth1 \Device\NPF_{71E8BD25-8CE5-448C-A891-22D5B7F10EB4} (Intel(R) Ethernet Connection (11) I219-V)
eth2 \Device\NPF_{08A4F390-3015-439A-98DD-25CFC4D8F6B5} (WAN Miniport (Network Monitor))
eth3 \Device\NPF_{BBC54154-9F83-42B6-A753-20BFFA0E996C} (WAN Miniport (IPv6))
eth4 \Device\NPF_{377A463A-88E0-44CF-BC01-551AEAF735FF} (WAN Miniport (IP))
eth5 \Device\NPF_{AEAFB797-A013-49E9-9B18-CB48EE1FA0E3} (Bluetooth Device (Personal Area Network))
eth6 \Device\NPF_{BB0C25FF-B149-49B0-BD0B-2B429047DA88} (Intel(R) Wi-Fi 6 AX201 160MHz)
eth7 \Device\NPF_{0997AA7B-A015-41E5-BB1B-8BE216E9406A} (VMware Virtual Ethernet Adapter for VMnet8)
eth8 \Device\NPF_{42189E1A-1DA7-4890-9AE9-4DB7B8C273B2} (VMware Virtual Ethernet Adapter for VMnet1)
eth9 \Device\NPF_{2DA78E61-BC65-411A-8C15-02F285C4F71A} (Microsoft Wi-Fi Direct Virtual Adapter #2)
eth10 \Device\NPF_{9106E602-5048-4A11-8FD8-2C4C9B381311} (Microsoft Wi-Fi Direct Virtual Adapter)
eth11 \Device\NPF_{CBAB5258-9961-4A9D-8E7D-5DF723BE1DEE} (VirtualBox Host-Only Ethernet Adapter)
eth12 \Device\NPF_{0395DC1D-93A4-4029-A44D-C8C6C8A582AA} (Microsoft Network Adapter Multiplexor Driver)
eth13 \Device\NPF_{AF44DF97-AFE7-400C-9BDA-7086E33DEB93} (TAP-Windows Adapter V9 #57)
eth14 \Device\NPF_{CB01BC4A-1E59-4C47-8CD9-3EB0B31558BE} (TAP-Windows Adapter V9 #56)
eth15 \Device\NPF_{39441378-A31A-4652-BC3E-E672F5B00C2A} (TAP-Windows Adapter V9 #55)
eth16 \Device\NPF_{5E98CAB4-2B13-4541-9F2C-9D26EDB30D19} (TAP-Windows Adapter V9 #54)
eth17 \Device\NPF_{A9679D53-3A80-4D1F-8ECD-2B5666DAAF8F} (TAP-Windows Adapter V9 #53)
eth18 \Device\NPF_{8E74B213-B309-4DB3-AE8D-E9566DCFD9F8} (TAP-Windows Adapter V9 #52)
eth19 \Device\NPF_{DF534FAD-EBA9-4422-88CB-47C395F29ABF} (TAP-Windows Adapter V9 #51)
Open ETH Devices:
XQ eth12 (Microsoft Network Adapter Multiplexor Driver)
Ethernet Device:
Name: \Device\NPF_{0395DC1D-93A4-4029-A44D-C8C6C8A582AA}
Reflections: 0
Self Loopbacks Sent: 2
Self Loopbacks Rcvd: 2
Host NIC Address: 00:FF:53:D8:FF:E2
Jumbo Truncated: 2
Packets Sent: 2
MAC Filter[ 0]: 08:00:2B:B0:7C:CC
BPF Filter: (((ether dst 08:00:2B:B0:7C:CC)))
sim>
I am going to set-up debug for the unit and analyze the output
set debug xq_debug.txt
SET XQ DEBUG=TRACE;CSR;VAR;WARN;SETUP;SANITY;REG;PACKET;DATA;ETH
How can I monitor the communication between the simulator device and the SimH device?
I missed answering this question, so: There are 2 ways: 1) Once you have a Npcap version that works correctly with your OS and network adapter, Wireshark will let you see details. 2) The ethernet library and the XQ device has various debug options that will display details about what is going on.
- Npcap is already installed. SimH compiled and working. The output from show device eth return the list of devices. I checked the code in sim_ether.c to be sure that the output matched the expectations :)
I didn't say that building under Cygwin wouldn't work. I precisely meant that simulators built under Cygwin may or may not work. Since your current setup isn't working as you expect, the build is a variable in your problem space. Known working simulators can be found in the pre-built binaries located at: https://github.com/simh/simh/suites/11903443893/artifacts/623085420 you should try with the vax.exe simulator from there.
Likewise, since your using Npcap 1.73 and things aren't working, trying with 1.60 is another useful variable.
It isn't clear that having OpenVPN and your bridge setup is an advantage or maybe part of the problem. What I described definitely works correctly, so each of the things you are doing differently needs to be considered as contributing to what isn't working.
You could try with the vax.exe from here: https://github.com/simh/simh/suites/11977682803/artifacts/628547788 which can now support up to 40 network interfaces, but otherwise is unchanged.
I will be more than happy to help identify what is wrong and how it can be fixed.
Thank you. I can see a thorough list of interfaces now.
I noticed a small difference between my compiled code and your compiled code. I have a different version step that yours.
Mine
MicroVAX 3900 simulator Open SIMH V4.1-0 Current git commit id: 4e159a04
Yours
MicroVAX 3900 simulator V4.0-0 Current git commit id: ede38413
Anyway....
I also enabled a second wired NIC on my host, which is not in a Network Bridge. (eth12).
...
eth39 \Device\NPF_{C3259C17-86AA-4852-96F6-9D42CF5A6438} (mytap3440)
Open ETH Devices:
XQ eth12 (Intel-2.5Gb)
Ethernet Device:
Name: \Device\NPF_{EDF7020B-3C8F-4980-866D-2CF83E8CF66F}
Reflections: 1
Self Loopbacks Sent: 2
Self Loopbacks Rcvd: 2
Host NIC Address: B4:2E:99:FC:92:FE
Packets Sent: 3
Packets Received: 3
Asynch Interrupts: Disabled
Read Queue: Count: 0
Read Queue: High: 2
Read Queue: Loss: 0
Peak Write Queue Size: 1
MAC Filter[ 0]: 08:00:2B:AA:BB:CC
BPF Filter: (((ether dst 08:00:2B:AA:BB:CC)) and not ((ether src 08:00:2B:AA:BB:CC))) or ((ether dst 08:00:2B:AA:BB:CC) and (ether src
08:00:2B:AA:BB:CC)) or ((ether dst B4:2E:99:FC:92:FE) and (ether proto 0x9000))
sim>
simulator set-up
CPU idle=ULTRIX, idle enabled, model=MicroVAX 3900 (KA655), NOAUTOBOOT
Implementing: Base Instruction Group
Emulating: Packed-Decimal-String-Group Extended-Accuracy-Group Emulated-Only-Group
64MB, HALT to console
Memory (@0x00000000): 16 Mbytes (MS650-BA)
Memory (@0x01000000): 16 Mbytes (MS650-BA)
Memory (@0x02000000): 16 Mbytes (MS650-BA)
Memory (@0x03000000): 16 Mbytes (MS650-BA)
XQ address=20001920-2000192F, no vector, BR4, MAC=08:00:2B:AA:BB:CC
type=DELQA, polling=disabled, sanity=OFF
throttle=disabled, DEQNALock=OFF, leds=(ON,ON,ON)
attached to eth12
When firing up the boot, it takes a long time to pass 13..
and then again in 03
%SIM-INFO: Loading boot code from internal ka655x.bin
KA655-A V5.3, VMB 2.7
Performing normal system tests.
40..39..38..37..36..35..34..33..32..31..30..29..28..27..26..25..
24..23..22..21..20..19..18..17..16..15..14..13..12..11..10..09..
08..07..06..05..04..03..
Tests completed.
>>>
When booting the simulator with ULTRIX 4.5, it correctly identify the NIC MAC address
qe0 at uba0 csr 174440 vec 764, ipl 17
qe0: DEC DELQA Ethernet Interface DEQNA-lock Mode, hardware address 08:00:2b:aa:bb:cc
TCP/IP is set-up on the guest side
# ifconfig qe0
qe0: 192.168.0.75 netmask ffffff00 flags=0x443<DYNPROTO,RUNNING,BROADCAST,UP>
broadcast: 192.168.0.255
# ping 192.168.0.1
192.168.0.1 is alive
AND IT WORKS!!!!!!
$ telnet 192.168.0.75
Trying 192.168.0.75...
Connected to 192.168.0.75.
Escape character is '^]'.
ULTRIX V4.5 (Rev. 47) (sys00a0)
login: root
Password:
Requires secure terminal
Connection closed by foreign host.
Now I decided to run the same using my version of the simulator. First thing is the very quick time that the initial test takes.
sim> boot
%SIM-INFO: Loading boot code from internal ka655x.bin
KA655-A V5.3, VMB 2.7
Performing normal system tests.
40..39..38..37..36..35..34..33..32..31..30..29..28..27..26..25..
24..23..22..21..20..19..18..17..16..15..14..13..12..11..10..09..
08..07..06..05..04..03..
Tests completed.
NIC correctly identified
qe0 at uba0 csr 174440 vec 764, ipl 17
qe0: DEC DELQA Ethernet Interface DEQNA-lock Mode, hardware address 08:00:2b:aa:bb:cc
TCP/IP set-up
# ifconfig qe0
qe0: 192.168.0.75 netmask ffffff00 flags=0x443<DYNPROTO,RUNNING,BROADCAST,UP>
broadcast: 192.168.0.255
and it not works....Indeed there is something wrong with the code when compiled by me.
...and now a third test using your new code and attaching my Network Bridge
The initial CPU test now takes a long time at 31
, 13
, and 03
....
sim> b
%SIM-INFO: Loading boot code from internal ka655x.bin
KA655-A V5.3, VMB 2.7
Performing normal system tests.
40..39..38..37..36..35..34..33..32..31..30..29..28..27..26..25..
24..23..22..21..20..19..18..17..16..15..14..13..12..11..10..09..
08..07..06..05..04..03..
Tests completed.
Loading system software.
(BOOT/R5:0 DUA0
.....
qe0 at uba0 csr 174440 vec 764, ipl 17
qe0: DEC DELQA Ethernet Interface DEQNA-lock Mode, hardware address 08:00:2b:aa:bb:cc
....
# ifconfig qe0
qe0: 192.168.0.75 netmask ffffff00 flags=0x443<DYNPROTO,RUNNING,BROADCAST,UP>
broadcast: 192.168.0.255
# ping 192.168.0.1
192.168.0.1 is alive
I have two way network access From my simulator to a Linux box
# telnet 192.168.0.15 22
Trying 192.168.0.15...
Connected to 192.168.0.15.
Escape character is '^]'.
SSH-2.0-OpenSSH_8.8
From my Linux box to the simulator
$ telnet 192.168.0.75
Trying 192.168.0.75...
Connected to 192.168.0.75.
Escape character is '^]'.
ULTRIX V4.5 (Rev. 47) (sys00a0)
login: root
Password:
Requires secure terminal
Connection closed by foreign host.
As for everything working optimally when compiled with Cygwin, that's aways going to be a problem. The directly windows compiled simulators leverage the Windows OS APIs optimally. Under Cygwin, you've got a Posix emulation layer which attempts to match Posix details and, for the most part, does an OK job, but as you've noticed not completely. That's why I said it may or may not work. If it works well enough for you then, fine, otherwise compile with a native Microsoft compiler or use a pre-build binary.
When the simh code is built natively on various Linux, macOS and other *nix systems, it works well since it leverages the native OS system calls without something trying to provide an emulation layer.
As for OpenVPN and your bridge setup. I suspect that QEMU may work just like simh does without OpenVPN and a bridge. You should try that combo. From what I can tell, QEMU uses libpcap to talk to ethernet devices which is precisely what simh does (via Npcap). Very early simh (most of 20 years ago), needed some sort of bridge or a second (dedicated) network interface ONLY because we didn't realize that pcap always returned legitimate packets on read. Some of these might be smaller than 64 bytes if they were sent by something on the local machine (like an ARP packet). We originally discarded short packets as runts, but what we really needed to do was to pad any such short packet to 64 bytes and pass it into the simulator. Once we started doing that no bridging was needed.
OpenVPN may provide other functionality which, in theory could be useful, but certainly not for basic functionality.
Hello again....two follow-up questions :)
vax
simulator I should be able to issue the command fload copy 0
. However, when I try, I am getting Unit not attached
error message. Reading some articles, I have the impression that on this case the copy
program will be loaded from an internal floppy, which i understood to be internal (coded) in the vax780
program. Am I missing something here?
- Googling around, when using the vax simulator I should be able to issue the command fload copy 0. However, when I try, I am getting Unit not attached error message. Reading some articles, I have the impression that on this case the copy program will be loaded from an internal floppy, which i understood to be internal (coded) in the vax780 program. Am I missing something here?
The FLOAD command is specific to the VAX780 simulator and it is intended to play a similar role to the original VAX780's front end PDP11 which had the console floppy drive. I've never had an occasion to use this command, but looking at the code, it requires a VAX780 console floppy with an RT11 file system image to be attached to the console device which has the name CS.
- Now I have more than one simulator running at same time with network connection. However, the network connection is extremely slow in or out. As explained by you previously, I am using a wired NIC. Both guests are using different MAC address and IP addresses. I tried to connect from the host machine, and the network connection was also very slow. Any idea what could be the problem?
Define extremely slow.
The last time I measured simulator network performance (more than 10 years ago), continuous throughput was at least 20Mbits/sec which exceeds the original Ethernet speeds that these systems were connected to.
You may want to try your observations when running the relevant simulators without any IDLE settings to see if there is a difference in behavior.
vmstat 1
running in each telnet client made the performance much faster (slow was on the sorts of a 4800baud modem). When you mentioned 'idle', I assume you refer to cpu idle
. After changing all guests to set cpu noidle
, indeed the throughput from the guests is even faster then on the tests I made this morning.
- Thank you . Solved. After your explanation I decided to read the documentation more carefully and do a more thorough search on the Internet and I managed to find the necessary floppy image.
It might be useful to describe the context you were working on when doing this here, and to provide a link to the relevant image so someone else would have another meaningful set of information to find when searching...
- ...
Your tests are using telnet to connect over the LAN and not to simulated serial ports (DZ, VH or other), right? You might want to compare those different behaviors. If you go down that path, you should set the mux port line speed to the highest value simulated OS is capable of (19200, 38400...).
telnet 192.168.0.85 30033
), I have a communication speed of a 9600baud line. I wonder if there is a way to "increase" the speed to a faster baud rate.
- I am connecting to the telnet service on the guest side, not in the DZ serial service. Now that you mentioned it, connecting to the DZ service (
telnet 192.168.0.85 30033
), I have a communication speed of a 9600baud line. I wonder if there is a way to "increase" the speed to a faster baud rate.
The base port speeds on the DZ and VH lines are controlled by the port speed setting in the guest OS. You can 'magnify' the base speed set by the OS on your attach command for the DZ device:
sim> attach dz 30033,speed=*n
where n is a number between 2 and 32 which will produce a telnet session with a speed that is n times the OS programmed speed.
Mark, what is the process for project contribution? I am going through the source code and I am finding some small corrections for better execution standard, output, and communication.
Maybe you should describe the details here, and/or if you're familiar with working with git and submitting pull requests (also known as PRs), then you can submit a PR which includes the potential changes. These will be reviewed and feedback provided and probably ultimately be merged into the master branch here and also back into github.com/simh/simh.
If you're not familiar with git and managing PRs, you can send changed files directly to me and I'll review the details, and submit a PR with you as the author. I can be reached directly at: mark@infocomm.com
Somehow I never answered this question:
- Is there anyway that I can implement a serial-to-serial connection between guest, to simulate a UUCP environment?
Yes there is. Look at sim> HELP DZ ATTACH
for info about null modem connections between simulators.
I have been reading and following loads of documentations trying to figure it out how to make the network in SimH to work. More specifically, I am having problems with microvax3900, pdp750, pdp780. The SimH documentation in geral is very prolific in the *NIX space, but very poor on Windows.
My status is as follows:
-netdev tap,id=mynet0,ifname=mytap3452 -device sungem,netdev=mynet0,mac=52:54:00:12:34:52
xq eth
, the output is limited to the first 20 interfaces (it is hard coded at compile time).attach xq \Device\NPF_GUID
, I simply used wmic to list all the nic interfaces and use the GUI for the TAP interface I wanted. This yelds toattach xq \DEVICE\NPF_{30E1334A-F0CA-4CE3-9C66-81A39F835558}
.show xq eth
, it correctly shows the associated interface:When installing ULTRIX 3.0, it seems to be working and I don't see any error messages. The ULTRIC network set-up seems to be correct. However, monitoring the mytap interface (WIndows) it shows no traffic. As result, a ping from inside the guest does not works.
So, my questions:
My setup