tnblog
首页
视频
资源
登录

Kubernetes 网络MAC地址

7290人阅读 2022/4/8 21:57 总访问:3475891 评论:0 收藏:0 手机
分类: 容器编排

Kubernetes

Kubernetes 网络MAC地址

MAC简介


MAC (Media Access Control) 地址用来定义网络设备的位置。MAC地址由48比特长、12位的16进制数字组成,其中从左到右开始,0到23bit是厂商向IETF等机构申请用来表示厂商的代码(OUI),24到47bit由厂家自行分配,是各个厂商制造到所有网卡到一个唯一编号。
MAC地址可以分为3种类型:物理MAC地址,广播MAC地址,组播MAC地址。

类型 描述
物理MAC地址 这种类型的MAC地址唯一的标识了以太网上的一个终端,该地址为全球唯一的硬件地址。
广播MAC地址 全1的MAC地址(FF-FF-FF-FF-FF-FF),用来表示LAN上所有终端设备。

物理MAC地址

这种类型的MAC地址唯一的标识了以太网上的一个终端,该地址为全球唯一的硬件地址。


在ENSP中首先添加两个PC到交换机中,并为这两台PC手动填写掩码与ip。
我们通过右键打开两台PC的设置,发现已经存在了物理Mac地址,分别是:54-89-98-9A-36-CD54-89-98-77-3C-4C
这里我们设置PC1的IP为192.168.1.1,设置PC2的IP为192.168.1.2。子掩码都将其设置为255.255.255.0


然后我们打开PC1的命令行,通过ipconfig命令查看网络配置情况,随后我们向PC2192.168.1.2发送ping包。


随后我们点击PC1右键再点抓包,选择GE 0\0\2接口然后会启动Wireshark抓取PC1所请求的包。


我们可以通过这张图清楚的看到一个Ping包是基于ICMP协议来发送的,并且IP与IP之间的请求与响应有来有回。
Ethernet II表示交换机处理层,在这一栏下面我们可以看到请求源与接收源,并且前面的 HuaweiTe_表示的是设备厂商的MAC地址(如果是戴尔的可能会发现Dell_xxx),所对应的16进制为548998转换为二进制后为23bit,后面的6位16进制是自定义生成的;
Type表示协议的类型这里是IPv4,在下一栏中Internet Protocol Version 4同样表示的是IPv4类型的包。
Src表示发送源IP。
Dst表示接收源IP。

广播MAC地址

广播MAC地址:全1的MAC地址(FF-FF-FF-FF-FF-FF),用来表示LAN上所有终端设备。


简单来讲:你在一个群里面你要找一个张三的人,但你不知道他的网名叫什么,所以在群里说了一句”谁叫张三啊?”,然后不是张三的人就不会回你,是张三就会回你,张三回你后你就会备注一下,这就是广播。
(而FF-FF-FF-FF-FF-FF就是广播地址)
值得注意的是在这里其他不是张三的人也会收到通知,所以其他设备也会收到这个包,但不会做出响应。
(有兴趣肯定会想到如果不是张三的人说自己是张三,就有了ARP中间人攻击,可以网上搜搜看)。
不知道在上面的中朋友们有没有注意到,在发送Ping包之前呢。有两个ARP的包,第一个ARP发送到的就是FF-FF-FF-FF-FF-FF广播Mac地址,然后在第二个包就被找到了他们就联系上了。


电脑那么智能啊?说联系上就联系上了,当然没那么简单。其实他们被存到了交换机的Mac表地址中,他们第一次发送ping时交换机Mac表中是不存在他们的记录的,随后就发送广播通知,然后将他们的mac地址与接口记录到交换机的mac表中去。并且在他们的本地也有一个Arp的缓存。
我们先打开交换机输入查看mac表的命令:dis mac-address
如果我们要清空mac表中的地址的话输入命令:undo mac-address


图中表所呈现的如下表。也就是说在这之后呢,你PC1再找PC2的话我就从GE0/0/3接口转发出去。反之你PC2来找PC1我从GE0/0/2接口给你转发出去,这个接口就是与交换机连接的线条。

