Question : Problem: WTF's up with my iSCSI network config ???

Experts:

I just purchased an EMC AX4-5i dual-SP SAN appliance; two racks, one for SAS drives and the other with SATA drives. I'm just setting up the appliance and I'm stuck, hoping you all can help me figure something out.

If you look at the attached file you'll notice my vanilla setup: 1 server with 3 NICs connected to a pair of GigE switches configured in a meshed network connecting a pair of SP units, each with two iSCSI ports of their own.

The problem I'm having is that on the server i can only ping one of two switches and only two of four iSCSI ports

C:\Program Files\Support Tools>ipconfig /all

Windows IP Configuration

   Host Name . . . . . . . . . . . . : galapagos
   Primary Dns Suffix  . . . . . . . : xxx.local
   Node Type . . . . . . . . . . . . : Unknown
   IP Routing Enabled. . . . . . . . : Yes
   WINS Proxy Enabled. . . . . . . . : Yes
   DNS Suffix Search List. . . . . . : xxx.local


Ethernet adapter 192.168.253.98:

   Connection-specific DNS Suffix  . : xxx.local
   Description . . . . . . . . . . . : Intel(R) PRO/1000 MT Server Adapter
   Physical Address. . . . . . . . . : 00-04-23-AB-6A-0B
   DHCP Enabled. . . . . . . . . . . : No
   IP Address. . . . . . . . . . . . : 192.168.253.98
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . :

Ethernet adapter 192.168.253.99:

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Intel(R) PRO/1000 MT Server Adapter #2
   Physical Address. . . . . . . . . : 00-04-23-AB-6A-0C
   DHCP Enabled. . . . . . . . . . . : No
   IP Address. . . . . . . . . . . . : 192.168.253.99
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . :

Ethernet adapter 192.168.10.25:

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : HP NC3163 Fast Ethernet NIC
   Physical Address. . . . . . . . . : 00-50-8B-EB-15-1C
   DHCP Enabled. . . . . . . . . . . : No
   IP Address. . . . . . . . . . . . : 192.168.10.25
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.10.1
   DNS Servers . . . . . . . . . . . : 192.168.10.13
                                       192.168.10.25
   Primary WINS Server . . . . . . . : 192.168.10.13
   Secondary WINS Server . . . . . . : 192.168.10.25

C:\Program Files\Support Tools>ping 192.168.253.199

Pinging 192.168.253.199 with 32 bytes of data:

Reply from 192.168.253.199: bytes=32 time=3ms TTL=64
Reply from 192.168.253.199: bytes=32 time=2ms TTL=64
Reply from 192.168.253.199: bytes=32 time=1ms TTL=64
Reply from 192.168.253.199: bytes=32 time=2ms TTL=64

Ping statistics for 192.168.253.199:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 1ms, Maximum = 3ms, Average = 2ms

C:\Program Files\Support Tools>ping 192.168.253.198

Pinging 192.168.253.198 with 32 bytes of data:

Request timed out.
Request timed out.
Request timed out.
Request timed out.

Ping statistics for 192.168.253.198:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

C:\Program Files\Support Tools>ping 192.168.253.200

Pinging 192.168.253.200 with 32 bytes of data:

Reply from 192.168.253.200: bytes=32 time<1ms TTL=64
Reply from 192.168.253.200: bytes=32 time<1ms TTL=64
Reply from 192.168.253.200: bytes=32 time<1ms TTL=64
Reply from 192.168.253.200: bytes=32 time<1ms TTL=64

Ping statistics for 192.168.253.200:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

C:\Program Files\Support Tools>ping 192.168.253.201

Pinging 192.168.253.201 with 32 bytes of data:

Request timed out.
Request timed out.
Request timed out.
Request timed out.

Ping statistics for 192.168.253.201:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

C:\Program Files\Support Tools>ping 192.168.253.202

Pinging 192.168.253.202 with 32 bytes of data:

Reply from 192.168.253.202: bytes=32 time=1ms TTL=64
Reply from 192.168.253.202: bytes=32 time<1ms TTL=64
Reply from 192.168.253.202: bytes=32 time<1ms TTL=64
Reply from 192.168.253.202: bytes=32 time<1ms TTL=64

Ping statistics for 192.168.253.202:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 1ms, Average = 0ms

C:\Program Files\Support Tools>ping 192.168.253.203

Pinging 192.168.253.203 with 32 bytes of data:

Request timed out.
Request timed out.
Request timed out.
Request timed out.

Ping statistics for 192.168.253.203:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

C:\Program Files\Support Tools>

So before I go any further and start configuring iSCSI initiators or LUNs, etc...I wanted to clear up this networking mystery


Thanks,
juckyt

Answer : Problem: WTF's up with my iSCSI network config ???

Not quite sure I understand your question.

If you have a class like this:

class foo {
private:
    int a, b, c;


   ...other declarations...
};

Then this is a class, i.e. it says "If there's an object of type foo anywhere, this is what a foo can do and looks like".

Specifically, it doesn't create a foo anywhere, it just says IF you create one, this is what it's like.

Now, you can create a foo in data storage:

foo x(...);

(in global area or as static member of another class).

Then the x is created in data storage and since the x contain x.a, x.b and x.c then those are created in data storage.

Alternatively, you can allocate a foo object on heap. In that case you need a pointer to it:

foo * ptr = new foo(...);

Since this foo is created on heap the members foo -> a, foo -> b and foo -> c are also all created on the heap. They aren't created by explicit new int; for each but they are created as part of the foo object so when you say new foo you get them all in one bunch. The point is that the foo IS those three members and so they are all created on the heap when the foo is.

As another alternative you can create them on stack as a local variable:

foo x(...);

In this case x.a, x.b and x.c are all on stack for the same reason.

There are two exceptions to this rule:

1. class members declared static is ALWAYS created in data area.

These members do not belong to a particular instance so they aren't created together with the instance. Instead, they are created by themselves in data area.

2. If a class member is a pointer then that pointer is created on data/heap/stack as other elements but the value pointed to can be located in a different area all depending on how you initialize it.

For example if a pointer is initialized in the constructor to point to some heap space then even if you create this object on stack or in data area the data pointed to by that pointer is always created on heap. If you create the object on heap then the pointer will still also create another object on heap and in general these are two separate objects so apart from the fact that the member of one points to the other they are otherwise unrelated. Of course, if you do not initalize it to point on heap but instead point to somewhere else, then it will point to that place - independent of where the pointer itself is stored.

For example:

class bar {
private:
    int * x;
public:
     bar(int & y) : x(& y) {}
};

Consider this function:

void func()
{
     int k;
     bar * bptr = new bar(k);

    ....
}

Here the bptr is allocated on stack and points to a bar that is allocated on heap. That bar object has a member bar -> x which is pointing to the variable k which is allocated on stack. Be careful with things like this, if the function return and the object allcoated on heap are still alive it will then still point to where the variable k was but that variable is destroyed when the function returns and so the pointer will not point to a valid location. Thus an object like bar above should be deleted  or the pointer set to point to some other place before the function func returns.

Hope this explains.

Alf
Random Solutions  
 
programming4us programming4us