当前位置:网站首页>容器网络硬核技术内幕 (25) 知微知彰,知柔知刚 (中)
容器网络硬核技术内幕 (25) 知微知彰,知柔知刚 (中)
2022-07-29 20:35:00 【用户8289326】
在前面的专题中,我们梳理了容器网络安全的定义——NetworkPolicy,
容器网络安全的软件实现的一个实例——iptables,
"微分段"的英文为micro segmentation,英语好的同学会发现,micro是macro的反义词。
在通常的定义中,macro segmentation——宏分段,指的是以CIDR(网段)进行分段,而micro segmentation指的就是CIDR内部再进行分段,而这种分段不一定是连续的IP地址,也可以是离散的IP地址。 如前面的例子,
在CIDR 10.0.0.0/20 (10.0.0.0 - 10.0.15.255)中,
10.0.10.113,10.0.10.115和10.0.13.201这三个IP地址属于微分段db,
而10.0.11.60,10.0.12.8和10.0.13.217这三个IP地址属于微分段frontend。
我们知道,微分段这种手段,实际上目的是实现不同的容器之间的互访控制。那么,能不能使用ACL来实现这种互访控制呢?
答案是:
如果有机关枪就行了,
还要导弹干嘛?
是的,ACL与微分段相比,就是机枪与导弹的区别!
以前面的frontend与db之间互访为例:
我们期望的是frontend与db之间的互访默认被放通,在这种情况下,由于frontend和db各有3个离散的IP地址,我们需要配置3x3的ACL矩阵:
并对交换机配置默认策略deny-all。
如果front和db各有100个IP地址,那么,我们需要配置100x100条离散的ACL。
在容器标签有3种、4种等情况,这会迅速耗尽交换机的ACL资源……
也就是说,使用ACL实现离散的IP地址之间的访问控制,其空间复杂度为m * n * n。其中,m为标签类型数量,n为每个标签的容器数量(假设各种容器的数量相等)。显然,这是无法接受的。
因此,我们需要另一种方案。
如果我们让交换机具有根据IP地址查询标签(微分段组ID)的能力,再根据源IP对应的标签和目的IP对应的标签,来查询标签之间访问矩阵中的策略,我们发现,这种算法的空间复杂度变成了 N + m * m。其中,m为标签类型数量,而N为整个CIDR中的容器数量。在这种情况下,查询的空间复杂度是可以接受的,而时间复杂度方面,如果每次查询的时间复杂度为O(1),可想而知,这也是可以接受的。
用图来表示查询流程:
那么,如何让交换机芯片实现这种快速的查询呢?
让我们回忆一下,交换机与绿帽的故事——
我们知道,交换机的硬件表项既可以实现最长匹配,又可以实现精确匹配的功能。
这样一来,无论是离散的IP地址,还是可以聚合的网段,我们都可以把它做为查询键值,放在TCAM中——
再让我们复习一下新一代交换机芯片的工作过程,以Broadcom Trident-3 (以下简称TD3)为例:
TD3芯片是可编程的,内部有5级流水线,每级流水线可以完成查表的动作。工程师们可以通过编程,让其中的3级流水线分别承担以下工作:
- 根据源IP,在TCAM中查找其Group ID;
- 根据目的IP,在TCAM中查找其Group ID;
- 根据源Group ID和目的Group ID查找相关策略值;
这样,就能够利用TCAM的O(1)查找机制,快速根据离散的IP地址查询相关的策略,实现微分段。
这样,就实现了让交换机既可以按照连续的IP地址查找策略,也可以按照离散的IP地址查找策略,正所谓“知微,知彰”。
今天留一个问题:
交换机的TCAM资源是有限的, 一般在500K以内。我们刚才提到,实现微分段需要在TCAM内查找,这会不会大量消耗交换机的TCAM资源,影响其他业务呢?
请看下回分解。
边栏推荐
猜你喜欢

R language for airbnb data nlp text mining, geography, word cloud visualization, regression GAM model, cross-validation analysis

初识网络的简单概念

The demand for VR live broadcast marketing is increasing, and the data module is paving the way for us

关于论青少年尽早学少儿编程之说

Analysis of Crypto in Pi 2

博世集团启动量子数字孪生计划

叶酸&适配体修饰DNA纳米载体|CdS纳米颗粒修饰DNA|科研试剂

惠普服务器硬盘指示灯不亮或显示蓝色

The difference between analog, digital and switching

TCP协议详解
随机推荐
The difference between uri and url is simple to understand (what is the difference between uri and url)
The cornerstone of distributed: reliability - What a tangled web we weave
QT安装、创建项目与调试,在VS中的使用:手把手教程
378. The Kth Smallest Element in an Ordered Matrix
什么是数据安全性?
进程间六种通信方式
【593. 有效的正方形】
es6语法使用默认参数和解构
手写dialog弹框
json-c实现json和结构体之间的相互转换
JSP Servlet JDBC MySQL CRUD Sample Tutorial
荧光量子点修饰siRNA-QDs|纳米金修饰siRNA-Au(RNA修饰方式方法)
MySQL - Design game user information table
378. 有序矩阵中第 K 小的元素
mdnice-test
ES6用法,面试大全
从实例学Kettle(一):获取股票行情数据
Panorama Tutorial丨How to shoot sunrise and sunset scenes in VR panoramic shooting?
优惠券系统设计思想
刘畊宏男孩女孩看过来!运动数据分析挖掘!(附全套代码和数据集)