private string GetIPGlobalStatistics(
            NetworkInterfaceComponent version,
            IPGlobalProperties properties)
        {
            IPGlobalStatistics ipStat = null;

            StringBuilder ipStatBuilder = new StringBuilder();

            try
            {
                switch (version)
                {
                    case NetworkInterfaceComponent.IPv4:
                        ipStat = properties.GetIPv4GlobalStatistics();
                        ipStatBuilder.Append("IPv4 Global Statistics\n");
                        break;
                    case NetworkInterfaceComponent.IPv6:
                        ipStat = properties.GetIPv6GlobalStatistics();
                        ipStatBuilder.Append("IPv6 Global Statistics:");
                        break;
                    default:
                        throw new ArgumentException("No such IP version");

                }
            }
            catch (NetworkInformationException)
            {
                return String.Empty;
            }

            ipStatBuilder.Append("=================================================\n");

            ipStatBuilder.AppendFormat(" Computer name ................. : {0}\n",
                properties.HostName);
            ipStatBuilder.AppendFormat(" Domain name ................... : {0}\n",
                properties.DomainName);
            ipStatBuilder.AppendFormat(" Node type ..................... : {0}\n",
                properties.NodeType);
            ipStatBuilder.AppendFormat(" DHCP scope .................... : {0}\n",
                properties.DhcpScopeName);
            ipStatBuilder.AppendFormat(" Is WINS proxy ................. : {0}\n",
                properties.IsWinsProxy);

            ipStatBuilder.AppendFormat(" Forwarding enabled ............ : {0}\n",
                ipStat.ForwardingEnabled);
            ipStatBuilder.AppendFormat(" Interfaces .................... : {0}\n",
                ipStat.NumberOfInterfaces);
            ipStatBuilder.AppendFormat(" IP addresses .................. : {0}\n",
                ipStat.NumberOfIPAddresses);
            ipStatBuilder.AppendFormat(" Routes ........................ : {0}\n",
                ipStat.NumberOfRoutes);
            ipStatBuilder.AppendFormat(" Default TTL ................... : {0}\n\n",
                ipStat.DefaultTtl);

            ipStatBuilder.AppendFormat(" Inbound Packet Data:\n");
            ipStatBuilder.AppendFormat("  Received ..................... : {0}\n",
                ipStat.ReceivedPackets);
            ipStatBuilder.AppendFormat("  Forwarded .................... : {0}\n",
                ipStat.ReceivedPacketsForwarded);
            ipStatBuilder.AppendFormat("  Delivered .................... : {0}\n",
                ipStat.ReceivedPacketsDelivered);
            ipStatBuilder.AppendFormat("  Discarded .................... : {0}\n",
                ipStat.ReceivedPacketsDiscarded);
            ipStatBuilder.AppendFormat("  Header Errors ................ : {0}\n",
                ipStat.ReceivedPacketsWithHeadersErrors);
            ipStatBuilder.AppendFormat("  Address Errors ............... : {0}\n",
                ipStat.ReceivedPacketsWithAddressErrors);
            ipStatBuilder.AppendFormat("  Unknown Protocol Errors ...... : {0}\n\n",
                ipStat.ReceivedPacketsWithUnknownProtocol);

            ipStatBuilder.AppendFormat(" Outbound Packet Data:\n");
            ipStatBuilder.AppendFormat("  Requested .................... : {0}\n",
                 ipStat.OutputPacketRequests);
            ipStatBuilder.AppendFormat("  Discarded .................... : {0}\n",
                ipStat.OutputPacketsDiscarded);
            ipStatBuilder.AppendFormat("  No Routing Discards .......... : {0}\n",
                ipStat.OutputPacketsWithNoRoute);
            ipStatBuilder.AppendFormat("  Routing Entry Discards ....... : {0}\n\n",
                ipStat.OutputPacketRoutingDiscards);

            ipStatBuilder.AppendFormat(" Reassembly Data:\n");
            ipStatBuilder.AppendFormat("  Reassembly Timeout ........... : {0}\n",
                ipStat.PacketReassemblyTimeout);
            ipStatBuilder.AppendFormat("  Reassemblies Required ........ : {0}\n",
                ipStat.PacketReassembliesRequired);
            ipStatBuilder.AppendFormat("  Reassembly Failures .......... : {0}\n",
                ipStat.PacketReassemblyFailures);
            ipStatBuilder.AppendFormat("  Packets Reassembled .......... : {0}\n",
                ipStat.PacketsReassembled);
            ipStatBuilder.AppendFormat("  Packets Fragmented ........... : {0}\n",
                ipStat.PacketsFragmented);
            ipStatBuilder.AppendFormat("  Fragment Failures ............ : {0}\n",
                ipStat.PacketFragmentFailures);

            return ipStatBuilder.ToString();
        }