公网和vrf下存在相同的四元组的tcp,收到报文如何找到对应的tcp?

jyt107 2018-07-11 11:24:11
sk->sk_bound_dev_if能确认隶属于某个VRF域,但公网下sk->sk_bound_dev_if是0

__inet_lookup_established通过四元组找到hash冲突链,再进行遍历match
#define INET_MATCH(__sk, __net, __cookie, __saddr, __daddr, __ports, __dif) \
(((__sk)->sk_portpair == (__ports)) && \
((__sk)->sk_addrpair == (__cookie)) && \
(!(__sk)->sk_bound_dev_if || \ 如果公网tcp在链表前面,那么vrf内收到的报文会优先匹配公网tcp
((__sk)->sk_bound_dev_if == (__dif))) && \
net_eq(sock_net(__sk), (__net)))


请问,有什么办法能解决这个问题?

...全文
651 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