在OpenBSD支持服务器直接返回
缴入由weerd上周二6月17日1时06分50秒2008(GMT)
的冗余部门的冗余部。


它已经几个星期以来, 网络***马拉松,n2k8在日本,我们已经见过很多很大的覆盖面。从n2k8不太明显的变化之一是,工作开始了一个非常酷的新功能, PF(4)(8)relayd,即服务器直接返回(DSR)。在 通用,c2k8***马拉松,在埃德蒙顿DSR做了很多工作,这意味着现在可以使用OpenBSD的负载平衡器在这个特定的设置(当然,支持IPv4和IPv6)。

下面我们来看看DSR是什么更详细一点,问一些关于它的问题的主要开发者之一,并配置一个简单的设置,DSR为IPv4和IPv6。

的负载均衡通常用于分配负载在多个资源(CPU,内存,磁盘,网络等),并获得更高的可靠性,因为多台服务器(这也简化了升级的过程中)中引入的冗余。在大多数情况下,该服务上的负载均衡器,然后和NAT到后端服务器的请求处理的虚拟IP地址(VIP)。答复从服务器传输,通过负载平衡器,返回给客户端。然而,往往有更多的回报比传入请求的流量。通过HTTP提供大文件时,它不是经常可以看到10 Mbit或来电查询返回流量可用于100Mbit。

由于所有的返回流量流经负载平衡器,它很快成为你的负载均衡集群的瓶颈。输入DSR。随着DSR,服务器回复到客户端本身(因此称为“服务器直接返回”),使负载平衡器没有返回到客户端所有流量转发。下图说明NAT和DSR基于负载均衡的区别:

natvsdsr.png

正如你可以看到,客户端(192.0.2.1)连接到其VIP(192.0.2.253)上的负载均衡(LB)。LB NATS在NAT的情况下,通过连接到服务器1或服务器2。服务器有LB作为其默认网关,以便回复通过LB返回给客户端。IP明智的,客户端看到192.0.2.1:1024 - > 192.0.2.253:80,的LB认为192.0.2.1:1024 - > 192.0.2.253:80 - > 10.0.0.10:80和服务器看到192.0.2.1:1024 - > 10.0.0.10:80。现在的情况下,DSR,LB不NAT连接在IP层上,但任一服务器的数据包转发几乎不变。在这种情况下,客户端,LB和服务器的所有 192.0.2.1:1024 - > 192.0.2.253:80。当然,服务器需要接受交通为VIP,所以这应该是一个回环接口(而不是一个真正的接口上配置,你不希望混淆路由器的ARP为VIP)。现在,当服务器回复时,流量去直接从服务器通过路由器到客户端,完全绕过LB。

正如你能想象,充满DSR支持,需要相当多的工作。ReykFlöter(@ reyk)加入了初始位DSR支持relayd的(8)在n2k8。Reyk,在提交的消息,提到,这种变化被认为在温泉:

CVSROOT / CVS模块名称:SRC变化:reyk@cvs.openbsd.org 2008/05/06 19:49:29修改后的文件:        usr.sbin / relayd:parse.y pfe_filter.c relayd.8 relayd.conf.5                         relayd.h日志消息:另类的“路由”模式到relayd重定向地图PF路由,而不是默认的骑师。它是一个第一步支持直接服务器返回(DSR),异步模式负载均衡的服务器发送不同的网关一样的答复三层交换机/路由器来处理更高的回报流量金额。因为PF的状态处理这种情况下不是最优的,但它刚看到一半的TCP连接,会议时间被迫后固定秒数。有许多讨论,想在温泉

正如您可以看到的DSR和PF(4),PF负载平衡器上的情况下,只能看到一半的TCP会话(后面将详细讨论),所以它是不可能执行的严格要求,目前提供的状态检查。什么是需要的,是PF TCP状态跟踪信息较少的一些方法:

CVSROOT / CVS模块名称:SRC变化:henning@cvs.openbsd.org 2008/06/09 22点二十四分17秒修改后的文件:        SYS /净“:if_pfsync.c pf.c pf_ioctl.c pfvar.h日志消息:实现一个的马虎tcpstate跟踪序列不看在所有的数字。可怕的后果;只用于非常具体的TOBE情况下,你没有看到连接的所有数据包,例如非对称路由。确定ryan reyk的理论

