协议扩展-体系结构

为了实现流量级的可扩展性,Citrix ADC设备上的流量处理公开为独立处理模块的管道。当它从入口到出口处理它时,流量通过它们。管道中的这些模块遵循一个无共享模型。消息传递用于将流量数据从管道中的一个模块发送到下一个模块。

流量处理管道中的某些点是可扩展的,因此您可以添加代码来定制Citrix ADC行为。

局部图像

默认情况下,流量绕过不添加任何代码的可编程模块。

局部图像

行为

用于定制流量处理的可编程接口称为行为。行为基本上是Citrix ADC设备上可用的常见可编程模式的形式化。这些行为由一组预定义的事件回调函数组成。您可以通过提供符合行为的回调函数来实现行为。

例如,TCP客户端行为由一个回调函数(对_数据)组成,该函数处理TCP客户端数据流事件。要为基于TCP的协议实现基于消息的负载平衡(MBLB),可以为此回调函数添加代码,以处理来自客户端的TCP数据流,并将字节流解析为协议消息。

背景:

行为中的回调函数通过上下文(即处理模块状态)调用。上下文是处理模块的实例。例如,对于不同的客户端TCP连接,使用不同的上下文调用TCP客户端行为回调。

有效载荷:

除了上下文之外,行为回调还可以有其他参数。通常,其余参数作为有效负载传递,有效负载是所有参数的集合。

因此,可编程处理模块实例可以被视为实例状态加事件回调函数的组合,即上下文加行为。流量作为事件有效负载通过管道流动。

有关Citrix ADC API扩展,请参见Citrix ADC扩展API参考.

下面的代码段显示了一个用户定义的函数,用于处理TCP客户端数据流事件。上下文和负载通过Citrix ADC代码传递给函数。这段代码只是将每次调用中接收到的TCP数据转发到管道中的下一个处理模块上下文。在本例中,下一个模块是负载平衡(LB)上下文,它是Citrix ADC本机模块。

函数client.on_data(ctxt,payload)ns.send(ctxt.output,“data”,{data=payload.data})end<--需要复制-->
协议扩展-体系结构