电脑名 ip mac 接口
PC1 192.168.1.1 54-89-98-9A-36-CD GE0/0/2
PC2 192.168.1.2 54-89-98-77-3C-4C GE0/0/3


除此之外,在经过第一次查询后,本地会存储相关的地址到arp cache中可以通过arp -a命令进行查看,如果本地的arp cache里面存在该IP,并且交换机mac表中也存在该mac,将进行直接访问不会进行请求广播mac地址。
(还可以通过arp -d命令进行删除)

组播MAC地址

除了广播地址外,第3bit为1的MAC地址为组播MAC地址(例如01-00-00-00-00-00),用来代表LAN上的一组终端。


简单来讲基于广播地址的基础之上,进行一个分组。

动态MAC地址(Dynamic MAC)

MAC 老化过程


在讲动态MAC地址之前呢,我们有个问题需要说明一下。那就是如果我们每一个设备连上交换机的时候,交换机都会去表里添加一条记录,如果添加很多了的话就会导致内存溢出的情况。所以变添加了老化时间的一个机制,当某个mac地址长时间不发包,我们就可以删除它,这样就节省了内存避免了内存溢出。下面将展示老化过程的生存周期。


设备MAC地址老化的时间设置为T。在t1时刻有源MAC地址为00e0-fc00-0001、VLAN为1的报文从某接口进入。假定该接口已加入VLAN 1。如果之前MAC地址表不存在关于(MAC:00e0-fc00-0001,VLAN:1)的任何种类表项,那么这个地址就会作为动态MAC地址表项添加到地址表里,同时该表项进行检查。
— 在t2时刻,检查到动态表项(MAC:00e0-fc00-0001,VLAN:1)的命中标志位为1,则将该表项的命中标志位置为0,但不删除这条表项。
— 在t2时刻和t3时刻之间没有这种报文进入设备,那么该表项的命中标志位会一直保持为0
— 在t3时刻,设备检查到该表项的命中标志位0,认为该表项的老化时间到达,将删除此条表项。

动态MAC的介绍


由交换机从接收到报文自动识别到MAC地址,当端口收到一个报文时,会查找报文的源MAC地址是否存在于MAC地址表中,如果不存在则会将相应的端口、VLAN和源MAC地址关联起来,并保存到MAC地址表中,动态MAC地址在到达一定老化时间后会被老化删除,但如果该地址在老化时间内被正确使用过,则会重新激活该条地址的老化时间,同时MAC地址和端口(接口)的对应关系会随着设备所连的交换机的端口的变化而变换。
(通过下图所示,交换机已经老化了所有的mac地址)

静态MAC地址(Static MAC)

简单来讲它不会收到mac表的老化的影响,它将永久存在于交换机的mac表项中。


举个例子,假如你家的网经常被陌生人蹭来蹭去,你就把你们家所有的设备的mac地址都加入静态中,这样外人就连接不上你家wifi了。

过滤MAC地址、黑洞MAC地址

由用户通过命令配置的静态过滤的MAC地址,当网关接收到的报文中,源或者目的MAC 地址为过滤MAC地址,则直接丢弃该报文。


简单来讲:黑名单。

MAC 地址表


设备添加MAC地址的方法如下:如果从某接口(假设为接口A GE0/0/1)收到一个数据帧,设备就会分析该数据的源MAC地址(假设为MAC-SOURCE)并认为目的MAC地址为MAC-SOURCE的报文可以由接口A转发;如果MAC地址表中已经包含MAC-SOURCE,设备将对该表项进行更新;如果MAC地址表中尚未包含MAC-SOURCE,设备则将这个新的MAC地址以及该MAC地址对应的接口A作为一个新的表项目加入到MAC地址种。
Note:用户手工配置的静态MAC地址表项和黑洞MAC地址表项不会被动态的MAC地址表覆盖,而动态MAC地址表项可以被静止MAC地址表项和黑洞MAC地址表项覆盖。

设备在转发报文时,根据MAC地址表项信息,会采取以下两种转发方式:单播方式与广播方式

单播方式