当然马虎状态跟踪可以用于其他(assymmetric)的情况下也一样,但它肯定是需要DSR情况。注意,马虎国家更易遭受***(读pf.conf文件(5) 更多的细节),所以你需要,确保交通别处理智。

与开发商目前返乡***从激烈的一周,现在我们有一个完整的工作DSR实施基地OpenBSD安装。我问他是怎么工作的DSR和未来发展计划上的任何Reyk。Reyk答案,而等待他的飞行回到德国:

weerd:什么时候,为什么你开始工作DSR?

reyk:比利牛斯@ [皮埃尔-伊夫·Ritschard]我实施DSR一段时间的思考。这是我们的TODO列表中,但相当低优先级的地方。我们有疯狂的想法来实现它,所有的人都太复杂,所以我们从来没有开始工作就可以了。但前几天的n2k8***马拉松,在日本,我真的很喜欢,我有主意,只是使用PF(4)路由。这不是明摆着的吗?于是,我开始做一些初步的测试,以验证它的工作原理只是前n2k8,实现它在网络***马拉松relayd。

weerd:到目前为止,我们已经见过改变PF relayd。什么系统的其他部分(如有)DSR支持,你必须改变了吗?

reyk:DSR是完整的,它不需要任何其他的变化比我所做的那些为relayd和最后的“马虎”的状态跟踪PF。从网络管理员的角度来看,你必须更新pf.conf中包括一个额外的锚允许插入路由过滤规则,从而增加“锚”relayd / *“在过滤器部分,除了”骑师锚“relayd / *”'翻译规则。配置在relayd.conf是相当简单,它通常也需要继电器的外部IP地址绑定到loopback设备每个loadbalanced主机。

weerd:所以DSR是彻底完蛋了,没有别的需要做吗?

reyk:需要做一些测试,当然。当我终于回到了德国,并把它挂到了10G的ProCurve交换机和一些快速的机器,我会做一些压力测试。但它是更好的,如果我得到良好的反馈从OpenBSD的社区大约使用DSR不同,也许是异国情调的设置。它为你工作?也许我需要提高的文档给一些有关如何配置DSR上relayd盒和负载平衡主机更好的例子。

weerd:你能告诉我们一些有关的实施细则?

reyk,在n2k8我实现了DSR所有会话有一个限制,即一个固定的和绝对的超时时间,默认为10分钟。会话不能比这更长的运行,他们没有时间,因为我基本上碰到了tcp.opening超时。PF的复杂的状态过滤不处理DSR TCP连接,你只看到流要求的一半,但我需要保持状态,记得从池中的负载平衡主机目标主机。

我跟亨宁[亨宁·布劳尔]关于PF(4)如果它确实松散状态处理的方式来添加一个可选的模式。A模式,这是不够的创建和跟踪一个PF TCP状态,认识的RST和鳍,那半流和异步路由作品。真正的防火墙,如果你不知道你在做什么,不应该被使用的东西是可怕的不安全。最初,我们没有找到它的名称,所以我们谈到“松州”,“contrack”,“的iptables / netfilter的模式”,最后是“保持状态(马虎)”。

亨宁完成马虎的模式期间c2k8,我能够更新relayd的使用这种模式,而不是解决办法,之前我用一个固定的超时。我做化妆品的调整PF的马虎状态处理来检测TCP半连接上飞 - 我做的甚至更为马虎的工作与DSR。

什么是weerd:DSR和/或relayd未来的计划?

reyk:未来已经在这里-我实现了另一个很好的事情在relayd c2k8使用马库斯@'的BINDANY转移答辩扩展允许完全透明中继会话。它允许运行以连接到目标主机与原客户端的IP地址,从另一个侧面7层继电器,它那种陈旧需要X转发,对于在某些情况下的HTTP报头,并让花哨的东西,喜欢完全透明的SSL封装。但是,这是另一个故事......

weerd:DSR整理的任何意见?

reyk:不要使用它。这是需要处理真正大量的带宽,如流的东西,但它完全否定了真正的负载均衡与PF重定向和额外的安全性我们的数据包过滤器的安全利益。所以,除非你真的需要它,你应该得到更快的盒子和运行的传统模式,而不是。

