I notice during the NGREP session , there is this field called Call-ID . It is something like this format :-
9ce97fd3-1a800040@172.16.1.123.
 
According to the RFC , it is said that this field is generated by the UA who started the request. I was just wondering, how did they get the IP Address at the back ? Which IP Address did they reference it from ?
Most often this is the address of the interface the UA is using.
 
From the RFC, it also says that the all request/response in the dialog should use the same Call-ID. When they say this, does it mean the entire field with the ip address (eg. 9ce97fd3-1a800040@172.16.1.123 ) or just the front part of it (eg. 9ce97fd3-1a800040 ) ?

Entire.

I notice that during a dialog session from a UA to the server going to the PSTN gateway, it was refering to this Call-ID until the point when the request was forwarded to the PSTN gateway. When the PSTN gateway replies, it replied with a same Call-ID with a different IP address at the back (9ce97fd3-1a800040@123.234.123.234 )
 
172.16.1.123 - Private address of the UA
123.234.123.234 - Public address of the UA
 
Strange ? Give your comment. Somehow i feel that this implementation is wrong.
Yes, a unique dialog is composed of to/from and call-id. Creating a new call-id creates a new dialog and can only be done by a dialog-creation SIP message.
g-)