how does the baseboard management controller (BMC) talk to the host machine? - ipmi

I can turn off a server by using ipmitool. But how does the BMC initiate the off command to the Host OS? How are the two connected internally?
And also when the host is powered down how does the bmc turn on the machine? I am assuming it's able to talk to the OS when the machine is on and it's not able to do so when it's turned off. In that case how does the BMC turn on the host machine

BMC does not use OS services. BMC is completely OS independent and it may monitor and control hardware even when no OS is running or installed. BMC power line is independent on the host power and BMC is powered even when the host is powered off. It is ensured by power source design. BMC can control the host power supply. BMC usually has a direct hardware link to the power supply. BMC sends to power-off command directly to the power supply and not to the host OS.

A general design is:
BMC connects to a CPLD, which controls the power sequence. When power off is needed, BMC will trigger the CPLD so that it is the same as if someone pushes the front panel power button.

Related

VOLTTRON Central behind a firewall

If there is a VOLTTRON central deployment on ZMQ, would I need to have network ports on a firewall opened up if the actual VOLTTRON central instance is behind a firewall?
Basically I am looking at deploying an edge device in a building to collect some BACnet data (temporary research deployment) and hoping to aim this edge device instance to our central VOLTTRON instance that runs a SQL historian that is behind a firewall.
Does ZMQ run on port 5555? And I would I need to have our firewall opened up or port forwarding on this port to handle the bi-directional ZMQ bus?
VOLTTRON itself by default is on port 22916 (this is the zmq port volttron uses). This is configured independently from the web port. When initializing a web instance there are some more dependencies that are required than just the initial bootstrap.py so you will want to use bootstrap.py --web to make sure those are added.
If the edge devices will have a web server on them, then there must be an inbound connection from browser or code to reach that end device. In order for a volttron central agent to connect to an edge device, the edge device instance must have the vip-address of the central instance in its $VOLTTRON_HOME/config file or within the platform agent's config file. Edge devices should have the volttroncentralplatform agent installed on it for this scenario.
ZMQ could run on whatever port you configure it to. To configure volttron to use it specify the vip-address in the ~/.volttron/config file to whatever port you would like i.e. vip-address=tcp://127.0.0.1:22916 (only bound to 127.0.0.1 ip address).

How to connect a volttron platform to one on a remote server

I would like to connect a volttron platform running on a raspberry pi connected to the local network of a building to a second volttron platform running on a virtual personal server.
I know that two volttron platforms can interact with each other using the Volttron Central Management Agent or using the ForwardAgent. However, it is not clear to me what security method is used. Our ICT manager only agrees to set up a connection if the information is exchanged through https.
Could you help me formulating an answer to ICT regarding the security issue? And give me some pratical tips on how to set up the volttron configuration files? I'm not very familiar with network/security technologies. Maybe important to know: the server has a proxy and a reverse-proxy security.
Thx!
Your security person is correct. You should only set the platform up in a "real" environment through https. Since you have a proxy, that should be forwarded to the volttron central agent.
internet (443) -> proxy -> http://127.0.0.1:8080
The proxy in this case is on the same machine as the volttron central platform.
This is how we are doing it with apache as our proxy. One could do the same thing with a different web server such as nginx.
Hopefully that helps
If you are indeed trying to connect from a single instance to another instance (e.g. the way the forwarder does). Then the answer is the security is using public/private key pairs with curve mq providing perfect forward security. All traffic between platforms is 100% encrypted and only authorized agents can transmit across the instances bus.
http://curvezmq.org/

share sql database across virtual machines on remote desktop

I am looking to use a SQL database on one VM as the enterprise repository for an application on another VM. Basically, I need to connect the SQL database to the initial virtual machine on the new virtual machine.
Well you can't do this through remote desktop, the protocols are entirely different. However, as far as networking two virtual machines together goes that would really depend on the vendor of your virtualization software.
VMWare workstation allows you to create local private networks, while the free versions of VMWare and Virtualbox both support bridged network functionality where they obtain their own IP address from your local network. The standard passthrough networking functionality will not work correctly since your app server will not know how to reference the database instance.

How to connect to a database running on VM?

I got a question here. Seems a little complicated in my mind. Hope I can make myself clear. :)
I have a Win7 system (system A) with a Win7 VM (system B) running on it.
System B is connected to a intranet through VPN to log some realtime data into a local sql server database. Internet connection is disabled by administrator so System B is separated from outside.
Now System A wants to connect to this database and read these realtime data.
Is it possible?
I don't have any experience with vmware, but assuming you can use any VM, here's a solution for VirtualBox:
Setup a network interface on your VM, that's visible to the host
system only (reference):
Host-only networking is another networking mode that was added with
version 2.2 of VirtualBox. It can be thought of as a hybrid between
the bridged and internal networking modes: as with bridged networking,
the virtual machines can talk to each other and the host as if they
were connected through a physical ethernet switch. Similarly, as with
internal networking however, a physical networking interface need not
be present, and the virtual machines cannot talk to the world outside
the host since they are not connected to a physical networking
interface.
Configure port forwarding on system B ([external_port] -> [host_over_vpn]:[service_port])
Connect to [system_B_ip_over_provided_interface]:[external_port] as if you were connecting to the database directly.
yes it is possible. Just give correct IPs.

Silverlight and TCP

Is it possible for Siverlight to communicate directly with an open TCP port on the user's machine?
in a word No.
You can use sockets (and therefore TCP) to communicate with open ports (in a limited range) on the server that is hosting the application, but you cannot connect to any other machines. if you need to interoperate with something on the client machine i would suggest using the new COM interoperability in Silverlight 4 (here is an example)
You can connect to an open TCP port on any machine that serves a security policy file or to any machine, including the local client, if Silverlight runs with elevated privileges.
Elevated privileges are not likely to be problematic as in scenarios like this you are probably developing a line of business application.
At my company I implemented the binary TCP protocol of an RFID server in Silverlight. The server must be connected to the local network and its dns name (or ip address) be known, other than that there is no problem in doing this sort of thing. It is around since Silverlight 3.

Resources