有没有媲美状态过滤PF,只是流行语“SPI(状态数据包检测)的质量检查不出声。新马虎模式是如此可怕的和可用的同时,,但更糟其他防火墙不能做更多的事情比我们马虎模式。

weerd:谢谢你回答这些问题,和你的工作,特别是在一般和DSR OpenBSD的您的时间Reyk,。

让我们来看看如何配置DSR使用OpenBSD。我们将建立在上面的图片所描述的情况,所有的系统将运行,OpenBSD系统(路由器,负载平衡器和服务器)。当然IPv4和IPv6上,我们将配置我们的服务。在此设置中,我使用的是一组 有VR(4) 接口的的ALIX 2C3机器。

  • 客户端配置:

    • 新/ etc/hostname.vr0:

      INET 192.0.2.1 255.255.255.128 192.0.2.127的inet6为3ffe :: 1 64


    • 新的/ etc / mygate中(路由器在我们的例子中):

      192.0.2.2为3ffe ::



  • 路由器配置:

    • 新/ etc/hostname.vr0(网络负载均衡器和Web服务器):

      INET 192.0.2.254 255.255.255.128 192.0.2.255INET别名10.0.0.2 255.255.255.0 10.0.0.255的inet6 3FFE:1 :: 64的inet6别名3FFE:2 :: 64


    • 新/ etc/hostname.vr1的(网络客户端):

      INET 192.0.2.2 255.255.255.128 192.0.2.127的inet6为3ffe :: 64


    • 配置路由器转发IPv4和IPv6流量:

      回声“net.inet.ip.forwarding = 1'>> / etc / sysctl.conf文件中回声“net.inet6.ip6.forwarding = 1'>> / etc / sysctl.conf文件中



  • 负载平衡器配置:

    • 新/ etc/hostname.vr0:

      INET 192.0.2.253 255.255.255.128 192.0.2.255INET别名10.0.0.1 255.255.255.0 10.0.0.255的inet6 3FFE:1 :: 1 64的inet6别名3FFE:2 :: 1 64


    • 新的/ etc / mygate中(指向路由器):

      192.0.2.2543FFE:1 ::


    • 新的/ etc / pf.conf文件:

      “RDR-锚的”relayd / *“锚的“relayd / *”


    • 新/ etc / relayd.conf中的:

      webserver1的=“10.0.0.10”webserver2 =“10.0.0.11”v6server1 =“3FFE:2 :: 10”v6server2 =“3FFE:2 :: 11”vipaddress =“192.0.2.253”v6address =“3FFE:1 :: 1”的表<webservers> {webserver1的webserver2元}表<v6servers> {$ v6server1 $ v6server2}重定向WWW {听vipaddress端口的HTTP接口VR0路由端口WWW <webservers>检查HTTP“/”代码200接口VR0}重定向wwwv6 {听v6address端口的HTTP接口VR0路由端口WWW <v6servers>检查HTTP“/”代码200接口VR0}


    • 启用relayd和PF在引导:

      回声'relayd_flags,=“”'>> / etc / rc.conf.local文件中回声“PF = YES”>>在/ etc / rc.conf.local中



  • Web服务器配置(×2):

    • 新/ etc/hostname.vr0(lo0的VIP地址配置):

      INET 10.0.0.10 255.255.255.0 10.0.0.255的inet6 3FFE:2 :: 10 64使用ifconfig lo0的别名192.0.2.253/32!!使用ifconfig lo0的的inet6别名3FFE:1 :: 1/128


    • 新的/ etc / mygate中(指向路由器):

      10.0.0.23FFE:2 ::


    • 配置Apache监听IPv4和IPv6。

      回声“听0.0.0.0 80'>> / var / www下面/ conf / httpd.conf中回声“听:80'>> / var / www下面/ conf / httpd.conf中


    • 配置Apache开始支持IPv6启动:

      回声'httpd_flags =“-U”>>在/ etc / rc.conf.local中



