Holyzone 力尊信通 SE Club

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 224|回复: 2

diameter 协议长连接拆分

  [复制链接]

2

主题

3

帖子

21

积分

新手上路

Rank: 1

积分
21
发表于 2016-11-10 17:01:23 | 显示全部楼层 |阅读模式
diameter 协议作为升级版的AAA协议F5 有非常好的协议支持。针对diameter 协议有很多事件可以控制,一般配置diameter 协议的负载
均衡使用F5 的mblb 长连接拆分技术来实现。

   一.    首先介绍下链接的集中模式:
  • 长连接:指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接,一般需要自己做在线维持。


  • 短连接:是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接,一般银行都使用短连接。


  • 同步:报文发送和接收是同步进行,既报文发送后等待接收返回报文。 同步方式一般需要考虑超时问题,即报文发出去后不能无限等待,需要设定超时时间,超过该时间发送方不再等待读返回报文,直接通知超时返回。


  • 异步:报文发送和接收是分开的,相互独立的,互不影响。这种方式又分两种情况:
    (1)异步双工:接收和发送在同一个程序中,由两个不同的子进程分别负责发送和接收
    (2)异步单工:接收和发送是用两个不同的程序来完成。


  • 单工(Simplex):通信双方设备中发送器与接收器分工明确,只能在由发送器向接收器的单一固定方向上传送数据。


  • 全双工(Full Duplex):通信双方设备既是发送器,也是接收器,两台设备可以同时在两个方向上传送数据。


  • 半双工(Half Duplex):通信双方设备既是发送器,也是接收器,两台设备可以相互传送数据,但某一时刻则只能向一个方向传送数据。


    二.下面介绍下diameter 的协议的握手过程:
1、Diameter 的初始化(握手)被负载均衡到server 1
2、session-id=y 是第一个CCR请求,被负载均衡至server 2,由于server 2并没有与LTM建立Diameter初始化连接,所以server 2先与LTM建立Diameter会话,然后转发session-id=y 的CCR请求至server 2。并以session-id=y为key进行会话保持。
3、session-id=x CCR请求,没有会话保持纪录,根据轮询算法负载均衡至server 1
4、session-id=y CCR请求,根据会话保持被负载均衡至server 2。
5、session-id=x CCR请求,根据会话保持被负载均衡至server 1。
6、STR请求,根据会话保持被负载均衡至server 2。
7、STA返回LTM,并转发至client
8、client DWR ,LTM 返回 DWA ,(DWR\DWA消息不做LTM不做转发)
9、DPR 断开请求,LTM将其广播至所有服务器,服务器返回DPA完成LTM与server间的拆链。LTM返回DPA给client ,完成client与LTM间的拆链。
三 ,实列说明:
下面这段脚本在业务模式中使用异步单工的业务模式,通过F5 的diameter profiles 实现对diameter 协议的长连接拆分,同时关联mblb
profile。
注意:一般长连接拆分的业务类型充当客户端的都是前置机或者代理机数量较少的模式
    when DIAMETER_INGRESS {
#当系统接收到diameter 数据包时触发DIAMETER_INGRESS 事件,类似CLIENT_DATA 事件
    if { [clientside] } {
#判断diameter 事件的方向,我们是异步单工只会有客户端发布消息
        if { [DIAMETER::is_request] } {
#判断是否是diameter 请求报文,我们将根据请求报文的内容进行负载均衡
            set avp461data [DIAMETER::avp data get 461 octetstring]
#set 的变量是事先需要和用户确认的字段,一般项目中用户会提供协议每个段的标识位,我们根据需求取值,剩下的就是一个switch 的判断了。
            switch $avp461data {
                "A" {
                    pool pool_20001
                }
                "B" {
                    pool pool_20002
                }
                "C" {
                    pool pool_20003
                }
                "D" {
                    pool pool_20004
                }
                "E" {
                    pool pool_20005
                }
            }
}
}

}

回复

使用道具 举报

0

主题

4

帖子

24

积分

新手上路

Rank: 1

积分
24
QQ
发表于 2016-11-10 20:40:39 | 显示全部楼层
好深奥
回复

使用道具 举报

夫彪磊 该用户已被删除
发表于 2016-11-19 18:43:38 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|Holyzone 力尊信通 SE Club  

GMT+8, 2017-5-26 11:32 , Processed in 0.039255 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表