<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>Hi Richard / Neeraj,</p>
    <p>Thanks for bringing this up. It's one of the interesting topic
      for IBM.</p>
    <p>Some of the thoughts here.....<br>
    </p>
    <p>When we have multiple BMCs as part of a single system, then there
      are 3 main parts into it.</p>
    <p>1/. Discovering the peer BMCs and role assignment<br>
      2/. Monitoring the existence of peer BMCs - heartbeat <br>
      3/. In the event of loosing the master, detect so using #2 and
      then reassign the role<br>
    </p>
    <p>Depending on how we want to establish the roles, we could have
      Single-Master, Many-slave or Multi-Master, Multi-Slave. etc<br>
    </p>
    <p>One of the team here is trying to do a POC for Multi BMC
      architecture and is still in the very beginning stage. <br>
      The team is currently studying/evaluating the available solution -
      Corosync / Heartbeat / Pacemaker".<br>
      Corosync works nice with the clusters, but we need to see if we
      can trim it down for BMC.<br>
      <br>
      If we can not use corosync for some reason, then need to see if we
      can use the discovery using PLDM ( probably use the terminus IDs )<br>
      and come up with custom rules for assigning Master-Slave roles.<br>
    </p>
    <p>If we choose to have Single-Master and Many-Slave, we could have
      that Single-Master as an entity acting as a Point of Contact for
      external request and then could orchestrate with the needed BMCs
      internally to get the job done<br>
    </p>
    <p>I will be happy to know if there are alternatives that suit BMC
      kind of an architecture</p>
    <p>!! Vishwa !!<br>
    </p>
    <div class="moz-cite-prefix">On 12/10/19 4:32 AM, Richard Hanley
      wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAH1kD+YrfgnLGdiTOao4t7kXDw7494MQM7pxOAZCbEP6i4EVcw@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="ltr">Hi Neeraj,
        <div><br>
        </div>
        <div>This is an open question that I've been looking into as
          well.  </div>
        <div><br>
        </div>
        <div>For BMC to BMC communication there are a few options.</div>
        <div>
          <ol>
            <li>If you have network connectivity you can communicate
              using Redfish.</li>
            <li>If you only have a PCIe connection, you'll have to use
              either the inband connection or the side band I2C*.  PLDM
              and MCTP are protocols that defined to handle this use
              case, although I'm not sure if the OpenBMC implementations
              have been used in production.</li>
            <li>There is always IPMI, which has its own pros/cons.</li>
          </ol>
          <div>For taking several BMCs and aggregating them into a
            single logical interface that is exposed to the outside
            world, there are a few things happening on that front.  DMTF
            has been working on an aggregation protocol for Redfish. 
            However, it's my understanding that their proposal is more
            directed at the client level, as opposed to within a single
            "system".</div>
        </div>
        <div><br>
        </div>
        <div>I just recently joined the community, but I've been
          thinking about how a proxy layer could merge two Redfish
          services together.  Since Redfish is fairly strongly typed and
          has a well defined mechanism for OEM extensions, this should
          be pretty generally applicable.  I am planning on having a
          white paper on the issue sometime after the holidays.</div>
        <div><br>
        </div>
        <div>Another thing to note, recently DMTF released a spec for
          running a binary Redfish over PLDM called RDE.  That might be
          a useful way of tying all these concepts together.  </div>
        <div><br>
        </div>
        <div>I'd be curious about your thoughts and use cases here. 
          Would either PLDM or Redfish fit your use case?</div>
        <div><br>
        </div>
        <div>Regards,</div>
        <div>Richard</div>
        <div><br>
        </div>
        <div>*I've heard of some proposals that run a network interface
          over PCIe.  I don't know enough about PCIe to know if this is
          a good idea.</div>
      </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">On Mon, Dec 9, 2019 at 1:27 PM
          Neeraj Ladkani <<a href="mailto:neladk@microsoft.com"
            target="_blank" moz-do-not-send="true">neladk@microsoft.com</a>>
          wrote:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px
          0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
          <div lang="EN-US">
            <div>
              <p class="MsoNormal">Are there any standards in managing
                heterogeneous systems? For example in a rack if there is
                a compute node( with its own BMC) and storage node( with
                its own BMC) connected using a PCIe switch.  How these
                two BMC represented as one system ?  are there any
                standards for BMC – BMC communication? </p>
              <p class="MsoNormal"> </p>
              <p class="MsoNormal"> </p>
              <p class="MsoNormal">Neeraj</p>
              <p class="MsoNormal"> </p>
            </div>
          </div>
        </blockquote>
      </div>
    </blockquote>
  </body>
</html>