V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
SimbaG
V2EX  ›  问与答

存在自动学习的三层交换机吗

  •  
  •   SimbaG · 2022-12-14 15:49:59 +08:00 · 2291 次点击
    这是一个创建于 710 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我想问的是,我司用 DHCP ,我有两个设备, A:192.168.0.50/24, 网关.0.1 B:A:192.168.1.51/24 网关.1.1

    但实际上这两个设备是接在同一个墙面网口的:

    墙 <-> 我的交换机 <-> A
                     <-> B
    

    现在 A 和 B 之间的通信都得过网关,就很慢,除非我去改 AB 的路由表。有没有什么先进的三层设备可以直接把 A 的包丢给 B ? 比如说 OpenWRT 配一下三层交换(甚至自动学习)?发现直连的 IP 就路由并转发。

    第 1 条附言  ·  2022-12-14 22:04:33 +08:00

    这是我的环境,我的角色是非IT的使用者:

    CISCO路由器及交换机 <-> 未知设备 <-> 墙 <-> 我的交换机 <-> A
                                                        <-> B
    

    其中: CISCO路由器及交换机是我用网关MAC地址查出来生产商是CISCO。(也许802.1Q和思科私有协议会被支持?)

    墙是指墙上的网络接口面板。 墙右边的设备,一个交换机,A,B归我管理。 墙左边的设备不归我控制,我无法做任何修改。

    内网偶尔有点繁忙,因此我想A->B的连接可以直连。但我不拥有.0.x和.1.x网段额外的IP,新设备接入会被视为访客而分配到192.168.3.x。强行手动指定.0.abc地址给新设备会导致冲突从而我不愿意如此做。 我可以买一个新设备,但我不知道什么样的设备可以满足上述的千兆直连线速转发/路由。

    @leonshaw 所言的AB配置路由表我测试过了,A是Windows B是Linux,双向或但单向配好了额外的路由表之后可以工作。不过我还是期待有更棒的自动学习的方案?要不然我如果有ABCD 4个设备的话,我将需要配置4*3=12条路由表,那实在是太痛苦啦。

    所以什么的设备会支持动态路由协议呢?这可能还需要和网关侧CISCO的配上?

    感谢各位。

    22 条回复    2022-12-15 17:27:53 +08:00
    eason1874
        1
    eason1874  
       2022-12-14 16:10:01 +08:00
    A 和 B 在同一台交换机下,交换机会根据 MAC 地址表直接转发的,这是默认功能吧,不用特殊配置
    pcmid
        2
    pcmid  
       2022-12-14 16:12:41 +08:00 via iPhone
    三层交换机就是干这个的,不然为啥叫三层(
    leonshaw
        3
    leonshaw  
       2022-12-14 16:24:02 +08:00
    同一个 VLAN ? A B 上配对方的直连路由,例如
    ip route add 192.168.1.51/24 dev eth0

    或者交换机上配 IP 例如 0.2, 1.2 ,A B 路由互指到交换机 IP
    ip route add 192.168.1.51/24 via 192.168.0.2
    rrfeng
        4
    rrfeng  
       2022-12-14 16:28:22 +08:00
    不可以。

    上面几位都在说啥……
    rrfeng
        5
    rrfeng  
       2022-12-14 16:30:43 +08:00
    一个子网内的数据包( 0.x/24 )要到子网外面( 1.51 )去,肯定要经过网关啊。

    搞一些奇怪的直连路由除外(也不符合题主的要求)。
    NewYear
        6
    NewYear  
       2022-12-14 16:33:06 +08:00
    硬是没看懂,楼主是负责网络这块的吗。

    如果是同一个 vlan ,为何弄 2 个网段?
    如果不是同一个 vlan ,为何改路由表就能直连通讯?

    你的硬件是怎样的一个结构能写清楚一点么,网关是什么设备(三层交换机?企业路由器?家用路由器?),交换机是什么样的设备(傻瓜交换机?二层网管?三层网管?)。
    NewYear
        7
    NewYear  
       2022-12-14 16:37:47 +08:00
    如果说的是自动设置路由表,那么用 rip 或者你的三层交换机家私有的动态路由协议都可以。

    自动学习路由表=动态路由协议,三层交换机都有。
    不能自动学习=不同品牌用的不同协议,或者根本就不支持,这种除了自己能写代码就别想太多了。
    singerll
        8
    singerll  
       2022-12-14 16:45:00 +08:00
    你说这个我记得是可以实现的,但网络我本身也不是很了解,时间长也忘记了。

    你可以看下楼上说的动态路由协议。
    Unclev21x
        9
    Unclev21x  
       2022-12-14 16:49:31 +08:00
    你说的很慢是多慢?一个内网,2 个子网通信,慢?
    leonshaw
        10
    leonshaw  
       2022-12-14 16:50:23 +08:00
    没注意你不想改路由表,DHCP 可以下发路由的( option 121 或者 249 ),看看主机认不认。
    ppking
        11
    ppking  
       2022-12-14 17:14:56 +08:00
    三层交换机不就等价于路由器了嘛,不然为啥叫三层交换机啊。肯定可以的,你自己在这个交换机配置里加一下路由呗。
    DeWjjj
        12
    DeWjjj  
       2022-12-14 17:54:10 +08:00
    买个路由器,然后路由器接墙上不就结了。
    而且你希望组成一个内网,应该一个普通的 R1 之类的玩意就能满足了。
    shika
        13
    shika  
       2022-12-14 19:06:20 +08:00 via Android
    192.168.0.1 和 192.168.1.1 这两个网关在哪里,把它们配置在中间的交换机上不就行了吗。如果你想的是两个网段二层直通,那恐怕不行。
    SimbaG
        14
    SimbaG  
    OP
       2022-12-14 21:49:19 +08:00
    @NewYear 哦,我不负责网络这块。
    分配的 IP 就是如此,开发机在 A 网段,测试机在 B 网段。显然这样分配 IP 池也合理,我没办法请 IT 改。
    网关设备我确实不太了解,但肯定是个企业级的设备。
    我自己的设备是个普通的交换机,如果需要加钱买点什么的话,我也可以考虑。

    192.168.0.1 和 192.168.1.1 这两个网关我没法控制,在 IT 那里。
    SimbaG
        15
    SimbaG  
    OP
       2022-12-14 21:50:52 +08:00
    @leonshaw 有道理,你的意思是 AB 的路由指向交换机?
    但我没有被授权使用额外的 IP ,我并不能给我的交换机分配两个 IP 用来指向。
    mansurx
        16
    mansurx  
       2022-12-14 22:40:19 +08:00   ❤️ 1
    建议直接给 IT 开工单,让他们来解决内网相互访问慢的问题。在 LZ 提供的拓扑里,互访流量就算经过网关正常增加的延迟也是在毫秒级的,不可能有感知。

    三层设备(无论是交换机还是路由器)之所以是三层设备,就是因为他需要有用于转发和路由的 ip 。没有 ip 的二层设备只会在同 vlan 下转发,跨 vlan 通讯就必须通过网关路由。

    另外基于“新设备接入会被视为访客”这段描述,推测 LZ 的网里应该是有准入策略的,既然这个网用到了准入,大概率网段之间互访也会加入额外的限制,所以还是先咨询 IT 。
    leonshaw
        17
    leonshaw  
       2022-12-14 22:44:53 +08:00
    @SimbaG 交换机换成个 OVS ,配流表应该可以实现。
    chunyec
        18
    chunyec  
       2022-12-15 00:04:21 +08:00 via Android
    你这问题,两个需要同一个二层交换机直通的主机,不要 dhcp 获取 ip,手动给 ip 应该就行了,地址就给 192.168.0.0/16 就能二层互通了吧,网关地址配置成你原来那样就行了
    yw9381
        19
    yw9381  
       2022-12-15 02:16:08 +08:00 via Android
    没看明白一个物理接口在没有 vlan trunk 的情况下是如何做到通两个子网的
    不过题主这个是有办法实现的。很简单
    整个结构可以看作是一个双 WAN 单 LAN 的网络。那实际上。最简单的。搞个支持多 wan 的路由器。墙上的线用傻瓜交换分成两根。分别接到 wan1 wan2.并分别配置 0.1/24 1.1/24 的 ip 。你自己的设备挂在这个路由下面应该就可以了。不过还是建议和 it 说一下尽可能处理内网延迟才是正途。我猜测这种网络结构布局可能存在环路情况导致交换 /路由负载过高从而使得内网延迟较高
    zhangsanfeng2012
        20
    zhangsanfeng2012  
       2022-12-15 09:54:27 +08:00
    你的交换机上联口改成 dhcp client ,把 mac 地址改成 A 或者 B 的;然后下联口开 dhcp server ,给 A 和 B 分同网段 IP 。
    SimbaG
        21
    SimbaG  
    OP
       2022-12-15 16:38:20 +08:00
    @leonshaw 感谢,我琢磨下用 OpenWRT 之类的东西有没有可能做到类似 OVS 的效果。

    @chunyec 我没办法手工给 IP 的呀,我不拥有额外的 IP 。

    @yw9381 我的交换机应该没有自动识别吧(大概?) 因此的数据流向是 A->网关->B ,从我的物理拓扑就是:A->我的交换机->墙->我的交换机->B ,平白无故过了一圈。因此不需要 VLAN Trunk 就可以互通,A 的请求都会递给网关,网关是个路由器会转发回 B 。

    @zhangsanfeng2012 你的意思是做个 NAT ?这样会创建我自己的私网。

    @mansurx 延迟大概增加 0.8ms 吧,人类确实不能感知,但是带宽受限。

    @DeWjjj 其实我并不希望组成内网的,我还是想使用原有被分配的 IP

    感谢各位
    fub2020
        22
    fub2020  
       2022-12-15 17:27:53 +08:00
    另一个思路是在
    AB 之前单独拉一根网线,在二层解决这个问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1217 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 18:26 · PVG 02:26 · LAX 10:26 · JFK 13:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.