张焕杰 james@ustc.edu.cn Tel: 3601897(O) Linux作为校园网出口的优化 张焕杰 james@ustc.edu.cn Tel: 3601897(O)
计算机网络安全基础 2019年2月23日 主要内容 功能要求 系统优化 计算机网络安全基础
功能要求 区分国内国外地址 策略路由 利用netfilter/iptables实现 校内IP分3种权限:校内、国内、国际 利用ip rule 实现 服务器要永远走教育网出去 用户的IP根据情况选择 科大有7种选择
Iptables的性能优化 校内IP的状态 避免针对每个IP增加iptables的条目,因为这样做iptables规则很多,性能非常低 可以考虑使用ippool或后续的ipset,他们的优点都是利用单独的数据结构存放一个IP的状态(属于一个pool或set,可以认为对应0和1) 使用ippool或ipset后,一条iptables规则就可以起到原来iptables几千条规则的作用,避免了iptables顺序查找的低效率,执行速度能快几百倍 http://ipset.netfilter.org/
建议的做法 建立类型为nethash的cernetfree ipset 建立类型为ipmap的cernetip ipset,并缺省绑定cernetfree Cernetfree中加入免费地址列表 如果为出校IP,增加到cernetip既可以 如果为出国IP,增加到cernetip,并解除与cernetfree的缺省绑定
科大的优化 科大用的是自己写的,每个IP在内存中有1个字节用来存放IP的权限(0-255) 有一个数据结构用来存放网络的权限(0-255),目前仅仅存放教育网免费地址列表,权限都是50 增加了一个iptables规则处理: 如果校内IP的权限>=对方网络的权限,允许转发数据包
科大的优化(2) /proc/iprightmap/netright 50 58.17.0.0 255.255.0.0 50 58.19.0.0 255.255.0.0 /proc/iprightmap/202.38.64.0_255.255.224.0 50 202.38.66.87 50 202.38.66.89 100 202.38.66.90 50 202.38.66.92
Ip rule 系统优化 性能问题 路由时,顺序查找路由规则表 如果表的项目太多(现在有3000个用户在线,有3000条规则,平均一次要查1500项才会找到),效率不高 因此需要优化,用其他方式替换顺序查找
使用ipset的优化 建立若干个ipset,对应不同的路由方式 在mangle表中,对不同的ipset设置不同的fwmark Ip rule 根据fwmark进行路由选择
科大的优化策略 由于决定使用哪个路由表的关键词是源地址,而校内的源地址有限(即使256个C也就是64KB个) 因此可以用一个或多个数组来存放这些信息 数组的大小为校内IP的个数,内容为该IP使用哪个路由表
数据结构 长度 256*32 100 101 102 …. 202.38.64.0 255.255.224.0 210.45.64.0 255.255.240.0 210.45.112.0 长度 256*16 100 101 102 …. 长度 256*16 100 101 102 …. 一个数组存放校内的IP段信息 每段有个数组存放该段的策略信息 修改路由时查找规则表的处理过程,利用以上结构来查
实际的控制 为了方便,kernel和应用程序采用/proc文件系统通信,文件/proc/iprule/control为控制文件 写 A 202 38 64 0 255 255 224 0到control增加一段内部地址 增加地址后/proc/iprule下会增加2个文件 202.38.64.0_255.255.224.0和 B202.38.64.0_255.255.224.0 读这两个文件可以得到某个IP的策略信息 前面一个是ASCII的 后面一个是binary的,偏移量0的字节就是202.38.64.0的策略
实际的控制 写 C XXX 202 38 64 1到control修改策略,xxx为路由表 如 echo “C 101 202 38 64 51” > control 设定202.38.64.51使用路由表101
使用情况 P4 2.4G的CPU 进出通信达到850Mbps,每秒处理16万个数据包 CPU利用率接近100%
其他优化 更高性能可以通过以下途径获得 多台负载分担 结构调整 两台并行,可以提高一倍的性能 如用3角路由,从NAT设备进入校园网校园网的数据包直通(这部分不需要权限检查) 从校内发出到CERNET的数据包直接出去
网络通原理 教育网出口 电信出口NAT 202.38.64.59 Switch 网通出口NAT 校内网络
优化后使用情况 2台 Xeon 2.4G的CPU 单台 进出通信达到450Mbps 每秒处理7万个数据包 CPU利用率接近70%
谢谢