当MAC地址表中包含与报文目的MAC地址对应的表项时,直接将报文从该表项中的转发出接口发送。
(举例:有ABC三台PC,A往B发包,交换机有A与B的地址,C不会接收到B的包)

多播方式


当设备收到目的地址为全1的报文,或MAC地址表中没有包含对应报文目的MAC地址的表项时,设备将会采取广播方式将报文向除接收接口外的所有接口进行转发。
(举例:当我们交换机上MAC地址表没有这ABC的地址,那么将会对所有设备发送包来确认)

泛洪


当主机本地缓存有目标地址的记录,但路由器没有的情况下,它也会进行广播,但这种情况专业一点就被称之为泛洪。


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

阿里云 Kubernetes

https://help.aliyun.com/document_detail/86759.html 可以有三种计费方式https://ecs-buy.aliyun.com/wizard?spm=5176.13...

Kubernetes Job讲解

kubernetes Job讲解[TOC] 需求来源Job 背景问题我们可以通过Pod来直接运行任务进程吗?这样做将会产生以下几种问题:1. 我...

Kubernetes DaemonSet讲解

Kubernetes DaemonSet讲解[TOC] 需求来源背景问题我们可以让每个集群内的节点都运行一个相同的Pod吗?如果这样做,以下的...

Kubernetes Pod中断预算【PDB】

Kubernetes Pod中断预算【PDB】[TOC] 尽管Deployment或ReplicaSet一类的控制器能够确保相应Pod对象的副本数量不断逼近期...

Kubernetes Velero 备份的运用

Velero 的运用[TOC] Velero简介Velero是一个开源工具,可以安全地备份,恢复和迁移Kubernetes集群和持久卷。它既可以在本...

Kubernetes 应用配置管理

Kubernetes 应用配置管理[TOC] 需求来源背景问题除了依托容器镜像来定义运行的Container,Pod还需要解决如下问题:1. 不可...

Kubernetes 应用存储和持久化数据卷

Kubernetes 应用配置管理[TOC] Volumes介绍Pod Volumes1. 如果一个Pod中某一个容器异常退出,被kubelet拉起如何保证之前的...

Kubernetes 应用存储和持久化数据卷:存储快照与拓扑调度

Kubernetes 应用存储和持久化数据卷:存储快照与拓扑调度[TOC] 基本知识存储快照产生背景1. 如何保证重要数据在误操作之后...

Kubernetes网络(IPVLAN与MACVLAN)

Kubernetes网络模型[TOC] 三种网络模型 在k8s中一般常见的网络模型支持三种,虚拟网桥、多路复用和硬件交换。 虚拟网...

Kubernetes IP Address

Kubernetes IP Address[TOC] IP AddressIP地址是在计算机网络中被用来唯一标识设备的一组数字。IPv4地址由32位二进制数值...

Dapr 官方教程第二章(Hello World Kubernetes)

Dapr 官方教程第二章(Hello World Kubernetes)[TOC] 本教程将帮助您在 Kubernetes 集群中使用 Dapr。您将从Hello World部...

Kubernetes 搭建RabbitMq集群环境

Kubernetes 搭建RabbitMq集群环境[TOC] 由于Kubectl RabbitMQ 插件在官方是基于krew进行安装的所以我们首先需要安装krew插...

Kubernetes 删除命名空间

Kubernetes 删除命名空间[TOC] 可以直接通过如下命令删除k8s中命名空间下的所有资源。kubectl delete ns [namespace] ...

Kubernetes top之安装metrics-server

Kubernetes top之安装metrics-server[TOC] 一般我们需要知道kubernetes的pod与node的cpu与内存使用情况时,我们可以通过ku...

Kubernetes ExternalName Service

Kubernetes ExternalName Service[TOC] ExternalName 的服务与普通服务的区别在于:将服务映射到 DNS 名称。如下图所示: ...

Kubernetes 自定义Endpoint资源

Kubernetes 自定义Endpoint资源[TOC] 当pod需要服务发布出去的时候中间所关联的还有一个Endpoint这个资源,它能确定服务关...
这一世以无限游戏为使命!
排名
2
文章
636
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术