这基本上是所有(简化,但工作)DSR设置必要的。运行tcpdump的(8) 在负载均衡器上,同时做一个请求从客户端,您可以看到来自客户端(ACK和一些鳍在请求结束)的流量,但没有回去(你看到的所有流量,虽然两次,一旦路由器,负载平衡器和一次从Web服务器负载平衡器)。仔细检查路由器上显示,从客户端向服务器上的网络服务的流量源MAC地址的路由器和目的MAC地址的负载平衡器。返回流量的目的MAC地址,源MAC地址的路由器,但两个负载均衡的Web服务器之一。

当然,这种设置主要集中在DSR,但注意所有组件(包括路由器和负载平衡器),可冗余使用鲤鱼和pfsync构建,创造一个完全冗余的环境,几乎任何你想要的服务。另外请注意,这是一个非常基本的演示功能的设置,有没有过滤。请听从Reyk的警告,除非你真的需要,在生产中不使用。话虽这么说,如果你有一个使用这种设置,请给最新快照的自旋和报告成功或失败的反馈给开发。

加入很酷的功能,越来越多的在relayd和PF(OpenBSD的一般)发现,这是一个非常优雅的解决方案。再次感谢Reyk亨宁和皮埃尔 - 伊夫和其他开发商参与。

[topicnetworking]


<< [c2k8]:第24周(6月14日)的新港口 | 回复 | 平顶 | 展开 | [c2k8]:***马拉松摘要第1 >>

阈值: 说明


相关链接
更多weerd的




回复:服务器直接返回OpenBSD的支持,(模8/26)
由匿名懦夫(216.68.196.92)周二6月17日1时39分43秒2008(GMT)

凉爽。OpenBSD是真是太神奇了,它保持不断发展的速度越来越快。
所以OpenBSD支持把思科的业务?
感谢所有辛勤工作的开发人员。希望企业界的OpenBSD的启动资金。 很想购买的下一版,PF书,更新,即将所有的工作。 和平。




[ 显示主题 ] [ 回复此评论 ] [ MOD ] [ MOD唐氏 ]
回复:服务器直接返回在OpenBSD支持(4/14)由匿名懦夫周二6月17日2点52分48秒2008(GMT)
回复:服务器直接返回支持在OpenBSD(-2/24周二6月17日)由匿名懦夫07:27:41 2008(GMT)
回复:服务器直接返回由匿名懦夫在OpenBSD支持(0/16)于6月17日星期二20:03:16(GMT)
回复:服务器直接返回支持在OpenBSD系统(-7/13)由匿名懦夫上周三6月18日7时29分04秒2008(GMT)


回复:服务器直接返回支持在OpenBSD(MOD
唐CIPO(doncipo)的(doncipo@redhat.polarhome.com), 7/15) 于6月17日星期二5时17分四十九秒2008(GMT)

另一个很酷的功能,实现将TCP套接字缓冲区自动调整大小的高性能数据传输。

[ 显示主题 ] [ 回复此评论 ] [ MOD ] [ MOD唐氏 ]


回复:服务器直接返回支持在OpenBSD系统(5/21)模
2001:9 B0:1:1017:A00:20FF:FEFE:9a37)由匿名懦夫on星期二六月17日6时17分22秒2008(GMT)

我认为这是伟大的。我做的。但你为什么不断在OpenBSD的旧东西的新名称?DSR称为DR(直接路由)在Linux中,我也不会感到惊讶,如果它一直围绕自2001年以来,甚至更早。(我已经用它自2003年以来) 还是我失去了一些东西?商业的LBS调用此DSR?或者,这是一个情况下,“让我们做了一个新的名字,那么每个人都会认为我们做到了第一?” 再次。我觉得这是一个很大的特点。干得好。




[ 显示主题 ] [ 回复此评论 ] [ MOD ] [ MOD唐氏 ]
回复:支持在OpenBSD于6月17日星期二(19/27)由布拉德服务器直接返回 6时42分55秒2008(GMT)
回复:服务器直接返回由匿名懦夫在OpenBSD支持(2/14)于6月17日星期二07:25:46(GMT)
回复:服务器直接返回支持在OpenBSD由伊戈尔·索布拉杜上周二6月17日(10/24)12:35:15(GMT)
回复:服务器直接返回在OpenBSD支持(-9/21)由勒14:08:50 2008年6月17日星期二(GMT)
回复:服务器直接返回在OpenBSD支持(9/23)由匿名懦夫17:21:23 2008年6月17日星期二(北京时间)
回复:服务器直接返回在OpenBSD支持(4/18)由匿名懦夫19:13:33 2008年6月17日星期二(GMT)


