LVS/DR数据包流向分析

lvs-dr模式原理

转载注明出处:http://blog.csdn.net/lengzijian/article/details/8089661

先附上一张原理图:

为了更清晰的表述lvs-dr原理,我们用tcpdump工具打印出tcp数据,查看mac地址的更改情况,绘制出如下的时序图;

图1表示201收到转发消息,图2表示200收到转发请求(下面两张为错误的图,错误的理由下面会详细解释)

上面的信息全部用tcpdump命令取得(tcpdump  -e -X-A -n -s 10000 port 80;具体含义这里就不详细讲解了),用上述命令分别在149、200、201上执行。

图只是辅助理解,刚开始不用研究太深入。可以根据下面的讲解慢慢体会。

首先,从两幅图中我们都能看到这样的流程:

TCP建立(三次握手)->交换机发送请求->服务器响应请求->TCP连接断开(四次挥手)

下面解答和分享下我所遇到的问题:

问题1:按照我之前对负载均衡的理解,应该是149收到交换机发来的消息,然后转发给201或者200,为什么是201先收到交换机发来的数据,然后转发到149呢?

这个问题也困扰了我好久,后来我把201网线断掉之后,重新尝试,发现149和200都没有收到交换机发过来的消息,心想应该是被交换机缓存了(猜测)。之后把服务全停掉,重新设置lvs配置,然后重启。之后看到的tcp流,就和预想中的一样。

当200接收到消息时,只有149和200会收到tcp流信息。同理201;

有人会说我这是多此一举,花了这么久的图,最后还是错的。其实不是这样。起码以后我知道如何查看tcp是否正常,表面上看lvs转发消息时正常的,其实tcp流多走了几步。表面上是负载均衡,其实一台realserver负载非常高。。。。这里可能会导致很多问题。

有人想要正常的tcp流图,这里本人不想再多画了,如果有时间再补上吧。可以按照上面的图,把交换机接受的数据移植到149上,就是正常的图啦。

下面补上正确的lvs-er模式的tcp流图,201收到消息时同理:

有了正确的图理解原理更加方便了。

问题2:vs-dr如何转发消息的?

由上图3中第二步骤可以看出,director接受到交换机的请求,然后根据算法选取一台realserver,并且把包转发过去,realserver接收到包后,直接把结果返回给交换机,而没有走director。

具体步骤:

1.    接收到源mac地址为38:22:d6:6c:07:5d,目的地址为00:1A:4D:8C:FA:D5。源ip为192.168.0.237、目的ip为192.168.30.149

2.    vs根据负载均衡,把源mac地址改为00:1A:4D:8C:FA:D5,目的地址改为00:26:18:45:D7:88。源ip和目的ip都不变

3.    realserver(00:26:18:45:D7:88)接收到请求,做出响应。源ip改为192.168.30.149,目的ip改为192.168.0.237

4.    realserver的消息源mac为00:26:18:45:D7:88,目的mac地址为38:22:d6:6c:07:5d。所以跳过了149,直接返回客户端请求的信息。

今天画图画累了,明天有空再讲下具体配置问题。。。

 

 

 

### DRC、LVS 和 PV 的定义及其在 EDA 中的应用 #### 设计规则检查 (DRC) 设计规则检查(Design Rule Check, DRC)用于验证集成电路布局是否遵循制造商设定的设计规则。这些规则确保电路能够在预期条件下正常工作并达到性能标准。具体来说,DRC会检测布线间距、最小宽度和其他几何特性等问题,防止因违反制造工艺限制而导致的产品缺陷[^4]。 ```python def check_drc(layout): """ 检查给定的layout对象是否有任何违反设计规则的情况 参数: layout(Layout): 需要被检查的版图数据结构 返回: violations(list of str): 违规项列表描述 """ pass # 实际实现应调用相应的EDA库函数来执行具体的规则检查 ``` #### 版图与原理图一致性校验 (LVS) Layout Versus Schematic(LVS),即版图与原理图的一致性比较,旨在确认最终完成的物理版图与其对应的电气连接关系完全匹配原始的电路原理图。通过这种对比可以发现可能存在的错误或不一致之处,从而保障实际生产的硬件能够忠实反映最初的设计意图[^2]。 ```bash lvs_tool --input_netlist=design.net \ --layout_file=final_layout.gds \ --output_report=lvs_results.txt ``` #### 物理验证 (PV) Physical Verification(PV),也被称为基于规则的物理验证,在更广泛的意义上涵盖了多个方面,包括但不限于上述提到的DRC和LVS。它还包括其他类型的验证过程,比如天线效应分析、电迁移检查等,这些都是为了保证芯片内部的所有组件都能按照预定的方式相互作用,并且在整个生命周期内保持稳定可靠的工作状态[^5]。 ```xml <physical_verification> <rule_set>foundry_specific_rules</rule_set> <target_files> <file type="gds">chip_design.gds</file> </target_files> <output_directory>/path/to/output/reports</output_directory> </physical_verification> ``` 以上三种技术都是现代电子设计自动化(EDA)流程中的重要组成部分,它们共同构成了从概念到成品之间不可或缺的质量控制环节。利用高级别的自动化工具来进行这些复杂的检验任务不仅提高了效率,还大大降低了人为失误的风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值