春晚的“昨天今天明天”用了几年的时间才出了续集,原因估计是没凑齐人,
我的blog呢,也一样是耗时两月才再次续貂,嘿嘿,原因是一样地,没凑齐,我。
这段时间到是发生了不少事情,譬如说:
上次提到的DLPI回环处理的修改基本上完成了(当然,迄今为止我们的工作还限于
GLDv3也就是Nemo的范畴)。简单来说,就是两点:
1 在该回环的地方回环
我们知道,GLDv3是分层的,一个简单的示意图如下:
snoop ip bridge
\ | /
dls (其他用户)
\ /
mac
driver
其中dls与mac是属于GLDv3的范畴,dls是mac层用户,mac还可以有其他用户,譬如aggr,不过
在大多数情况下,都是dls,而上层的协议/应用则基本上都是dls的用户。
在原来的实现中,假如ip发送了一个数据包,那么这个包要经过dls,再经过mac之后
才会回环给snoop,这样做其实从效率上没有什么损失,因为Nemo的设计/实现已经充分
考虑了这一点,但是它的问题在于
(1)违反了分层的原则,既然分了层次,就不应该做“穿透”的操作
(2)在回环处理时无法标识发送方,因为对于mac来说,dls以上的层次是完全
不可见的。
经过我们的修改,现在的回环可以发生在dls层,也可以发生在mac层,以上面的图为例,
如果其他用户并不存在,那么只有dls层在做本地的回环处理,mac根本就不知道(也不
应该知道/关心)发生了回环处理。而且由于在dls层,每个用户都有唯一的标识,因此
就更加容易控制了。
2 随时“混杂”
在之前的设计中,只有有了promisc模式的用户,才会激活回环处理,而且基本上只有
promisc模式的用户才会接收回环的传来的包,在前-bridge :-) 时代,这是完全没有
问题的,因为基本上没有其他的需求,但是在加入bridge之后,这就不够了,因为bridge
的作用就是把“桥那头”的所有相关的流量都“搞”过来,而这些流量中,就有可能有
发送给同一个dls之上的ip协议栈的,虽然由于bridge本身是promisc模式的,但是ip,
它老人家哪里知道这个,它根本就不接受回环的包。
现在好了,经过我们的修改,只要有多个用户,只要有任何一个用户在发送,就回环。。。
性能怎么办?嗯,这个,世界是现实地,理想化是不可以地,满足所有人还是需要地,
代码中还是有很多if地,所以,结果还是可以接受地。
这段时间我还干了点预料之外的工作,就是生成树协议的实现。本来这部分应该是由Yukun同学
完成的,但是他有另外的、更加重要的、关乎国计民生的国家大事需要处理,于是我就只好
被推上前线了,还好,也做得七七八八了。
好了,流水帐式的工作汇报完成了。。。 总结真是一个可怕的东西,写着写着就开始怀疑:我
这两个月都干什么了?这么就这么点东西。。。
不能再写了,真是越写越少啊
我的blog呢,也一样是耗时两月才再次续貂,嘿嘿,原因是一样地,没凑齐,我。
这段时间到是发生了不少事情,譬如说:
上次提到的DLPI回环处理的修改基本上完成了(当然,迄今为止我们的工作还限于
GLDv3也就是Nemo的范畴)。简单来说,就是两点:
1 在该回环的地方回环
我们知道,GLDv3是分层的,一个简单的示意图如下:
snoop ip bridge
\ | /
dls (其他用户)
\ /
mac
driver
其中dls与mac是属于GLDv3的范畴,dls是mac层用户,mac还可以有其他用户,譬如aggr,不过
在大多数情况下,都是dls,而上层的协议/应用则基本上都是dls的用户。
在原来的实现中,假如ip发送了一个数据包,那么这个包要经过dls,再经过mac之后
才会回环给snoop,这样做其实从效率上没有什么损失,因为Nemo的设计/实现已经充分
考虑了这一点,但是它的问题在于
(1)违反了分层的原则,既然分了层次,就不应该做“穿透”的操作
(2)在回环处理时无法标识发送方,因为对于mac来说,dls以上的层次是完全
不可见的。
经过我们的修改,现在的回环可以发生在dls层,也可以发生在mac层,以上面的图为例,
如果其他用户并不存在,那么只有dls层在做本地的回环处理,mac根本就不知道(也不
应该知道/关心)发生了回环处理。而且由于在dls层,每个用户都有唯一的标识,因此
就更加容易控制了。
2 随时“混杂”
在之前的设计中,只有有了promisc模式的用户,才会激活回环处理,而且基本上只有
promisc模式的用户才会接收回环的传来的包,在前-bridge :-) 时代,这是完全没有
问题的,因为基本上没有其他的需求,但是在加入bridge之后,这就不够了,因为bridge
的作用就是把“桥那头”的所有相关的流量都“搞”过来,而这些流量中,就有可能有
发送给同一个dls之上的ip协议栈的,虽然由于bridge本身是promisc模式的,但是ip,
它老人家哪里知道这个,它根本就不接受回环的包。
现在好了,经过我们的修改,只要有多个用户,只要有任何一个用户在发送,就回环。。。
性能怎么办?嗯,这个,世界是现实地,理想化是不可以地,满足所有人还是需要地,
代码中还是有很多if地,所以,结果还是可以接受地。
这段时间我还干了点预料之外的工作,就是生成树协议的实现。本来这部分应该是由Yukun同学
完成的,但是他有另外的、更加重要的、关乎国计民生的国家大事需要处理,于是我就只好
被推上前线了,还好,也做得七七八八了。
好了,流水帐式的工作汇报完成了。。。 总结真是一个可怕的东西,写着写着就开始怀疑:我
这两个月都干什么了?这么就这么点东西。。。
不能再写了,真是越写越少啊
