jjzjj

去和多播(特别是 ospf)

coder 2024-07-10 原文

我正尝试按如下方式收听 OSPFv2 Hello 消息:

    ens192, err := net.InterfaceByName("ens192")
    if err != nil {
            return err
    }
    c, err := net.ListenPacket("ip4:89", "0.0.0.0") // ipv4 proto 89, all local interfaces
    if err != nil {
            return err
    }
    defer c.Close()

    p := ipv4.NewPacketConn(c)
    if err != nil {
            return err
    }

    allSPFRouters := net.ParseIP("224.0.0.5")
    if err := p.JoinGroup(ens192, &net.IPAddr{IP: allSPFRouters}); err != nil {
            return err
    }

    if err := p.SetControlMessage(ipv4.FlagDst|ipv4.FlagSrc|ipv4.FlagInterface, true); err != nil {
            return err
    }

    b := make([]byte, 8192)
    for {
            n, cm, src, err := p.ReadFrom(b)
            _ = n
            if err != nil {
                    return err
            }
            if cm.Dst.IsMulticast() {
                    if cm.Dst.Equal(allSPFRouters) {
                            hdr := &ospfHeader{}
                            hdr.Decode(b)
                            fmt.Printf("%s\n", hdr)
                    } else {
                            // ignore/discard
                            fmt.Printf("Received packet from: %v to %v\n", src, cm.Dst)
                            continue
                    }
            } else {
                    fmt.Printf("Not mcast\n")
            }
    }

但我只能看到本地生成的 OSPF 消息(即来自本地计算机上的 OSPF 进程)。我看不到任何来自远程机器的 OSPF 数据包(不过我可以使用 tcpdump 看到它们)。 任何想法上面的代码有什么问题?为什么我只能看到本地 Hello 而看不到远程...?

最佳答案

问题解决了。代码没问题——“问题”是 red hat 和 firewalld...

关于去和多播(特别是 ospf),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44438973/

