想起大约十年以前,我们利用FPGA处理NGN信令,涉及到网保险之过滤、统计等。当时,我们对此确保的过滤是半定死的,比如UDP还是TCP、端口需要不需过滤、如果急需端口过滤端口多少、IP需要续需要过滤、如用IP过滤IP如何过滤,如此设计是为对当下之应用来说呢就够。

  配置:

  如果熟悉抓包工具,比如tcpdump,会想到平常之时节咱们对于2~4交汇的抓包的确不见面想WAF那样动辄regex作为判断标准,而是相同堆放基于固定位置(比如对UDP包,其端口号、IP地址等在保管着之舞狮还是稳定的)的数值等式或未等式作为bool值连成的bool表达式。我们便以tcpdump命令的参数来证实,比如tcpdump
tcp and dst host 192.168.218.1 and src port 22,其中tcp、 dst host
192.168.1.1、src port
23就是三独不等之bool值。如果熟悉tcpdump和TCP/IP,对照资料,我们可以更修改上述规则,把tcp、dst
host、src
port解析为偏移,从而整个规则写作偏移的款式。在多数的运下,一久过滤里面这么独立的bool值未跳8独。

防火墙 6379 之端口打开

  用RAM来测算bool表达式虽说无法通用,因为其储存伴随着bool表达式的长是就方级的扩大,但略、快。设计此类电路,简单即是得意,对于电路的概括来说是要的。并且,可以好这样设置多漫长规则,但各级条规则基本是单独工作。

统计 1

  话题有些扯远了,越是今天消息如此膨胀,WAF越是会偏于为用计算机来化解要未嵌入式设备,但和自己而干的话题拉扯到之还是保险过滤。在信膨胀的今日,百M甚至千M已经休可知满足我们的需,主干网上万M交换机用来满足好数据量的置换。速度最好抢,我们实际上没辙完全采用CPU来拍卖就所有,CPU只可作为终点配置当功效,而对此万M网络本身的操纵应利用ASIC(Application
Specific Integrated
Circuit,专用集成电路),也不怕是为这个以特别规划一个芯片,而无用于多种场子的通用芯片。然而ASIC无法升级,若使升级只能替换。FPGA可以取代这个,同时满足ASIC的需要与升级换代之需求,目前高端的FPGA的主时钟可以很快,但本为非常昂贵。

redis的安装: 百度

  我一度考虑了因此逆波兰式去算,但于这种场合似乎发生多之非便民,倒是RAM简单暴力直接。那或会见咨询,如何过滤规则过于复杂了怎么惩罚,那便一直考虑无支持,任何产品都发出一个设计原则,不容许无条件的满足所有人数之需求。

  • sadd  key     添加 
  • srem  key     删除
  • smembers key   查看成员值
  • scard key     返回成员个数
  • 等等

  随着FPGA收包的经过,依次匹配规则中之偏移量,计算出每个bool值,从而最终拼出查RAM的地方,从而查出该包是经过或者拦。

存储Hash:

  硬件的利益是高速、直接,软件的便宜是大扩展性,我们了好构成双方。用上位机(可能是控制的处理器,也可能独自是中的一个嵌入式CPU)把tcp
and dst host 192.168.218.1 and src port
22如此便于看的物翻译啊偏移量、bool值这样的物,并且给起各个bool值计算着偏移量从小至那个排列,如果基础之bool值计算只有极端多8久这样的景况,那么实际上就待FPGA内部举行一个8位地址1个输出的RAM(可以安装,所以选择RAM而非ROM)即256bits的蕴藏的RAM,上位机把RAM里面储存的有所值算出来并传被FPGA。

  劣势:

  甚至被,软件还得比这个越发强,可以设想合多久规则,切割多长长的规则,其实多长规则的大多只bool表达式最终为透过and或者or来连接的,最后可能还有一个not,从总体来拘禁究竟要一样漫漫规则。

非关系型数据库    redis 和 mongodb

  WAF(Web Application Firewall,
Web防火墙)的兑现有强伎俩,基于regex(Regular
Expression,正则表达式),然后编译成一个大状态机是当前主流的措施。当然,阿拉云安全之主架构师讲了个ppt,直接说regex来开防火墙有无客观之地方,理由是运regex做防火墙,其计算复杂度高的那么一个regex是整系统的短板,如果这个regex的辰复杂度过高,攻击者完全可以运用就无异点攻击WAF达到DDOS的作用。从而,他道regex迟早应该退出WAF的小圈子,而因此人工智能白名单的新一代WAF才是鹏程WAF的主流。这员仁兄说的是起道理的,正则表达式做的WAF异常复杂,运算强度强,这些瓶颈业内早就熟悉,未来应有属于人工智能。接下的相当一段时间,我啊真的要思考思考下一代的WAF是现实性如何更好的重组人工智能。话说回来,毕竟在可预见的工夫里,基于regex的WAF还是主流。吐槽一下,正则表达式真的是一个我未明了该说是天才还是该说是垃圾堆的翻,让自身当写及同样浅就想呕吐槽同样破。


  比如前面,tcp and dst host
