OVS代码分析笔记问题记录

本文不是技术说明类文章,而是仅用作问题记录,对于想要解决问题的朋友来说没有实际价值,但是欢迎看到本文的朋友参与本文问题讨论。

本文将逐步更新至问题较少或没有问题为止(或找到其他记录并解决问题的方式)。

OVS代码分析原文参考:http://blog.csdn.net/yuzhihui_no1/article/details/39161515 这里面的讲解非常详细,虽然我还看不懂= =。

1.注意到vport结构是用哈希链表存储的,linux内核对于哈希链表的实现较为特殊,头节点没有前向指针,而后续均为双向。为了操作统一,后续节点的前向指针实际上指向了前一个节点的“next”指针而不是前一个节点本身,这样的操作有什么意义呢?仅仅指向前一个节点的后向指针似乎并不能达成前向访问的作用。

另外,一个哈希链表节点结构体中只有前驱指针和后向指针两个变量,那数据存在哪,说是数据就是vport结构其他变量,但是我要怎么访问到其他变量?指来指去都是指向的hlist_node的这个结构啊??(推测:根据hlist_node变量在vport中的地址偏移访问到vport结构)

2.为什么自旋锁要保护记录错误使用的变量?

3.vport_parms和vport结构尽管可以通过共同的端口ID来表示同一个端口,但是这两个结构应如何存储(在一起)?

4.网桥模块结构体中最后一个结构体是什么?

5.在哈希桶中所说的弹性数组,与通常意义上的可变长度数组(后者可在运行时malloc可变数量内存空间并直接下标访问)似乎有区别。那么哈希桶中的该数组是何意义(用来存什么的)?它实现变长的原理又是什么?

6.将结构大小定义为一页(4096字节)有什么好处。

7.在流表项结构中,已有key值结构体(还有一个unmasked key结构体不知道干什么的),然而mask结构体中却又出现了key值结构体是何意义?另外mask难道不只是掩码长度吗?为什么还需要单独设置结构体呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值