有关去和多播(特别是 ospf)的更多相关文章

  1. ruby - cucumber 和应该达的主要区别是什么? - 2

    如果您要选择测试框架,您会如何在cucumber和shoulda之间做出决定?这两个框架的主要区别是什么? 最佳答案 正如大家所指出的,Cucumber和Shoulda的目标截然不同。您可以将Cucumber视为“10,000英尺的View”测试框架-您定义广泛的功能或特定的用户交互,并确保一切正常。Shoulda用于单元测试-您选择一个特定模型并彻底测试该单独部分的所有挑剔的小功能。通常,您会希望结合使用这些类型的框架。例如,您的大部分广泛的高级测试都可以用Cucumber编写,但是当您的系统中有一段特别复杂或不透明的代码时,您可

  2. ruby - 如何测试 RSpec 中的信号处理,特别是 SIGTERM 的处理? - 2

    Heroku可能会出于各种原因向您的应用程序发送SIGTERM,因此我创建了一个处理程序来处理一些清理工作,以防发生这种情况。一些谷歌搜索没有给出任何关于如何在RSpec中测试它的答案或示例。这是基本代码:Signal.trap('TERM')docleanupenddefcleanupputs"doingsomecleanupstuff"...exitend当程序收到SIGTERM时,测试调用此清理方法的最佳方法是什么? 最佳答案 使用Process.kill'TERM',0将信号发送到RSpec并测试调用处理程序。确实,如果信号

  3. OSPF综合实验 - 2

    文章目录实验要求实验思路IP地址规划路由实验配置R1上配置R2上配置R3上配置R4上配置R5上配置R6上配置R7上配置R8上配置R9上配置R10上配置R11上配置R12上配置实验测试R10pingR4的环回R10pingR12的环回R10pingR1实验要求R4为ISP,其只能配置IP地址;R4与其他所有直连设备间均使用公有IP;R3-R5/6/7为MGRE环境,R3为中心站点;整个OSPF环境IP基于172.16.0.0/16划分;所有设备均可访问R4的环回;减少LSA的更新量,加快收敛,保障更新安全;全网可达实验思路IP地址规划公网IP随便配置,这里我R3-R4的网段为34.1.1.0/2

  4. ruby - "Don' t run bundler as root”- 使用 root 的确切区别是什么? - 2

    如果您在以root身份登录时从命令行运行ruby​​bundler,您会收到以下警告:Don'trunBundlerasroot.Bundlercanaskforsudoifitisneeded,andinstallingyourbundleasrootwillbreakthisapplicationforallnon-rootusersonthismachine.以root身份运行bundler对它安装的gem有什么确切的区别?是否与它为每个gem安装的实际文件的权限有关?Ruby会尝试以非root用户身份访问gem文件吗(如果是,Ruby会使用哪个用户/组,我将如何找到)?如果应用

  5. 思科与华为设备OSPF配置命令对比 - 2

    思科与华为设备OSPF配置命令对比[Huawei]ospf1//启动OSPF进程,进入OSPF视图Cisco(config)#routerospf110[Huawei]ospf1router-id10.1.1.1//启动OSPF进程,进入OSPF视图,手动输入router-idCisco(config-router)#router-id1.1.1.1[Huawei-ospf-1]area0//创建并进入OSPF区域视图(骨干区域)[Huawei-ospf-1-area-0.0.0.0]network10.0.1.00.0.0.255//配置区域所包含的网段[Huawei-GigabitEthe

  6. ruby - ruby 1.9.2 和 ruby​​ 2.0 之间的主要/次要区别是什么? - 2

    我听说ruby​​1.9.2是ruby​​2.0,但ruby​​1.9.3计划在不久的将来发布,它将包含一些性能增强。那么他们对2.0有什么计划?它会与ruby​​1.9.x有很大不同吗? 最佳答案 特征(mix)和Module#prepend已经在YARV中实现,并且很可能最终会出现在Ruby2.0中。>mix方法与当前的include方法不同,它获取模块的列表,并同时混合所有模块,确保它们没有冲突的方法。它还为您提供了一种轻松解决冲突的方法,例如您要混合的两个模块定义相同的方法。所以,基本上,虽然include方法允许您将模块视

  7. ruby - Sinatra 和 Ramaze 之间的主要区别是什么? - 2

    我正在寻找一个轻量级的RubyWeb框架并且遇到了Sinatra和Ramaze.两者都显得非常轻盈、简洁和简单。但我对两者的了解都不够多,无法说出主要区别是什么。也许对其中一项或两项都有经验的人可以发表评论? 最佳答案 其他轻量级Ruby框架我喜欢_why'sCamping(现在维护bythecommunity)必须是它们中最轻的(有关最新信息[>=v1.9],请参阅Campinglinks上的Campingwiki,EleanorMcHughe的“GoingofftheRails”或[v1.5]JeremyMcAnally的Goi

  8. ruby - IntelliJ + Ruby 插件与 RubyMine 之间的最大区别是什么? - 2

    作为IntelliJIdeaUltimate版本的拥有者,并且安装了IntelliJRuby插件,我不得不想知道这种体验与使用RubyMineIDE有何不同。我猜他们共享很多代码和功能。主要区别是什么?如果我要进入Ruby世界,我应该购买RubyMineIDE还是继续使用IntelliJ+Ruby插件? 最佳答案 Ruby插件和RubyMine是从相同的代码库构建的,没错。JRuby代码的Java/Ruby集成仅在IntelliJIDEA的Ruby插件中可用。但是该插件不支持RubyMotion。同时检查这个答案:IfIhaveID

  9. javascript - 无法使用 webdriverjs 发送 key ,特别是 F11 以最大化浏览器 - 2

    使用下面的代码块,它可以正常打开chrome浏览器,但不会使用F11全屏显示浏览器。我曾经使用C#和selenium,并且在chrome和不同的浏览器上使用这种方法效果很好。它找到元素“body”但随后不发送按键。我在这里做错了什么我应该需要一些其他图书馆吗?webdriverjs的文档很可怜,示例也很少,我正在认真考虑将它转储到其他可能是python的东西上。varwebdriver=require('selenium-webdriver');vardriver=newwebdriver.Builder().withCapabilities(webdriver.Capabilitie

  10. 玩转华为ENSP模拟器系列 | 配置OSPF的NSSA区域 - 2

    素材来源:华为路由器配置指南一边学习一边整理试验笔记,并与大家分享,侵权即删,谢谢支持!附上汇总贴:玩转华为ENSP模拟器系列|合集_COCOgsta的博客-CSDN博客_华为模拟器实验目标举例介绍OSPF的NSSA区域的配置过程。组网需求某些网络由于引入大量外部路由导致路由表的规模过大,网络资源浪费,CPU占用率较高。为了解决这个问题,可以将位于自治系统边缘的非骨干区域配置成NSSA区域,减少传递的路由信息数量。配置区域为NSSA区域后,不传播来自OSPF网络其它区域的外部路由,但引入自治系统外部的路由,这样可以避免大量外部路由对路由器带宽和存储资源的消耗。所有的路由器都运行OSPF,整个自

随机推荐