192.168.218.1 and src port
22,3单bool值映射到1只布尔值,其实仅仅需要2^3=8bits囤积,8个bits分别吗0,0,0,0,0,0,0,1,这虽是RAM存储的情。

  exec 执行工作

  版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖。如要转贴,必须注明原文网址

  http://www.cnblogs.com/Colin-Cai/p/7609137.html 

  作者:窗户

  QQ:6679072

  E-mail:6679072@qq.com

Jedis   java的连接redis的一个jar包

  • set                建立
  • get                查看
  • getset          返回一个字符串,也尽管是键的旧值。
    如果键不有,则归nil
  • del               删除
  • incr             数字有增无减1
  • decr            数字减少1
  • incrby         数字加从定义
  • decrby       数字减少从定义
  • append      返回一个整数,在增加操作后底字符串的尺寸。

改配置文件来晚令运行   

  • keys *
  • del key
  • exists key     返回1意味是
  • get key
  • rename key    重命名

  配置:


 

    dir ./  在当前目录保存

  1. High performance   高并发读写
  2. Huge storage   海量数据的过人效率存储和做客
  3. High scalability & High availability 高但扩展性和高可用性

Nosql  == not only sql

 ps -ef | grep redis    
查看redis服务是否起来

  优势:

    save 300 10


kill -9 <进程号>       
杀死进程来关闭redis-server

Redis   key的通用操作

安装好redis之后(linux)

为足以为此  ./bin/redis-cli
shutdown  来关闭redis

 

连接池

 

Redis的数据结构:

统计 2

统计 3

  劣势:

  • hset key key_name values           
  • hset key key_name1 values1        建立hash,赋值单个
  • hmset key key_name value key_name1 value1       建立hash,赋值多单
  • hget key key_name             获得单个值
  • hmget key key_name key_name1     获得多个价
  • hgetall key       获得任何之key,value
  • hlen     获得长度
  • hkeys   获得键
  • hvals   获得值

 

对比图:


  • RDB方式  可以指定多少秒写副磁盘一破
  • AOF方式 读取log
  • 甭管持久化
  • 同时RDB和AOF
  1. 易扩展
  2. 活的数据模型
  3. 运据量高性能,高可用

./bin/redis-server
./redis.conf      用配置文件启动redis服务

连接redis的例子,创建连接池底例证

 

    save 900 1

  优势:

Nosql 特性:



    appendonly no/yes  是不是启用

积存String常用命令:

 

  • lpush
  • rpush
  • lrange   后再次参数index  范围
  • lpop     取出后消失
  • rpop
  • llen
  • 等等

AOF方式:

存储Set:

    save 60 10000

存储Sorted-Set

redis默认是RDB方式:

统计 4

  • zadd myset 50 p 60 j 70 x     添加有序的set
  • zadd 100 p        如果value相同,分数会盖
  • zscore myset p     查询p的分数
  • zcard myset      查询长度
  • zrem  myset  p   删除p
  • 等等

Redis 持久化:

from:http://www.imooc.com/learn/839

Nosql数据库的季那个分类:

    #appendfsync always  每改一糟就是一同同赖

 

  discard 取消事务

统计 5

统计 6

 


 

解决:

  • 做缓存
  • 任务队列
  • 网站访问统计
  • 采取排行榜
  • 多少过期处理
  • 等等

    #appendfsync no    不同步

Redis特性:

redis应用场景:

 

  进入appendonly.aof文件去最后之命就得达标取消的目的

    dbfilename dump.rdb  保存文件称

redis是c语言统计开发之

和list不同,不同意出现更的素

  multi  事务块

存储List:

  1. 字符串             String
  2. 字符串列表      list
  3. 哈希                 hash
  4. 字符串集合      set
  5. 稳步字符串      sorted-set
  1. k-v存储
  2. 列存储 Hbase
  3. 文档存储 Mongodb
  4. 图表数据库

    #appendfsync everysec  每秒同步同赖

统计 7