当前位置:网站首页>容器网络硬核技术内幕 (26) 知微知彰,知柔知刚 (下)
容器网络硬核技术内幕 (26) 知微知彰,知柔知刚 (下)
2022-07-29 20:35:00 【用户8289326】
先回答上一期的遗留问题:
交换机的TCAM资源是有限的, 一般在500K以内。我们刚才提到,实现微分段需要在TCAM内查找,这会不会大量消耗交换机的TCAM资源,影响其他业务呢?
那么,我们需要理解一下,在分布式任意播网关模式下,TCAM的使用方式:
让我们回顾这篇:《局域网SDN硬核技术内幕 20 亢龙有悔——规格与限制(上)》。这篇专题中有一个重要的结论是:
TOR交换机在做分布式任意播网关的情况下,需要学习该交换机配置的租户内,所有的虚拟机的FIB表项。
由于在虚拟化/容器化环境中,VM或容器的位置是分散的,因此,实际上大部分FIB表项的key,并不是CIDR,而是具有完整的目的IP的主机路由。(IPv4下为32位主机路由)。我们只需要为其增加微分段的Group ID值,就可以在不消耗额外的TCAM资源的前提下,实现从IP地址查找其Group ID的功能。
好了,在前几期专题中,我们提到了,微分段能让SDN网络“知微,知彰”,但我们也发现,基于微分段的访问控制,是刚性的访问控制,是无状态的。
而我们期望的访问控制却是能跟踪传输层连接状态的柔性控制——
如图,frontend向db发起TCP SYN,三次握手后,连接能够正常建立,双向数据包都可以放通。
反之,db向frontend发起TCP SYN,这种行为将被访问控制阻断:
显然,交换机的ACL是难以实现这一功能的,即使通过可编程的转发平面实现所谓的“自反ACL”,交换机也无法跟踪TCP的状态机,与基于状态的防火墙安全性相差甚远。
因此,我们需要将状态防火墙与微分段结合,才能让容器网络除了“知微,知彰”之外,还可以“知柔,知刚”。
让我们回顾一下上期提到的基于group的访问矩阵:
以传统的web-app-db三层架构为例,我们期望的互访关系如下表:
但如果以TCP的发起/响应关系论,实际上,我们期望的是下表:
如图,红字部分体现了从App向Web的发起访问,从db向app的发起访问均将被拒绝。
显然,我们要区分从App向Web返回的回程流量,和App向Web发起访问的请求,就必须将Web和App之间的流量重新定向到防火墙——
我们的访问矩阵应该改成这样:
这样一来,交换机可以将匹配微分段的数据包重新定向到状态检测防火墙上。状态检测防火墙跟踪Web-App,App-DB之间的TCP状态机,判定是否放行数据包。以Web与App为例,当连接没有建立的时候,任何数据包都会被丢弃,除了web向app发起的TCP SYN以外。
当防火墙完成对三次握手的跟踪,会话进入session established状态,回程数据包才被放通。
显然,对于容器网络,这种柔性控制,才是我们最需要的符合NetworkPolicy定义的实现。
我们小结一下:
在硬件交换机作为容器网络的Overlay网关时,通过微分段实现不同标签的pod隔离,通过微分段重定向到防火墙进行pod之间有状态的访问控制,就能够让容器SDN网络 “知微,知彰,知柔,知刚”。
边栏推荐
猜你喜欢

第二好PyTorch新手课程;论文写作指南;使用µGo语言开发迷你编译器;超高效使用Transformer的扩展库;前沿论文 | ShowMeAI资讯日报

QT安装、创建项目与调试,在VS中的使用:手把手教程

GalNAc-siRNA甘露糖/半乳糖修饰脱氧核糖核酸|siRNA-S-S-DSPE(RNA修饰技术介绍)

336. 回文对

RNA修饰质谱检测|dextran-siRNA 葡聚糖化学偶联DNA/RNA|siRNA-PLGA聚乳酸-羟基乙酸共聚物修饰核糖核酸

无文件落地免杀的初尝试思考(上)
基于PaddleSpeech搭建个人语音听写服务

WeChat Mini Program 31 Subcontracting Mechanism
![LeetCode 593 Valid Squares [Math] HERODING's Road to LeetCode](/img/c2/34624c9c7693ba40d0b3724c0db611.png)
LeetCode 593 Valid Squares [Math] HERODING's Road to LeetCode

OneNote tutorial, how to take notes in OneNote?
随机推荐
Qualcomm WLAN framework learning (31) -- Power save
Samba server configuration (when a server is required)
怎么实现您的个人知识库?
Bug fix: Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255]
怎么实现您的个人知识库?
RNA修饰质谱检测|dextran-siRNA 葡聚糖化学偶联DNA/RNA|siRNA-PLGA聚乳酸-羟基乙酸共聚物修饰核糖核酸
人社部公布“数据库运行管理员”成新职业,OceanBase参与制定职业标准
UDP协议详解
Writing Elegant Kotlin Code: Talk About What I Think "Kotlinic"
七个易犯的 IT 管理错误—以及如何避免
1. Promise usage in JS, 2. The concept and usage of closures, 3. The difference between the four methods and areas of object creation, 4. How to declare a class
断言+异常处理类,代码更简洁了
带你刷(牛客网)C语言百题(第四天)
First thoughts on the first attempt to avoid killing without a file (Part 1)
OneNote 教程,如何在 OneNote 中做笔记?
JS实现百叶窗特效
GET_ENTITYSET Method Implementation Guide for SAP ABAP OData Service Data Provider Class
一线技术人应该关注的四种思维能力
微信小程序 30 自定义模板和获取用户登录凭证
LeetCode 0144. 二叉树的前序遍历:二叉树必会题