mirror of
				https://git.haproxy.org/git/haproxy.git/
				synced 2025-10-27 06:31:23 +01:00 
			
		
		
		
	s/accidently/accidentally/ s/any ot these messages/any of theses messages/ s/catched/caught/ s/completly/completely/ s/convertor/converter/ s/desribing/describing/ s/developper/developer/ s/eventhough/even though/ s/exectution/execution/ s/functionnality/functionality/ s/If it receive a/If it receives a/ s/In can even/It can even/ s/informations/information/ s/it will be remove /it will be removed / s/langage/language/ s/mentionned/mentioned/ s/negociated/negotiated/ s/Optionnaly/Optionally/ s/ouputs/outputs/ s/outweights/outweighs/ s/ressources/resources/
		
			
				
	
	
		
			56 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| When NetScaler application switch is used as L3+ switch, information
 | |
| regarding the original IP and TCP headers are lost as a new TCP
 | |
| connection is created between the NetScaler and the backend server.
 | |
| 
 | |
| NetScaler provides a feature to insert in the TCP data the original data
 | |
| that can then be consumed by the backend server.
 | |
| 
 | |
| Specifications and documentations from NetScaler:
 | |
|   https://support.citrix.com/article/CTX205670
 | |
|   https://www.citrix.com/blogs/2016/04/25/how-to-enable-client-ip-in-tcpip-option-of-netscaler/
 | |
| 
 | |
| When CIP is enabled on the NetScaler, then a TCP packet is inserted just after
 | |
| the TCP handshake. Two versions of the CIP extension exist.
 | |
| 
 | |
| Legacy (NetScaler < 10.5)
 | |
| 
 | |
|   - CIP magic number : 4 bytes
 | |
|     Both sender and receiver have to agree on a magic number so that
 | |
|     they both handle the incoming data as a NetScaler Client IP insertion
 | |
|     packet.
 | |
| 
 | |
|   - Header length : 4 bytes
 | |
|     Defines the length on the remaining data.
 | |
| 
 | |
|   - IP header : >= 20 bytes if IPv4, 40 bytes if IPv6
 | |
|     Contains the header of the last IP packet sent by the client during TCP
 | |
|     handshake.
 | |
| 
 | |
|   - TCP header : >= 20 bytes
 | |
|     Contains the header of the last TCP packet sent by the client during TCP
 | |
|     handshake.
 | |
| 
 | |
| Standard (NetScaler >= 10.5)
 | |
| 
 | |
|   - CIP magic number : 4 bytes
 | |
|     Both sender and receiver have to agree on a magic number so that
 | |
|     they both handle the incoming data as a NetScaler Client IP insertion
 | |
|     packet.
 | |
| 
 | |
|   - CIP length : 4 bytes
 | |
|     Defines the total length on the CIP header.
 | |
| 
 | |
|   - CIP type: 2 bytes
 | |
|     Always set to 1.
 | |
| 
 | |
|   - Header length : 2 bytes
 | |
|     Defines the length on the remaining data.
 | |
| 
 | |
|   - IP header : >= 20 bytes if IPv4, 40 bytes if IPv6
 | |
|     Contains the header of the last IP packet sent by the client during TCP
 | |
|     handshake.
 | |
| 
 | |
|   - TCP header : >= 20 bytes
 | |
|     Contains the header of the last TCP packet sent by the client during TCP
 | |
|     handshake.
 |