Forum Discussion
Stuck...Simple iRule? Not sure...req for Help
We are trying to use our LTM to route medical imaging (also known as DICOM) traffic to from our clients to one of two medical imaging archives (also known as a PACS) at our headquarters.
A little background on DICOM communication- to send a DICOM image to a PACS you need 3 things. An IP address, port number, and “Application Entity Title” (AKA- AE Title). Think of the AE Title as a host name for the PACS. The AE Title on the PACS must be unique to that network.
Our environment- Primary PACS communication happens on 192.168.1.10, port 12001, AE Title PACS_01. Backup PACS communication happens on 192.168.1.20 port 12001, AE Title PACS_02. We would like to have our clients point their systems to a VIP on the LTM so at the flip of a switch, route traffic to the backup PACS. The problem is, the AE Title. The backup PACS will refuse any traffic with an AE Title of PACS_01.
If we could have all of our clients point to VIP 192.168.1.15, Port 12001, AE Title INBOUND, we could modify the AE Title with an iRule, depending on which PACS we are routing to.
I have done some tcp captures and found the packet that the AE Title is contained in, however I am not sure how to code the iRule to do the TCP:payload replace. I was passed an example of the syntax that might help, but as I am a iRule Noob, I am having a hard time. Any help would be greatly appreciated.
Here is the code that I have:
when CLIENT_ACCEPTED {
TCP::collect
}
when CLIENT_DATA {
TCP::payload replace [lindex OLDTITLE 0] 8 NEWTITLE
TCP::release
}
}
- HamishCirrocumulusA couple of thoughts... Is the AE_Title only at the beginning of the request? And how big can the request be? An open collect is dangerous. You really want to use managable sized chunks of data to collect and release.
- nitassEmployeejust wondering how we can modify tcp payload according to pool member which is selected. in case of HTTP, we have HTTP_REQUEST_SEND event but this is tcp.
- khumfleetNimbostratusHamish;
- HamishCirrocumulusPosted By nitass on 02/23/2012 06:57 AM
Then the client wouldnt have to worry about a second host to open the connection to.
- HamishCirrocumulusPosted By khumfleet on 02/23/2012 08:24 AM
Or you could try the single vs approach as above with the single vs detecting the primary PAC being down and accessing the secondary as a separate pool with a rewrite dynamically. So client doesnt need to open a second connection. But that may be overkill for you perhaps.
H
- nitassEmployeethanks Hamish!
- HamishCirrocumulusAssuming that we have twompools. A primary (default) and a secondary. Primary is always used (like group priority) unlesss its down. So in CLIENT_CONNECTED event we check available members of default group. If the number of available members is 0 we set the pool to the secindary pool using the 'pool' command and the setup a TCP::collect for the data.
- HamishCirrocumulusPosted By nitass on 02/24/2012 12:14 AM
One VS as above though.
H
- khumfleetNimbostratusHamish,
- Nathan_68320NimbostratusWhy not just have both servers use the same AE title? Then you could just distribute traffic to both of them and there would be no need to create this iRule?
- JulienM_23339NimbostratusNathan, Your feedback is interesting. Do you use any specific iRule or stream profile to rename the AE ? Thank you
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com