协议扩展。体系结构

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

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

局部的图片

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

局部的图片

行为

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

例如,TCP客户端行为由处理TCP客户端数据流事件的回调函数(on_data)组成。为了实现基于TCP协议的MBLB (Message Based Load Balancing)功能,可以为该回调函数添加代码,处理来自客户端的TCP数据流,并将字节流解析为协议消息。

背景:

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

有效载荷:

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

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

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

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

客户端功能。On_data (ctxt, payload) ns.send(ctxt, payload)output, "DATA", {DATA = payload.data}) end 
协议扩展。体系结构

在本文中