回复:支持服务器直接返回OpenBSD系统(MOD -1/15)
由René(91.42.55.117)于6月17日星期二9时45分45秒2008(GMT)http://openbsd.maroufi.net

>没有什么可比性,只是在PF的状态过滤的流行语“SPI(状态数据包检测),并没有说什么质量的检查。 iptables的状态过滤和PF状态过滤的区别到底是什么。iptables的有状态过滤为什么不安全?


[ 显示主题 ] [ 回复此评论 ] [ MOD ] [ MOD唐氏 ]
回复:服务器直接返回在OpenBSD on星期二六月17(1/11)由马丁·托夫特支持十点47分17秒2008(GMT)
回复:服务器直接返回支持在OpenBSD(-2/12周二6月17日)由匿名懦夫11:36:42 2008(GMT)
回复:支持在OpenBSD on星期四六月26(2/12)由亨宁服务器直接返回 1时01分42秒2008(GMT)
回复:服务器直接返回由匿名懦夫在OpenBSD支持(5/17)于6月17日星期二12:02:36(GMT)
回复:支持在OpenBSD on星期二六月17(-4 / 8)由勒服务器直接返回 14点19分22秒2008(GMT)
回复:服务器直接返回支持在OpenBSD由赖安·麦克布莱德(5/17)上周四6月19日22时31分44秒2008(GMT)
回复:服务器直接返回由匿名懦夫在OpenBSD支持(19/25)于6月17日星期二19点14分31秒2008(GMT)
回复:服务器直接返回在OpenBSD上周四6月19日(-4/10)由Julien Mabillard的支持 10点05分32秒2008(GMT)
回复:服务器直接返回支持在OpenBSD(3/11)由Krunch上周三6月25日21时44分56秒2008(GMT)


请支持IPv6也(模-8/14)
由匿名懦夫(2001:738:0:401:21 B:63ff:fe9f:4527)于6月19日星期四07:24:18(GMT)

亲爱的开发者,
请在你的DSR也支持IPv6。我们使用的是PF在FreeBSD上对IPv6的负载平衡。这是很难说服Linux的人,,PF可以做负载均衡。他们非常喜欢LVS解决方案。如果他们有这样的功能(在LVS中,它被称为直接路由),他们可能会放弃Linux虚拟服务器对IPv4。


[ 显示主题 ] [ 回复此评论 ] [ MOD ] [ MOD唐氏 ]
回复:请支持IPv6(6/16)由匿名懦夫周四6月19日7时41分31秒2008(GMT)


马虎状态跟踪(MOD 2/12)
由Rich(195.212.199.56)上周四6月19日15时22分32秒2008(GMT)

一切听起来的确非常酷。良好的工作 在需要聘请马虎状态跟踪的主题,它有可能的服务器传回完整的答复直接到客户端,并在同一时间传回的部分回复到负载平衡器(只包也许头信息-那种事情),然后负载平衡器也许可以堵塞这部分答复放回粉煤等关闭循环(或至少减少“草率水平”)PF? 只是一个想法-我没有知道我谈论:-)





[ 显示主题 ] [ 回复此评论 ] [ MOD ] [ MOD唐氏 ]
回复:邋遢状态跟踪由赖安·麦克布莱德(-1/11)上周四6月19日22时十七分01秒2008(GMT)
回复:马虎状态跟踪(-3/11)由Rich 09:40:03 2008年6月20日星期五(GMT)
回复:草率状态跟踪由赖安·麦克布莱德(3/13)2011年06月20日星期五13:50:43(GMT)
回复:邋遢状态跟踪(-4/16)由亨宁周四6月26日1时04分17秒2008(GMT)

[ 返回首页 | 加入故事 | 档案 | 投票 | 关于 ]

版权所有©2004-2009 Daniel Hartmeier的。保留所有权利。文章和评论版权属于各自的作者,提交意味着在本网站上发布的许可。归档文件的内容之前,2004年4月2日,以及图像和HTML模板复制,从圣何塞吉姆的一种许可的优美的原始 deadly.org的